diff --git a/lib/lib.decorators.d.ts b/lib/lib.decorators.d.ts new file mode 100644 index 00000000000..d2b6b29a63c --- /dev/null +++ b/lib/lib.decorators.d.ts @@ -0,0 +1,357 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + + + +/// + + +/** + * The decorator context types provided to class member decorators. + */ +type ClassMemberDecoratorContext = + | ClassMethodDecoratorContext + | ClassGetterDecoratorContext + | ClassSetterDecoratorContext + | ClassFieldDecoratorContext + | ClassAccessorDecoratorContext + ; + +/** + * The decorator context types provided to any decorator. + */ +type DecoratorContext = + | ClassDecoratorContext + | ClassMemberDecoratorContext + ; + +/** + * Context provided to a class decorator. + * @template Class The type of the decorated class associated with this context. + */ +interface ClassDecoratorContext< + Class extends abstract new (...args: any) => any = abstract new (...args: any) => any, +> { + /** The kind of element that was decorated. */ + readonly kind: "class"; + + /** The name of the decorated class. */ + readonly name: string | undefined; + + /** + * Adds a callback to be invoked after the class definition has been finalized. + * + * @example + * ```ts + * function customElement(name: string): ClassDecoratorFunction { + * return (target, context) => { + * context.addInitializer(function () { + * customElements.define(name, this); + * }); + * } + * } + * + * @customElement("my-element") + * class MyElement {} + * ``` + */ + addInitializer(initializer: (this: Class) => void): void; +} + +/** + * Context provided to a class method decorator. + * @template This The type on which the class element will be defined. For a static class element, this will be + * the type of the constructor. For a non-static class element, this will be the type of the instance. + * @template Value The type of the decorated class method. + */ +interface ClassMethodDecoratorContext< + This = unknown, + Value extends (this: This, ...args: any) => any = (this: This, ...args: any) => any, +> { + /** The kind of class member that was decorated. */ + readonly kind: "method"; + + /** The name of the decorated class member. */ + readonly name: string | symbol; + + /** A value indicating whether the class member is a static (`true`) or instance (`false`) member. */ + readonly static: boolean; + + /** A value indicating whether the class member has a private name. */ + readonly private: boolean; + + // NOTE: Disabled, pending the outcome of https://github.com/tc39/proposal-decorators/issues/494 + // /** An object that can be used to access the current value of the class member at runtime. */ + // readonly access: { + // /** + // * Gets the current value of the method from the provided receiver. + // * + // * @example + // * let fn = context.access.get.call(instance); + // */ + // get(this: This): Value; + // }; + + /** + * Adds a callback to be invoked either before static initializers are run (when + * decorating a `static` member), or before instance initializers are run (when + * decorating a non-`static` member). + * + * @example + * ```ts + * const bound: ClassMethodDecoratorFunction = (value, context) { + * if (context.private) throw new TypeError("Not supported on private methods."); + * context.addInitializer(function () { + * this[context.name] = this[context.name].bind(this); + * }); + * } + * + * class C { + * message = "Hello"; + * + * @bound + * m() { + * console.log(this.message); + * } + * } + * ``` + */ + addInitializer(initializer: (this: This) => void): void; +} + +/** + * Context provided to a class getter decorator. + * @template This The type on which the class element will be defined. For a static class element, this will be + * the type of the constructor. For a non-static class element, this will be the type of the instance. + * @template Value The property type of the decorated class getter. + */ +interface ClassGetterDecoratorContext< + This = unknown, + Value = unknown, +> { + /** The kind of class member that was decorated. */ + readonly kind: "getter"; + + /** The name of the decorated class member. */ + readonly name: string | symbol; + + /** A value indicating whether the class member is a static (`true`) or instance (`false`) member. */ + readonly static: boolean; + + /** A value indicating whether the class member has a private name. */ + readonly private: boolean; + + // NOTE: Disabled, pending the outcome of https://github.com/tc39/proposal-decorators/issues/494 + // /** An object that can be used to access the current value of the class member at runtime. */ + // readonly access: { + // /** + // * Invokes the getter on the provided receiver. + // * + // * @example + // * let value = context.access.get.call(instance); + // */ + // get(this: This): Value; + // }; + + /** + * Adds a callback to be invoked either before static initializers are run (when + * decorating a `static` member), or before instance initializers are run (when + * decorating a non-`static` member). + */ + addInitializer(initializer: (this: This) => void): void; +} + +/** + * Context provided to a class setter decorator. + * @template This The type on which the class element will be defined. For a static class element, this will be + * the type of the constructor. For a non-static class element, this will be the type of the instance. + * @template Value The type of the decorated class setter. + */ +interface ClassSetterDecoratorContext< + This = unknown, + Value = unknown, +> { + /** The kind of class member that was decorated. */ + readonly kind: "setter"; + + /** The name of the decorated class member. */ + readonly name: string | symbol; + + /** A value indicating whether the class member is a static (`true`) or instance (`false`) member. */ + readonly static: boolean; + + /** A value indicating whether the class member has a private name. */ + readonly private: boolean; + + // NOTE: Disabled, pending the outcome of https://github.com/tc39/proposal-decorators/issues/494 + /** An object that can be used to access the current value of the class member at runtime. */ + // readonly access: { + // /** + // * Invokes the setter on the provided receiver. + // * + // * @example + // * context.access.set.call(instance, value); + // */ + // set(this: This, value: Value): void; + // }; + + /** + * Adds a callback to be invoked either before static initializers are run (when + * decorating a `static` member), or before instance initializers are run (when + * decorating a non-`static` member). + */ + addInitializer(initializer: (this: This) => void): void; +} + +/** + * Context provided to a class `accessor` field decorator. + * @template This The type on which the class element will be defined. For a static class element, this will be + * the type of the constructor. For a non-static class element, this will be the type of the instance. + * @template Value The type of decorated class field. + */ +interface ClassAccessorDecoratorContext< + This = unknown, + Value = unknown, +> { + /** The kind of class member that was decorated. */ + readonly kind: "accessor"; + + /** The name of the decorated class member. */ + readonly name: string | symbol; + + /** A value indicating whether the class member is a static (`true`) or instance (`false`) member. */ + readonly static: boolean; + + /** A value indicating whether the class member has a private name. */ + readonly private: boolean; + + // NOTE: Disabled, pending the outcome of https://github.com/tc39/proposal-decorators/issues/494 + // /** An object that can be used to access the current value of the class member at runtime. */ + // readonly access: { + // /** + // * Invokes the getter on the provided receiver. + // * + // * @example + // * let value = context.access.get.call(instance); + // */ + // get(this: This): Value; + + // /** + // * Invokes the setter on the provided receiver. + // * + // * @example + // * context.access.set.call(instance, value); + // */ + // set(this: This, value: Value): void; + // }; + + /** + * Adds a callback to be invoked either before static initializers are run (when + * decorating a `static` member), or before instance initializers are run (when + * decorating a non-`static` member). + */ + addInitializer(initializer: (this: This) => void): void; +} + +/** + * Describes the target provided to class `accessor` field decorators. + * @template This The `this` type to which the target applies. + * @template Value The property type for the class `accessor` field. + */ +interface ClassAccessorDecoratorTarget { + /** + * Invokes the getter that was defined prior to decorator application. + * + * @example + * let value = target.get.call(instance); + */ + get(this: This): Value; + + /** + * Invokes the setter that was defined prior to decorator application. + * + * @example + * target.set.call(instance, value); + */ + set(this: This, value: Value): void; +} + +/** + * Describes the allowed return value from a class `accessor` field decorator. + * @template This The `this` type to which the target applies. + * @template Value The property type for the class `accessor` field. + */ +interface ClassAccessorDecoratorResult { + /** + * An optional replacement getter function. If not provided, the existing getter function is used instead. + */ + get?(this: This): Value; + + /** + * An optional replacement setter function. If not provided, the existing setter function is used instead. + */ + set?(this: This, value: Value): void; + + /** + * An optional initializer mutator that is invoked when the underlying field initializer is evaluated. + * @param value The incoming initializer value. + * @returns The replacement initializer value. + */ + init?(this: This, value: Value): Value; +} + +/** + * Context provided to a class field decorator. + * @template This The type on which the class element will be defined. For a static class element, this will be + * the type of the constructor. For a non-static class element, this will be the type of the instance. + * @template Value The type of the decorated class field. + */ +interface ClassFieldDecoratorContext< + This = unknown, + Value = unknown, +> { + /** The kind of class member that was decorated. */ + readonly kind: "field"; + + /** The name of the decorated class member. */ + readonly name: string | symbol; + + /** A value indicating whether the class member is a static (`true`) or instance (`false`) member. */ + readonly static: boolean; + + /** A value indicating whether the class member has a private name. */ + readonly private: boolean; + + // NOTE: Disabled, pending the outcome of https://github.com/tc39/proposal-decorators/issues/494 + // /** An object that can be used to access the current value of the class member at runtime. */ + // readonly access: { + // /** + // * Gets the value of the field on the provided receiver. + // */ + // get(this: This): Value; + + // /** + // * Sets the value of the field on the provided receiver. + // */ + // set(this: This, value: Value): void; + // }; + + /** + * Adds a callback to be invoked either before static initializers are run (when + * decorating a `static` member), or before instance initializers are run (when + * decorating a non-`static` member). + */ + addInitializer(initializer: (this: This) => void): void; +} diff --git a/lib/lib.decorators.legacy.d.ts b/lib/lib.decorators.legacy.d.ts new file mode 100644 index 00000000000..e8783bef48a --- /dev/null +++ b/lib/lib.decorators.legacy.d.ts @@ -0,0 +1,24 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + + + +/// + + +declare type ClassDecorator = (target: TFunction) => TFunction | void; +declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; +declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; +declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void; diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 753f7673d89..a1bc18a50cb 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -198,6 +198,11 @@ interface ChannelSplitterOptions extends AudioNodeOptions { numberOfOutputs?: number; } +interface CheckVisibilityOptions { + checkOpacity?: boolean; + checkVisibilityCSS?: boolean; +} + interface ClientQueryOptions { includeUncontrolled?: boolean; type?: ClientTypes; @@ -507,8 +512,11 @@ interface FocusOptions { } interface FontFaceDescriptors { - display?: string; + ascentOverride?: string; + descentOverride?: string; + display?: FontDisplay; featureSettings?: string; + lineGapOverride?: string; stretch?: string; style?: string; unicodeRange?: string; @@ -624,6 +632,11 @@ interface ImageDataSettings { colorSpace?: PredefinedColorSpace; } +interface ImageEncodeOptions { + quality?: number; + type?: string; +} + interface ImportMeta { url: string; } @@ -724,6 +737,19 @@ interface LockOptions { steal?: boolean; } +interface MIDIConnectionEventInit extends EventInit { + port?: MIDIPort; +} + +interface MIDIMessageEventInit extends EventInit { + data?: Uint8Array; +} + +interface MIDIOptions { + software?: boolean; + sysex?: boolean; +} + interface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo { configuration?: MediaDecodingConfiguration; } @@ -838,7 +864,6 @@ interface MediaTrackCapabilities { aspectRatio?: DoubleRange; autoGainControl?: boolean[]; channelCount?: ULongRange; - cursor?: string[]; deviceId?: string; displaySurface?: string; echoCancellation?: boolean[]; @@ -846,10 +871,7 @@ interface MediaTrackCapabilities { frameRate?: DoubleRange; groupId?: string; height?: ULongRange; - latency?: DoubleRange; - logicalSurface?: boolean; noiseSuppression?: boolean[]; - resizeMode?: string[]; sampleRate?: ULongRange; sampleSize?: ULongRange; width?: ULongRange; @@ -860,16 +882,15 @@ interface MediaTrackConstraintSet { autoGainControl?: ConstrainBoolean; channelCount?: ConstrainULong; deviceId?: ConstrainDOMString; + displaySurface?: ConstrainDOMString; echoCancellation?: ConstrainBoolean; facingMode?: ConstrainDOMString; frameRate?: ConstrainDouble; groupId?: ConstrainDOMString; height?: ConstrainULong; - latency?: ConstrainDouble; noiseSuppression?: ConstrainBoolean; sampleRate?: ConstrainULong; sampleSize?: ConstrainULong; - suppressLocalAudioPlayback?: ConstrainBoolean; width?: ConstrainULong; } @@ -880,14 +901,15 @@ interface MediaTrackConstraints extends MediaTrackConstraintSet { interface MediaTrackSettings { aspectRatio?: number; autoGainControl?: boolean; + channelCount?: number; deviceId?: string; + displaySurface?: string; echoCancellation?: boolean; facingMode?: string; frameRate?: number; groupId?: string; height?: number; noiseSuppression?: boolean; - restrictOwnAudio?: boolean; sampleRate?: number; sampleSize?: number; width?: number; @@ -896,7 +918,9 @@ interface MediaTrackSettings { interface MediaTrackSupportedConstraints { aspectRatio?: boolean; autoGainControl?: boolean; + channelCount?: boolean; deviceId?: boolean; + displaySurface?: boolean; echoCancellation?: boolean; facingMode?: boolean; frameRate?: boolean; @@ -905,7 +929,6 @@ interface MediaTrackSupportedConstraints { noiseSuppression?: boolean; sampleRate?: boolean; sampleSize?: boolean; - suppressLocalAudioPlayback?: boolean; width?: boolean; } @@ -1967,22 +1990,22 @@ interface WorkletOptions { type NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; }; declare var NodeFilter: { - readonly FILTER_ACCEPT: number; - readonly FILTER_REJECT: number; - readonly FILTER_SKIP: number; - readonly SHOW_ALL: number; - readonly SHOW_ATTRIBUTE: number; - readonly SHOW_CDATA_SECTION: number; - readonly SHOW_COMMENT: number; - readonly SHOW_DOCUMENT: number; - readonly SHOW_DOCUMENT_FRAGMENT: number; - readonly SHOW_DOCUMENT_TYPE: number; - readonly SHOW_ELEMENT: number; - readonly SHOW_ENTITY: number; - readonly SHOW_ENTITY_REFERENCE: number; - readonly SHOW_NOTATION: number; - readonly SHOW_PROCESSING_INSTRUCTION: number; - readonly SHOW_TEXT: number; + readonly FILTER_ACCEPT: 1; + readonly FILTER_REJECT: 2; + readonly FILTER_SKIP: 3; + readonly SHOW_ALL: 0xFFFFFFFF; + readonly SHOW_ELEMENT: 0x1; + readonly SHOW_ATTRIBUTE: 0x2; + readonly SHOW_TEXT: 0x4; + readonly SHOW_CDATA_SECTION: 0x8; + readonly SHOW_ENTITY_REFERENCE: 0x10; + readonly SHOW_ENTITY: 0x20; + readonly SHOW_PROCESSING_INSTRUCTION: 0x40; + readonly SHOW_COMMENT: 0x80; + readonly SHOW_DOCUMENT: 0x100; + readonly SHOW_DOCUMENT_TYPE: 0x200; + readonly SHOW_DOCUMENT_FRAGMENT: 0x400; + readonly SHOW_NOTATION: 0x800; }; type XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; }; @@ -1992,7 +2015,7 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void; drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void; vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88FE; } interface ARIAMixin { @@ -2002,7 +2025,6 @@ interface ARIAMixin { ariaChecked: string | null; ariaColCount: string | null; ariaColIndex: string | null; - ariaColIndexText: string | null; ariaColSpan: string | null; ariaCurrent: string | null; ariaDisabled: string | null; @@ -2026,7 +2048,6 @@ interface ARIAMixin { ariaRoleDescription: string | null; ariaRowCount: string | null; ariaRowIndex: string | null; - ariaRowIndexText: string | null; ariaRowSpan: string | null; ariaSelected: string | null; ariaSetSize: string | null; @@ -2207,7 +2228,7 @@ declare var AnimationPlaybackEvent: { }; interface AnimationTimeline { - readonly currentTime: CSSNumberish | null; + readonly currentTime: number | null; } declare var AnimationTimeline: { @@ -2697,6 +2718,15 @@ declare var CSSFontFaceRule: { new(): CSSFontFaceRule; }; +interface CSSFontFeatureValuesRule extends CSSRule { + fontFamily: string; +} + +declare var CSSFontFeatureValuesRule: { + prototype: CSSFontFeatureValuesRule; + new(): CSSFontFeatureValuesRule; +}; + interface CSSFontPaletteValuesRule extends CSSRule { readonly basePalette: string; readonly fontFamily: string; @@ -2751,6 +2781,7 @@ interface CSSKeyframesRule extends CSSRule { appendRule(rule: string): void; deleteRule(select: string): void; findRule(select: string): CSSKeyframeRule | null; + [index: number]: CSSKeyframeRule; } declare var CSSKeyframesRule: { @@ -2815,31 +2846,31 @@ interface CSSRule { readonly parentStyleSheet: CSSStyleSheet | null; /** @deprecated */ readonly type: number; - readonly CHARSET_RULE: number; - readonly FONT_FACE_RULE: number; - readonly IMPORT_RULE: number; - readonly KEYFRAMES_RULE: number; - readonly KEYFRAME_RULE: number; - readonly MEDIA_RULE: number; - readonly NAMESPACE_RULE: number; - readonly PAGE_RULE: number; - readonly STYLE_RULE: number; - readonly SUPPORTS_RULE: number; + readonly STYLE_RULE: 1; + readonly CHARSET_RULE: 2; + readonly IMPORT_RULE: 3; + readonly MEDIA_RULE: 4; + readonly FONT_FACE_RULE: 5; + readonly PAGE_RULE: 6; + readonly NAMESPACE_RULE: 10; + readonly KEYFRAMES_RULE: 7; + readonly KEYFRAME_RULE: 8; + readonly SUPPORTS_RULE: 12; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - readonly CHARSET_RULE: number; - readonly FONT_FACE_RULE: number; - readonly IMPORT_RULE: number; - readonly KEYFRAMES_RULE: number; - readonly KEYFRAME_RULE: number; - readonly MEDIA_RULE: number; - readonly NAMESPACE_RULE: number; - readonly PAGE_RULE: number; - readonly STYLE_RULE: number; - readonly SUPPORTS_RULE: number; + readonly STYLE_RULE: 1; + readonly CHARSET_RULE: 2; + readonly IMPORT_RULE: 3; + readonly MEDIA_RULE: 4; + readonly FONT_FACE_RULE: 5; + readonly PAGE_RULE: 6; + readonly NAMESPACE_RULE: 10; + readonly KEYFRAMES_RULE: 7; + readonly KEYFRAME_RULE: 8; + readonly SUPPORTS_RULE: 12; }; /** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */ @@ -2978,10 +3009,16 @@ interface CSSStyleDeclaration { columnWidth: string; columns: string; contain: string; + containIntrinsicBlockSize: string; + containIntrinsicHeight: string; + containIntrinsicInlineSize: string; + containIntrinsicSize: string; + containIntrinsicWidth: string; container: string; containerName: string; containerType: string; content: string; + contentVisibility: string; counterIncrement: string; counterReset: string; counterSet: string; @@ -3101,6 +3138,7 @@ interface CSSStyleDeclaration { maskRepeat: string; maskSize: string; maskType: string; + mathStyle: string; maxBlockSize: string; maxHeight: string; maxInlineSize: string; @@ -3754,6 +3792,7 @@ declare var ClipboardEvent: { /** Available only in secure contexts. */ interface ClipboardItem { + readonly presentationStyle: PresentationStyle; readonly types: ReadonlyArray; getType(type: string): Promise; } @@ -3864,7 +3903,7 @@ interface Crypto { readonly subtle: SubtleCrypto; getRandomValues(array: T): T; /** Available only in secure contexts. */ - randomUUID(): string; + randomUUID(): `${string}-${string}-${string}-${string}-${string}`; } declare var Crypto: { @@ -3918,61 +3957,61 @@ interface DOMException extends Error { readonly code: number; readonly message: string; readonly name: string; - readonly ABORT_ERR: number; - readonly DATA_CLONE_ERR: number; - readonly DOMSTRING_SIZE_ERR: number; - readonly HIERARCHY_REQUEST_ERR: number; - readonly INDEX_SIZE_ERR: number; - readonly INUSE_ATTRIBUTE_ERR: number; - readonly INVALID_ACCESS_ERR: number; - readonly INVALID_CHARACTER_ERR: number; - readonly INVALID_MODIFICATION_ERR: number; - readonly INVALID_NODE_TYPE_ERR: number; - readonly INVALID_STATE_ERR: number; - readonly NAMESPACE_ERR: number; - readonly NETWORK_ERR: number; - readonly NOT_FOUND_ERR: number; - readonly NOT_SUPPORTED_ERR: number; - readonly NO_DATA_ALLOWED_ERR: number; - readonly NO_MODIFICATION_ALLOWED_ERR: number; - readonly QUOTA_EXCEEDED_ERR: number; - readonly SECURITY_ERR: number; - readonly SYNTAX_ERR: number; - readonly TIMEOUT_ERR: number; - readonly TYPE_MISMATCH_ERR: number; - readonly URL_MISMATCH_ERR: number; - readonly VALIDATION_ERR: number; - readonly WRONG_DOCUMENT_ERR: number; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; } declare var DOMException: { prototype: DOMException; new(message?: string, name?: string): DOMException; - readonly ABORT_ERR: number; - readonly DATA_CLONE_ERR: number; - readonly DOMSTRING_SIZE_ERR: number; - readonly HIERARCHY_REQUEST_ERR: number; - readonly INDEX_SIZE_ERR: number; - readonly INUSE_ATTRIBUTE_ERR: number; - readonly INVALID_ACCESS_ERR: number; - readonly INVALID_CHARACTER_ERR: number; - readonly INVALID_MODIFICATION_ERR: number; - readonly INVALID_NODE_TYPE_ERR: number; - readonly INVALID_STATE_ERR: number; - readonly NAMESPACE_ERR: number; - readonly NETWORK_ERR: number; - readonly NOT_FOUND_ERR: number; - readonly NOT_SUPPORTED_ERR: number; - readonly NO_DATA_ALLOWED_ERR: number; - readonly NO_MODIFICATION_ALLOWED_ERR: number; - readonly QUOTA_EXCEEDED_ERR: number; - readonly SECURITY_ERR: number; - readonly SYNTAX_ERR: number; - readonly TIMEOUT_ERR: number; - readonly TYPE_MISMATCH_ERR: number; - readonly URL_MISMATCH_ERR: number; - readonly VALIDATION_ERR: number; - readonly WRONG_DOCUMENT_ERR: number; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; }; /** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */ @@ -4430,7 +4469,7 @@ declare var DeviceOrientationEvent: { new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent; }; -interface DocumentEventMap extends DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap { +interface DocumentEventMap extends GlobalEventHandlersEventMap { "DOMContentLoaded": Event; "fullscreenchange": Event; "fullscreenerror": Event; @@ -4441,7 +4480,7 @@ interface DocumentEventMap extends DocumentAndElementEventHandlersEventMap, Glob } /** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */ -interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase { +interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase { /** Sets or gets the URL for the current document. */ readonly URL: string; /** @@ -4637,6 +4676,8 @@ interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShad createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement; createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K]; createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement; + createElementNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: K): MathMLElementTagNameMap[K]; + createElementNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: string): MathMLElement; createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element; createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element; createEvent(eventInterface: "AnimationEvent"): AnimationEvent; @@ -4662,6 +4703,8 @@ interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShad createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface: "InputEvent"): InputEvent; createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface: "MIDIConnectionEvent"): MIDIConnectionEvent; + createEvent(eventInterface: "MIDIMessageEvent"): MIDIMessageEvent; createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent; createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent; createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent; @@ -4752,6 +4795,9 @@ interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShad */ getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + /** @deprecated */ + getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: string): HTMLCollectionOf; /** * If namespace and localName are "*" returns a HTMLCollection of all descendant elements. @@ -4764,6 +4810,7 @@ interface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShad */ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; /** Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */ getSelection(): Selection | null; @@ -4839,22 +4886,6 @@ declare var Document: { new(): Document; }; -interface DocumentAndElementEventHandlersEventMap { - "copy": ClipboardEvent; - "cut": ClipboardEvent; - "paste": ClipboardEvent; -} - -interface DocumentAndElementEventHandlers { - oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null; - oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null; - onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null; - addEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; - addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; - removeEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; -} - /** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */ interface DocumentFragment extends Node, NonElementParentNode, ParentNode { readonly ownerDocument: Document; @@ -4940,18 +4971,18 @@ declare var DynamicsCompressorNode: { }; interface EXT_blend_minmax { - readonly MAX_EXT: GLenum; - readonly MIN_EXT: GLenum; + readonly MIN_EXT: 0x8007; + readonly MAX_EXT: 0x8008; } interface EXT_color_buffer_float { } interface EXT_color_buffer_half_float { - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum; - readonly RGB16F_EXT: GLenum; - readonly RGBA16F_EXT: GLenum; - readonly UNSIGNED_NORMALIZED_EXT: GLenum; + readonly RGBA16F_EXT: 0x881A; + readonly RGB16F_EXT: 0x881B; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211; + readonly UNSIGNED_NORMALIZED_EXT: 0x8C17; } interface EXT_float_blend { @@ -4962,44 +4993,44 @@ interface EXT_frag_depth { } interface EXT_sRGB { - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum; - readonly SRGB8_ALPHA8_EXT: GLenum; - readonly SRGB_ALPHA_EXT: GLenum; - readonly SRGB_EXT: GLenum; + readonly SRGB_EXT: 0x8C40; + readonly SRGB_ALPHA_EXT: 0x8C42; + readonly SRGB8_ALPHA8_EXT: 0x8C43; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210; } interface EXT_shader_texture_lod { } interface EXT_texture_compression_bptc { - readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: GLenum; - readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: GLenum; - readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: GLenum; + readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: 0x8E8C; + readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 0x8E8D; + readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 0x8E8E; + readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 0x8E8F; } interface EXT_texture_compression_rgtc { - readonly COMPRESSED_RED_GREEN_RGTC2_EXT: GLenum; - readonly COMPRESSED_RED_RGTC1_EXT: GLenum; - readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: GLenum; - readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: GLenum; + readonly COMPRESSED_RED_RGTC1_EXT: 0x8DBB; + readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8DBC; + readonly COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8DBD; + readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8DBE; } /** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */ interface EXT_texture_filter_anisotropic { - readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum; - readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum; + readonly TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84FF; } interface EXT_texture_norm16 { - readonly R16_EXT: GLenum; - readonly R16_SNORM_EXT: GLenum; - readonly RG16_EXT: GLenum; - readonly RG16_SNORM_EXT: GLenum; - readonly RGB16_EXT: GLenum; - readonly RGB16_SNORM_EXT: GLenum; - readonly RGBA16_EXT: GLenum; - readonly RGBA16_SNORM_EXT: GLenum; + readonly R16_EXT: 0x822A; + readonly RG16_EXT: 0x822C; + readonly RGB16_EXT: 0x8054; + readonly RGBA16_EXT: 0x805B; + readonly R16_SNORM_EXT: 0x8F98; + readonly RG16_SNORM_EXT: 0x8F99; + readonly RGB16_SNORM_EXT: 0x8F9A; + readonly RGBA16_SNORM_EXT: 0x8F9B; } interface ElementEventMap { @@ -5043,9 +5074,11 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, Non readonly tagName: string; /** Creates a shadow root for element and returns it. */ attachShadow(init: ShadowRootInit): ShadowRoot; + checkVisibility(options?: CheckVisibilityOptions): boolean; /** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise. */ closest(selector: K): HTMLElementTagNameMap[K] | null; closest(selector: K): SVGElementTagNameMap[K] | null; + closest(selector: K): MathMLElementTagNameMap[K] | null; closest(selectors: string): E | null; /** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise. */ getAttribute(qualifiedName: string): string | null; @@ -5061,9 +5094,13 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, Non getElementsByClassName(classNames: string): HTMLCollectionOf; getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + /** @deprecated */ + getElementsByTagName(qualifiedName: K): HTMLCollectionOf; getElementsByTagName(qualifiedName: string): HTMLCollectionOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; /** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise. */ hasAttribute(qualifiedName: string): boolean; @@ -5218,19 +5255,19 @@ interface Event { stopImmediatePropagation(): void; /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */ stopPropagation(): void; - readonly AT_TARGET: number; - readonly BUBBLING_PHASE: number; - readonly CAPTURING_PHASE: number; - readonly NONE: number; + readonly NONE: 0; + readonly CAPTURING_PHASE: 1; + readonly AT_TARGET: 2; + readonly BUBBLING_PHASE: 3; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - readonly AT_TARGET: number; - readonly BUBBLING_PHASE: number; - readonly CAPTURING_PHASE: number; - readonly NONE: number; + readonly NONE: 0; + readonly CAPTURING_PHASE: 1; + readonly AT_TARGET: 2; + readonly BUBBLING_PHASE: 3; }; interface EventCounts { @@ -5268,9 +5305,9 @@ interface EventSource extends EventTarget { readonly withCredentials: boolean; /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */ close(): void; - readonly CLOSED: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSED: 2; addEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; @@ -5282,9 +5319,9 @@ interface EventSource extends EventTarget { declare var EventSource: { prototype: EventSource; new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource; - readonly CLOSED: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSED: 2; }; /** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */ @@ -5372,16 +5409,16 @@ interface FileReader extends EventTarget { onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null; onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null; onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null; - readonly readyState: number; + readonly readyState: typeof FileReader.EMPTY | typeof FileReader.LOADING | typeof FileReader.DONE; readonly result: string | ArrayBuffer | null; abort(): void; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; readAsText(blob: Blob, encoding?: string): void; - readonly DONE: number; - readonly EMPTY: number; - readonly LOADING: number; + readonly EMPTY: 0; + readonly LOADING: 1; + readonly DONE: 2; addEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -5391,9 +5428,9 @@ interface FileReader extends EventTarget { declare var FileReader: { prototype: FileReader; new(): FileReader; - readonly DONE: number; - readonly EMPTY: number; - readonly LOADING: number; + readonly EMPTY: 0; + readonly LOADING: 1; + readonly DONE: 2; }; interface FileSystem { @@ -5499,7 +5536,7 @@ declare var FocusEvent: { interface FontFace { ascentOverride: string; descentOverride: string; - display: string; + display: FontDisplay; family: string; featureSettings: string; lineGapOverride: string; @@ -5509,7 +5546,6 @@ interface FontFace { style: string; unicodeRange: string; variant: string; - variationSettings: string; weight: string; load(): Promise; } @@ -5699,17 +5735,17 @@ declare var GeolocationPosition: { interface GeolocationPositionError { readonly code: number; readonly message: string; - readonly PERMISSION_DENIED: number; - readonly POSITION_UNAVAILABLE: number; - readonly TIMEOUT: number; + readonly PERMISSION_DENIED: 1; + readonly POSITION_UNAVAILABLE: 2; + readonly TIMEOUT: 3; } declare var GeolocationPositionError: { prototype: GeolocationPositionError; new(): GeolocationPositionError; - readonly PERMISSION_DENIED: number; - readonly POSITION_UNAVAILABLE: number; - readonly TIMEOUT: number; + readonly PERMISSION_DENIED: 1; + readonly POSITION_UNAVAILABLE: 2; + readonly TIMEOUT: 3; }; interface GlobalEventHandlersEventMap { @@ -5731,7 +5767,9 @@ interface GlobalEventHandlersEventMap { "compositionstart": CompositionEvent; "compositionupdate": CompositionEvent; "contextmenu": MouseEvent; + "copy": ClipboardEvent; "cuechange": Event; + "cut": ClipboardEvent; "dblclick": MouseEvent; "drag": DragEvent; "dragend": DragEvent; @@ -5766,6 +5804,7 @@ interface GlobalEventHandlersEventMap { "mouseout": MouseEvent; "mouseover": MouseEvent; "mouseup": MouseEvent; + "paste": ClipboardEvent; "pause": Event; "play": Event; "playing": Event; @@ -5851,7 +5890,9 @@ interface GlobalEventHandlers { * @param ev The mouse event. */ oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null; + oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null; oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null; + oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null; /** * Fires when the user double-clicks the object. * @param ev The mouse event. @@ -5981,6 +6022,7 @@ interface GlobalEventHandlers { * @param ev The mouse event. */ onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null; + onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null; /** * Occurs when playback is paused. * @param ev The event. @@ -6507,11 +6549,11 @@ declare var HTMLDocument: { new(): HTMLDocument; }; -interface HTMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap { +interface HTMLElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap { } /** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */ -interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement { +interface HTMLElement extends Element, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement { accessKey: string; readonly accessKeyLabel: string; autocapitalize: string; @@ -6669,6 +6711,8 @@ interface HTMLFormElement extends HTMLElement { name: string; /** Designates a form that is not validated when submitted. */ noValidate: boolean; + rel: string; + readonly relList: DOMTokenList; /** Sets or retrieves the window or frame at which to target content. */ target: string; /** Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -7111,7 +7155,7 @@ interface HTMLInputElement extends HTMLElement { indeterminate: boolean; readonly labels: NodeListOf | null; /** Specifies the ID of a pre-defined datalist of options for an input element. */ - readonly list: HTMLElement | null; + readonly list: HTMLDataListElement | null; /** Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ max: string; /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -7435,15 +7479,15 @@ interface HTMLMediaElement extends HTMLElement { play(): Promise; /** Available only in secure contexts. */ setMediaKeys(mediaKeys: MediaKeys | null): Promise; - readonly HAVE_CURRENT_DATA: number; - readonly HAVE_ENOUGH_DATA: number; - readonly HAVE_FUTURE_DATA: number; - readonly HAVE_METADATA: number; - readonly HAVE_NOTHING: number; - readonly NETWORK_EMPTY: number; - readonly NETWORK_IDLE: number; - readonly NETWORK_LOADING: number; - readonly NETWORK_NO_SOURCE: number; + readonly NETWORK_EMPTY: 0; + readonly NETWORK_IDLE: 1; + readonly NETWORK_LOADING: 2; + readonly NETWORK_NO_SOURCE: 3; + readonly HAVE_NOTHING: 0; + readonly HAVE_METADATA: 1; + readonly HAVE_CURRENT_DATA: 2; + readonly HAVE_FUTURE_DATA: 3; + readonly HAVE_ENOUGH_DATA: 4; addEventListener(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -7453,15 +7497,15 @@ interface HTMLMediaElement extends HTMLElement { declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - readonly HAVE_CURRENT_DATA: number; - readonly HAVE_ENOUGH_DATA: number; - readonly HAVE_FUTURE_DATA: number; - readonly HAVE_METADATA: number; - readonly HAVE_NOTHING: number; - readonly NETWORK_EMPTY: number; - readonly NETWORK_IDLE: number; - readonly NETWORK_LOADING: number; - readonly NETWORK_NO_SOURCE: number; + readonly NETWORK_EMPTY: 0; + readonly NETWORK_IDLE: 1; + readonly NETWORK_LOADING: 2; + readonly NETWORK_NO_SOURCE: 3; + readonly HAVE_NOTHING: 0; + readonly HAVE_METADATA: 1; + readonly HAVE_CURRENT_DATA: 2; + readonly HAVE_FUTURE_DATA: 3; + readonly HAVE_ENOUGH_DATA: 4; }; interface HTMLMenuElement extends HTMLElement { @@ -8488,10 +8532,10 @@ interface HTMLTrackElement extends HTMLElement { srclang: string; /** Returns the TextTrack object corresponding to the text track of the track element. */ readonly track: TextTrack; - readonly ERROR: number; - readonly LOADED: number; - readonly LOADING: number; - readonly NONE: number; + readonly NONE: 0; + readonly LOADING: 1; + readonly LOADED: 2; + readonly ERROR: 3; addEventListener(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -8501,10 +8545,10 @@ interface HTMLTrackElement extends HTMLElement { declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - readonly ERROR: number; - readonly LOADED: number; - readonly LOADING: number; - readonly NONE: number; + readonly NONE: 0; + readonly LOADING: 1; + readonly LOADED: 2; + readonly ERROR: 3; }; /** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating unordered list elements. */ @@ -9143,7 +9187,7 @@ declare var IntersectionObserverEntry: { }; interface KHR_parallel_shader_compile { - readonly COMPLETION_STATUS_KHR: GLenum; + readonly COMPLETION_STATUS_KHR: 0x91B1; } /** KeyboardEvent objects describe a user interaction with the keyboard; each event describes a single interaction between the user and a key (or combination of a key with modifier keys) on the keyboard. */ @@ -9164,19 +9208,19 @@ interface KeyboardEvent extends UIEvent { getModifierState(keyArg: string): boolean; /** @deprecated */ initKeyboardEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, keyArg?: string, locationArg?: number, ctrlKey?: boolean, altKey?: boolean, shiftKey?: boolean, metaKey?: boolean): void; - readonly DOM_KEY_LOCATION_LEFT: number; - readonly DOM_KEY_LOCATION_NUMPAD: number; - readonly DOM_KEY_LOCATION_RIGHT: number; - readonly DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_STANDARD: 0x00; + readonly DOM_KEY_LOCATION_LEFT: 0x01; + readonly DOM_KEY_LOCATION_RIGHT: 0x02; + readonly DOM_KEY_LOCATION_NUMPAD: 0x03; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(type: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - readonly DOM_KEY_LOCATION_LEFT: number; - readonly DOM_KEY_LOCATION_NUMPAD: number; - readonly DOM_KEY_LOCATION_RIGHT: number; - readonly DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_STANDARD: 0x00; + readonly DOM_KEY_LOCATION_LEFT: 0x01; + readonly DOM_KEY_LOCATION_RIGHT: 0x02; + readonly DOM_KEY_LOCATION_NUMPAD: 0x03; }; interface KeyframeEffect extends AnimationEffect { @@ -9289,10 +9333,130 @@ declare var LockManager: { new(): LockManager; }; -interface MathMLElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap { +interface MIDIAccessEventMap { + "statechange": Event; } -interface MathMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement { +/** Available only in secure contexts. */ +interface MIDIAccess extends EventTarget { + readonly inputs: MIDIInputMap; + onstatechange: ((this: MIDIAccess, ev: Event) => any) | null; + readonly outputs: MIDIOutputMap; + readonly sysexEnabled: boolean; + addEventListener(type: K, listener: (this: MIDIAccess, ev: MIDIAccessEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: MIDIAccess, ev: MIDIAccessEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var MIDIAccess: { + prototype: MIDIAccess; + new(): MIDIAccess; +}; + +/** Available only in secure contexts. */ +interface MIDIConnectionEvent extends Event { + readonly port: MIDIPort; +} + +declare var MIDIConnectionEvent: { + prototype: MIDIConnectionEvent; + new(type: string, eventInitDict?: MIDIConnectionEventInit): MIDIConnectionEvent; +}; + +interface MIDIInputEventMap extends MIDIPortEventMap { + "midimessage": Event; +} + +/** Available only in secure contexts. */ +interface MIDIInput extends MIDIPort { + onmidimessage: ((this: MIDIInput, ev: Event) => any) | null; + addEventListener(type: K, listener: (this: MIDIInput, ev: MIDIInputEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: MIDIInput, ev: MIDIInputEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var MIDIInput: { + prototype: MIDIInput; + new(): MIDIInput; +}; + +/** Available only in secure contexts. */ +interface MIDIInputMap { + forEach(callbackfn: (value: MIDIInput, key: string, parent: MIDIInputMap) => void, thisArg?: any): void; +} + +declare var MIDIInputMap: { + prototype: MIDIInputMap; + new(): MIDIInputMap; +}; + +/** Available only in secure contexts. */ +interface MIDIMessageEvent extends Event { + readonly data: Uint8Array; +} + +declare var MIDIMessageEvent: { + prototype: MIDIMessageEvent; + new(type: string, eventInitDict?: MIDIMessageEventInit): MIDIMessageEvent; +}; + +/** Available only in secure contexts. */ +interface MIDIOutput extends MIDIPort { + send(data: number[], timestamp?: DOMHighResTimeStamp): void; + addEventListener(type: K, listener: (this: MIDIOutput, ev: MIDIPortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: MIDIOutput, ev: MIDIPortEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var MIDIOutput: { + prototype: MIDIOutput; + new(): MIDIOutput; +}; + +/** Available only in secure contexts. */ +interface MIDIOutputMap { + forEach(callbackfn: (value: MIDIOutput, key: string, parent: MIDIOutputMap) => void, thisArg?: any): void; +} + +declare var MIDIOutputMap: { + prototype: MIDIOutputMap; + new(): MIDIOutputMap; +}; + +interface MIDIPortEventMap { + "statechange": Event; +} + +/** Available only in secure contexts. */ +interface MIDIPort extends EventTarget { + readonly connection: MIDIPortConnectionState; + readonly id: string; + readonly manufacturer: string | null; + readonly name: string | null; + onstatechange: ((this: MIDIPort, ev: Event) => any) | null; + readonly state: MIDIPortDeviceState; + readonly type: MIDIPortType; + readonly version: string | null; + close(): Promise; + open(): Promise; + addEventListener(type: K, listener: (this: MIDIPort, ev: MIDIPortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: MIDIPort, ev: MIDIPortEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; +} + +declare var MIDIPort: { + prototype: MIDIPort; + new(): MIDIPort; +}; + +interface MathMLElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap { +} + +interface MathMLElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement { addEventListener(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -9380,19 +9544,19 @@ declare var MediaEncryptedEvent: { interface MediaError { readonly code: number; readonly message: string; - readonly MEDIA_ERR_ABORTED: number; - readonly MEDIA_ERR_DECODE: number; - readonly MEDIA_ERR_NETWORK: number; - readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MEDIA_ERR_ABORTED: 1; + readonly MEDIA_ERR_NETWORK: 2; + readonly MEDIA_ERR_DECODE: 3; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: 4; } declare var MediaError: { prototype: MediaError; new(): MediaError; - readonly MEDIA_ERR_ABORTED: number; - readonly MEDIA_ERR_DECODE: number; - readonly MEDIA_ERR_NETWORK: number; - readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MEDIA_ERR_ABORTED: 1; + readonly MEDIA_ERR_NETWORK: 2; + readonly MEDIA_ERR_DECODE: 3; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: 4; }; /** @@ -9890,18 +10054,18 @@ interface MutationEvent extends Event { readonly relatedNode: Node | null; /** @deprecated */ initMutationEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, relatedNodeArg?: Node | null, prevValueArg?: string, newValueArg?: string, attrNameArg?: string, attrChangeArg?: number): void; - readonly ADDITION: number; - readonly MODIFICATION: number; - readonly REMOVAL: number; + readonly MODIFICATION: 1; + readonly ADDITION: 2; + readonly REMOVAL: 3; } /** @deprecated */ declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - readonly ADDITION: number; - readonly MODIFICATION: number; - readonly REMOVAL: number; + readonly MODIFICATION: 1; + readonly ADDITION: 2; + readonly REMOVAL: 3; }; /** Provides the ability to watch for changes being made to the DOM tree. It is designed as a replacement for the older Mutation Events feature which was part of the DOM3 Events specification. */ @@ -10001,6 +10165,8 @@ interface Navigator extends NavigatorAutomationInformation, NavigatorConcurrentH canShare(data?: ShareData): boolean; getGamepads(): (Gamepad | null)[]; /** Available only in secure contexts. */ + requestMIDIAccess(options?: MIDIOptions): Promise; + /** Available only in secure contexts. */ requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): Promise; sendBeacon(url: string | URL, data?: BodyInit | null): boolean; /** Available only in secure contexts. */ @@ -10129,73 +10295,73 @@ interface Node extends EventTarget { normalize(): void; removeChild(child: T): T; replaceChild(node: Node, child: T): T; - readonly ATTRIBUTE_NODE: number; - /** node is a CDATASection node. */ - readonly CDATA_SECTION_NODE: number; - /** node is a Comment node. */ - readonly COMMENT_NODE: number; - /** node is a DocumentFragment node. */ - readonly DOCUMENT_FRAGMENT_NODE: number; - /** node is a document. */ - readonly DOCUMENT_NODE: number; - /** Set when other is a descendant of node. */ - readonly DOCUMENT_POSITION_CONTAINED_BY: number; - /** Set when other is an ancestor of node. */ - readonly DOCUMENT_POSITION_CONTAINS: number; - /** Set when node and other are not in the same tree. */ - readonly DOCUMENT_POSITION_DISCONNECTED: number; - /** Set when other is following node. */ - readonly DOCUMENT_POSITION_FOLLOWING: number; - readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - /** Set when other is preceding node. */ - readonly DOCUMENT_POSITION_PRECEDING: number; - /** node is a doctype. */ - readonly DOCUMENT_TYPE_NODE: number; /** node is an element. */ - readonly ELEMENT_NODE: number; - readonly ENTITY_NODE: number; - readonly ENTITY_REFERENCE_NODE: number; - readonly NOTATION_NODE: number; - /** node is a ProcessingInstruction node. */ - readonly PROCESSING_INSTRUCTION_NODE: number; + readonly ELEMENT_NODE: 1; + readonly ATTRIBUTE_NODE: 2; /** node is a Text node. */ - readonly TEXT_NODE: number; + readonly TEXT_NODE: 3; + /** node is a CDATASection node. */ + readonly CDATA_SECTION_NODE: 4; + readonly ENTITY_REFERENCE_NODE: 5; + readonly ENTITY_NODE: 6; + /** node is a ProcessingInstruction node. */ + readonly PROCESSING_INSTRUCTION_NODE: 7; + /** node is a Comment node. */ + readonly COMMENT_NODE: 8; + /** node is a document. */ + readonly DOCUMENT_NODE: 9; + /** node is a doctype. */ + readonly DOCUMENT_TYPE_NODE: 10; + /** node is a DocumentFragment node. */ + readonly DOCUMENT_FRAGMENT_NODE: 11; + readonly NOTATION_NODE: 12; + /** Set when node and other are not in the same tree. */ + readonly DOCUMENT_POSITION_DISCONNECTED: 0x01; + /** Set when other is preceding node. */ + readonly DOCUMENT_POSITION_PRECEDING: 0x02; + /** Set when other is following node. */ + readonly DOCUMENT_POSITION_FOLLOWING: 0x04; + /** Set when other is an ancestor of node. */ + readonly DOCUMENT_POSITION_CONTAINS: 0x08; + /** Set when other is a descendant of node. */ + readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20; } declare var Node: { prototype: Node; new(): Node; - readonly ATTRIBUTE_NODE: number; - /** node is a CDATASection node. */ - readonly CDATA_SECTION_NODE: number; - /** node is a Comment node. */ - readonly COMMENT_NODE: number; - /** node is a DocumentFragment node. */ - readonly DOCUMENT_FRAGMENT_NODE: number; - /** node is a document. */ - readonly DOCUMENT_NODE: number; - /** Set when other is a descendant of node. */ - readonly DOCUMENT_POSITION_CONTAINED_BY: number; - /** Set when other is an ancestor of node. */ - readonly DOCUMENT_POSITION_CONTAINS: number; - /** Set when node and other are not in the same tree. */ - readonly DOCUMENT_POSITION_DISCONNECTED: number; - /** Set when other is following node. */ - readonly DOCUMENT_POSITION_FOLLOWING: number; - readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - /** Set when other is preceding node. */ - readonly DOCUMENT_POSITION_PRECEDING: number; - /** node is a doctype. */ - readonly DOCUMENT_TYPE_NODE: number; /** node is an element. */ - readonly ELEMENT_NODE: number; - readonly ENTITY_NODE: number; - readonly ENTITY_REFERENCE_NODE: number; - readonly NOTATION_NODE: number; - /** node is a ProcessingInstruction node. */ - readonly PROCESSING_INSTRUCTION_NODE: number; + readonly ELEMENT_NODE: 1; + readonly ATTRIBUTE_NODE: 2; /** node is a Text node. */ - readonly TEXT_NODE: number; + readonly TEXT_NODE: 3; + /** node is a CDATASection node. */ + readonly CDATA_SECTION_NODE: 4; + readonly ENTITY_REFERENCE_NODE: 5; + readonly ENTITY_NODE: 6; + /** node is a ProcessingInstruction node. */ + readonly PROCESSING_INSTRUCTION_NODE: 7; + /** node is a Comment node. */ + readonly COMMENT_NODE: 8; + /** node is a document. */ + readonly DOCUMENT_NODE: 9; + /** node is a doctype. */ + readonly DOCUMENT_TYPE_NODE: 10; + /** node is a DocumentFragment node. */ + readonly DOCUMENT_FRAGMENT_NODE: 11; + readonly NOTATION_NODE: 12; + /** Set when node and other are not in the same tree. */ + readonly DOCUMENT_POSITION_DISCONNECTED: 0x01; + /** Set when other is preceding node. */ + readonly DOCUMENT_POSITION_PRECEDING: 0x02; + /** Set when other is following node. */ + readonly DOCUMENT_POSITION_FOLLOWING: 0x04; + /** Set when other is an ancestor of node. */ + readonly DOCUMENT_POSITION_CONTAINS: 0x08; + /** Set when other is a descendant of node. */ + readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20; }; /** An iterator over the members of a list of the nodes in a subtree of the DOM. The nodes will be returned in document order. */ @@ -10312,7 +10478,7 @@ interface OES_fbo_render_mipmap { /** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */ interface OES_standard_derivatives { - readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: GLenum; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8B8B; } /** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */ @@ -10325,7 +10491,7 @@ interface OES_texture_float_linear { /** The OES_texture_half_float extension is part of the WebGL API and adds texture formats with 16- (aka half float) and 32-bit floating-point components. */ interface OES_texture_half_float { - readonly HALF_FLOAT_OES: GLenum; + readonly HALF_FLOAT_OES: 0x8D61; } /** The OES_texture_half_float_linear extension is part of the WebGL API and allows linear filtering with half floating-point pixel types for textures. */ @@ -10337,15 +10503,15 @@ interface OES_vertex_array_object { createVertexArrayOES(): WebGLVertexArrayObjectOES | null; deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void; isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean; - readonly VERTEX_ARRAY_BINDING_OES: GLenum; + readonly VERTEX_ARRAY_BINDING_OES: 0x85B5; } interface OVR_multiview2 { framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: GLenum; - readonly MAX_VIEWS_OVR: GLenum; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: 0x9630; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: 0x9632; + readonly MAX_VIEWS_OVR: 0x9631; + readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: 0x9633; } /** The Web Audio API OfflineAudioCompletionEvent interface represents events that occur when the processing of an OfflineAudioContext is terminated. The complete event implements this interface. */ @@ -10401,6 +10567,12 @@ interface OffscreenCanvas extends EventTarget { * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it). */ width: number; + /** + * Returns a promise that will fulfill with a new Blob object representing a file containing the image in the OffscreenCanvas object. + * + * The argument, if provided, is a dictionary that controls the encoding options of the image file to be created. The type field specifies the file format and has a default value of "image/png"; that type is also used if the requested type isn't supported. If the image format supports variable quality (such as "image/jpeg"), then the quality field is a number in the range 0.0 to 1.0 inclusive indicating the desired quality level for the resulting image. + */ + convertToBlob(options?: ImageEncodeOptions): Promise; /** * Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: "2d", "bitmaprenderer", "webgl", or "webgl2". options is handled by that API. * @@ -10408,6 +10580,10 @@ interface OffscreenCanvas extends EventTarget { * * Returns null if the canvas has already been initialized with another context type (e.g., trying to get a "2d" context after getting a "webgl" context). */ + getContext(contextId: "2d", options?: any): OffscreenCanvasRenderingContext2D | null; + getContext(contextId: "bitmaprenderer", options?: any): ImageBitmapRenderingContext | null; + getContext(contextId: "webgl", options?: any): WebGLRenderingContext | null; + getContext(contextId: "webgl2", options?: any): WebGL2RenderingContext | null; getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null; /** Returns a newly created ImageBitmap object with the image in the OffscreenCanvas object. The image in the OffscreenCanvas object is replaced with a new blank image. */ transferToImageBitmap(): ImageBitmap; @@ -10530,10 +10706,16 @@ interface ParentNode extends Node { /** Returns the first element that is a descendant of node that matches selectors. */ querySelector(selectors: K): HTMLElementTagNameMap[K] | null; querySelector(selectors: K): SVGElementTagNameMap[K] | null; + querySelector(selectors: K): MathMLElementTagNameMap[K] | null; + /** @deprecated */ + querySelector(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null; querySelector(selectors: string): E | null; /** Returns all element descendants of node that match selectors. */ querySelectorAll(selectors: K): NodeListOf; querySelectorAll(selectors: K): NodeListOf; + querySelectorAll(selectors: K): NodeListOf; + /** @deprecated */ + querySelectorAll(selectors: K): NodeListOf; querySelectorAll(selectors: string): NodeListOf; /** * Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes. @@ -10714,20 +10896,20 @@ interface PerformanceNavigation { readonly type: number; /** @deprecated */ toJSON(): any; - readonly TYPE_BACK_FORWARD: number; - readonly TYPE_NAVIGATE: number; - readonly TYPE_RELOAD: number; - readonly TYPE_RESERVED: number; + readonly TYPE_NAVIGATE: 0; + readonly TYPE_RELOAD: 1; + readonly TYPE_BACK_FORWARD: 2; + readonly TYPE_RESERVED: 255; } /** @deprecated */ declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - readonly TYPE_BACK_FORWARD: number; - readonly TYPE_NAVIGATE: number; - readonly TYPE_RELOAD: number; - readonly TYPE_RESERVED: number; + readonly TYPE_NAVIGATE: 0; + readonly TYPE_RELOAD: 1; + readonly TYPE_BACK_FORWARD: 2; + readonly TYPE_RESERVED: 255; }; /** Provides methods and properties to store and retrieve metrics regarding the browser's document navigation events. For example, this interface can be used to determine how much time it takes to load or unload a document. */ @@ -11084,6 +11266,7 @@ interface PublicKeyCredential extends Credential { declare var PublicKeyCredential: { prototype: PublicKeyCredential; new(): PublicKeyCredential; + isConditionalMediationAvailable(): Promise; isUserVerifyingPlatformAuthenticatorAvailable(): Promise; }; @@ -11576,19 +11759,19 @@ interface Range extends AbstractRange { setStartBefore(node: Node): void; surroundContents(newParent: Node): void; toString(): string; - readonly END_TO_END: number; - readonly END_TO_START: number; - readonly START_TO_END: number; - readonly START_TO_START: number; + readonly START_TO_START: 0; + readonly START_TO_END: 1; + readonly END_TO_END: 2; + readonly END_TO_START: 3; } declare var Range: { prototype: Range; new(): Range; - readonly END_TO_END: number; - readonly END_TO_START: number; - readonly START_TO_END: number; - readonly START_TO_START: number; + readonly START_TO_START: 0; + readonly START_TO_END: 1; + readonly END_TO_END: 2; + readonly END_TO_START: 3; toString(): string; }; @@ -11810,21 +11993,21 @@ interface SVGAngle { valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - readonly SVG_ANGLETYPE_DEG: number; - readonly SVG_ANGLETYPE_GRAD: number; - readonly SVG_ANGLETYPE_RAD: number; - readonly SVG_ANGLETYPE_UNKNOWN: number; - readonly SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_UNKNOWN: 0; + readonly SVG_ANGLETYPE_UNSPECIFIED: 1; + readonly SVG_ANGLETYPE_DEG: 2; + readonly SVG_ANGLETYPE_RAD: 3; + readonly SVG_ANGLETYPE_GRAD: 4; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - readonly SVG_ANGLETYPE_DEG: number; - readonly SVG_ANGLETYPE_GRAD: number; - readonly SVG_ANGLETYPE_RAD: number; - readonly SVG_ANGLETYPE_UNKNOWN: number; - readonly SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_UNKNOWN: 0; + readonly SVG_ANGLETYPE_UNSPECIFIED: 1; + readonly SVG_ANGLETYPE_DEG: 2; + readonly SVG_ANGLETYPE_RAD: 3; + readonly SVG_ANGLETYPE_GRAD: 4; }; interface SVGAnimateElement extends SVGAnimationElement { @@ -12060,12 +12243,12 @@ interface SVGComponentTransferFunctionElement extends SVGElement { readonly slope: SVGAnimatedNumber; readonly tableValues: SVGAnimatedNumberList; readonly type: SVGAnimatedEnumeration; - readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: 0; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: 1; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: 2; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: 3; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: 4; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: 5; addEventListener(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12075,12 +12258,12 @@ interface SVGComponentTransferFunctionElement extends SVGElement { declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: 0; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: 1; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: 2; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: 3; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: 4; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: 5; }; /** Corresponds to the element. */ @@ -12109,11 +12292,11 @@ declare var SVGDescElement: { new(): SVGDescElement; }; -interface SVGElementEventMap extends ElementEventMap, DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap { +interface SVGElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap { } /** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */ -interface SVGElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement { +interface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement { /** @deprecated */ readonly className: any; readonly ownerSVGElement: SVGSVGElement | null; @@ -12151,23 +12334,23 @@ interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttrib readonly in1: SVGAnimatedString; readonly in2: SVGAnimatedString; readonly mode: SVGAnimatedEnumeration; - readonly SVG_FEBLEND_MODE_COLOR: number; - readonly SVG_FEBLEND_MODE_COLOR_BURN: number; - readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; - readonly SVG_FEBLEND_MODE_DARKEN: number; - readonly SVG_FEBLEND_MODE_DIFFERENCE: number; - readonly SVG_FEBLEND_MODE_EXCLUSION: number; - readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; - readonly SVG_FEBLEND_MODE_HUE: number; - readonly SVG_FEBLEND_MODE_LIGHTEN: number; - readonly SVG_FEBLEND_MODE_LUMINOSITY: number; - readonly SVG_FEBLEND_MODE_MULTIPLY: number; - readonly SVG_FEBLEND_MODE_NORMAL: number; - readonly SVG_FEBLEND_MODE_OVERLAY: number; - readonly SVG_FEBLEND_MODE_SATURATION: number; - readonly SVG_FEBLEND_MODE_SCREEN: number; - readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; - readonly SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: 0; + readonly SVG_FEBLEND_MODE_NORMAL: 1; + readonly SVG_FEBLEND_MODE_MULTIPLY: 2; + readonly SVG_FEBLEND_MODE_SCREEN: 3; + readonly SVG_FEBLEND_MODE_DARKEN: 4; + readonly SVG_FEBLEND_MODE_LIGHTEN: 5; + readonly SVG_FEBLEND_MODE_OVERLAY: 6; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: 7; + readonly SVG_FEBLEND_MODE_COLOR_BURN: 8; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: 9; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: 10; + readonly SVG_FEBLEND_MODE_DIFFERENCE: 11; + readonly SVG_FEBLEND_MODE_EXCLUSION: 12; + readonly SVG_FEBLEND_MODE_HUE: 13; + readonly SVG_FEBLEND_MODE_SATURATION: 14; + readonly SVG_FEBLEND_MODE_COLOR: 15; + readonly SVG_FEBLEND_MODE_LUMINOSITY: 16; addEventListener(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12177,23 +12360,23 @@ interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttrib declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - readonly SVG_FEBLEND_MODE_COLOR: number; - readonly SVG_FEBLEND_MODE_COLOR_BURN: number; - readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; - readonly SVG_FEBLEND_MODE_DARKEN: number; - readonly SVG_FEBLEND_MODE_DIFFERENCE: number; - readonly SVG_FEBLEND_MODE_EXCLUSION: number; - readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; - readonly SVG_FEBLEND_MODE_HUE: number; - readonly SVG_FEBLEND_MODE_LIGHTEN: number; - readonly SVG_FEBLEND_MODE_LUMINOSITY: number; - readonly SVG_FEBLEND_MODE_MULTIPLY: number; - readonly SVG_FEBLEND_MODE_NORMAL: number; - readonly SVG_FEBLEND_MODE_OVERLAY: number; - readonly SVG_FEBLEND_MODE_SATURATION: number; - readonly SVG_FEBLEND_MODE_SCREEN: number; - readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; - readonly SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: 0; + readonly SVG_FEBLEND_MODE_NORMAL: 1; + readonly SVG_FEBLEND_MODE_MULTIPLY: 2; + readonly SVG_FEBLEND_MODE_SCREEN: 3; + readonly SVG_FEBLEND_MODE_DARKEN: 4; + readonly SVG_FEBLEND_MODE_LIGHTEN: 5; + readonly SVG_FEBLEND_MODE_OVERLAY: 6; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: 7; + readonly SVG_FEBLEND_MODE_COLOR_BURN: 8; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: 9; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: 10; + readonly SVG_FEBLEND_MODE_DIFFERENCE: 11; + readonly SVG_FEBLEND_MODE_EXCLUSION: 12; + readonly SVG_FEBLEND_MODE_HUE: 13; + readonly SVG_FEBLEND_MODE_SATURATION: 14; + readonly SVG_FEBLEND_MODE_COLOR: 15; + readonly SVG_FEBLEND_MODE_LUMINOSITY: 16; }; /** Corresponds to the element. */ @@ -12201,11 +12384,11 @@ interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandard readonly in1: SVGAnimatedString; readonly type: SVGAnimatedEnumeration; readonly values: SVGAnimatedNumberList; - readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; - readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; - readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: 0; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: 1; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: 2; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: 3; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: 4; addEventListener(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12215,11 +12398,11 @@ interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandard declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; - readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; - readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: 0; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: 1; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: 2; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: 3; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: 4; }; /** Corresponds to the element. */ @@ -12245,13 +12428,13 @@ interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAt readonly k3: SVGAnimatedNumber; readonly k4: SVGAnimatedNumber; readonly operator: SVGAnimatedEnumeration; - readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; - readonly SVG_FECOMPOSITE_OPERATOR_IN: number; - readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; - readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; - readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: 0; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: 1; + readonly SVG_FECOMPOSITE_OPERATOR_IN: 2; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: 3; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: 4; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: 5; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: 6; addEventListener(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12261,13 +12444,13 @@ interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAt declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; - readonly SVG_FECOMPOSITE_OPERATOR_IN: number; - readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; - readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; - readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: 0; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: 1; + readonly SVG_FECOMPOSITE_OPERATOR_IN: 2; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: 3; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: 4; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: 5; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: 6; }; /** Corresponds to the element. */ @@ -12284,10 +12467,10 @@ interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStand readonly preserveAlpha: SVGAnimatedBoolean; readonly targetX: SVGAnimatedInteger; readonly targetY: SVGAnimatedInteger; - readonly SVG_EDGEMODE_DUPLICATE: number; - readonly SVG_EDGEMODE_NONE: number; - readonly SVG_EDGEMODE_UNKNOWN: number; - readonly SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_UNKNOWN: 0; + readonly SVG_EDGEMODE_DUPLICATE: 1; + readonly SVG_EDGEMODE_WRAP: 2; + readonly SVG_EDGEMODE_NONE: 3; addEventListener(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12297,10 +12480,10 @@ interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStand declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - readonly SVG_EDGEMODE_DUPLICATE: number; - readonly SVG_EDGEMODE_NONE: number; - readonly SVG_EDGEMODE_UNKNOWN: number; - readonly SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_UNKNOWN: 0; + readonly SVG_EDGEMODE_DUPLICATE: 1; + readonly SVG_EDGEMODE_WRAP: 2; + readonly SVG_EDGEMODE_NONE: 3; }; /** Corresponds to the element. */ @@ -12328,11 +12511,11 @@ interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStan readonly scale: SVGAnimatedNumber; readonly xChannelSelector: SVGAnimatedEnumeration; readonly yChannelSelector: SVGAnimatedEnumeration; - readonly SVG_CHANNEL_A: number; - readonly SVG_CHANNEL_B: number; - readonly SVG_CHANNEL_G: number; - readonly SVG_CHANNEL_R: number; - readonly SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_UNKNOWN: 0; + readonly SVG_CHANNEL_R: 1; + readonly SVG_CHANNEL_G: 2; + readonly SVG_CHANNEL_B: 3; + readonly SVG_CHANNEL_A: 4; addEventListener(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12342,11 +12525,11 @@ interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStan declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - readonly SVG_CHANNEL_A: number; - readonly SVG_CHANNEL_B: number; - readonly SVG_CHANNEL_G: number; - readonly SVG_CHANNEL_R: number; - readonly SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_UNKNOWN: 0; + readonly SVG_CHANNEL_R: 1; + readonly SVG_CHANNEL_G: 2; + readonly SVG_CHANNEL_B: 3; + readonly SVG_CHANNEL_A: 4; }; /** Corresponds to the element. */ @@ -12511,9 +12694,9 @@ interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardA readonly operator: SVGAnimatedEnumeration; readonly radiusX: SVGAnimatedNumber; readonly radiusY: SVGAnimatedNumber; - readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; - readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; - readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: 0; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: 1; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: 2; addEventListener(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12523,9 +12706,9 @@ interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardA declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; - readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; - readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: 0; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: 1; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: 2; }; /** Corresponds to the element. */ @@ -12622,12 +12805,12 @@ interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardA readonly seed: SVGAnimatedNumber; readonly stitchTiles: SVGAnimatedEnumeration; readonly type: SVGAnimatedEnumeration; - readonly SVG_STITCHTYPE_NOSTITCH: number; - readonly SVG_STITCHTYPE_STITCH: number; - readonly SVG_STITCHTYPE_UNKNOWN: number; - readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; - readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: 0; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: 1; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: 2; + readonly SVG_STITCHTYPE_UNKNOWN: 0; + readonly SVG_STITCHTYPE_STITCH: 1; + readonly SVG_STITCHTYPE_NOSTITCH: 2; addEventListener(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12637,12 +12820,12 @@ interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardA declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - readonly SVG_STITCHTYPE_NOSTITCH: number; - readonly SVG_STITCHTYPE_STITCH: number; - readonly SVG_STITCHTYPE_UNKNOWN: number; - readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; - readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: 0; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: 1; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: 2; + readonly SVG_STITCHTYPE_UNKNOWN: 0; + readonly SVG_STITCHTYPE_STITCH: 1; + readonly SVG_STITCHTYPE_NOSTITCH: 2; }; /** Provides access to the properties of elements, as well as methods to manipulate them. */ @@ -12729,10 +12912,10 @@ interface SVGGradientElement extends SVGElement, SVGURIReference { readonly gradientTransform: SVGAnimatedTransformList; readonly gradientUnits: SVGAnimatedEnumeration; readonly spreadMethod: SVGAnimatedEnumeration; - readonly SVG_SPREADMETHOD_PAD: number; - readonly SVG_SPREADMETHOD_REFLECT: number; - readonly SVG_SPREADMETHOD_REPEAT: number; - readonly SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_UNKNOWN: 0; + readonly SVG_SPREADMETHOD_PAD: 1; + readonly SVG_SPREADMETHOD_REFLECT: 2; + readonly SVG_SPREADMETHOD_REPEAT: 3; addEventListener(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12742,10 +12925,10 @@ interface SVGGradientElement extends SVGElement, SVGURIReference { declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - readonly SVG_SPREADMETHOD_PAD: number; - readonly SVG_SPREADMETHOD_REFLECT: number; - readonly SVG_SPREADMETHOD_REPEAT: number; - readonly SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_UNKNOWN: 0; + readonly SVG_SPREADMETHOD_PAD: 1; + readonly SVG_SPREADMETHOD_REFLECT: 2; + readonly SVG_SPREADMETHOD_REPEAT: 3; }; /** SVG elements whose primary purpose is to directly render graphics into a group. */ @@ -12791,33 +12974,33 @@ interface SVGLength { valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - readonly SVG_LENGTHTYPE_CM: number; - readonly SVG_LENGTHTYPE_EMS: number; - readonly SVG_LENGTHTYPE_EXS: number; - readonly SVG_LENGTHTYPE_IN: number; - readonly SVG_LENGTHTYPE_MM: number; - readonly SVG_LENGTHTYPE_NUMBER: number; - readonly SVG_LENGTHTYPE_PC: number; - readonly SVG_LENGTHTYPE_PERCENTAGE: number; - readonly SVG_LENGTHTYPE_PT: number; - readonly SVG_LENGTHTYPE_PX: number; - readonly SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_UNKNOWN: 0; + readonly SVG_LENGTHTYPE_NUMBER: 1; + readonly SVG_LENGTHTYPE_PERCENTAGE: 2; + readonly SVG_LENGTHTYPE_EMS: 3; + readonly SVG_LENGTHTYPE_EXS: 4; + readonly SVG_LENGTHTYPE_PX: 5; + readonly SVG_LENGTHTYPE_CM: 6; + readonly SVG_LENGTHTYPE_MM: 7; + readonly SVG_LENGTHTYPE_IN: 8; + readonly SVG_LENGTHTYPE_PT: 9; + readonly SVG_LENGTHTYPE_PC: 10; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - readonly SVG_LENGTHTYPE_CM: number; - readonly SVG_LENGTHTYPE_EMS: number; - readonly SVG_LENGTHTYPE_EXS: number; - readonly SVG_LENGTHTYPE_IN: number; - readonly SVG_LENGTHTYPE_MM: number; - readonly SVG_LENGTHTYPE_NUMBER: number; - readonly SVG_LENGTHTYPE_PC: number; - readonly SVG_LENGTHTYPE_PERCENTAGE: number; - readonly SVG_LENGTHTYPE_PT: number; - readonly SVG_LENGTHTYPE_PX: number; - readonly SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_UNKNOWN: 0; + readonly SVG_LENGTHTYPE_NUMBER: 1; + readonly SVG_LENGTHTYPE_PERCENTAGE: 2; + readonly SVG_LENGTHTYPE_EMS: 3; + readonly SVG_LENGTHTYPE_EXS: 4; + readonly SVG_LENGTHTYPE_PX: 5; + readonly SVG_LENGTHTYPE_CM: 6; + readonly SVG_LENGTHTYPE_MM: 7; + readonly SVG_LENGTHTYPE_IN: 8; + readonly SVG_LENGTHTYPE_PT: 9; + readonly SVG_LENGTHTYPE_PC: 10; }; /** The SVGLengthList defines a list of SVGLength objects. */ @@ -12895,12 +13078,12 @@ interface SVGMarkerElement extends SVGElement, SVGFitToViewBox { readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - readonly SVG_MARKERUNITS_STROKEWIDTH: number; - readonly SVG_MARKERUNITS_UNKNOWN: number; - readonly SVG_MARKERUNITS_USERSPACEONUSE: number; - readonly SVG_MARKER_ORIENT_ANGLE: number; - readonly SVG_MARKER_ORIENT_AUTO: number; - readonly SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_UNKNOWN: 0; + readonly SVG_MARKERUNITS_USERSPACEONUSE: 1; + readonly SVG_MARKERUNITS_STROKEWIDTH: 2; + readonly SVG_MARKER_ORIENT_UNKNOWN: 0; + readonly SVG_MARKER_ORIENT_AUTO: 1; + readonly SVG_MARKER_ORIENT_ANGLE: 2; addEventListener(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -12910,12 +13093,12 @@ interface SVGMarkerElement extends SVGElement, SVGFitToViewBox { declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - readonly SVG_MARKERUNITS_STROKEWIDTH: number; - readonly SVG_MARKERUNITS_UNKNOWN: number; - readonly SVG_MARKERUNITS_USERSPACEONUSE: number; - readonly SVG_MARKER_ORIENT_ANGLE: number; - readonly SVG_MARKER_ORIENT_AUTO: number; - readonly SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_UNKNOWN: 0; + readonly SVG_MARKERUNITS_USERSPACEONUSE: 1; + readonly SVG_MARKERUNITS_STROKEWIDTH: 2; + readonly SVG_MARKER_ORIENT_UNKNOWN: 0; + readonly SVG_MARKER_ORIENT_AUTO: 1; + readonly SVG_MARKER_ORIENT_ANGLE: 2; }; /** Provides access to the properties of elements, as well as methods to manipulate them. */ @@ -13060,39 +13243,39 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - readonly SVG_MEETORSLICE_MEET: number; - readonly SVG_MEETORSLICE_SLICE: number; - readonly SVG_MEETORSLICE_UNKNOWN: number; - readonly SVG_PRESERVEASPECTRATIO_NONE: number; - readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: 0; + readonly SVG_PRESERVEASPECTRATIO_NONE: 1; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: 2; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: 3; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: 4; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: 5; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: 6; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: 7; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: 8; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: 9; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: 10; + readonly SVG_MEETORSLICE_UNKNOWN: 0; + readonly SVG_MEETORSLICE_MEET: 1; + readonly SVG_MEETORSLICE_SLICE: 2; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - readonly SVG_MEETORSLICE_MEET: number; - readonly SVG_MEETORSLICE_SLICE: number; - readonly SVG_MEETORSLICE_UNKNOWN: number; - readonly SVG_PRESERVEASPECTRATIO_NONE: number; - readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; - readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: 0; + readonly SVG_PRESERVEASPECTRATIO_NONE: 1; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: 2; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: 3; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: 4; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: 5; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: 6; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: 7; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: 8; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: 9; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: 10; + readonly SVG_MEETORSLICE_UNKNOWN: 0; + readonly SVG_MEETORSLICE_MEET: 1; + readonly SVG_MEETORSLICE_SLICE: 2; }; /** Corresponds to the element. */ @@ -13317,9 +13500,9 @@ interface SVGTextContentElement extends SVGGraphicsElement { getSubStringLength(charnum: number, nchars: number): number; /** @deprecated */ selectSubString(charnum: number, nchars: number): void; - readonly LENGTHADJUST_SPACING: number; - readonly LENGTHADJUST_SPACINGANDGLYPHS: number; - readonly LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_UNKNOWN: 0; + readonly LENGTHADJUST_SPACING: 1; + readonly LENGTHADJUST_SPACINGANDGLYPHS: 2; addEventListener(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -13329,9 +13512,9 @@ interface SVGTextContentElement extends SVGGraphicsElement { declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - readonly LENGTHADJUST_SPACING: number; - readonly LENGTHADJUST_SPACINGANDGLYPHS: number; - readonly LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_UNKNOWN: 0; + readonly LENGTHADJUST_SPACING: 1; + readonly LENGTHADJUST_SPACINGANDGLYPHS: 2; }; /** Corresponds to the elements. */ @@ -13352,12 +13535,12 @@ interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { readonly method: SVGAnimatedEnumeration; readonly spacing: SVGAnimatedEnumeration; readonly startOffset: SVGAnimatedLength; - readonly TEXTPATH_METHODTYPE_ALIGN: number; - readonly TEXTPATH_METHODTYPE_STRETCH: number; - readonly TEXTPATH_METHODTYPE_UNKNOWN: number; - readonly TEXTPATH_SPACINGTYPE_AUTO: number; - readonly TEXTPATH_SPACINGTYPE_EXACT: number; - readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: 0; + readonly TEXTPATH_METHODTYPE_ALIGN: 1; + readonly TEXTPATH_METHODTYPE_STRETCH: 2; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: 0; + readonly TEXTPATH_SPACINGTYPE_AUTO: 1; + readonly TEXTPATH_SPACINGTYPE_EXACT: 2; addEventListener(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -13367,12 +13550,12 @@ interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - readonly TEXTPATH_METHODTYPE_ALIGN: number; - readonly TEXTPATH_METHODTYPE_STRETCH: number; - readonly TEXTPATH_METHODTYPE_UNKNOWN: number; - readonly TEXTPATH_SPACINGTYPE_AUTO: number; - readonly TEXTPATH_SPACINGTYPE_EXACT: number; - readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: 0; + readonly TEXTPATH_METHODTYPE_ALIGN: 1; + readonly TEXTPATH_METHODTYPE_STRETCH: 2; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: 0; + readonly TEXTPATH_SPACINGTYPE_AUTO: 1; + readonly TEXTPATH_SPACINGTYPE_EXACT: 2; }; /** Implemented by elements that support attributes that position individual text glyphs. It is inherited by SVGTextElement, SVGTSpanElement, SVGTRefElement and SVGAltGlyphElement. */ @@ -13417,25 +13600,25 @@ interface SVGTransform { setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - readonly SVG_TRANSFORM_MATRIX: number; - readonly SVG_TRANSFORM_ROTATE: number; - readonly SVG_TRANSFORM_SCALE: number; - readonly SVG_TRANSFORM_SKEWX: number; - readonly SVG_TRANSFORM_SKEWY: number; - readonly SVG_TRANSFORM_TRANSLATE: number; - readonly SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_UNKNOWN: 0; + readonly SVG_TRANSFORM_MATRIX: 1; + readonly SVG_TRANSFORM_TRANSLATE: 2; + readonly SVG_TRANSFORM_SCALE: 3; + readonly SVG_TRANSFORM_ROTATE: 4; + readonly SVG_TRANSFORM_SKEWX: 5; + readonly SVG_TRANSFORM_SKEWY: 6; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - readonly SVG_TRANSFORM_MATRIX: number; - readonly SVG_TRANSFORM_ROTATE: number; - readonly SVG_TRANSFORM_SCALE: number; - readonly SVG_TRANSFORM_SKEWX: number; - readonly SVG_TRANSFORM_SKEWY: number; - readonly SVG_TRANSFORM_TRANSLATE: number; - readonly SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_UNKNOWN: 0; + readonly SVG_TRANSFORM_MATRIX: 1; + readonly SVG_TRANSFORM_TRANSLATE: 2; + readonly SVG_TRANSFORM_SCALE: 3; + readonly SVG_TRANSFORM_ROTATE: 4; + readonly SVG_TRANSFORM_SKEWX: 5; + readonly SVG_TRANSFORM_SKEWY: 6; }; /** The SVGTransformList defines a list of SVGTransform objects. */ @@ -13465,17 +13648,17 @@ interface SVGURIReference { /** A commonly used set of constants used for reflecting gradientUnits, patternContentUnits and other similar attributes. */ interface SVGUnitTypes { - readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - readonly SVG_UNIT_TYPE_UNKNOWN: number; - readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_UNKNOWN: 0; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: 1; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: 2; } declare var SVGUnitTypes: { prototype: SVGUnitTypes; new(): SVGUnitTypes; - readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - readonly SVG_UNIT_TYPE_UNKNOWN: number; - readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_UNKNOWN: 0; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: 1; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: 2; }; /** Corresponds to the element. */ @@ -14661,79 +14844,79 @@ declare var VisualViewport: { }; interface WEBGL_color_buffer_float { - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum; - readonly RGBA32F_EXT: GLenum; - readonly UNSIGNED_NORMALIZED_EXT: GLenum; + readonly RGBA32F_EXT: 0x8814; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211; + readonly UNSIGNED_NORMALIZED_EXT: 0x8C17; } interface WEBGL_compressed_texture_astc { getSupportedProfiles(): string[]; - readonly COMPRESSED_RGBA_ASTC_10x10_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x8_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_12x10_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_12x12_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_4x4_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_5x4_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_5x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_6x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_6x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x8_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: GLenum; + readonly COMPRESSED_RGBA_ASTC_4x4_KHR: 0x93B0; + readonly COMPRESSED_RGBA_ASTC_5x4_KHR: 0x93B1; + readonly COMPRESSED_RGBA_ASTC_5x5_KHR: 0x93B2; + readonly COMPRESSED_RGBA_ASTC_6x5_KHR: 0x93B3; + readonly COMPRESSED_RGBA_ASTC_6x6_KHR: 0x93B4; + readonly COMPRESSED_RGBA_ASTC_8x5_KHR: 0x93B5; + readonly COMPRESSED_RGBA_ASTC_8x6_KHR: 0x93B6; + readonly COMPRESSED_RGBA_ASTC_8x8_KHR: 0x93B7; + readonly COMPRESSED_RGBA_ASTC_10x5_KHR: 0x93B8; + readonly COMPRESSED_RGBA_ASTC_10x6_KHR: 0x93B9; + readonly COMPRESSED_RGBA_ASTC_10x8_KHR: 0x93BA; + readonly COMPRESSED_RGBA_ASTC_10x10_KHR: 0x93BB; + readonly COMPRESSED_RGBA_ASTC_12x10_KHR: 0x93BC; + readonly COMPRESSED_RGBA_ASTC_12x12_KHR: 0x93BD; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: 0x93D0; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: 0x93D1; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: 0x93D2; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: 0x93D3; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: 0x93D4; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: 0x93D5; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: 0x93D6; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: 0x93D7; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: 0x93D8; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: 0x93D9; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: 0x93DA; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: 0x93DB; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: 0x93DC; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: 0x93DD; } interface WEBGL_compressed_texture_etc { - readonly COMPRESSED_R11_EAC: GLenum; - readonly COMPRESSED_RG11_EAC: GLenum; - readonly COMPRESSED_RGB8_ETC2: GLenum; - readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum; - readonly COMPRESSED_RGBA8_ETC2_EAC: GLenum; - readonly COMPRESSED_SIGNED_R11_EAC: GLenum; - readonly COMPRESSED_SIGNED_RG11_EAC: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum; - readonly COMPRESSED_SRGB8_ETC2: GLenum; - readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum; + readonly COMPRESSED_R11_EAC: 0x9270; + readonly COMPRESSED_SIGNED_R11_EAC: 0x9271; + readonly COMPRESSED_RG11_EAC: 0x9272; + readonly COMPRESSED_SIGNED_RG11_EAC: 0x9273; + readonly COMPRESSED_RGB8_ETC2: 0x9274; + readonly COMPRESSED_SRGB8_ETC2: 0x9275; + readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9276; + readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9277; + readonly COMPRESSED_RGBA8_ETC2_EAC: 0x9278; + readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9279; } interface WEBGL_compressed_texture_etc1 { - readonly COMPRESSED_RGB_ETC1_WEBGL: GLenum; + readonly COMPRESSED_RGB_ETC1_WEBGL: 0x8D64; } /** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */ interface WEBGL_compressed_texture_s3tc { - readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: GLenum; - readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: GLenum; - readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: GLenum; - readonly COMPRESSED_RGB_S3TC_DXT1_EXT: GLenum; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83F0; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83F1; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83F2; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83F3; } interface WEBGL_compressed_texture_s3tc_srgb { - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: GLenum; - readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: GLenum; + readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8C4C; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8C4D; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8C4E; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8C4F; } /** The WEBGL_debug_renderer_info extension is part of the WebGL API and exposes two constants with information about the graphics driver for debugging purposes. */ interface WEBGL_debug_renderer_info { - readonly UNMASKED_RENDERER_WEBGL: GLenum; - readonly UNMASKED_VENDOR_WEBGL: GLenum; + readonly UNMASKED_VENDOR_WEBGL: 0x9245; + readonly UNMASKED_RENDERER_WEBGL: 0x9246; } interface WEBGL_debug_shaders { @@ -14742,45 +14925,45 @@ interface WEBGL_debug_shaders { /** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */ interface WEBGL_depth_texture { - readonly UNSIGNED_INT_24_8_WEBGL: GLenum; + readonly UNSIGNED_INT_24_8_WEBGL: 0x84FA; } interface WEBGL_draw_buffers { drawBuffersWEBGL(buffers: GLenum[]): void; - readonly COLOR_ATTACHMENT0_WEBGL: GLenum; - readonly COLOR_ATTACHMENT10_WEBGL: GLenum; - readonly COLOR_ATTACHMENT11_WEBGL: GLenum; - readonly COLOR_ATTACHMENT12_WEBGL: GLenum; - readonly COLOR_ATTACHMENT13_WEBGL: GLenum; - readonly COLOR_ATTACHMENT14_WEBGL: GLenum; - readonly COLOR_ATTACHMENT15_WEBGL: GLenum; - readonly COLOR_ATTACHMENT1_WEBGL: GLenum; - readonly COLOR_ATTACHMENT2_WEBGL: GLenum; - readonly COLOR_ATTACHMENT3_WEBGL: GLenum; - readonly COLOR_ATTACHMENT4_WEBGL: GLenum; - readonly COLOR_ATTACHMENT5_WEBGL: GLenum; - readonly COLOR_ATTACHMENT6_WEBGL: GLenum; - readonly COLOR_ATTACHMENT7_WEBGL: GLenum; - readonly COLOR_ATTACHMENT8_WEBGL: GLenum; - readonly COLOR_ATTACHMENT9_WEBGL: GLenum; - readonly DRAW_BUFFER0_WEBGL: GLenum; - readonly DRAW_BUFFER10_WEBGL: GLenum; - readonly DRAW_BUFFER11_WEBGL: GLenum; - readonly DRAW_BUFFER12_WEBGL: GLenum; - readonly DRAW_BUFFER13_WEBGL: GLenum; - readonly DRAW_BUFFER14_WEBGL: GLenum; - readonly DRAW_BUFFER15_WEBGL: GLenum; - readonly DRAW_BUFFER1_WEBGL: GLenum; - readonly DRAW_BUFFER2_WEBGL: GLenum; - readonly DRAW_BUFFER3_WEBGL: GLenum; - readonly DRAW_BUFFER4_WEBGL: GLenum; - readonly DRAW_BUFFER5_WEBGL: GLenum; - readonly DRAW_BUFFER6_WEBGL: GLenum; - readonly DRAW_BUFFER7_WEBGL: GLenum; - readonly DRAW_BUFFER8_WEBGL: GLenum; - readonly DRAW_BUFFER9_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS_WEBGL: GLenum; - readonly MAX_DRAW_BUFFERS_WEBGL: GLenum; + readonly COLOR_ATTACHMENT0_WEBGL: 0x8CE0; + readonly COLOR_ATTACHMENT1_WEBGL: 0x8CE1; + readonly COLOR_ATTACHMENT2_WEBGL: 0x8CE2; + readonly COLOR_ATTACHMENT3_WEBGL: 0x8CE3; + readonly COLOR_ATTACHMENT4_WEBGL: 0x8CE4; + readonly COLOR_ATTACHMENT5_WEBGL: 0x8CE5; + readonly COLOR_ATTACHMENT6_WEBGL: 0x8CE6; + readonly COLOR_ATTACHMENT7_WEBGL: 0x8CE7; + readonly COLOR_ATTACHMENT8_WEBGL: 0x8CE8; + readonly COLOR_ATTACHMENT9_WEBGL: 0x8CE9; + readonly COLOR_ATTACHMENT10_WEBGL: 0x8CEA; + readonly COLOR_ATTACHMENT11_WEBGL: 0x8CEB; + readonly COLOR_ATTACHMENT12_WEBGL: 0x8CEC; + readonly COLOR_ATTACHMENT13_WEBGL: 0x8CED; + readonly COLOR_ATTACHMENT14_WEBGL: 0x8CEE; + readonly COLOR_ATTACHMENT15_WEBGL: 0x8CEF; + readonly DRAW_BUFFER0_WEBGL: 0x8825; + readonly DRAW_BUFFER1_WEBGL: 0x8826; + readonly DRAW_BUFFER2_WEBGL: 0x8827; + readonly DRAW_BUFFER3_WEBGL: 0x8828; + readonly DRAW_BUFFER4_WEBGL: 0x8829; + readonly DRAW_BUFFER5_WEBGL: 0x882A; + readonly DRAW_BUFFER6_WEBGL: 0x882B; + readonly DRAW_BUFFER7_WEBGL: 0x882C; + readonly DRAW_BUFFER8_WEBGL: 0x882D; + readonly DRAW_BUFFER9_WEBGL: 0x882E; + readonly DRAW_BUFFER10_WEBGL: 0x882F; + readonly DRAW_BUFFER11_WEBGL: 0x8830; + readonly DRAW_BUFFER12_WEBGL: 0x8831; + readonly DRAW_BUFFER13_WEBGL: 0x8832; + readonly DRAW_BUFFER14_WEBGL: 0x8833; + readonly DRAW_BUFFER15_WEBGL: 0x8834; + readonly MAX_COLOR_ATTACHMENTS_WEBGL: 0x8CDF; + readonly MAX_DRAW_BUFFERS_WEBGL: 0x8824; } interface WEBGL_lose_context { @@ -14812,565 +14995,565 @@ interface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2Rende declare var WebGL2RenderingContext: { prototype: WebGL2RenderingContext; new(): WebGL2RenderingContext; - readonly ACTIVE_UNIFORM_BLOCKS: GLenum; - readonly ALREADY_SIGNALED: GLenum; - readonly ANY_SAMPLES_PASSED: GLenum; - readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum; - readonly COLOR: GLenum; - readonly COLOR_ATTACHMENT1: GLenum; - readonly COLOR_ATTACHMENT10: GLenum; - readonly COLOR_ATTACHMENT11: GLenum; - readonly COLOR_ATTACHMENT12: GLenum; - readonly COLOR_ATTACHMENT13: GLenum; - readonly COLOR_ATTACHMENT14: GLenum; - readonly COLOR_ATTACHMENT15: GLenum; - readonly COLOR_ATTACHMENT2: GLenum; - readonly COLOR_ATTACHMENT3: GLenum; - readonly COLOR_ATTACHMENT4: GLenum; - readonly COLOR_ATTACHMENT5: GLenum; - readonly COLOR_ATTACHMENT6: GLenum; - readonly COLOR_ATTACHMENT7: GLenum; - readonly COLOR_ATTACHMENT8: GLenum; - readonly COLOR_ATTACHMENT9: GLenum; - readonly COMPARE_REF_TO_TEXTURE: GLenum; - readonly CONDITION_SATISFIED: GLenum; - readonly COPY_READ_BUFFER: GLenum; - readonly COPY_READ_BUFFER_BINDING: GLenum; - readonly COPY_WRITE_BUFFER: GLenum; - readonly COPY_WRITE_BUFFER_BINDING: GLenum; - readonly CURRENT_QUERY: GLenum; - readonly DEPTH: GLenum; - readonly DEPTH24_STENCIL8: GLenum; - readonly DEPTH32F_STENCIL8: GLenum; - readonly DEPTH_COMPONENT24: GLenum; - readonly DEPTH_COMPONENT32F: GLenum; - readonly DRAW_BUFFER0: GLenum; - readonly DRAW_BUFFER1: GLenum; - readonly DRAW_BUFFER10: GLenum; - readonly DRAW_BUFFER11: GLenum; - readonly DRAW_BUFFER12: GLenum; - readonly DRAW_BUFFER13: GLenum; - readonly DRAW_BUFFER14: GLenum; - readonly DRAW_BUFFER15: GLenum; - readonly DRAW_BUFFER2: GLenum; - readonly DRAW_BUFFER3: GLenum; - readonly DRAW_BUFFER4: GLenum; - readonly DRAW_BUFFER5: GLenum; - readonly DRAW_BUFFER6: GLenum; - readonly DRAW_BUFFER7: GLenum; - readonly DRAW_BUFFER8: GLenum; - readonly DRAW_BUFFER9: GLenum; - readonly DRAW_FRAMEBUFFER: GLenum; - readonly DRAW_FRAMEBUFFER_BINDING: GLenum; - readonly DYNAMIC_COPY: GLenum; - readonly DYNAMIC_READ: GLenum; - readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum; - readonly FLOAT_MAT2x3: GLenum; - readonly FLOAT_MAT2x4: GLenum; - readonly FLOAT_MAT3x2: GLenum; - readonly FLOAT_MAT3x4: GLenum; - readonly FLOAT_MAT4x2: GLenum; - readonly FLOAT_MAT4x3: GLenum; - readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum; - readonly FRAMEBUFFER_DEFAULT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum; - readonly HALF_FLOAT: GLenum; - readonly INTERLEAVED_ATTRIBS: GLenum; - readonly INT_2_10_10_10_REV: GLenum; - readonly INT_SAMPLER_2D: GLenum; - readonly INT_SAMPLER_2D_ARRAY: GLenum; - readonly INT_SAMPLER_3D: GLenum; - readonly INT_SAMPLER_CUBE: GLenum; - readonly INVALID_INDEX: GLenum; - readonly MAX: GLenum; - readonly MAX_3D_TEXTURE_SIZE: GLenum; - readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum; - readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS: GLenum; - readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum; - readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MAX_DRAW_BUFFERS: GLenum; - readonly MAX_ELEMENTS_INDICES: GLenum; - readonly MAX_ELEMENTS_VERTICES: GLenum; - readonly MAX_ELEMENT_INDEX: GLenum; - readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum; - readonly MAX_SAMPLES: GLenum; - readonly MAX_SERVER_WAIT_TIMEOUT: GLenum; - readonly MAX_TEXTURE_LOD_BIAS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum; - readonly MAX_UNIFORM_BLOCK_SIZE: GLenum; - readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum; - readonly MAX_VARYING_COMPONENTS: GLenum; - readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum; - readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum; - readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MIN: GLenum; - readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum; - readonly OBJECT_TYPE: GLenum; - readonly PACK_ROW_LENGTH: GLenum; - readonly PACK_SKIP_PIXELS: GLenum; - readonly PACK_SKIP_ROWS: GLenum; - readonly PIXEL_PACK_BUFFER: GLenum; - readonly PIXEL_PACK_BUFFER_BINDING: GLenum; - readonly PIXEL_UNPACK_BUFFER: GLenum; - readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum; - readonly QUERY_RESULT: GLenum; - readonly QUERY_RESULT_AVAILABLE: GLenum; - readonly R11F_G11F_B10F: GLenum; - readonly R16F: GLenum; - readonly R16I: GLenum; - readonly R16UI: GLenum; - readonly R32F: GLenum; - readonly R32I: GLenum; - readonly R32UI: GLenum; - readonly R8: GLenum; - readonly R8I: GLenum; - readonly R8UI: GLenum; - readonly R8_SNORM: GLenum; - readonly RASTERIZER_DISCARD: GLenum; - readonly READ_BUFFER: GLenum; - readonly READ_FRAMEBUFFER: GLenum; - readonly READ_FRAMEBUFFER_BINDING: GLenum; - readonly RED: GLenum; - readonly RED_INTEGER: GLenum; - readonly RENDERBUFFER_SAMPLES: GLenum; - readonly RG: GLenum; - readonly RG16F: GLenum; - readonly RG16I: GLenum; - readonly RG16UI: GLenum; - readonly RG32F: GLenum; - readonly RG32I: GLenum; - readonly RG32UI: GLenum; - readonly RG8: GLenum; - readonly RG8I: GLenum; - readonly RG8UI: GLenum; - readonly RG8_SNORM: GLenum; - readonly RGB10_A2: GLenum; - readonly RGB10_A2UI: GLenum; - readonly RGB16F: GLenum; - readonly RGB16I: GLenum; - readonly RGB16UI: GLenum; - readonly RGB32F: GLenum; - readonly RGB32I: GLenum; - readonly RGB32UI: GLenum; - readonly RGB8: GLenum; - readonly RGB8I: GLenum; - readonly RGB8UI: GLenum; - readonly RGB8_SNORM: GLenum; - readonly RGB9_E5: GLenum; - readonly RGBA16F: GLenum; - readonly RGBA16I: GLenum; - readonly RGBA16UI: GLenum; - readonly RGBA32F: GLenum; - readonly RGBA32I: GLenum; - readonly RGBA32UI: GLenum; - readonly RGBA8: GLenum; - readonly RGBA8I: GLenum; - readonly RGBA8UI: GLenum; - readonly RGBA8_SNORM: GLenum; - readonly RGBA_INTEGER: GLenum; - readonly RGB_INTEGER: GLenum; - readonly RG_INTEGER: GLenum; - readonly SAMPLER_2D_ARRAY: GLenum; - readonly SAMPLER_2D_ARRAY_SHADOW: GLenum; - readonly SAMPLER_2D_SHADOW: GLenum; - readonly SAMPLER_3D: GLenum; - readonly SAMPLER_BINDING: GLenum; - readonly SAMPLER_CUBE_SHADOW: GLenum; - readonly SEPARATE_ATTRIBS: GLenum; - readonly SIGNALED: GLenum; - readonly SIGNED_NORMALIZED: GLenum; - readonly SRGB: GLenum; - readonly SRGB8: GLenum; - readonly SRGB8_ALPHA8: GLenum; - readonly STATIC_COPY: GLenum; - readonly STATIC_READ: GLenum; - readonly STENCIL: GLenum; - readonly STREAM_COPY: GLenum; - readonly STREAM_READ: GLenum; - readonly SYNC_CONDITION: GLenum; - readonly SYNC_FENCE: GLenum; - readonly SYNC_FLAGS: GLenum; - readonly SYNC_FLUSH_COMMANDS_BIT: GLenum; - readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum; - readonly SYNC_STATUS: GLenum; - readonly TEXTURE_2D_ARRAY: GLenum; - readonly TEXTURE_3D: GLenum; - readonly TEXTURE_BASE_LEVEL: GLenum; - readonly TEXTURE_BINDING_2D_ARRAY: GLenum; - readonly TEXTURE_BINDING_3D: GLenum; - readonly TEXTURE_COMPARE_FUNC: GLenum; - readonly TEXTURE_COMPARE_MODE: GLenum; - readonly TEXTURE_IMMUTABLE_FORMAT: GLenum; - readonly TEXTURE_IMMUTABLE_LEVELS: GLenum; - readonly TEXTURE_MAX_LEVEL: GLenum; - readonly TEXTURE_MAX_LOD: GLenum; - readonly TEXTURE_MIN_LOD: GLenum; - readonly TEXTURE_WRAP_R: GLenum; - readonly TIMEOUT_EXPIRED: GLenum; - readonly TIMEOUT_IGNORED: GLint64; - readonly TRANSFORM_FEEDBACK: GLenum; - readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum; - readonly TRANSFORM_FEEDBACK_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum; - readonly TRANSFORM_FEEDBACK_PAUSED: GLenum; - readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum; - readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum; - readonly UNIFORM_ARRAY_STRIDE: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum; - readonly UNIFORM_BLOCK_BINDING: GLenum; - readonly UNIFORM_BLOCK_DATA_SIZE: GLenum; - readonly UNIFORM_BLOCK_INDEX: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum; - readonly UNIFORM_BUFFER: GLenum; - readonly UNIFORM_BUFFER_BINDING: GLenum; - readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum; - readonly UNIFORM_BUFFER_SIZE: GLenum; - readonly UNIFORM_BUFFER_START: GLenum; - readonly UNIFORM_IS_ROW_MAJOR: GLenum; - readonly UNIFORM_MATRIX_STRIDE: GLenum; - readonly UNIFORM_OFFSET: GLenum; - readonly UNIFORM_SIZE: GLenum; - readonly UNIFORM_TYPE: GLenum; - readonly UNPACK_IMAGE_HEIGHT: GLenum; - readonly UNPACK_ROW_LENGTH: GLenum; - readonly UNPACK_SKIP_IMAGES: GLenum; - readonly UNPACK_SKIP_PIXELS: GLenum; - readonly UNPACK_SKIP_ROWS: GLenum; - readonly UNSIGNALED: GLenum; - readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum; - readonly UNSIGNED_INT_24_8: GLenum; - readonly UNSIGNED_INT_2_10_10_10_REV: GLenum; - readonly UNSIGNED_INT_5_9_9_9_REV: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum; - readonly UNSIGNED_INT_SAMPLER_3D: GLenum; - readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum; - readonly UNSIGNED_INT_VEC2: GLenum; - readonly UNSIGNED_INT_VEC3: GLenum; - readonly UNSIGNED_INT_VEC4: GLenum; - readonly UNSIGNED_NORMALIZED: GLenum; - readonly VERTEX_ARRAY_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum; - readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum; - readonly WAIT_FAILED: GLenum; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly READ_BUFFER: 0x0C02; + readonly UNPACK_ROW_LENGTH: 0x0CF2; + readonly UNPACK_SKIP_ROWS: 0x0CF3; + readonly UNPACK_SKIP_PIXELS: 0x0CF4; + readonly PACK_ROW_LENGTH: 0x0D02; + readonly PACK_SKIP_ROWS: 0x0D03; + readonly PACK_SKIP_PIXELS: 0x0D04; + readonly COLOR: 0x1800; + readonly DEPTH: 0x1801; + readonly STENCIL: 0x1802; + readonly RED: 0x1903; + readonly RGB8: 0x8051; + readonly RGBA8: 0x8058; + readonly RGB10_A2: 0x8059; + readonly TEXTURE_BINDING_3D: 0x806A; + readonly UNPACK_SKIP_IMAGES: 0x806D; + readonly UNPACK_IMAGE_HEIGHT: 0x806E; + readonly TEXTURE_3D: 0x806F; + readonly TEXTURE_WRAP_R: 0x8072; + readonly MAX_3D_TEXTURE_SIZE: 0x8073; + readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368; + readonly MAX_ELEMENTS_VERTICES: 0x80E8; + readonly MAX_ELEMENTS_INDICES: 0x80E9; + readonly TEXTURE_MIN_LOD: 0x813A; + readonly TEXTURE_MAX_LOD: 0x813B; + readonly TEXTURE_BASE_LEVEL: 0x813C; + readonly TEXTURE_MAX_LEVEL: 0x813D; + readonly MIN: 0x8007; + readonly MAX: 0x8008; + readonly DEPTH_COMPONENT24: 0x81A6; + readonly MAX_TEXTURE_LOD_BIAS: 0x84FD; + readonly TEXTURE_COMPARE_MODE: 0x884C; + readonly TEXTURE_COMPARE_FUNC: 0x884D; + readonly CURRENT_QUERY: 0x8865; + readonly QUERY_RESULT: 0x8866; + readonly QUERY_RESULT_AVAILABLE: 0x8867; + readonly STREAM_READ: 0x88E1; + readonly STREAM_COPY: 0x88E2; + readonly STATIC_READ: 0x88E5; + readonly STATIC_COPY: 0x88E6; + readonly DYNAMIC_READ: 0x88E9; + readonly DYNAMIC_COPY: 0x88EA; + readonly MAX_DRAW_BUFFERS: 0x8824; + readonly DRAW_BUFFER0: 0x8825; + readonly DRAW_BUFFER1: 0x8826; + readonly DRAW_BUFFER2: 0x8827; + readonly DRAW_BUFFER3: 0x8828; + readonly DRAW_BUFFER4: 0x8829; + readonly DRAW_BUFFER5: 0x882A; + readonly DRAW_BUFFER6: 0x882B; + readonly DRAW_BUFFER7: 0x882C; + readonly DRAW_BUFFER8: 0x882D; + readonly DRAW_BUFFER9: 0x882E; + readonly DRAW_BUFFER10: 0x882F; + readonly DRAW_BUFFER11: 0x8830; + readonly DRAW_BUFFER12: 0x8831; + readonly DRAW_BUFFER13: 0x8832; + readonly DRAW_BUFFER14: 0x8833; + readonly DRAW_BUFFER15: 0x8834; + readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49; + readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A; + readonly SAMPLER_3D: 0x8B5F; + readonly SAMPLER_2D_SHADOW: 0x8B62; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B; + readonly PIXEL_PACK_BUFFER: 0x88EB; + readonly PIXEL_UNPACK_BUFFER: 0x88EC; + readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED; + readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF; + readonly FLOAT_MAT2x3: 0x8B65; + readonly FLOAT_MAT2x4: 0x8B66; + readonly FLOAT_MAT3x2: 0x8B67; + readonly FLOAT_MAT3x4: 0x8B68; + readonly FLOAT_MAT4x2: 0x8B69; + readonly FLOAT_MAT4x3: 0x8B6A; + readonly SRGB: 0x8C40; + readonly SRGB8: 0x8C41; + readonly SRGB8_ALPHA8: 0x8C43; + readonly COMPARE_REF_TO_TEXTURE: 0x884E; + readonly RGBA32F: 0x8814; + readonly RGB32F: 0x8815; + readonly RGBA16F: 0x881A; + readonly RGB16F: 0x881B; + readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD; + readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF; + readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904; + readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905; + readonly MAX_VARYING_COMPONENTS: 0x8B4B; + readonly TEXTURE_2D_ARRAY: 0x8C1A; + readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D; + readonly R11F_G11F_B10F: 0x8C3A; + readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B; + readonly RGB9_E5: 0x8C3D; + readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E; + readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80; + readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83; + readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84; + readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85; + readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88; + readonly RASTERIZER_DISCARD: 0x8C89; + readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B; + readonly INTERLEAVED_ATTRIBS: 0x8C8C; + readonly SEPARATE_ATTRIBS: 0x8C8D; + readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E; + readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F; + readonly RGBA32UI: 0x8D70; + readonly RGB32UI: 0x8D71; + readonly RGBA16UI: 0x8D76; + readonly RGB16UI: 0x8D77; + readonly RGBA8UI: 0x8D7C; + readonly RGB8UI: 0x8D7D; + readonly RGBA32I: 0x8D82; + readonly RGB32I: 0x8D83; + readonly RGBA16I: 0x8D88; + readonly RGB16I: 0x8D89; + readonly RGBA8I: 0x8D8E; + readonly RGB8I: 0x8D8F; + readonly RED_INTEGER: 0x8D94; + readonly RGB_INTEGER: 0x8D98; + readonly RGBA_INTEGER: 0x8D99; + readonly SAMPLER_2D_ARRAY: 0x8DC1; + readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4; + readonly SAMPLER_CUBE_SHADOW: 0x8DC5; + readonly UNSIGNED_INT_VEC2: 0x8DC6; + readonly UNSIGNED_INT_VEC3: 0x8DC7; + readonly UNSIGNED_INT_VEC4: 0x8DC8; + readonly INT_SAMPLER_2D: 0x8DCA; + readonly INT_SAMPLER_3D: 0x8DCB; + readonly INT_SAMPLER_CUBE: 0x8DCC; + readonly INT_SAMPLER_2D_ARRAY: 0x8DCF; + readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2; + readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3; + readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4; + readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7; + readonly DEPTH_COMPONENT32F: 0x8CAC; + readonly DEPTH32F_STENCIL8: 0x8CAD; + readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211; + readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212; + readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213; + readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214; + readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215; + readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216; + readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217; + readonly FRAMEBUFFER_DEFAULT: 0x8218; + readonly UNSIGNED_INT_24_8: 0x84FA; + readonly DEPTH24_STENCIL8: 0x88F0; + readonly UNSIGNED_NORMALIZED: 0x8C17; + readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6; + readonly READ_FRAMEBUFFER: 0x8CA8; + readonly DRAW_FRAMEBUFFER: 0x8CA9; + readonly READ_FRAMEBUFFER_BINDING: 0x8CAA; + readonly RENDERBUFFER_SAMPLES: 0x8CAB; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4; + readonly MAX_COLOR_ATTACHMENTS: 0x8CDF; + readonly COLOR_ATTACHMENT1: 0x8CE1; + readonly COLOR_ATTACHMENT2: 0x8CE2; + readonly COLOR_ATTACHMENT3: 0x8CE3; + readonly COLOR_ATTACHMENT4: 0x8CE4; + readonly COLOR_ATTACHMENT5: 0x8CE5; + readonly COLOR_ATTACHMENT6: 0x8CE6; + readonly COLOR_ATTACHMENT7: 0x8CE7; + readonly COLOR_ATTACHMENT8: 0x8CE8; + readonly COLOR_ATTACHMENT9: 0x8CE9; + readonly COLOR_ATTACHMENT10: 0x8CEA; + readonly COLOR_ATTACHMENT11: 0x8CEB; + readonly COLOR_ATTACHMENT12: 0x8CEC; + readonly COLOR_ATTACHMENT13: 0x8CED; + readonly COLOR_ATTACHMENT14: 0x8CEE; + readonly COLOR_ATTACHMENT15: 0x8CEF; + readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56; + readonly MAX_SAMPLES: 0x8D57; + readonly HALF_FLOAT: 0x140B; + readonly RG: 0x8227; + readonly RG_INTEGER: 0x8228; + readonly R8: 0x8229; + readonly RG8: 0x822B; + readonly R16F: 0x822D; + readonly R32F: 0x822E; + readonly RG16F: 0x822F; + readonly RG32F: 0x8230; + readonly R8I: 0x8231; + readonly R8UI: 0x8232; + readonly R16I: 0x8233; + readonly R16UI: 0x8234; + readonly R32I: 0x8235; + readonly R32UI: 0x8236; + readonly RG8I: 0x8237; + readonly RG8UI: 0x8238; + readonly RG16I: 0x8239; + readonly RG16UI: 0x823A; + readonly RG32I: 0x823B; + readonly RG32UI: 0x823C; + readonly VERTEX_ARRAY_BINDING: 0x85B5; + readonly R8_SNORM: 0x8F94; + readonly RG8_SNORM: 0x8F95; + readonly RGB8_SNORM: 0x8F96; + readonly RGBA8_SNORM: 0x8F97; + readonly SIGNED_NORMALIZED: 0x8F9C; + readonly COPY_READ_BUFFER: 0x8F36; + readonly COPY_WRITE_BUFFER: 0x8F37; + readonly COPY_READ_BUFFER_BINDING: 0x8F36; + readonly COPY_WRITE_BUFFER_BINDING: 0x8F37; + readonly UNIFORM_BUFFER: 0x8A11; + readonly UNIFORM_BUFFER_BINDING: 0x8A28; + readonly UNIFORM_BUFFER_START: 0x8A29; + readonly UNIFORM_BUFFER_SIZE: 0x8A2A; + readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B; + readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D; + readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E; + readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F; + readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30; + readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31; + readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33; + readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34; + readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36; + readonly UNIFORM_TYPE: 0x8A37; + readonly UNIFORM_SIZE: 0x8A38; + readonly UNIFORM_BLOCK_INDEX: 0x8A3A; + readonly UNIFORM_OFFSET: 0x8A3B; + readonly UNIFORM_ARRAY_STRIDE: 0x8A3C; + readonly UNIFORM_MATRIX_STRIDE: 0x8A3D; + readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E; + readonly UNIFORM_BLOCK_BINDING: 0x8A3F; + readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43; + readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44; + readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46; + readonly INVALID_INDEX: 0xFFFFFFFF; + readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122; + readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125; + readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111; + readonly OBJECT_TYPE: 0x9112; + readonly SYNC_CONDITION: 0x9113; + readonly SYNC_STATUS: 0x9114; + readonly SYNC_FLAGS: 0x9115; + readonly SYNC_FENCE: 0x9116; + readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117; + readonly UNSIGNALED: 0x9118; + readonly SIGNALED: 0x9119; + readonly ALREADY_SIGNALED: 0x911A; + readonly TIMEOUT_EXPIRED: 0x911B; + readonly CONDITION_SATISFIED: 0x911C; + readonly WAIT_FAILED: 0x911D; + readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE; + readonly ANY_SAMPLES_PASSED: 0x8C2F; + readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A; + readonly SAMPLER_BINDING: 0x8919; + readonly RGB10_A2UI: 0x906F; + readonly INT_2_10_10_10_REV: 0x8D9F; + readonly TRANSFORM_FEEDBACK: 0x8E22; + readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23; + readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24; + readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25; + readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F; + readonly MAX_ELEMENT_INDEX: 0x8D6B; + readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF; + readonly TIMEOUT_IGNORED: -1; + readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; }; interface WebGL2RenderingContextBase { @@ -15469,269 +15652,269 @@ interface WebGL2RenderingContextBase { vertexAttribI4uiv(index: GLuint, values: Uint32List): void; vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void; waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void; - readonly ACTIVE_UNIFORM_BLOCKS: GLenum; - readonly ALREADY_SIGNALED: GLenum; - readonly ANY_SAMPLES_PASSED: GLenum; - readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum; - readonly COLOR: GLenum; - readonly COLOR_ATTACHMENT1: GLenum; - readonly COLOR_ATTACHMENT10: GLenum; - readonly COLOR_ATTACHMENT11: GLenum; - readonly COLOR_ATTACHMENT12: GLenum; - readonly COLOR_ATTACHMENT13: GLenum; - readonly COLOR_ATTACHMENT14: GLenum; - readonly COLOR_ATTACHMENT15: GLenum; - readonly COLOR_ATTACHMENT2: GLenum; - readonly COLOR_ATTACHMENT3: GLenum; - readonly COLOR_ATTACHMENT4: GLenum; - readonly COLOR_ATTACHMENT5: GLenum; - readonly COLOR_ATTACHMENT6: GLenum; - readonly COLOR_ATTACHMENT7: GLenum; - readonly COLOR_ATTACHMENT8: GLenum; - readonly COLOR_ATTACHMENT9: GLenum; - readonly COMPARE_REF_TO_TEXTURE: GLenum; - readonly CONDITION_SATISFIED: GLenum; - readonly COPY_READ_BUFFER: GLenum; - readonly COPY_READ_BUFFER_BINDING: GLenum; - readonly COPY_WRITE_BUFFER: GLenum; - readonly COPY_WRITE_BUFFER_BINDING: GLenum; - readonly CURRENT_QUERY: GLenum; - readonly DEPTH: GLenum; - readonly DEPTH24_STENCIL8: GLenum; - readonly DEPTH32F_STENCIL8: GLenum; - readonly DEPTH_COMPONENT24: GLenum; - readonly DEPTH_COMPONENT32F: GLenum; - readonly DRAW_BUFFER0: GLenum; - readonly DRAW_BUFFER1: GLenum; - readonly DRAW_BUFFER10: GLenum; - readonly DRAW_BUFFER11: GLenum; - readonly DRAW_BUFFER12: GLenum; - readonly DRAW_BUFFER13: GLenum; - readonly DRAW_BUFFER14: GLenum; - readonly DRAW_BUFFER15: GLenum; - readonly DRAW_BUFFER2: GLenum; - readonly DRAW_BUFFER3: GLenum; - readonly DRAW_BUFFER4: GLenum; - readonly DRAW_BUFFER5: GLenum; - readonly DRAW_BUFFER6: GLenum; - readonly DRAW_BUFFER7: GLenum; - readonly DRAW_BUFFER8: GLenum; - readonly DRAW_BUFFER9: GLenum; - readonly DRAW_FRAMEBUFFER: GLenum; - readonly DRAW_FRAMEBUFFER_BINDING: GLenum; - readonly DYNAMIC_COPY: GLenum; - readonly DYNAMIC_READ: GLenum; - readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum; - readonly FLOAT_MAT2x3: GLenum; - readonly FLOAT_MAT2x4: GLenum; - readonly FLOAT_MAT3x2: GLenum; - readonly FLOAT_MAT3x4: GLenum; - readonly FLOAT_MAT4x2: GLenum; - readonly FLOAT_MAT4x3: GLenum; - readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum; - readonly FRAMEBUFFER_DEFAULT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum; - readonly HALF_FLOAT: GLenum; - readonly INTERLEAVED_ATTRIBS: GLenum; - readonly INT_2_10_10_10_REV: GLenum; - readonly INT_SAMPLER_2D: GLenum; - readonly INT_SAMPLER_2D_ARRAY: GLenum; - readonly INT_SAMPLER_3D: GLenum; - readonly INT_SAMPLER_CUBE: GLenum; - readonly INVALID_INDEX: GLenum; - readonly MAX: GLenum; - readonly MAX_3D_TEXTURE_SIZE: GLenum; - readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum; - readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS: GLenum; - readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum; - readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MAX_DRAW_BUFFERS: GLenum; - readonly MAX_ELEMENTS_INDICES: GLenum; - readonly MAX_ELEMENTS_VERTICES: GLenum; - readonly MAX_ELEMENT_INDEX: GLenum; - readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum; - readonly MAX_SAMPLES: GLenum; - readonly MAX_SERVER_WAIT_TIMEOUT: GLenum; - readonly MAX_TEXTURE_LOD_BIAS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum; - readonly MAX_UNIFORM_BLOCK_SIZE: GLenum; - readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum; - readonly MAX_VARYING_COMPONENTS: GLenum; - readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum; - readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum; - readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MIN: GLenum; - readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum; - readonly OBJECT_TYPE: GLenum; - readonly PACK_ROW_LENGTH: GLenum; - readonly PACK_SKIP_PIXELS: GLenum; - readonly PACK_SKIP_ROWS: GLenum; - readonly PIXEL_PACK_BUFFER: GLenum; - readonly PIXEL_PACK_BUFFER_BINDING: GLenum; - readonly PIXEL_UNPACK_BUFFER: GLenum; - readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum; - readonly QUERY_RESULT: GLenum; - readonly QUERY_RESULT_AVAILABLE: GLenum; - readonly R11F_G11F_B10F: GLenum; - readonly R16F: GLenum; - readonly R16I: GLenum; - readonly R16UI: GLenum; - readonly R32F: GLenum; - readonly R32I: GLenum; - readonly R32UI: GLenum; - readonly R8: GLenum; - readonly R8I: GLenum; - readonly R8UI: GLenum; - readonly R8_SNORM: GLenum; - readonly RASTERIZER_DISCARD: GLenum; - readonly READ_BUFFER: GLenum; - readonly READ_FRAMEBUFFER: GLenum; - readonly READ_FRAMEBUFFER_BINDING: GLenum; - readonly RED: GLenum; - readonly RED_INTEGER: GLenum; - readonly RENDERBUFFER_SAMPLES: GLenum; - readonly RG: GLenum; - readonly RG16F: GLenum; - readonly RG16I: GLenum; - readonly RG16UI: GLenum; - readonly RG32F: GLenum; - readonly RG32I: GLenum; - readonly RG32UI: GLenum; - readonly RG8: GLenum; - readonly RG8I: GLenum; - readonly RG8UI: GLenum; - readonly RG8_SNORM: GLenum; - readonly RGB10_A2: GLenum; - readonly RGB10_A2UI: GLenum; - readonly RGB16F: GLenum; - readonly RGB16I: GLenum; - readonly RGB16UI: GLenum; - readonly RGB32F: GLenum; - readonly RGB32I: GLenum; - readonly RGB32UI: GLenum; - readonly RGB8: GLenum; - readonly RGB8I: GLenum; - readonly RGB8UI: GLenum; - readonly RGB8_SNORM: GLenum; - readonly RGB9_E5: GLenum; - readonly RGBA16F: GLenum; - readonly RGBA16I: GLenum; - readonly RGBA16UI: GLenum; - readonly RGBA32F: GLenum; - readonly RGBA32I: GLenum; - readonly RGBA32UI: GLenum; - readonly RGBA8: GLenum; - readonly RGBA8I: GLenum; - readonly RGBA8UI: GLenum; - readonly RGBA8_SNORM: GLenum; - readonly RGBA_INTEGER: GLenum; - readonly RGB_INTEGER: GLenum; - readonly RG_INTEGER: GLenum; - readonly SAMPLER_2D_ARRAY: GLenum; - readonly SAMPLER_2D_ARRAY_SHADOW: GLenum; - readonly SAMPLER_2D_SHADOW: GLenum; - readonly SAMPLER_3D: GLenum; - readonly SAMPLER_BINDING: GLenum; - readonly SAMPLER_CUBE_SHADOW: GLenum; - readonly SEPARATE_ATTRIBS: GLenum; - readonly SIGNALED: GLenum; - readonly SIGNED_NORMALIZED: GLenum; - readonly SRGB: GLenum; - readonly SRGB8: GLenum; - readonly SRGB8_ALPHA8: GLenum; - readonly STATIC_COPY: GLenum; - readonly STATIC_READ: GLenum; - readonly STENCIL: GLenum; - readonly STREAM_COPY: GLenum; - readonly STREAM_READ: GLenum; - readonly SYNC_CONDITION: GLenum; - readonly SYNC_FENCE: GLenum; - readonly SYNC_FLAGS: GLenum; - readonly SYNC_FLUSH_COMMANDS_BIT: GLenum; - readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum; - readonly SYNC_STATUS: GLenum; - readonly TEXTURE_2D_ARRAY: GLenum; - readonly TEXTURE_3D: GLenum; - readonly TEXTURE_BASE_LEVEL: GLenum; - readonly TEXTURE_BINDING_2D_ARRAY: GLenum; - readonly TEXTURE_BINDING_3D: GLenum; - readonly TEXTURE_COMPARE_FUNC: GLenum; - readonly TEXTURE_COMPARE_MODE: GLenum; - readonly TEXTURE_IMMUTABLE_FORMAT: GLenum; - readonly TEXTURE_IMMUTABLE_LEVELS: GLenum; - readonly TEXTURE_MAX_LEVEL: GLenum; - readonly TEXTURE_MAX_LOD: GLenum; - readonly TEXTURE_MIN_LOD: GLenum; - readonly TEXTURE_WRAP_R: GLenum; - readonly TIMEOUT_EXPIRED: GLenum; - readonly TIMEOUT_IGNORED: GLint64; - readonly TRANSFORM_FEEDBACK: GLenum; - readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum; - readonly TRANSFORM_FEEDBACK_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum; - readonly TRANSFORM_FEEDBACK_PAUSED: GLenum; - readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum; - readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum; - readonly UNIFORM_ARRAY_STRIDE: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum; - readonly UNIFORM_BLOCK_BINDING: GLenum; - readonly UNIFORM_BLOCK_DATA_SIZE: GLenum; - readonly UNIFORM_BLOCK_INDEX: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum; - readonly UNIFORM_BUFFER: GLenum; - readonly UNIFORM_BUFFER_BINDING: GLenum; - readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum; - readonly UNIFORM_BUFFER_SIZE: GLenum; - readonly UNIFORM_BUFFER_START: GLenum; - readonly UNIFORM_IS_ROW_MAJOR: GLenum; - readonly UNIFORM_MATRIX_STRIDE: GLenum; - readonly UNIFORM_OFFSET: GLenum; - readonly UNIFORM_SIZE: GLenum; - readonly UNIFORM_TYPE: GLenum; - readonly UNPACK_IMAGE_HEIGHT: GLenum; - readonly UNPACK_ROW_LENGTH: GLenum; - readonly UNPACK_SKIP_IMAGES: GLenum; - readonly UNPACK_SKIP_PIXELS: GLenum; - readonly UNPACK_SKIP_ROWS: GLenum; - readonly UNSIGNALED: GLenum; - readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum; - readonly UNSIGNED_INT_24_8: GLenum; - readonly UNSIGNED_INT_2_10_10_10_REV: GLenum; - readonly UNSIGNED_INT_5_9_9_9_REV: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum; - readonly UNSIGNED_INT_SAMPLER_3D: GLenum; - readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum; - readonly UNSIGNED_INT_VEC2: GLenum; - readonly UNSIGNED_INT_VEC3: GLenum; - readonly UNSIGNED_INT_VEC4: GLenum; - readonly UNSIGNED_NORMALIZED: GLenum; - readonly VERTEX_ARRAY_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum; - readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum; - readonly WAIT_FAILED: GLenum; + readonly READ_BUFFER: 0x0C02; + readonly UNPACK_ROW_LENGTH: 0x0CF2; + readonly UNPACK_SKIP_ROWS: 0x0CF3; + readonly UNPACK_SKIP_PIXELS: 0x0CF4; + readonly PACK_ROW_LENGTH: 0x0D02; + readonly PACK_SKIP_ROWS: 0x0D03; + readonly PACK_SKIP_PIXELS: 0x0D04; + readonly COLOR: 0x1800; + readonly DEPTH: 0x1801; + readonly STENCIL: 0x1802; + readonly RED: 0x1903; + readonly RGB8: 0x8051; + readonly RGBA8: 0x8058; + readonly RGB10_A2: 0x8059; + readonly TEXTURE_BINDING_3D: 0x806A; + readonly UNPACK_SKIP_IMAGES: 0x806D; + readonly UNPACK_IMAGE_HEIGHT: 0x806E; + readonly TEXTURE_3D: 0x806F; + readonly TEXTURE_WRAP_R: 0x8072; + readonly MAX_3D_TEXTURE_SIZE: 0x8073; + readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368; + readonly MAX_ELEMENTS_VERTICES: 0x80E8; + readonly MAX_ELEMENTS_INDICES: 0x80E9; + readonly TEXTURE_MIN_LOD: 0x813A; + readonly TEXTURE_MAX_LOD: 0x813B; + readonly TEXTURE_BASE_LEVEL: 0x813C; + readonly TEXTURE_MAX_LEVEL: 0x813D; + readonly MIN: 0x8007; + readonly MAX: 0x8008; + readonly DEPTH_COMPONENT24: 0x81A6; + readonly MAX_TEXTURE_LOD_BIAS: 0x84FD; + readonly TEXTURE_COMPARE_MODE: 0x884C; + readonly TEXTURE_COMPARE_FUNC: 0x884D; + readonly CURRENT_QUERY: 0x8865; + readonly QUERY_RESULT: 0x8866; + readonly QUERY_RESULT_AVAILABLE: 0x8867; + readonly STREAM_READ: 0x88E1; + readonly STREAM_COPY: 0x88E2; + readonly STATIC_READ: 0x88E5; + readonly STATIC_COPY: 0x88E6; + readonly DYNAMIC_READ: 0x88E9; + readonly DYNAMIC_COPY: 0x88EA; + readonly MAX_DRAW_BUFFERS: 0x8824; + readonly DRAW_BUFFER0: 0x8825; + readonly DRAW_BUFFER1: 0x8826; + readonly DRAW_BUFFER2: 0x8827; + readonly DRAW_BUFFER3: 0x8828; + readonly DRAW_BUFFER4: 0x8829; + readonly DRAW_BUFFER5: 0x882A; + readonly DRAW_BUFFER6: 0x882B; + readonly DRAW_BUFFER7: 0x882C; + readonly DRAW_BUFFER8: 0x882D; + readonly DRAW_BUFFER9: 0x882E; + readonly DRAW_BUFFER10: 0x882F; + readonly DRAW_BUFFER11: 0x8830; + readonly DRAW_BUFFER12: 0x8831; + readonly DRAW_BUFFER13: 0x8832; + readonly DRAW_BUFFER14: 0x8833; + readonly DRAW_BUFFER15: 0x8834; + readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49; + readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A; + readonly SAMPLER_3D: 0x8B5F; + readonly SAMPLER_2D_SHADOW: 0x8B62; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B; + readonly PIXEL_PACK_BUFFER: 0x88EB; + readonly PIXEL_UNPACK_BUFFER: 0x88EC; + readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED; + readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF; + readonly FLOAT_MAT2x3: 0x8B65; + readonly FLOAT_MAT2x4: 0x8B66; + readonly FLOAT_MAT3x2: 0x8B67; + readonly FLOAT_MAT3x4: 0x8B68; + readonly FLOAT_MAT4x2: 0x8B69; + readonly FLOAT_MAT4x3: 0x8B6A; + readonly SRGB: 0x8C40; + readonly SRGB8: 0x8C41; + readonly SRGB8_ALPHA8: 0x8C43; + readonly COMPARE_REF_TO_TEXTURE: 0x884E; + readonly RGBA32F: 0x8814; + readonly RGB32F: 0x8815; + readonly RGBA16F: 0x881A; + readonly RGB16F: 0x881B; + readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD; + readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF; + readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904; + readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905; + readonly MAX_VARYING_COMPONENTS: 0x8B4B; + readonly TEXTURE_2D_ARRAY: 0x8C1A; + readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D; + readonly R11F_G11F_B10F: 0x8C3A; + readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B; + readonly RGB9_E5: 0x8C3D; + readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E; + readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80; + readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83; + readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84; + readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85; + readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88; + readonly RASTERIZER_DISCARD: 0x8C89; + readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B; + readonly INTERLEAVED_ATTRIBS: 0x8C8C; + readonly SEPARATE_ATTRIBS: 0x8C8D; + readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E; + readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F; + readonly RGBA32UI: 0x8D70; + readonly RGB32UI: 0x8D71; + readonly RGBA16UI: 0x8D76; + readonly RGB16UI: 0x8D77; + readonly RGBA8UI: 0x8D7C; + readonly RGB8UI: 0x8D7D; + readonly RGBA32I: 0x8D82; + readonly RGB32I: 0x8D83; + readonly RGBA16I: 0x8D88; + readonly RGB16I: 0x8D89; + readonly RGBA8I: 0x8D8E; + readonly RGB8I: 0x8D8F; + readonly RED_INTEGER: 0x8D94; + readonly RGB_INTEGER: 0x8D98; + readonly RGBA_INTEGER: 0x8D99; + readonly SAMPLER_2D_ARRAY: 0x8DC1; + readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4; + readonly SAMPLER_CUBE_SHADOW: 0x8DC5; + readonly UNSIGNED_INT_VEC2: 0x8DC6; + readonly UNSIGNED_INT_VEC3: 0x8DC7; + readonly UNSIGNED_INT_VEC4: 0x8DC8; + readonly INT_SAMPLER_2D: 0x8DCA; + readonly INT_SAMPLER_3D: 0x8DCB; + readonly INT_SAMPLER_CUBE: 0x8DCC; + readonly INT_SAMPLER_2D_ARRAY: 0x8DCF; + readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2; + readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3; + readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4; + readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7; + readonly DEPTH_COMPONENT32F: 0x8CAC; + readonly DEPTH32F_STENCIL8: 0x8CAD; + readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211; + readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212; + readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213; + readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214; + readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215; + readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216; + readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217; + readonly FRAMEBUFFER_DEFAULT: 0x8218; + readonly UNSIGNED_INT_24_8: 0x84FA; + readonly DEPTH24_STENCIL8: 0x88F0; + readonly UNSIGNED_NORMALIZED: 0x8C17; + readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6; + readonly READ_FRAMEBUFFER: 0x8CA8; + readonly DRAW_FRAMEBUFFER: 0x8CA9; + readonly READ_FRAMEBUFFER_BINDING: 0x8CAA; + readonly RENDERBUFFER_SAMPLES: 0x8CAB; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4; + readonly MAX_COLOR_ATTACHMENTS: 0x8CDF; + readonly COLOR_ATTACHMENT1: 0x8CE1; + readonly COLOR_ATTACHMENT2: 0x8CE2; + readonly COLOR_ATTACHMENT3: 0x8CE3; + readonly COLOR_ATTACHMENT4: 0x8CE4; + readonly COLOR_ATTACHMENT5: 0x8CE5; + readonly COLOR_ATTACHMENT6: 0x8CE6; + readonly COLOR_ATTACHMENT7: 0x8CE7; + readonly COLOR_ATTACHMENT8: 0x8CE8; + readonly COLOR_ATTACHMENT9: 0x8CE9; + readonly COLOR_ATTACHMENT10: 0x8CEA; + readonly COLOR_ATTACHMENT11: 0x8CEB; + readonly COLOR_ATTACHMENT12: 0x8CEC; + readonly COLOR_ATTACHMENT13: 0x8CED; + readonly COLOR_ATTACHMENT14: 0x8CEE; + readonly COLOR_ATTACHMENT15: 0x8CEF; + readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56; + readonly MAX_SAMPLES: 0x8D57; + readonly HALF_FLOAT: 0x140B; + readonly RG: 0x8227; + readonly RG_INTEGER: 0x8228; + readonly R8: 0x8229; + readonly RG8: 0x822B; + readonly R16F: 0x822D; + readonly R32F: 0x822E; + readonly RG16F: 0x822F; + readonly RG32F: 0x8230; + readonly R8I: 0x8231; + readonly R8UI: 0x8232; + readonly R16I: 0x8233; + readonly R16UI: 0x8234; + readonly R32I: 0x8235; + readonly R32UI: 0x8236; + readonly RG8I: 0x8237; + readonly RG8UI: 0x8238; + readonly RG16I: 0x8239; + readonly RG16UI: 0x823A; + readonly RG32I: 0x823B; + readonly RG32UI: 0x823C; + readonly VERTEX_ARRAY_BINDING: 0x85B5; + readonly R8_SNORM: 0x8F94; + readonly RG8_SNORM: 0x8F95; + readonly RGB8_SNORM: 0x8F96; + readonly RGBA8_SNORM: 0x8F97; + readonly SIGNED_NORMALIZED: 0x8F9C; + readonly COPY_READ_BUFFER: 0x8F36; + readonly COPY_WRITE_BUFFER: 0x8F37; + readonly COPY_READ_BUFFER_BINDING: 0x8F36; + readonly COPY_WRITE_BUFFER_BINDING: 0x8F37; + readonly UNIFORM_BUFFER: 0x8A11; + readonly UNIFORM_BUFFER_BINDING: 0x8A28; + readonly UNIFORM_BUFFER_START: 0x8A29; + readonly UNIFORM_BUFFER_SIZE: 0x8A2A; + readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B; + readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D; + readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E; + readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F; + readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30; + readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31; + readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33; + readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34; + readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36; + readonly UNIFORM_TYPE: 0x8A37; + readonly UNIFORM_SIZE: 0x8A38; + readonly UNIFORM_BLOCK_INDEX: 0x8A3A; + readonly UNIFORM_OFFSET: 0x8A3B; + readonly UNIFORM_ARRAY_STRIDE: 0x8A3C; + readonly UNIFORM_MATRIX_STRIDE: 0x8A3D; + readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E; + readonly UNIFORM_BLOCK_BINDING: 0x8A3F; + readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43; + readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44; + readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46; + readonly INVALID_INDEX: 0xFFFFFFFF; + readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122; + readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125; + readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111; + readonly OBJECT_TYPE: 0x9112; + readonly SYNC_CONDITION: 0x9113; + readonly SYNC_STATUS: 0x9114; + readonly SYNC_FLAGS: 0x9115; + readonly SYNC_FENCE: 0x9116; + readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117; + readonly UNSIGNALED: 0x9118; + readonly SIGNALED: 0x9119; + readonly ALREADY_SIGNALED: 0x911A; + readonly TIMEOUT_EXPIRED: 0x911B; + readonly CONDITION_SATISFIED: 0x911C; + readonly WAIT_FAILED: 0x911D; + readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE; + readonly ANY_SAMPLES_PASSED: 0x8C2F; + readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A; + readonly SAMPLER_BINDING: 0x8919; + readonly RGB10_A2UI: 0x906F; + readonly INT_2_10_10_10_REV: 0x8D9F; + readonly TRANSFORM_FEEDBACK: 0x8E22; + readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23; + readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24; + readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25; + readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F; + readonly MAX_ELEMENT_INDEX: 0x8D6B; + readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF; + readonly TIMEOUT_IGNORED: -1; + readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247; } interface WebGL2RenderingContextOverloads { @@ -15843,302 +16026,302 @@ interface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderin declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; }; interface WebGLRenderingContextBase { @@ -16296,302 +16479,302 @@ interface WebGLRenderingContextBase { vertexAttrib4fv(index: GLuint, values: Float32List): void; vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void; viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; } interface WebGLRenderingContextOverloads { @@ -16729,10 +16912,10 @@ interface WebSocket extends EventTarget { close(code?: number, reason?: string): void; /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */ send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void; - readonly CLOSED: number; - readonly CLOSING: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSING: 2; + readonly CLOSED: 3; addEventListener(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -16742,10 +16925,10 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string | URL, protocols?: string | string[]): WebSocket; - readonly CLOSED: number; - readonly CLOSING: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSING: 2; + readonly CLOSED: 3; }; /** Events that occur due to the user moving a mouse wheel or similar input device. */ @@ -16754,17 +16937,17 @@ interface WheelEvent extends MouseEvent { readonly deltaX: number; readonly deltaY: number; readonly deltaZ: number; - readonly DOM_DELTA_LINE: number; - readonly DOM_DELTA_PAGE: number; - readonly DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_PIXEL: 0x00; + readonly DOM_DELTA_LINE: 0x01; + readonly DOM_DELTA_PAGE: 0x02; } declare var WheelEvent: { prototype: WheelEvent; new(type: string, eventInitDict?: WheelEventInit): WheelEvent; - readonly DOM_DELTA_LINE: number; - readonly DOM_DELTA_PAGE: number; - readonly DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_PIXEL: 0x00; + readonly DOM_DELTA_LINE: 0x01; + readonly DOM_DELTA_PAGE: 0x02; }; interface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandlersEventMap { @@ -17162,11 +17345,11 @@ interface XMLHttpRequest extends XMLHttpRequestEventTarget { * Throws a "SyntaxError" DOMException if name is not a header name or if value is not a header value. */ setRequestHeader(name: string, value: string): void; - readonly DONE: number; - readonly HEADERS_RECEIVED: number; - readonly LOADING: number; - readonly OPENED: number; - readonly UNSENT: number; + readonly UNSENT: 0; + readonly OPENED: 1; + readonly HEADERS_RECEIVED: 2; + readonly LOADING: 3; + readonly DONE: 4; addEventListener(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -17176,11 +17359,11 @@ interface XMLHttpRequest extends XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - readonly DONE: number; - readonly HEADERS_RECEIVED: number; - readonly LOADING: number; - readonly OPENED: number; - readonly UNSENT: number; + readonly UNSENT: 0; + readonly OPENED: 1; + readonly HEADERS_RECEIVED: 2; + readonly LOADING: 3; + readonly DONE: 4; }; interface XMLHttpRequestEventTargetEventMap { @@ -17270,31 +17453,31 @@ interface XPathResult { readonly stringValue: string; iterateNext(): Node | null; snapshotItem(index: number): Node | null; - readonly ANY_TYPE: number; - readonly ANY_UNORDERED_NODE_TYPE: number; - readonly BOOLEAN_TYPE: number; - readonly FIRST_ORDERED_NODE_TYPE: number; - readonly NUMBER_TYPE: number; - readonly ORDERED_NODE_ITERATOR_TYPE: number; - readonly ORDERED_NODE_SNAPSHOT_TYPE: number; - readonly STRING_TYPE: number; - readonly UNORDERED_NODE_ITERATOR_TYPE: number; - readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: 0; + readonly NUMBER_TYPE: 1; + readonly STRING_TYPE: 2; + readonly BOOLEAN_TYPE: 3; + readonly UNORDERED_NODE_ITERATOR_TYPE: 4; + readonly ORDERED_NODE_ITERATOR_TYPE: 5; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: 6; + readonly ORDERED_NODE_SNAPSHOT_TYPE: 7; + readonly ANY_UNORDERED_NODE_TYPE: 8; + readonly FIRST_ORDERED_NODE_TYPE: 9; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - readonly ANY_TYPE: number; - readonly ANY_UNORDERED_NODE_TYPE: number; - readonly BOOLEAN_TYPE: number; - readonly FIRST_ORDERED_NODE_TYPE: number; - readonly NUMBER_TYPE: number; - readonly ORDERED_NODE_ITERATOR_TYPE: number; - readonly ORDERED_NODE_SNAPSHOT_TYPE: number; - readonly STRING_TYPE: number; - readonly UNORDERED_NODE_ITERATOR_TYPE: number; - readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: 0; + readonly NUMBER_TYPE: 1; + readonly STRING_TYPE: 2; + readonly BOOLEAN_TYPE: 3; + readonly UNORDERED_NODE_ITERATOR_TYPE: 4; + readonly ORDERED_NODE_ITERATOR_TYPE: 5; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: 6; + readonly ORDERED_NODE_SNAPSHOT_TYPE: 7; + readonly ANY_UNORDERED_NODE_TYPE: 8; + readonly FIRST_ORDERED_NODE_TYPE: 9; }; /** An XSLTProcessor applies an XSLT stylesheet transformation to an XML document to produce a new XML document as output. It has methods to load the XSLT stylesheet, to manipulate parameter values, and to apply the transformation to documents. */ @@ -17839,6 +18022,39 @@ interface SVGElementTagNameMap { "view": SVGViewElement; } +interface MathMLElementTagNameMap { + "annotation": MathMLElement; + "annotation-xml": MathMLElement; + "maction": MathMLElement; + "math": MathMLElement; + "merror": MathMLElement; + "mfrac": MathMLElement; + "mi": MathMLElement; + "mmultiscripts": MathMLElement; + "mn": MathMLElement; + "mo": MathMLElement; + "mover": MathMLElement; + "mpadded": MathMLElement; + "mphantom": MathMLElement; + "mprescripts": MathMLElement; + "mroot": MathMLElement; + "mrow": MathMLElement; + "ms": MathMLElement; + "mspace": MathMLElement; + "msqrt": MathMLElement; + "mstyle": MathMLElement; + "msub": MathMLElement; + "msubsup": MathMLElement; + "msup": MathMLElement; + "mtable": MathMLElement; + "mtd": MathMLElement; + "mtext": MathMLElement; + "mtr": MathMLElement; + "munder": MathMLElement; + "munderover": MathMLElement; + "semantics": MathMLElement; +} + /** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */ type ElementTagNameMap = HTMLElementTagNameMap & Pick>; @@ -18008,7 +18224,9 @@ declare var onclose: ((this: Window, ev: Event) => any) | null; * @param ev The mouse event. */ declare var oncontextmenu: ((this: Window, ev: MouseEvent) => any) | null; +declare var oncopy: ((this: Window, ev: ClipboardEvent) => any) | null; declare var oncuechange: ((this: Window, ev: Event) => any) | null; +declare var oncut: ((this: Window, ev: ClipboardEvent) => any) | null; /** * Fires when the user double-clicks the object. * @param ev The mouse event. @@ -18138,6 +18356,7 @@ declare var onmouseover: ((this: Window, ev: MouseEvent) => any) | null; * @param ev The mouse event. */ declare var onmouseup: ((this: Window, ev: MouseEvent) => any) | null; +declare var onpaste: ((this: Window, ev: ClipboardEvent) => any) | null; /** * Occurs when playback is paused. * @param ev The event. @@ -18327,7 +18546,6 @@ type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; type ImageBitmapSource = CanvasImageSource | Blob | ImageData; -type InsertPosition = "beforebegin" | "afterbegin" | "beforeend" | "afterend"; type Int32List = Int32Array | GLint[]; type LineAndPositionSetting = number | AutoKeyword; type MediaProvider = MediaStream | MediaSource | Blob; @@ -18392,6 +18610,7 @@ type EndOfStreamError = "decode" | "network"; type EndingType = "native" | "transparent"; type FileSystemHandleKind = "directory" | "file"; type FillMode = "auto" | "backwards" | "both" | "forwards" | "none"; +type FontDisplay = "auto" | "block" | "fallback" | "optional" | "swap"; type FontFaceLoadStatus = "error" | "loaded" | "loading" | "unloaded"; type FontFaceSetLoadStatus = "loaded" | "loading"; type FullscreenNavigationUI = "auto" | "hide" | "show"; @@ -18403,14 +18622,18 @@ type IDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique"; type IDBRequestReadyState = "done" | "pending"; type IDBTransactionDurability = "default" | "relaxed" | "strict"; type IDBTransactionMode = "readonly" | "readwrite" | "versionchange"; -type ImageOrientation = "flipY" | "none"; +type ImageOrientation = "flipY" | "from-image"; type ImageSmoothingQuality = "high" | "low" | "medium"; +type InsertPosition = "afterbegin" | "afterend" | "beforebegin" | "beforeend"; type IterationCompositeOperation = "accumulate" | "replace"; type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; type KeyType = "private" | "public" | "secret"; type KeyUsage = "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey"; type LineAlignSetting = "center" | "end" | "start"; type LockMode = "exclusive" | "shared"; +type MIDIPortConnectionState = "closed" | "open" | "pending"; +type MIDIPortDeviceState = "connected" | "disconnected"; +type MIDIPortType = "input" | "output"; type MediaDecodingType = "file" | "media-source" | "webrtc"; type MediaDeviceKind = "audioinput" | "audiooutput" | "videoinput"; type MediaEncodingType = "record" | "webrtc"; diff --git a/lib/lib.dom.iterable.d.ts b/lib/lib.dom.iterable.d.ts index 9cd574ca52d..3e0340d61ea 100644 --- a/lib/lib.dom.iterable.d.ts +++ b/lib/lib.dom.iterable.d.ts @@ -34,6 +34,10 @@ interface BaseAudioContext { createPeriodicWave(real: Iterable, imag: Iterable, constraints?: PeriodicWaveConstraints): PeriodicWave; } +interface CSSKeyframesRule { + [Symbol.iterator](): IterableIterator; +} + interface CSSRuleList { [Symbol.iterator](): IterableIterator; } @@ -137,6 +141,16 @@ interface IDBObjectStore { createIndex(name: string, keyPath: string | Iterable, options?: IDBIndexParameters): IDBIndex; } +interface MIDIInputMap extends ReadonlyMap { +} + +interface MIDIOutput { + send(data: Iterable, timestamp?: DOMHighResTimeStamp): void; +} + +interface MIDIOutputMap extends ReadonlyMap { +} + interface MediaKeyStatusMap { [Symbol.iterator](): IterableIterator<[BufferSource, MediaKeyStatus]>; entries(): IterableIterator<[BufferSource, MediaKeyStatus]>; diff --git a/lib/lib.es2023.array.d.ts b/lib/lib.es2023.array.d.ts new file mode 100644 index 00000000000..cd6dee28252 --- /dev/null +++ b/lib/lib.es2023.array.d.ts @@ -0,0 +1,344 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + + + +/// + + +interface Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): number; +} + +interface ReadonlyArray { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: T, index: number, array: readonly T[]) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): T | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): number; +} + +interface Int8Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; +} + +interface Uint8Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; +} + +interface Uint8ClampedArray { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; +} + +interface Int16Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; +} + +interface Uint16Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; +} + +interface Int32Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; +} + +interface Uint32Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; +} + +interface Float32Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; +} + +interface Float64Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; +} + +interface BigInt64Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): number; +} + +interface BigUint64Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast(predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S | undefined; + findLast(predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex(predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): number; +} diff --git a/lib/lib.es2023.d.ts b/lib/lib.es2023.d.ts new file mode 100644 index 00000000000..3cd069499be --- /dev/null +++ b/lib/lib.es2023.d.ts @@ -0,0 +1,22 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + + + +/// + + +/// +/// diff --git a/lib/lib.es2023.full.d.ts b/lib/lib.es2023.full.d.ts new file mode 100644 index 00000000000..66ee8a719a0 --- /dev/null +++ b/lib/lib.es2023.full.d.ts @@ -0,0 +1,25 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + + + +/// + + +/// +/// +/// +/// +/// diff --git a/lib/lib.es5.d.ts b/lib/lib.es5.d.ts index f4dedb4ebe5..7ce8e4a1b17 100644 --- a/lib/lib.es5.d.ts +++ b/lib/lib.es5.d.ts @@ -18,6 +18,9 @@ and limitations under the License. /// +/// +/// + ///////////////////////////// /// ECMAScript APIs ///////////////////////////// @@ -1137,13 +1140,6 @@ interface JSON { * If a member contains nested objects, the nested objects are transformed before the parent object is. */ parse(text: string, reviver?: (this: any, key: string, value: any) => any): any; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - * @param replacer An array of strings and numbers that acts as an approved list for selecting the object properties that will be stringified. - * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. - */ - stringify(value: Function | Symbol | undefined, replacer?: (number | string)[] | null, space?: string | number): undefined; /** * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. * @param value A JavaScript value, usually an object or array, to be converted. @@ -1510,11 +1506,6 @@ interface TypedPropertyDescriptor { set?: (value: T) => void; } -declare type ClassDecorator = (target: TFunction) => TFunction | void; -declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void; -declare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void; -declare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void; - declare type PromiseConstructorLike = new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) => PromiseLike; interface PromiseLike { diff --git a/lib/lib.esnext.d.ts b/lib/lib.esnext.d.ts index d8935cccc00..822b0182f17 100644 --- a/lib/lib.esnext.d.ts +++ b/lib/lib.esnext.d.ts @@ -18,5 +18,5 @@ and limitations under the License. /// -/// +/// /// diff --git a/lib/lib.webworker.d.ts b/lib/lib.webworker.d.ts index 209f41cfdbd..2329afedbc2 100644 --- a/lib/lib.webworker.d.ts +++ b/lib/lib.webworker.d.ts @@ -218,13 +218,20 @@ interface FileSystemGetFileOptions { create?: boolean; } +interface FileSystemReadWriteOptions { + at?: number; +} + interface FileSystemRemoveOptions { recursive?: boolean; } interface FontFaceDescriptors { - display?: string; + ascentOverride?: string; + descentOverride?: string; + display?: FontDisplay; featureSettings?: string; + lineGapOverride?: string; stretch?: string; style?: string; unicodeRange?: string; @@ -297,6 +304,11 @@ interface ImageDataSettings { colorSpace?: PredefinedColorSpace; } +interface ImageEncodeOptions { + quality?: number; + type?: string; +} + interface ImportMeta { url: string; } @@ -744,7 +756,7 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void; drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void; vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88FE; } /** A controller object that allows you to abort one or more DOM requests as and when desired. */ @@ -1101,7 +1113,7 @@ interface Crypto { readonly subtle: SubtleCrypto; getRandomValues(array: T): T; /** Available only in secure contexts. */ - randomUUID(): string; + randomUUID(): `${string}-${string}-${string}-${string}-${string}`; } declare var Crypto: { @@ -1143,61 +1155,61 @@ interface DOMException extends Error { readonly code: number; readonly message: string; readonly name: string; - readonly ABORT_ERR: number; - readonly DATA_CLONE_ERR: number; - readonly DOMSTRING_SIZE_ERR: number; - readonly HIERARCHY_REQUEST_ERR: number; - readonly INDEX_SIZE_ERR: number; - readonly INUSE_ATTRIBUTE_ERR: number; - readonly INVALID_ACCESS_ERR: number; - readonly INVALID_CHARACTER_ERR: number; - readonly INVALID_MODIFICATION_ERR: number; - readonly INVALID_NODE_TYPE_ERR: number; - readonly INVALID_STATE_ERR: number; - readonly NAMESPACE_ERR: number; - readonly NETWORK_ERR: number; - readonly NOT_FOUND_ERR: number; - readonly NOT_SUPPORTED_ERR: number; - readonly NO_DATA_ALLOWED_ERR: number; - readonly NO_MODIFICATION_ALLOWED_ERR: number; - readonly QUOTA_EXCEEDED_ERR: number; - readonly SECURITY_ERR: number; - readonly SYNTAX_ERR: number; - readonly TIMEOUT_ERR: number; - readonly TYPE_MISMATCH_ERR: number; - readonly URL_MISMATCH_ERR: number; - readonly VALIDATION_ERR: number; - readonly WRONG_DOCUMENT_ERR: number; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; } declare var DOMException: { prototype: DOMException; new(message?: string, name?: string): DOMException; - readonly ABORT_ERR: number; - readonly DATA_CLONE_ERR: number; - readonly DOMSTRING_SIZE_ERR: number; - readonly HIERARCHY_REQUEST_ERR: number; - readonly INDEX_SIZE_ERR: number; - readonly INUSE_ATTRIBUTE_ERR: number; - readonly INVALID_ACCESS_ERR: number; - readonly INVALID_CHARACTER_ERR: number; - readonly INVALID_MODIFICATION_ERR: number; - readonly INVALID_NODE_TYPE_ERR: number; - readonly INVALID_STATE_ERR: number; - readonly NAMESPACE_ERR: number; - readonly NETWORK_ERR: number; - readonly NOT_FOUND_ERR: number; - readonly NOT_SUPPORTED_ERR: number; - readonly NO_DATA_ALLOWED_ERR: number; - readonly NO_MODIFICATION_ALLOWED_ERR: number; - readonly QUOTA_EXCEEDED_ERR: number; - readonly SECURITY_ERR: number; - readonly SYNTAX_ERR: number; - readonly TIMEOUT_ERR: number; - readonly TYPE_MISMATCH_ERR: number; - readonly URL_MISMATCH_ERR: number; - readonly VALIDATION_ERR: number; - readonly WRONG_DOCUMENT_ERR: number; + readonly INDEX_SIZE_ERR: 1; + readonly DOMSTRING_SIZE_ERR: 2; + readonly HIERARCHY_REQUEST_ERR: 3; + readonly WRONG_DOCUMENT_ERR: 4; + readonly INVALID_CHARACTER_ERR: 5; + readonly NO_DATA_ALLOWED_ERR: 6; + readonly NO_MODIFICATION_ALLOWED_ERR: 7; + readonly NOT_FOUND_ERR: 8; + readonly NOT_SUPPORTED_ERR: 9; + readonly INUSE_ATTRIBUTE_ERR: 10; + readonly INVALID_STATE_ERR: 11; + readonly SYNTAX_ERR: 12; + readonly INVALID_MODIFICATION_ERR: 13; + readonly NAMESPACE_ERR: 14; + readonly INVALID_ACCESS_ERR: 15; + readonly VALIDATION_ERR: 16; + readonly TYPE_MISMATCH_ERR: 17; + readonly SECURITY_ERR: 18; + readonly NETWORK_ERR: 19; + readonly ABORT_ERR: 20; + readonly URL_MISMATCH_ERR: 21; + readonly QUOTA_EXCEEDED_ERR: 22; + readonly TIMEOUT_ERR: 23; + readonly INVALID_NODE_TYPE_ERR: 24; + readonly DATA_CLONE_ERR: 25; }; interface DOMMatrix extends DOMMatrixReadOnly { @@ -1416,18 +1428,18 @@ declare var DedicatedWorkerGlobalScope: { }; interface EXT_blend_minmax { - readonly MAX_EXT: GLenum; - readonly MIN_EXT: GLenum; + readonly MIN_EXT: 0x8007; + readonly MAX_EXT: 0x8008; } interface EXT_color_buffer_float { } interface EXT_color_buffer_half_float { - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum; - readonly RGB16F_EXT: GLenum; - readonly RGBA16F_EXT: GLenum; - readonly UNSIGNED_NORMALIZED_EXT: GLenum; + readonly RGBA16F_EXT: 0x881A; + readonly RGB16F_EXT: 0x881B; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211; + readonly UNSIGNED_NORMALIZED_EXT: 0x8C17; } interface EXT_float_blend { @@ -1438,44 +1450,44 @@ interface EXT_frag_depth { } interface EXT_sRGB { - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum; - readonly SRGB8_ALPHA8_EXT: GLenum; - readonly SRGB_ALPHA_EXT: GLenum; - readonly SRGB_EXT: GLenum; + readonly SRGB_EXT: 0x8C40; + readonly SRGB_ALPHA_EXT: 0x8C42; + readonly SRGB8_ALPHA8_EXT: 0x8C43; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210; } interface EXT_shader_texture_lod { } interface EXT_texture_compression_bptc { - readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: GLenum; - readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: GLenum; - readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: GLenum; + readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: 0x8E8C; + readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 0x8E8D; + readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 0x8E8E; + readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 0x8E8F; } interface EXT_texture_compression_rgtc { - readonly COMPRESSED_RED_GREEN_RGTC2_EXT: GLenum; - readonly COMPRESSED_RED_RGTC1_EXT: GLenum; - readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: GLenum; - readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: GLenum; + readonly COMPRESSED_RED_RGTC1_EXT: 0x8DBB; + readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8DBC; + readonly COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8DBD; + readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8DBE; } /** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */ interface EXT_texture_filter_anisotropic { - readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum; - readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum; + readonly TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84FF; } interface EXT_texture_norm16 { - readonly R16_EXT: GLenum; - readonly R16_SNORM_EXT: GLenum; - readonly RG16_EXT: GLenum; - readonly RG16_SNORM_EXT: GLenum; - readonly RGB16_EXT: GLenum; - readonly RGB16_SNORM_EXT: GLenum; - readonly RGBA16_EXT: GLenum; - readonly RGBA16_SNORM_EXT: GLenum; + readonly R16_EXT: 0x822A; + readonly RG16_EXT: 0x822C; + readonly RGB16_EXT: 0x8054; + readonly RGBA16_EXT: 0x805B; + readonly R16_SNORM_EXT: 0x8F98; + readonly RG16_SNORM_EXT: 0x8F99; + readonly RGB16_SNORM_EXT: 0x8F9A; + readonly RGBA16_SNORM_EXT: 0x8F9B; } /** Events providing information related to errors in scripts or in files. */ @@ -1530,19 +1542,19 @@ interface Event { stopImmediatePropagation(): void; /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */ stopPropagation(): void; - readonly AT_TARGET: number; - readonly BUBBLING_PHASE: number; - readonly CAPTURING_PHASE: number; - readonly NONE: number; + readonly NONE: 0; + readonly CAPTURING_PHASE: 1; + readonly AT_TARGET: 2; + readonly BUBBLING_PHASE: 3; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - readonly AT_TARGET: number; - readonly BUBBLING_PHASE: number; - readonly CAPTURING_PHASE: number; - readonly NONE: number; + readonly NONE: 0; + readonly CAPTURING_PHASE: 1; + readonly AT_TARGET: 2; + readonly BUBBLING_PHASE: 3; }; interface EventListener { @@ -1571,9 +1583,9 @@ interface EventSource extends EventTarget { readonly withCredentials: boolean; /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */ close(): void; - readonly CLOSED: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSED: 2; addEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; @@ -1585,9 +1597,9 @@ interface EventSource extends EventTarget { declare var EventSource: { prototype: EventSource; new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource; - readonly CLOSED: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSED: 2; }; /** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */ @@ -1700,16 +1712,16 @@ interface FileReader extends EventTarget { onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null; onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null; onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null; - readonly readyState: number; + readonly readyState: typeof FileReader.EMPTY | typeof FileReader.LOADING | typeof FileReader.DONE; readonly result: string | ArrayBuffer | null; abort(): void; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; readAsText(blob: Blob, encoding?: string): void; - readonly DONE: number; - readonly EMPTY: number; - readonly LOADING: number; + readonly EMPTY: 0; + readonly LOADING: 1; + readonly DONE: 2; addEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -1719,9 +1731,9 @@ interface FileReader extends EventTarget { declare var FileReader: { prototype: FileReader; new(): FileReader; - readonly DONE: number; - readonly EMPTY: number; - readonly LOADING: number; + readonly EMPTY: 0; + readonly LOADING: 1; + readonly DONE: 2; }; /** Allows to read File or Blob objects in a synchronous way. */ @@ -1755,6 +1767,7 @@ declare var FileSystemDirectoryHandle: { /** Available only in secure contexts. */ interface FileSystemFileHandle extends FileSystemHandle { readonly kind: "file"; + createSyncAccessHandle(): Promise; getFile(): Promise; } @@ -1775,10 +1788,25 @@ declare var FileSystemHandle: { new(): FileSystemHandle; }; +/** Available only in secure contexts. */ +interface FileSystemSyncAccessHandle { + close(): void; + flush(): void; + getSize(): number; + read(buffer: BufferSource, options?: FileSystemReadWriteOptions): number; + truncate(newSize: number): void; + write(buffer: BufferSource, options?: FileSystemReadWriteOptions): number; +} + +declare var FileSystemSyncAccessHandle: { + prototype: FileSystemSyncAccessHandle; + new(): FileSystemSyncAccessHandle; +}; + interface FontFace { ascentOverride: string; descentOverride: string; - display: string; + display: FontDisplay; family: string; featureSettings: string; lineGapOverride: string; @@ -1788,7 +1816,6 @@ interface FontFace { style: string; unicodeRange: string; variant: string; - variationSettings: string; weight: string; load(): Promise; } @@ -2317,7 +2344,7 @@ declare var ImageData: { }; interface KHR_parallel_shader_compile { - readonly COMPLETION_STATUS_KHR: GLenum; + readonly COMPLETION_STATUS_KHR: 0x91B1; } /** Available only in secure contexts. */ @@ -2531,7 +2558,7 @@ interface OES_fbo_render_mipmap { /** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */ interface OES_standard_derivatives { - readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: GLenum; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8B8B; } /** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */ @@ -2544,7 +2571,7 @@ interface OES_texture_float_linear { /** The OES_texture_half_float extension is part of the WebGL API and adds texture formats with 16- (aka half float) and 32-bit floating-point components. */ interface OES_texture_half_float { - readonly HALF_FLOAT_OES: GLenum; + readonly HALF_FLOAT_OES: 0x8D61; } /** The OES_texture_half_float_linear extension is part of the WebGL API and allows linear filtering with half floating-point pixel types for textures. */ @@ -2556,15 +2583,15 @@ interface OES_vertex_array_object { createVertexArrayOES(): WebGLVertexArrayObjectOES | null; deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void; isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean; - readonly VERTEX_ARRAY_BINDING_OES: GLenum; + readonly VERTEX_ARRAY_BINDING_OES: 0x85B5; } interface OVR_multiview2 { framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: GLenum; - readonly MAX_VIEWS_OVR: GLenum; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: 0x9630; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: 0x9632; + readonly MAX_VIEWS_OVR: 0x9631; + readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: 0x9633; } interface OffscreenCanvasEventMap { @@ -2587,6 +2614,12 @@ interface OffscreenCanvas extends EventTarget { * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it). */ width: number; + /** + * Returns a promise that will fulfill with a new Blob object representing a file containing the image in the OffscreenCanvas object. + * + * The argument, if provided, is a dictionary that controls the encoding options of the image file to be created. The type field specifies the file format and has a default value of "image/png"; that type is also used if the requested type isn't supported. If the image format supports variable quality (such as "image/jpeg"), then the quality field is a number in the range 0.0 to 1.0 inclusive indicating the desired quality level for the resulting image. + */ + convertToBlob(options?: ImageEncodeOptions): Promise; /** * Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: "2d", "bitmaprenderer", "webgl", or "webgl2". options is handled by that API. * @@ -2594,6 +2627,10 @@ interface OffscreenCanvas extends EventTarget { * * Returns null if the canvas has already been initialized with another context type (e.g., trying to get a "2d" context after getting a "webgl" context). */ + getContext(contextId: "2d", options?: any): OffscreenCanvasRenderingContext2D | null; + getContext(contextId: "bitmaprenderer", options?: any): ImageBitmapRenderingContext | null; + getContext(contextId: "webgl", options?: any): WebGLRenderingContext | null; + getContext(contextId: "webgl2", options?: any): WebGL2RenderingContext | null; getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null; /** Returns a newly created ImageBitmap object with the image in the OffscreenCanvas object. The image in the OffscreenCanvas object is replaced with a new blank image. */ transferToImageBitmap(): ImageBitmap; @@ -3426,79 +3463,79 @@ declare var VideoColorSpace: { }; interface WEBGL_color_buffer_float { - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum; - readonly RGBA32F_EXT: GLenum; - readonly UNSIGNED_NORMALIZED_EXT: GLenum; + readonly RGBA32F_EXT: 0x8814; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211; + readonly UNSIGNED_NORMALIZED_EXT: 0x8C17; } interface WEBGL_compressed_texture_astc { getSupportedProfiles(): string[]; - readonly COMPRESSED_RGBA_ASTC_10x10_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_10x8_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_12x10_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_12x12_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_4x4_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_5x4_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_5x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_6x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_6x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x5_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x6_KHR: GLenum; - readonly COMPRESSED_RGBA_ASTC_8x8_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: GLenum; + readonly COMPRESSED_RGBA_ASTC_4x4_KHR: 0x93B0; + readonly COMPRESSED_RGBA_ASTC_5x4_KHR: 0x93B1; + readonly COMPRESSED_RGBA_ASTC_5x5_KHR: 0x93B2; + readonly COMPRESSED_RGBA_ASTC_6x5_KHR: 0x93B3; + readonly COMPRESSED_RGBA_ASTC_6x6_KHR: 0x93B4; + readonly COMPRESSED_RGBA_ASTC_8x5_KHR: 0x93B5; + readonly COMPRESSED_RGBA_ASTC_8x6_KHR: 0x93B6; + readonly COMPRESSED_RGBA_ASTC_8x8_KHR: 0x93B7; + readonly COMPRESSED_RGBA_ASTC_10x5_KHR: 0x93B8; + readonly COMPRESSED_RGBA_ASTC_10x6_KHR: 0x93B9; + readonly COMPRESSED_RGBA_ASTC_10x8_KHR: 0x93BA; + readonly COMPRESSED_RGBA_ASTC_10x10_KHR: 0x93BB; + readonly COMPRESSED_RGBA_ASTC_12x10_KHR: 0x93BC; + readonly COMPRESSED_RGBA_ASTC_12x12_KHR: 0x93BD; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: 0x93D0; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: 0x93D1; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: 0x93D2; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: 0x93D3; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: 0x93D4; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: 0x93D5; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: 0x93D6; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: 0x93D7; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: 0x93D8; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: 0x93D9; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: 0x93DA; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: 0x93DB; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: 0x93DC; + readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: 0x93DD; } interface WEBGL_compressed_texture_etc { - readonly COMPRESSED_R11_EAC: GLenum; - readonly COMPRESSED_RG11_EAC: GLenum; - readonly COMPRESSED_RGB8_ETC2: GLenum; - readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum; - readonly COMPRESSED_RGBA8_ETC2_EAC: GLenum; - readonly COMPRESSED_SIGNED_R11_EAC: GLenum; - readonly COMPRESSED_SIGNED_RG11_EAC: GLenum; - readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum; - readonly COMPRESSED_SRGB8_ETC2: GLenum; - readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum; + readonly COMPRESSED_R11_EAC: 0x9270; + readonly COMPRESSED_SIGNED_R11_EAC: 0x9271; + readonly COMPRESSED_RG11_EAC: 0x9272; + readonly COMPRESSED_SIGNED_RG11_EAC: 0x9273; + readonly COMPRESSED_RGB8_ETC2: 0x9274; + readonly COMPRESSED_SRGB8_ETC2: 0x9275; + readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9276; + readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9277; + readonly COMPRESSED_RGBA8_ETC2_EAC: 0x9278; + readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9279; } interface WEBGL_compressed_texture_etc1 { - readonly COMPRESSED_RGB_ETC1_WEBGL: GLenum; + readonly COMPRESSED_RGB_ETC1_WEBGL: 0x8D64; } /** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */ interface WEBGL_compressed_texture_s3tc { - readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: GLenum; - readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: GLenum; - readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: GLenum; - readonly COMPRESSED_RGB_S3TC_DXT1_EXT: GLenum; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83F0; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83F1; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83F2; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83F3; } interface WEBGL_compressed_texture_s3tc_srgb { - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: GLenum; - readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: GLenum; - readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: GLenum; + readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8C4C; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8C4D; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8C4E; + readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8C4F; } /** The WEBGL_debug_renderer_info extension is part of the WebGL API and exposes two constants with information about the graphics driver for debugging purposes. */ interface WEBGL_debug_renderer_info { - readonly UNMASKED_RENDERER_WEBGL: GLenum; - readonly UNMASKED_VENDOR_WEBGL: GLenum; + readonly UNMASKED_VENDOR_WEBGL: 0x9245; + readonly UNMASKED_RENDERER_WEBGL: 0x9246; } interface WEBGL_debug_shaders { @@ -3507,45 +3544,45 @@ interface WEBGL_debug_shaders { /** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */ interface WEBGL_depth_texture { - readonly UNSIGNED_INT_24_8_WEBGL: GLenum; + readonly UNSIGNED_INT_24_8_WEBGL: 0x84FA; } interface WEBGL_draw_buffers { drawBuffersWEBGL(buffers: GLenum[]): void; - readonly COLOR_ATTACHMENT0_WEBGL: GLenum; - readonly COLOR_ATTACHMENT10_WEBGL: GLenum; - readonly COLOR_ATTACHMENT11_WEBGL: GLenum; - readonly COLOR_ATTACHMENT12_WEBGL: GLenum; - readonly COLOR_ATTACHMENT13_WEBGL: GLenum; - readonly COLOR_ATTACHMENT14_WEBGL: GLenum; - readonly COLOR_ATTACHMENT15_WEBGL: GLenum; - readonly COLOR_ATTACHMENT1_WEBGL: GLenum; - readonly COLOR_ATTACHMENT2_WEBGL: GLenum; - readonly COLOR_ATTACHMENT3_WEBGL: GLenum; - readonly COLOR_ATTACHMENT4_WEBGL: GLenum; - readonly COLOR_ATTACHMENT5_WEBGL: GLenum; - readonly COLOR_ATTACHMENT6_WEBGL: GLenum; - readonly COLOR_ATTACHMENT7_WEBGL: GLenum; - readonly COLOR_ATTACHMENT8_WEBGL: GLenum; - readonly COLOR_ATTACHMENT9_WEBGL: GLenum; - readonly DRAW_BUFFER0_WEBGL: GLenum; - readonly DRAW_BUFFER10_WEBGL: GLenum; - readonly DRAW_BUFFER11_WEBGL: GLenum; - readonly DRAW_BUFFER12_WEBGL: GLenum; - readonly DRAW_BUFFER13_WEBGL: GLenum; - readonly DRAW_BUFFER14_WEBGL: GLenum; - readonly DRAW_BUFFER15_WEBGL: GLenum; - readonly DRAW_BUFFER1_WEBGL: GLenum; - readonly DRAW_BUFFER2_WEBGL: GLenum; - readonly DRAW_BUFFER3_WEBGL: GLenum; - readonly DRAW_BUFFER4_WEBGL: GLenum; - readonly DRAW_BUFFER5_WEBGL: GLenum; - readonly DRAW_BUFFER6_WEBGL: GLenum; - readonly DRAW_BUFFER7_WEBGL: GLenum; - readonly DRAW_BUFFER8_WEBGL: GLenum; - readonly DRAW_BUFFER9_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS_WEBGL: GLenum; - readonly MAX_DRAW_BUFFERS_WEBGL: GLenum; + readonly COLOR_ATTACHMENT0_WEBGL: 0x8CE0; + readonly COLOR_ATTACHMENT1_WEBGL: 0x8CE1; + readonly COLOR_ATTACHMENT2_WEBGL: 0x8CE2; + readonly COLOR_ATTACHMENT3_WEBGL: 0x8CE3; + readonly COLOR_ATTACHMENT4_WEBGL: 0x8CE4; + readonly COLOR_ATTACHMENT5_WEBGL: 0x8CE5; + readonly COLOR_ATTACHMENT6_WEBGL: 0x8CE6; + readonly COLOR_ATTACHMENT7_WEBGL: 0x8CE7; + readonly COLOR_ATTACHMENT8_WEBGL: 0x8CE8; + readonly COLOR_ATTACHMENT9_WEBGL: 0x8CE9; + readonly COLOR_ATTACHMENT10_WEBGL: 0x8CEA; + readonly COLOR_ATTACHMENT11_WEBGL: 0x8CEB; + readonly COLOR_ATTACHMENT12_WEBGL: 0x8CEC; + readonly COLOR_ATTACHMENT13_WEBGL: 0x8CED; + readonly COLOR_ATTACHMENT14_WEBGL: 0x8CEE; + readonly COLOR_ATTACHMENT15_WEBGL: 0x8CEF; + readonly DRAW_BUFFER0_WEBGL: 0x8825; + readonly DRAW_BUFFER1_WEBGL: 0x8826; + readonly DRAW_BUFFER2_WEBGL: 0x8827; + readonly DRAW_BUFFER3_WEBGL: 0x8828; + readonly DRAW_BUFFER4_WEBGL: 0x8829; + readonly DRAW_BUFFER5_WEBGL: 0x882A; + readonly DRAW_BUFFER6_WEBGL: 0x882B; + readonly DRAW_BUFFER7_WEBGL: 0x882C; + readonly DRAW_BUFFER8_WEBGL: 0x882D; + readonly DRAW_BUFFER9_WEBGL: 0x882E; + readonly DRAW_BUFFER10_WEBGL: 0x882F; + readonly DRAW_BUFFER11_WEBGL: 0x8830; + readonly DRAW_BUFFER12_WEBGL: 0x8831; + readonly DRAW_BUFFER13_WEBGL: 0x8832; + readonly DRAW_BUFFER14_WEBGL: 0x8833; + readonly DRAW_BUFFER15_WEBGL: 0x8834; + readonly MAX_COLOR_ATTACHMENTS_WEBGL: 0x8CDF; + readonly MAX_DRAW_BUFFERS_WEBGL: 0x8824; } interface WEBGL_lose_context { @@ -3566,565 +3603,565 @@ interface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2Rende declare var WebGL2RenderingContext: { prototype: WebGL2RenderingContext; new(): WebGL2RenderingContext; - readonly ACTIVE_UNIFORM_BLOCKS: GLenum; - readonly ALREADY_SIGNALED: GLenum; - readonly ANY_SAMPLES_PASSED: GLenum; - readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum; - readonly COLOR: GLenum; - readonly COLOR_ATTACHMENT1: GLenum; - readonly COLOR_ATTACHMENT10: GLenum; - readonly COLOR_ATTACHMENT11: GLenum; - readonly COLOR_ATTACHMENT12: GLenum; - readonly COLOR_ATTACHMENT13: GLenum; - readonly COLOR_ATTACHMENT14: GLenum; - readonly COLOR_ATTACHMENT15: GLenum; - readonly COLOR_ATTACHMENT2: GLenum; - readonly COLOR_ATTACHMENT3: GLenum; - readonly COLOR_ATTACHMENT4: GLenum; - readonly COLOR_ATTACHMENT5: GLenum; - readonly COLOR_ATTACHMENT6: GLenum; - readonly COLOR_ATTACHMENT7: GLenum; - readonly COLOR_ATTACHMENT8: GLenum; - readonly COLOR_ATTACHMENT9: GLenum; - readonly COMPARE_REF_TO_TEXTURE: GLenum; - readonly CONDITION_SATISFIED: GLenum; - readonly COPY_READ_BUFFER: GLenum; - readonly COPY_READ_BUFFER_BINDING: GLenum; - readonly COPY_WRITE_BUFFER: GLenum; - readonly COPY_WRITE_BUFFER_BINDING: GLenum; - readonly CURRENT_QUERY: GLenum; - readonly DEPTH: GLenum; - readonly DEPTH24_STENCIL8: GLenum; - readonly DEPTH32F_STENCIL8: GLenum; - readonly DEPTH_COMPONENT24: GLenum; - readonly DEPTH_COMPONENT32F: GLenum; - readonly DRAW_BUFFER0: GLenum; - readonly DRAW_BUFFER1: GLenum; - readonly DRAW_BUFFER10: GLenum; - readonly DRAW_BUFFER11: GLenum; - readonly DRAW_BUFFER12: GLenum; - readonly DRAW_BUFFER13: GLenum; - readonly DRAW_BUFFER14: GLenum; - readonly DRAW_BUFFER15: GLenum; - readonly DRAW_BUFFER2: GLenum; - readonly DRAW_BUFFER3: GLenum; - readonly DRAW_BUFFER4: GLenum; - readonly DRAW_BUFFER5: GLenum; - readonly DRAW_BUFFER6: GLenum; - readonly DRAW_BUFFER7: GLenum; - readonly DRAW_BUFFER8: GLenum; - readonly DRAW_BUFFER9: GLenum; - readonly DRAW_FRAMEBUFFER: GLenum; - readonly DRAW_FRAMEBUFFER_BINDING: GLenum; - readonly DYNAMIC_COPY: GLenum; - readonly DYNAMIC_READ: GLenum; - readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum; - readonly FLOAT_MAT2x3: GLenum; - readonly FLOAT_MAT2x4: GLenum; - readonly FLOAT_MAT3x2: GLenum; - readonly FLOAT_MAT3x4: GLenum; - readonly FLOAT_MAT4x2: GLenum; - readonly FLOAT_MAT4x3: GLenum; - readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum; - readonly FRAMEBUFFER_DEFAULT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum; - readonly HALF_FLOAT: GLenum; - readonly INTERLEAVED_ATTRIBS: GLenum; - readonly INT_2_10_10_10_REV: GLenum; - readonly INT_SAMPLER_2D: GLenum; - readonly INT_SAMPLER_2D_ARRAY: GLenum; - readonly INT_SAMPLER_3D: GLenum; - readonly INT_SAMPLER_CUBE: GLenum; - readonly INVALID_INDEX: GLenum; - readonly MAX: GLenum; - readonly MAX_3D_TEXTURE_SIZE: GLenum; - readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum; - readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS: GLenum; - readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum; - readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MAX_DRAW_BUFFERS: GLenum; - readonly MAX_ELEMENTS_INDICES: GLenum; - readonly MAX_ELEMENTS_VERTICES: GLenum; - readonly MAX_ELEMENT_INDEX: GLenum; - readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum; - readonly MAX_SAMPLES: GLenum; - readonly MAX_SERVER_WAIT_TIMEOUT: GLenum; - readonly MAX_TEXTURE_LOD_BIAS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum; - readonly MAX_UNIFORM_BLOCK_SIZE: GLenum; - readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum; - readonly MAX_VARYING_COMPONENTS: GLenum; - readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum; - readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum; - readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MIN: GLenum; - readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum; - readonly OBJECT_TYPE: GLenum; - readonly PACK_ROW_LENGTH: GLenum; - readonly PACK_SKIP_PIXELS: GLenum; - readonly PACK_SKIP_ROWS: GLenum; - readonly PIXEL_PACK_BUFFER: GLenum; - readonly PIXEL_PACK_BUFFER_BINDING: GLenum; - readonly PIXEL_UNPACK_BUFFER: GLenum; - readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum; - readonly QUERY_RESULT: GLenum; - readonly QUERY_RESULT_AVAILABLE: GLenum; - readonly R11F_G11F_B10F: GLenum; - readonly R16F: GLenum; - readonly R16I: GLenum; - readonly R16UI: GLenum; - readonly R32F: GLenum; - readonly R32I: GLenum; - readonly R32UI: GLenum; - readonly R8: GLenum; - readonly R8I: GLenum; - readonly R8UI: GLenum; - readonly R8_SNORM: GLenum; - readonly RASTERIZER_DISCARD: GLenum; - readonly READ_BUFFER: GLenum; - readonly READ_FRAMEBUFFER: GLenum; - readonly READ_FRAMEBUFFER_BINDING: GLenum; - readonly RED: GLenum; - readonly RED_INTEGER: GLenum; - readonly RENDERBUFFER_SAMPLES: GLenum; - readonly RG: GLenum; - readonly RG16F: GLenum; - readonly RG16I: GLenum; - readonly RG16UI: GLenum; - readonly RG32F: GLenum; - readonly RG32I: GLenum; - readonly RG32UI: GLenum; - readonly RG8: GLenum; - readonly RG8I: GLenum; - readonly RG8UI: GLenum; - readonly RG8_SNORM: GLenum; - readonly RGB10_A2: GLenum; - readonly RGB10_A2UI: GLenum; - readonly RGB16F: GLenum; - readonly RGB16I: GLenum; - readonly RGB16UI: GLenum; - readonly RGB32F: GLenum; - readonly RGB32I: GLenum; - readonly RGB32UI: GLenum; - readonly RGB8: GLenum; - readonly RGB8I: GLenum; - readonly RGB8UI: GLenum; - readonly RGB8_SNORM: GLenum; - readonly RGB9_E5: GLenum; - readonly RGBA16F: GLenum; - readonly RGBA16I: GLenum; - readonly RGBA16UI: GLenum; - readonly RGBA32F: GLenum; - readonly RGBA32I: GLenum; - readonly RGBA32UI: GLenum; - readonly RGBA8: GLenum; - readonly RGBA8I: GLenum; - readonly RGBA8UI: GLenum; - readonly RGBA8_SNORM: GLenum; - readonly RGBA_INTEGER: GLenum; - readonly RGB_INTEGER: GLenum; - readonly RG_INTEGER: GLenum; - readonly SAMPLER_2D_ARRAY: GLenum; - readonly SAMPLER_2D_ARRAY_SHADOW: GLenum; - readonly SAMPLER_2D_SHADOW: GLenum; - readonly SAMPLER_3D: GLenum; - readonly SAMPLER_BINDING: GLenum; - readonly SAMPLER_CUBE_SHADOW: GLenum; - readonly SEPARATE_ATTRIBS: GLenum; - readonly SIGNALED: GLenum; - readonly SIGNED_NORMALIZED: GLenum; - readonly SRGB: GLenum; - readonly SRGB8: GLenum; - readonly SRGB8_ALPHA8: GLenum; - readonly STATIC_COPY: GLenum; - readonly STATIC_READ: GLenum; - readonly STENCIL: GLenum; - readonly STREAM_COPY: GLenum; - readonly STREAM_READ: GLenum; - readonly SYNC_CONDITION: GLenum; - readonly SYNC_FENCE: GLenum; - readonly SYNC_FLAGS: GLenum; - readonly SYNC_FLUSH_COMMANDS_BIT: GLenum; - readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum; - readonly SYNC_STATUS: GLenum; - readonly TEXTURE_2D_ARRAY: GLenum; - readonly TEXTURE_3D: GLenum; - readonly TEXTURE_BASE_LEVEL: GLenum; - readonly TEXTURE_BINDING_2D_ARRAY: GLenum; - readonly TEXTURE_BINDING_3D: GLenum; - readonly TEXTURE_COMPARE_FUNC: GLenum; - readonly TEXTURE_COMPARE_MODE: GLenum; - readonly TEXTURE_IMMUTABLE_FORMAT: GLenum; - readonly TEXTURE_IMMUTABLE_LEVELS: GLenum; - readonly TEXTURE_MAX_LEVEL: GLenum; - readonly TEXTURE_MAX_LOD: GLenum; - readonly TEXTURE_MIN_LOD: GLenum; - readonly TEXTURE_WRAP_R: GLenum; - readonly TIMEOUT_EXPIRED: GLenum; - readonly TIMEOUT_IGNORED: GLint64; - readonly TRANSFORM_FEEDBACK: GLenum; - readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum; - readonly TRANSFORM_FEEDBACK_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum; - readonly TRANSFORM_FEEDBACK_PAUSED: GLenum; - readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum; - readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum; - readonly UNIFORM_ARRAY_STRIDE: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum; - readonly UNIFORM_BLOCK_BINDING: GLenum; - readonly UNIFORM_BLOCK_DATA_SIZE: GLenum; - readonly UNIFORM_BLOCK_INDEX: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum; - readonly UNIFORM_BUFFER: GLenum; - readonly UNIFORM_BUFFER_BINDING: GLenum; - readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum; - readonly UNIFORM_BUFFER_SIZE: GLenum; - readonly UNIFORM_BUFFER_START: GLenum; - readonly UNIFORM_IS_ROW_MAJOR: GLenum; - readonly UNIFORM_MATRIX_STRIDE: GLenum; - readonly UNIFORM_OFFSET: GLenum; - readonly UNIFORM_SIZE: GLenum; - readonly UNIFORM_TYPE: GLenum; - readonly UNPACK_IMAGE_HEIGHT: GLenum; - readonly UNPACK_ROW_LENGTH: GLenum; - readonly UNPACK_SKIP_IMAGES: GLenum; - readonly UNPACK_SKIP_PIXELS: GLenum; - readonly UNPACK_SKIP_ROWS: GLenum; - readonly UNSIGNALED: GLenum; - readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum; - readonly UNSIGNED_INT_24_8: GLenum; - readonly UNSIGNED_INT_2_10_10_10_REV: GLenum; - readonly UNSIGNED_INT_5_9_9_9_REV: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum; - readonly UNSIGNED_INT_SAMPLER_3D: GLenum; - readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum; - readonly UNSIGNED_INT_VEC2: GLenum; - readonly UNSIGNED_INT_VEC3: GLenum; - readonly UNSIGNED_INT_VEC4: GLenum; - readonly UNSIGNED_NORMALIZED: GLenum; - readonly VERTEX_ARRAY_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum; - readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum; - readonly WAIT_FAILED: GLenum; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly READ_BUFFER: 0x0C02; + readonly UNPACK_ROW_LENGTH: 0x0CF2; + readonly UNPACK_SKIP_ROWS: 0x0CF3; + readonly UNPACK_SKIP_PIXELS: 0x0CF4; + readonly PACK_ROW_LENGTH: 0x0D02; + readonly PACK_SKIP_ROWS: 0x0D03; + readonly PACK_SKIP_PIXELS: 0x0D04; + readonly COLOR: 0x1800; + readonly DEPTH: 0x1801; + readonly STENCIL: 0x1802; + readonly RED: 0x1903; + readonly RGB8: 0x8051; + readonly RGBA8: 0x8058; + readonly RGB10_A2: 0x8059; + readonly TEXTURE_BINDING_3D: 0x806A; + readonly UNPACK_SKIP_IMAGES: 0x806D; + readonly UNPACK_IMAGE_HEIGHT: 0x806E; + readonly TEXTURE_3D: 0x806F; + readonly TEXTURE_WRAP_R: 0x8072; + readonly MAX_3D_TEXTURE_SIZE: 0x8073; + readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368; + readonly MAX_ELEMENTS_VERTICES: 0x80E8; + readonly MAX_ELEMENTS_INDICES: 0x80E9; + readonly TEXTURE_MIN_LOD: 0x813A; + readonly TEXTURE_MAX_LOD: 0x813B; + readonly TEXTURE_BASE_LEVEL: 0x813C; + readonly TEXTURE_MAX_LEVEL: 0x813D; + readonly MIN: 0x8007; + readonly MAX: 0x8008; + readonly DEPTH_COMPONENT24: 0x81A6; + readonly MAX_TEXTURE_LOD_BIAS: 0x84FD; + readonly TEXTURE_COMPARE_MODE: 0x884C; + readonly TEXTURE_COMPARE_FUNC: 0x884D; + readonly CURRENT_QUERY: 0x8865; + readonly QUERY_RESULT: 0x8866; + readonly QUERY_RESULT_AVAILABLE: 0x8867; + readonly STREAM_READ: 0x88E1; + readonly STREAM_COPY: 0x88E2; + readonly STATIC_READ: 0x88E5; + readonly STATIC_COPY: 0x88E6; + readonly DYNAMIC_READ: 0x88E9; + readonly DYNAMIC_COPY: 0x88EA; + readonly MAX_DRAW_BUFFERS: 0x8824; + readonly DRAW_BUFFER0: 0x8825; + readonly DRAW_BUFFER1: 0x8826; + readonly DRAW_BUFFER2: 0x8827; + readonly DRAW_BUFFER3: 0x8828; + readonly DRAW_BUFFER4: 0x8829; + readonly DRAW_BUFFER5: 0x882A; + readonly DRAW_BUFFER6: 0x882B; + readonly DRAW_BUFFER7: 0x882C; + readonly DRAW_BUFFER8: 0x882D; + readonly DRAW_BUFFER9: 0x882E; + readonly DRAW_BUFFER10: 0x882F; + readonly DRAW_BUFFER11: 0x8830; + readonly DRAW_BUFFER12: 0x8831; + readonly DRAW_BUFFER13: 0x8832; + readonly DRAW_BUFFER14: 0x8833; + readonly DRAW_BUFFER15: 0x8834; + readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49; + readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A; + readonly SAMPLER_3D: 0x8B5F; + readonly SAMPLER_2D_SHADOW: 0x8B62; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B; + readonly PIXEL_PACK_BUFFER: 0x88EB; + readonly PIXEL_UNPACK_BUFFER: 0x88EC; + readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED; + readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF; + readonly FLOAT_MAT2x3: 0x8B65; + readonly FLOAT_MAT2x4: 0x8B66; + readonly FLOAT_MAT3x2: 0x8B67; + readonly FLOAT_MAT3x4: 0x8B68; + readonly FLOAT_MAT4x2: 0x8B69; + readonly FLOAT_MAT4x3: 0x8B6A; + readonly SRGB: 0x8C40; + readonly SRGB8: 0x8C41; + readonly SRGB8_ALPHA8: 0x8C43; + readonly COMPARE_REF_TO_TEXTURE: 0x884E; + readonly RGBA32F: 0x8814; + readonly RGB32F: 0x8815; + readonly RGBA16F: 0x881A; + readonly RGB16F: 0x881B; + readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD; + readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF; + readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904; + readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905; + readonly MAX_VARYING_COMPONENTS: 0x8B4B; + readonly TEXTURE_2D_ARRAY: 0x8C1A; + readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D; + readonly R11F_G11F_B10F: 0x8C3A; + readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B; + readonly RGB9_E5: 0x8C3D; + readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E; + readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80; + readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83; + readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84; + readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85; + readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88; + readonly RASTERIZER_DISCARD: 0x8C89; + readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B; + readonly INTERLEAVED_ATTRIBS: 0x8C8C; + readonly SEPARATE_ATTRIBS: 0x8C8D; + readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E; + readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F; + readonly RGBA32UI: 0x8D70; + readonly RGB32UI: 0x8D71; + readonly RGBA16UI: 0x8D76; + readonly RGB16UI: 0x8D77; + readonly RGBA8UI: 0x8D7C; + readonly RGB8UI: 0x8D7D; + readonly RGBA32I: 0x8D82; + readonly RGB32I: 0x8D83; + readonly RGBA16I: 0x8D88; + readonly RGB16I: 0x8D89; + readonly RGBA8I: 0x8D8E; + readonly RGB8I: 0x8D8F; + readonly RED_INTEGER: 0x8D94; + readonly RGB_INTEGER: 0x8D98; + readonly RGBA_INTEGER: 0x8D99; + readonly SAMPLER_2D_ARRAY: 0x8DC1; + readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4; + readonly SAMPLER_CUBE_SHADOW: 0x8DC5; + readonly UNSIGNED_INT_VEC2: 0x8DC6; + readonly UNSIGNED_INT_VEC3: 0x8DC7; + readonly UNSIGNED_INT_VEC4: 0x8DC8; + readonly INT_SAMPLER_2D: 0x8DCA; + readonly INT_SAMPLER_3D: 0x8DCB; + readonly INT_SAMPLER_CUBE: 0x8DCC; + readonly INT_SAMPLER_2D_ARRAY: 0x8DCF; + readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2; + readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3; + readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4; + readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7; + readonly DEPTH_COMPONENT32F: 0x8CAC; + readonly DEPTH32F_STENCIL8: 0x8CAD; + readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211; + readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212; + readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213; + readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214; + readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215; + readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216; + readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217; + readonly FRAMEBUFFER_DEFAULT: 0x8218; + readonly UNSIGNED_INT_24_8: 0x84FA; + readonly DEPTH24_STENCIL8: 0x88F0; + readonly UNSIGNED_NORMALIZED: 0x8C17; + readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6; + readonly READ_FRAMEBUFFER: 0x8CA8; + readonly DRAW_FRAMEBUFFER: 0x8CA9; + readonly READ_FRAMEBUFFER_BINDING: 0x8CAA; + readonly RENDERBUFFER_SAMPLES: 0x8CAB; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4; + readonly MAX_COLOR_ATTACHMENTS: 0x8CDF; + readonly COLOR_ATTACHMENT1: 0x8CE1; + readonly COLOR_ATTACHMENT2: 0x8CE2; + readonly COLOR_ATTACHMENT3: 0x8CE3; + readonly COLOR_ATTACHMENT4: 0x8CE4; + readonly COLOR_ATTACHMENT5: 0x8CE5; + readonly COLOR_ATTACHMENT6: 0x8CE6; + readonly COLOR_ATTACHMENT7: 0x8CE7; + readonly COLOR_ATTACHMENT8: 0x8CE8; + readonly COLOR_ATTACHMENT9: 0x8CE9; + readonly COLOR_ATTACHMENT10: 0x8CEA; + readonly COLOR_ATTACHMENT11: 0x8CEB; + readonly COLOR_ATTACHMENT12: 0x8CEC; + readonly COLOR_ATTACHMENT13: 0x8CED; + readonly COLOR_ATTACHMENT14: 0x8CEE; + readonly COLOR_ATTACHMENT15: 0x8CEF; + readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56; + readonly MAX_SAMPLES: 0x8D57; + readonly HALF_FLOAT: 0x140B; + readonly RG: 0x8227; + readonly RG_INTEGER: 0x8228; + readonly R8: 0x8229; + readonly RG8: 0x822B; + readonly R16F: 0x822D; + readonly R32F: 0x822E; + readonly RG16F: 0x822F; + readonly RG32F: 0x8230; + readonly R8I: 0x8231; + readonly R8UI: 0x8232; + readonly R16I: 0x8233; + readonly R16UI: 0x8234; + readonly R32I: 0x8235; + readonly R32UI: 0x8236; + readonly RG8I: 0x8237; + readonly RG8UI: 0x8238; + readonly RG16I: 0x8239; + readonly RG16UI: 0x823A; + readonly RG32I: 0x823B; + readonly RG32UI: 0x823C; + readonly VERTEX_ARRAY_BINDING: 0x85B5; + readonly R8_SNORM: 0x8F94; + readonly RG8_SNORM: 0x8F95; + readonly RGB8_SNORM: 0x8F96; + readonly RGBA8_SNORM: 0x8F97; + readonly SIGNED_NORMALIZED: 0x8F9C; + readonly COPY_READ_BUFFER: 0x8F36; + readonly COPY_WRITE_BUFFER: 0x8F37; + readonly COPY_READ_BUFFER_BINDING: 0x8F36; + readonly COPY_WRITE_BUFFER_BINDING: 0x8F37; + readonly UNIFORM_BUFFER: 0x8A11; + readonly UNIFORM_BUFFER_BINDING: 0x8A28; + readonly UNIFORM_BUFFER_START: 0x8A29; + readonly UNIFORM_BUFFER_SIZE: 0x8A2A; + readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B; + readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D; + readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E; + readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F; + readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30; + readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31; + readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33; + readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34; + readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36; + readonly UNIFORM_TYPE: 0x8A37; + readonly UNIFORM_SIZE: 0x8A38; + readonly UNIFORM_BLOCK_INDEX: 0x8A3A; + readonly UNIFORM_OFFSET: 0x8A3B; + readonly UNIFORM_ARRAY_STRIDE: 0x8A3C; + readonly UNIFORM_MATRIX_STRIDE: 0x8A3D; + readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E; + readonly UNIFORM_BLOCK_BINDING: 0x8A3F; + readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43; + readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44; + readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46; + readonly INVALID_INDEX: 0xFFFFFFFF; + readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122; + readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125; + readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111; + readonly OBJECT_TYPE: 0x9112; + readonly SYNC_CONDITION: 0x9113; + readonly SYNC_STATUS: 0x9114; + readonly SYNC_FLAGS: 0x9115; + readonly SYNC_FENCE: 0x9116; + readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117; + readonly UNSIGNALED: 0x9118; + readonly SIGNALED: 0x9119; + readonly ALREADY_SIGNALED: 0x911A; + readonly TIMEOUT_EXPIRED: 0x911B; + readonly CONDITION_SATISFIED: 0x911C; + readonly WAIT_FAILED: 0x911D; + readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE; + readonly ANY_SAMPLES_PASSED: 0x8C2F; + readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A; + readonly SAMPLER_BINDING: 0x8919; + readonly RGB10_A2UI: 0x906F; + readonly INT_2_10_10_10_REV: 0x8D9F; + readonly TRANSFORM_FEEDBACK: 0x8E22; + readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23; + readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24; + readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25; + readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F; + readonly MAX_ELEMENT_INDEX: 0x8D6B; + readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF; + readonly TIMEOUT_IGNORED: -1; + readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; }; interface WebGL2RenderingContextBase { @@ -4223,269 +4260,269 @@ interface WebGL2RenderingContextBase { vertexAttribI4uiv(index: GLuint, values: Uint32List): void; vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void; waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void; - readonly ACTIVE_UNIFORM_BLOCKS: GLenum; - readonly ALREADY_SIGNALED: GLenum; - readonly ANY_SAMPLES_PASSED: GLenum; - readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum; - readonly COLOR: GLenum; - readonly COLOR_ATTACHMENT1: GLenum; - readonly COLOR_ATTACHMENT10: GLenum; - readonly COLOR_ATTACHMENT11: GLenum; - readonly COLOR_ATTACHMENT12: GLenum; - readonly COLOR_ATTACHMENT13: GLenum; - readonly COLOR_ATTACHMENT14: GLenum; - readonly COLOR_ATTACHMENT15: GLenum; - readonly COLOR_ATTACHMENT2: GLenum; - readonly COLOR_ATTACHMENT3: GLenum; - readonly COLOR_ATTACHMENT4: GLenum; - readonly COLOR_ATTACHMENT5: GLenum; - readonly COLOR_ATTACHMENT6: GLenum; - readonly COLOR_ATTACHMENT7: GLenum; - readonly COLOR_ATTACHMENT8: GLenum; - readonly COLOR_ATTACHMENT9: GLenum; - readonly COMPARE_REF_TO_TEXTURE: GLenum; - readonly CONDITION_SATISFIED: GLenum; - readonly COPY_READ_BUFFER: GLenum; - readonly COPY_READ_BUFFER_BINDING: GLenum; - readonly COPY_WRITE_BUFFER: GLenum; - readonly COPY_WRITE_BUFFER_BINDING: GLenum; - readonly CURRENT_QUERY: GLenum; - readonly DEPTH: GLenum; - readonly DEPTH24_STENCIL8: GLenum; - readonly DEPTH32F_STENCIL8: GLenum; - readonly DEPTH_COMPONENT24: GLenum; - readonly DEPTH_COMPONENT32F: GLenum; - readonly DRAW_BUFFER0: GLenum; - readonly DRAW_BUFFER1: GLenum; - readonly DRAW_BUFFER10: GLenum; - readonly DRAW_BUFFER11: GLenum; - readonly DRAW_BUFFER12: GLenum; - readonly DRAW_BUFFER13: GLenum; - readonly DRAW_BUFFER14: GLenum; - readonly DRAW_BUFFER15: GLenum; - readonly DRAW_BUFFER2: GLenum; - readonly DRAW_BUFFER3: GLenum; - readonly DRAW_BUFFER4: GLenum; - readonly DRAW_BUFFER5: GLenum; - readonly DRAW_BUFFER6: GLenum; - readonly DRAW_BUFFER7: GLenum; - readonly DRAW_BUFFER8: GLenum; - readonly DRAW_BUFFER9: GLenum; - readonly DRAW_FRAMEBUFFER: GLenum; - readonly DRAW_FRAMEBUFFER_BINDING: GLenum; - readonly DYNAMIC_COPY: GLenum; - readonly DYNAMIC_READ: GLenum; - readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum; - readonly FLOAT_MAT2x3: GLenum; - readonly FLOAT_MAT2x4: GLenum; - readonly FLOAT_MAT3x2: GLenum; - readonly FLOAT_MAT3x4: GLenum; - readonly FLOAT_MAT4x2: GLenum; - readonly FLOAT_MAT4x3: GLenum; - readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum; - readonly FRAMEBUFFER_DEFAULT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum; - readonly HALF_FLOAT: GLenum; - readonly INTERLEAVED_ATTRIBS: GLenum; - readonly INT_2_10_10_10_REV: GLenum; - readonly INT_SAMPLER_2D: GLenum; - readonly INT_SAMPLER_2D_ARRAY: GLenum; - readonly INT_SAMPLER_3D: GLenum; - readonly INT_SAMPLER_CUBE: GLenum; - readonly INVALID_INDEX: GLenum; - readonly MAX: GLenum; - readonly MAX_3D_TEXTURE_SIZE: GLenum; - readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum; - readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum; - readonly MAX_COLOR_ATTACHMENTS: GLenum; - readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum; - readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MAX_DRAW_BUFFERS: GLenum; - readonly MAX_ELEMENTS_INDICES: GLenum; - readonly MAX_ELEMENTS_VERTICES: GLenum; - readonly MAX_ELEMENT_INDEX: GLenum; - readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum; - readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum; - readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum; - readonly MAX_SAMPLES: GLenum; - readonly MAX_SERVER_WAIT_TIMEOUT: GLenum; - readonly MAX_TEXTURE_LOD_BIAS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum; - readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum; - readonly MAX_UNIFORM_BLOCK_SIZE: GLenum; - readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum; - readonly MAX_VARYING_COMPONENTS: GLenum; - readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum; - readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum; - readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum; - readonly MIN: GLenum; - readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum; - readonly OBJECT_TYPE: GLenum; - readonly PACK_ROW_LENGTH: GLenum; - readonly PACK_SKIP_PIXELS: GLenum; - readonly PACK_SKIP_ROWS: GLenum; - readonly PIXEL_PACK_BUFFER: GLenum; - readonly PIXEL_PACK_BUFFER_BINDING: GLenum; - readonly PIXEL_UNPACK_BUFFER: GLenum; - readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum; - readonly QUERY_RESULT: GLenum; - readonly QUERY_RESULT_AVAILABLE: GLenum; - readonly R11F_G11F_B10F: GLenum; - readonly R16F: GLenum; - readonly R16I: GLenum; - readonly R16UI: GLenum; - readonly R32F: GLenum; - readonly R32I: GLenum; - readonly R32UI: GLenum; - readonly R8: GLenum; - readonly R8I: GLenum; - readonly R8UI: GLenum; - readonly R8_SNORM: GLenum; - readonly RASTERIZER_DISCARD: GLenum; - readonly READ_BUFFER: GLenum; - readonly READ_FRAMEBUFFER: GLenum; - readonly READ_FRAMEBUFFER_BINDING: GLenum; - readonly RED: GLenum; - readonly RED_INTEGER: GLenum; - readonly RENDERBUFFER_SAMPLES: GLenum; - readonly RG: GLenum; - readonly RG16F: GLenum; - readonly RG16I: GLenum; - readonly RG16UI: GLenum; - readonly RG32F: GLenum; - readonly RG32I: GLenum; - readonly RG32UI: GLenum; - readonly RG8: GLenum; - readonly RG8I: GLenum; - readonly RG8UI: GLenum; - readonly RG8_SNORM: GLenum; - readonly RGB10_A2: GLenum; - readonly RGB10_A2UI: GLenum; - readonly RGB16F: GLenum; - readonly RGB16I: GLenum; - readonly RGB16UI: GLenum; - readonly RGB32F: GLenum; - readonly RGB32I: GLenum; - readonly RGB32UI: GLenum; - readonly RGB8: GLenum; - readonly RGB8I: GLenum; - readonly RGB8UI: GLenum; - readonly RGB8_SNORM: GLenum; - readonly RGB9_E5: GLenum; - readonly RGBA16F: GLenum; - readonly RGBA16I: GLenum; - readonly RGBA16UI: GLenum; - readonly RGBA32F: GLenum; - readonly RGBA32I: GLenum; - readonly RGBA32UI: GLenum; - readonly RGBA8: GLenum; - readonly RGBA8I: GLenum; - readonly RGBA8UI: GLenum; - readonly RGBA8_SNORM: GLenum; - readonly RGBA_INTEGER: GLenum; - readonly RGB_INTEGER: GLenum; - readonly RG_INTEGER: GLenum; - readonly SAMPLER_2D_ARRAY: GLenum; - readonly SAMPLER_2D_ARRAY_SHADOW: GLenum; - readonly SAMPLER_2D_SHADOW: GLenum; - readonly SAMPLER_3D: GLenum; - readonly SAMPLER_BINDING: GLenum; - readonly SAMPLER_CUBE_SHADOW: GLenum; - readonly SEPARATE_ATTRIBS: GLenum; - readonly SIGNALED: GLenum; - readonly SIGNED_NORMALIZED: GLenum; - readonly SRGB: GLenum; - readonly SRGB8: GLenum; - readonly SRGB8_ALPHA8: GLenum; - readonly STATIC_COPY: GLenum; - readonly STATIC_READ: GLenum; - readonly STENCIL: GLenum; - readonly STREAM_COPY: GLenum; - readonly STREAM_READ: GLenum; - readonly SYNC_CONDITION: GLenum; - readonly SYNC_FENCE: GLenum; - readonly SYNC_FLAGS: GLenum; - readonly SYNC_FLUSH_COMMANDS_BIT: GLenum; - readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum; - readonly SYNC_STATUS: GLenum; - readonly TEXTURE_2D_ARRAY: GLenum; - readonly TEXTURE_3D: GLenum; - readonly TEXTURE_BASE_LEVEL: GLenum; - readonly TEXTURE_BINDING_2D_ARRAY: GLenum; - readonly TEXTURE_BINDING_3D: GLenum; - readonly TEXTURE_COMPARE_FUNC: GLenum; - readonly TEXTURE_COMPARE_MODE: GLenum; - readonly TEXTURE_IMMUTABLE_FORMAT: GLenum; - readonly TEXTURE_IMMUTABLE_LEVELS: GLenum; - readonly TEXTURE_MAX_LEVEL: GLenum; - readonly TEXTURE_MAX_LOD: GLenum; - readonly TEXTURE_MIN_LOD: GLenum; - readonly TEXTURE_WRAP_R: GLenum; - readonly TIMEOUT_EXPIRED: GLenum; - readonly TIMEOUT_IGNORED: GLint64; - readonly TRANSFORM_FEEDBACK: GLenum; - readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum; - readonly TRANSFORM_FEEDBACK_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum; - readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum; - readonly TRANSFORM_FEEDBACK_PAUSED: GLenum; - readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum; - readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum; - readonly UNIFORM_ARRAY_STRIDE: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum; - readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum; - readonly UNIFORM_BLOCK_BINDING: GLenum; - readonly UNIFORM_BLOCK_DATA_SIZE: GLenum; - readonly UNIFORM_BLOCK_INDEX: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum; - readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum; - readonly UNIFORM_BUFFER: GLenum; - readonly UNIFORM_BUFFER_BINDING: GLenum; - readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum; - readonly UNIFORM_BUFFER_SIZE: GLenum; - readonly UNIFORM_BUFFER_START: GLenum; - readonly UNIFORM_IS_ROW_MAJOR: GLenum; - readonly UNIFORM_MATRIX_STRIDE: GLenum; - readonly UNIFORM_OFFSET: GLenum; - readonly UNIFORM_SIZE: GLenum; - readonly UNIFORM_TYPE: GLenum; - readonly UNPACK_IMAGE_HEIGHT: GLenum; - readonly UNPACK_ROW_LENGTH: GLenum; - readonly UNPACK_SKIP_IMAGES: GLenum; - readonly UNPACK_SKIP_PIXELS: GLenum; - readonly UNPACK_SKIP_ROWS: GLenum; - readonly UNSIGNALED: GLenum; - readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum; - readonly UNSIGNED_INT_24_8: GLenum; - readonly UNSIGNED_INT_2_10_10_10_REV: GLenum; - readonly UNSIGNED_INT_5_9_9_9_REV: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D: GLenum; - readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum; - readonly UNSIGNED_INT_SAMPLER_3D: GLenum; - readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum; - readonly UNSIGNED_INT_VEC2: GLenum; - readonly UNSIGNED_INT_VEC3: GLenum; - readonly UNSIGNED_INT_VEC4: GLenum; - readonly UNSIGNED_NORMALIZED: GLenum; - readonly VERTEX_ARRAY_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum; - readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum; - readonly WAIT_FAILED: GLenum; + readonly READ_BUFFER: 0x0C02; + readonly UNPACK_ROW_LENGTH: 0x0CF2; + readonly UNPACK_SKIP_ROWS: 0x0CF3; + readonly UNPACK_SKIP_PIXELS: 0x0CF4; + readonly PACK_ROW_LENGTH: 0x0D02; + readonly PACK_SKIP_ROWS: 0x0D03; + readonly PACK_SKIP_PIXELS: 0x0D04; + readonly COLOR: 0x1800; + readonly DEPTH: 0x1801; + readonly STENCIL: 0x1802; + readonly RED: 0x1903; + readonly RGB8: 0x8051; + readonly RGBA8: 0x8058; + readonly RGB10_A2: 0x8059; + readonly TEXTURE_BINDING_3D: 0x806A; + readonly UNPACK_SKIP_IMAGES: 0x806D; + readonly UNPACK_IMAGE_HEIGHT: 0x806E; + readonly TEXTURE_3D: 0x806F; + readonly TEXTURE_WRAP_R: 0x8072; + readonly MAX_3D_TEXTURE_SIZE: 0x8073; + readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368; + readonly MAX_ELEMENTS_VERTICES: 0x80E8; + readonly MAX_ELEMENTS_INDICES: 0x80E9; + readonly TEXTURE_MIN_LOD: 0x813A; + readonly TEXTURE_MAX_LOD: 0x813B; + readonly TEXTURE_BASE_LEVEL: 0x813C; + readonly TEXTURE_MAX_LEVEL: 0x813D; + readonly MIN: 0x8007; + readonly MAX: 0x8008; + readonly DEPTH_COMPONENT24: 0x81A6; + readonly MAX_TEXTURE_LOD_BIAS: 0x84FD; + readonly TEXTURE_COMPARE_MODE: 0x884C; + readonly TEXTURE_COMPARE_FUNC: 0x884D; + readonly CURRENT_QUERY: 0x8865; + readonly QUERY_RESULT: 0x8866; + readonly QUERY_RESULT_AVAILABLE: 0x8867; + readonly STREAM_READ: 0x88E1; + readonly STREAM_COPY: 0x88E2; + readonly STATIC_READ: 0x88E5; + readonly STATIC_COPY: 0x88E6; + readonly DYNAMIC_READ: 0x88E9; + readonly DYNAMIC_COPY: 0x88EA; + readonly MAX_DRAW_BUFFERS: 0x8824; + readonly DRAW_BUFFER0: 0x8825; + readonly DRAW_BUFFER1: 0x8826; + readonly DRAW_BUFFER2: 0x8827; + readonly DRAW_BUFFER3: 0x8828; + readonly DRAW_BUFFER4: 0x8829; + readonly DRAW_BUFFER5: 0x882A; + readonly DRAW_BUFFER6: 0x882B; + readonly DRAW_BUFFER7: 0x882C; + readonly DRAW_BUFFER8: 0x882D; + readonly DRAW_BUFFER9: 0x882E; + readonly DRAW_BUFFER10: 0x882F; + readonly DRAW_BUFFER11: 0x8830; + readonly DRAW_BUFFER12: 0x8831; + readonly DRAW_BUFFER13: 0x8832; + readonly DRAW_BUFFER14: 0x8833; + readonly DRAW_BUFFER15: 0x8834; + readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49; + readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A; + readonly SAMPLER_3D: 0x8B5F; + readonly SAMPLER_2D_SHADOW: 0x8B62; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B; + readonly PIXEL_PACK_BUFFER: 0x88EB; + readonly PIXEL_UNPACK_BUFFER: 0x88EC; + readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED; + readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF; + readonly FLOAT_MAT2x3: 0x8B65; + readonly FLOAT_MAT2x4: 0x8B66; + readonly FLOAT_MAT3x2: 0x8B67; + readonly FLOAT_MAT3x4: 0x8B68; + readonly FLOAT_MAT4x2: 0x8B69; + readonly FLOAT_MAT4x3: 0x8B6A; + readonly SRGB: 0x8C40; + readonly SRGB8: 0x8C41; + readonly SRGB8_ALPHA8: 0x8C43; + readonly COMPARE_REF_TO_TEXTURE: 0x884E; + readonly RGBA32F: 0x8814; + readonly RGB32F: 0x8815; + readonly RGBA16F: 0x881A; + readonly RGB16F: 0x881B; + readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD; + readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF; + readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904; + readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905; + readonly MAX_VARYING_COMPONENTS: 0x8B4B; + readonly TEXTURE_2D_ARRAY: 0x8C1A; + readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D; + readonly R11F_G11F_B10F: 0x8C3A; + readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B; + readonly RGB9_E5: 0x8C3D; + readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E; + readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80; + readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83; + readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84; + readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85; + readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88; + readonly RASTERIZER_DISCARD: 0x8C89; + readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A; + readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B; + readonly INTERLEAVED_ATTRIBS: 0x8C8C; + readonly SEPARATE_ATTRIBS: 0x8C8D; + readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E; + readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F; + readonly RGBA32UI: 0x8D70; + readonly RGB32UI: 0x8D71; + readonly RGBA16UI: 0x8D76; + readonly RGB16UI: 0x8D77; + readonly RGBA8UI: 0x8D7C; + readonly RGB8UI: 0x8D7D; + readonly RGBA32I: 0x8D82; + readonly RGB32I: 0x8D83; + readonly RGBA16I: 0x8D88; + readonly RGB16I: 0x8D89; + readonly RGBA8I: 0x8D8E; + readonly RGB8I: 0x8D8F; + readonly RED_INTEGER: 0x8D94; + readonly RGB_INTEGER: 0x8D98; + readonly RGBA_INTEGER: 0x8D99; + readonly SAMPLER_2D_ARRAY: 0x8DC1; + readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4; + readonly SAMPLER_CUBE_SHADOW: 0x8DC5; + readonly UNSIGNED_INT_VEC2: 0x8DC6; + readonly UNSIGNED_INT_VEC3: 0x8DC7; + readonly UNSIGNED_INT_VEC4: 0x8DC8; + readonly INT_SAMPLER_2D: 0x8DCA; + readonly INT_SAMPLER_3D: 0x8DCB; + readonly INT_SAMPLER_CUBE: 0x8DCC; + readonly INT_SAMPLER_2D_ARRAY: 0x8DCF; + readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2; + readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3; + readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4; + readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7; + readonly DEPTH_COMPONENT32F: 0x8CAC; + readonly DEPTH32F_STENCIL8: 0x8CAD; + readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD; + readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210; + readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211; + readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212; + readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213; + readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214; + readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215; + readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216; + readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217; + readonly FRAMEBUFFER_DEFAULT: 0x8218; + readonly UNSIGNED_INT_24_8: 0x84FA; + readonly DEPTH24_STENCIL8: 0x88F0; + readonly UNSIGNED_NORMALIZED: 0x8C17; + readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6; + readonly READ_FRAMEBUFFER: 0x8CA8; + readonly DRAW_FRAMEBUFFER: 0x8CA9; + readonly READ_FRAMEBUFFER_BINDING: 0x8CAA; + readonly RENDERBUFFER_SAMPLES: 0x8CAB; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4; + readonly MAX_COLOR_ATTACHMENTS: 0x8CDF; + readonly COLOR_ATTACHMENT1: 0x8CE1; + readonly COLOR_ATTACHMENT2: 0x8CE2; + readonly COLOR_ATTACHMENT3: 0x8CE3; + readonly COLOR_ATTACHMENT4: 0x8CE4; + readonly COLOR_ATTACHMENT5: 0x8CE5; + readonly COLOR_ATTACHMENT6: 0x8CE6; + readonly COLOR_ATTACHMENT7: 0x8CE7; + readonly COLOR_ATTACHMENT8: 0x8CE8; + readonly COLOR_ATTACHMENT9: 0x8CE9; + readonly COLOR_ATTACHMENT10: 0x8CEA; + readonly COLOR_ATTACHMENT11: 0x8CEB; + readonly COLOR_ATTACHMENT12: 0x8CEC; + readonly COLOR_ATTACHMENT13: 0x8CED; + readonly COLOR_ATTACHMENT14: 0x8CEE; + readonly COLOR_ATTACHMENT15: 0x8CEF; + readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56; + readonly MAX_SAMPLES: 0x8D57; + readonly HALF_FLOAT: 0x140B; + readonly RG: 0x8227; + readonly RG_INTEGER: 0x8228; + readonly R8: 0x8229; + readonly RG8: 0x822B; + readonly R16F: 0x822D; + readonly R32F: 0x822E; + readonly RG16F: 0x822F; + readonly RG32F: 0x8230; + readonly R8I: 0x8231; + readonly R8UI: 0x8232; + readonly R16I: 0x8233; + readonly R16UI: 0x8234; + readonly R32I: 0x8235; + readonly R32UI: 0x8236; + readonly RG8I: 0x8237; + readonly RG8UI: 0x8238; + readonly RG16I: 0x8239; + readonly RG16UI: 0x823A; + readonly RG32I: 0x823B; + readonly RG32UI: 0x823C; + readonly VERTEX_ARRAY_BINDING: 0x85B5; + readonly R8_SNORM: 0x8F94; + readonly RG8_SNORM: 0x8F95; + readonly RGB8_SNORM: 0x8F96; + readonly RGBA8_SNORM: 0x8F97; + readonly SIGNED_NORMALIZED: 0x8F9C; + readonly COPY_READ_BUFFER: 0x8F36; + readonly COPY_WRITE_BUFFER: 0x8F37; + readonly COPY_READ_BUFFER_BINDING: 0x8F36; + readonly COPY_WRITE_BUFFER_BINDING: 0x8F37; + readonly UNIFORM_BUFFER: 0x8A11; + readonly UNIFORM_BUFFER_BINDING: 0x8A28; + readonly UNIFORM_BUFFER_START: 0x8A29; + readonly UNIFORM_BUFFER_SIZE: 0x8A2A; + readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B; + readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D; + readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E; + readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F; + readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30; + readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31; + readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33; + readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34; + readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36; + readonly UNIFORM_TYPE: 0x8A37; + readonly UNIFORM_SIZE: 0x8A38; + readonly UNIFORM_BLOCK_INDEX: 0x8A3A; + readonly UNIFORM_OFFSET: 0x8A3B; + readonly UNIFORM_ARRAY_STRIDE: 0x8A3C; + readonly UNIFORM_MATRIX_STRIDE: 0x8A3D; + readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E; + readonly UNIFORM_BLOCK_BINDING: 0x8A3F; + readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42; + readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43; + readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44; + readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46; + readonly INVALID_INDEX: 0xFFFFFFFF; + readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122; + readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125; + readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111; + readonly OBJECT_TYPE: 0x9112; + readonly SYNC_CONDITION: 0x9113; + readonly SYNC_STATUS: 0x9114; + readonly SYNC_FLAGS: 0x9115; + readonly SYNC_FENCE: 0x9116; + readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117; + readonly UNSIGNALED: 0x9118; + readonly SIGNALED: 0x9119; + readonly ALREADY_SIGNALED: 0x911A; + readonly TIMEOUT_EXPIRED: 0x911B; + readonly CONDITION_SATISFIED: 0x911C; + readonly WAIT_FAILED: 0x911D; + readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE; + readonly ANY_SAMPLES_PASSED: 0x8C2F; + readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A; + readonly SAMPLER_BINDING: 0x8919; + readonly RGB10_A2UI: 0x906F; + readonly INT_2_10_10_10_REV: 0x8D9F; + readonly TRANSFORM_FEEDBACK: 0x8E22; + readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23; + readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24; + readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25; + readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F; + readonly MAX_ELEMENT_INDEX: 0x8D6B; + readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF; + readonly TIMEOUT_IGNORED: -1; + readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247; } interface WebGL2RenderingContextOverloads { @@ -4597,302 +4634,302 @@ interface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderin declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; }; interface WebGLRenderingContextBase { @@ -5049,302 +5086,302 @@ interface WebGLRenderingContextBase { vertexAttrib4fv(index: GLuint, values: Float32List): void; vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void; viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; - readonly ACTIVE_ATTRIBUTES: GLenum; - readonly ACTIVE_TEXTURE: GLenum; - readonly ACTIVE_UNIFORMS: GLenum; - readonly ALIASED_LINE_WIDTH_RANGE: GLenum; - readonly ALIASED_POINT_SIZE_RANGE: GLenum; - readonly ALPHA: GLenum; - readonly ALPHA_BITS: GLenum; - readonly ALWAYS: GLenum; - readonly ARRAY_BUFFER: GLenum; - readonly ARRAY_BUFFER_BINDING: GLenum; - readonly ATTACHED_SHADERS: GLenum; - readonly BACK: GLenum; - readonly BLEND: GLenum; - readonly BLEND_COLOR: GLenum; - readonly BLEND_DST_ALPHA: GLenum; - readonly BLEND_DST_RGB: GLenum; - readonly BLEND_EQUATION: GLenum; - readonly BLEND_EQUATION_ALPHA: GLenum; - readonly BLEND_EQUATION_RGB: GLenum; - readonly BLEND_SRC_ALPHA: GLenum; - readonly BLEND_SRC_RGB: GLenum; - readonly BLUE_BITS: GLenum; - readonly BOOL: GLenum; - readonly BOOL_VEC2: GLenum; - readonly BOOL_VEC3: GLenum; - readonly BOOL_VEC4: GLenum; - readonly BROWSER_DEFAULT_WEBGL: GLenum; - readonly BUFFER_SIZE: GLenum; - readonly BUFFER_USAGE: GLenum; - readonly BYTE: GLenum; - readonly CCW: GLenum; - readonly CLAMP_TO_EDGE: GLenum; - readonly COLOR_ATTACHMENT0: GLenum; - readonly COLOR_BUFFER_BIT: GLenum; - readonly COLOR_CLEAR_VALUE: GLenum; - readonly COLOR_WRITEMASK: GLenum; - readonly COMPILE_STATUS: GLenum; - readonly COMPRESSED_TEXTURE_FORMATS: GLenum; - readonly CONSTANT_ALPHA: GLenum; - readonly CONSTANT_COLOR: GLenum; - readonly CONTEXT_LOST_WEBGL: GLenum; - readonly CULL_FACE: GLenum; - readonly CULL_FACE_MODE: GLenum; - readonly CURRENT_PROGRAM: GLenum; - readonly CURRENT_VERTEX_ATTRIB: GLenum; - readonly CW: GLenum; - readonly DECR: GLenum; - readonly DECR_WRAP: GLenum; - readonly DELETE_STATUS: GLenum; - readonly DEPTH_ATTACHMENT: GLenum; - readonly DEPTH_BITS: GLenum; - readonly DEPTH_BUFFER_BIT: GLenum; - readonly DEPTH_CLEAR_VALUE: GLenum; - readonly DEPTH_COMPONENT: GLenum; - readonly DEPTH_COMPONENT16: GLenum; - readonly DEPTH_FUNC: GLenum; - readonly DEPTH_RANGE: GLenum; - readonly DEPTH_STENCIL: GLenum; - readonly DEPTH_STENCIL_ATTACHMENT: GLenum; - readonly DEPTH_TEST: GLenum; - readonly DEPTH_WRITEMASK: GLenum; - readonly DITHER: GLenum; - readonly DONT_CARE: GLenum; - readonly DST_ALPHA: GLenum; - readonly DST_COLOR: GLenum; - readonly DYNAMIC_DRAW: GLenum; - readonly ELEMENT_ARRAY_BUFFER: GLenum; - readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; - readonly EQUAL: GLenum; - readonly FASTEST: GLenum; - readonly FLOAT: GLenum; - readonly FLOAT_MAT2: GLenum; - readonly FLOAT_MAT3: GLenum; - readonly FLOAT_MAT4: GLenum; - readonly FLOAT_VEC2: GLenum; - readonly FLOAT_VEC3: GLenum; - readonly FLOAT_VEC4: GLenum; - readonly FRAGMENT_SHADER: GLenum; - readonly FRAMEBUFFER: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; - readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; - readonly FRAMEBUFFER_BINDING: GLenum; - readonly FRAMEBUFFER_COMPLETE: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; - readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; - readonly FRAMEBUFFER_UNSUPPORTED: GLenum; - readonly FRONT: GLenum; - readonly FRONT_AND_BACK: GLenum; - readonly FRONT_FACE: GLenum; - readonly FUNC_ADD: GLenum; - readonly FUNC_REVERSE_SUBTRACT: GLenum; - readonly FUNC_SUBTRACT: GLenum; - readonly GENERATE_MIPMAP_HINT: GLenum; - readonly GEQUAL: GLenum; - readonly GREATER: GLenum; - readonly GREEN_BITS: GLenum; - readonly HIGH_FLOAT: GLenum; - readonly HIGH_INT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; - readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; - readonly INCR: GLenum; - readonly INCR_WRAP: GLenum; - readonly INT: GLenum; - readonly INT_VEC2: GLenum; - readonly INT_VEC3: GLenum; - readonly INT_VEC4: GLenum; - readonly INVALID_ENUM: GLenum; - readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; - readonly INVALID_OPERATION: GLenum; - readonly INVALID_VALUE: GLenum; - readonly INVERT: GLenum; - readonly KEEP: GLenum; - readonly LEQUAL: GLenum; - readonly LESS: GLenum; - readonly LINEAR: GLenum; - readonly LINEAR_MIPMAP_LINEAR: GLenum; - readonly LINEAR_MIPMAP_NEAREST: GLenum; - readonly LINES: GLenum; - readonly LINE_LOOP: GLenum; - readonly LINE_STRIP: GLenum; - readonly LINE_WIDTH: GLenum; - readonly LINK_STATUS: GLenum; - readonly LOW_FLOAT: GLenum; - readonly LOW_INT: GLenum; - readonly LUMINANCE: GLenum; - readonly LUMINANCE_ALPHA: GLenum; - readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; - readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; - readonly MAX_RENDERBUFFER_SIZE: GLenum; - readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_TEXTURE_SIZE: GLenum; - readonly MAX_VARYING_VECTORS: GLenum; - readonly MAX_VERTEX_ATTRIBS: GLenum; - readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; - readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; - readonly MAX_VIEWPORT_DIMS: GLenum; - readonly MEDIUM_FLOAT: GLenum; - readonly MEDIUM_INT: GLenum; - readonly MIRRORED_REPEAT: GLenum; - readonly NEAREST: GLenum; - readonly NEAREST_MIPMAP_LINEAR: GLenum; - readonly NEAREST_MIPMAP_NEAREST: GLenum; - readonly NEVER: GLenum; - readonly NICEST: GLenum; - readonly NONE: GLenum; - readonly NOTEQUAL: GLenum; - readonly NO_ERROR: GLenum; - readonly ONE: GLenum; - readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; - readonly ONE_MINUS_CONSTANT_COLOR: GLenum; - readonly ONE_MINUS_DST_ALPHA: GLenum; - readonly ONE_MINUS_DST_COLOR: GLenum; - readonly ONE_MINUS_SRC_ALPHA: GLenum; - readonly ONE_MINUS_SRC_COLOR: GLenum; - readonly OUT_OF_MEMORY: GLenum; - readonly PACK_ALIGNMENT: GLenum; - readonly POINTS: GLenum; - readonly POLYGON_OFFSET_FACTOR: GLenum; - readonly POLYGON_OFFSET_FILL: GLenum; - readonly POLYGON_OFFSET_UNITS: GLenum; - readonly RED_BITS: GLenum; - readonly RENDERBUFFER: GLenum; - readonly RENDERBUFFER_ALPHA_SIZE: GLenum; - readonly RENDERBUFFER_BINDING: GLenum; - readonly RENDERBUFFER_BLUE_SIZE: GLenum; - readonly RENDERBUFFER_DEPTH_SIZE: GLenum; - readonly RENDERBUFFER_GREEN_SIZE: GLenum; - readonly RENDERBUFFER_HEIGHT: GLenum; - readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; - readonly RENDERBUFFER_RED_SIZE: GLenum; - readonly RENDERBUFFER_STENCIL_SIZE: GLenum; - readonly RENDERBUFFER_WIDTH: GLenum; - readonly RENDERER: GLenum; - readonly REPEAT: GLenum; - readonly REPLACE: GLenum; - readonly RGB: GLenum; - readonly RGB565: GLenum; - readonly RGB5_A1: GLenum; - readonly RGBA: GLenum; - readonly RGBA4: GLenum; - readonly SAMPLER_2D: GLenum; - readonly SAMPLER_CUBE: GLenum; - readonly SAMPLES: GLenum; - readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; - readonly SAMPLE_BUFFERS: GLenum; - readonly SAMPLE_COVERAGE: GLenum; - readonly SAMPLE_COVERAGE_INVERT: GLenum; - readonly SAMPLE_COVERAGE_VALUE: GLenum; - readonly SCISSOR_BOX: GLenum; - readonly SCISSOR_TEST: GLenum; - readonly SHADER_TYPE: GLenum; - readonly SHADING_LANGUAGE_VERSION: GLenum; - readonly SHORT: GLenum; - readonly SRC_ALPHA: GLenum; - readonly SRC_ALPHA_SATURATE: GLenum; - readonly SRC_COLOR: GLenum; - readonly STATIC_DRAW: GLenum; - readonly STENCIL_ATTACHMENT: GLenum; - readonly STENCIL_BACK_FAIL: GLenum; - readonly STENCIL_BACK_FUNC: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_BACK_REF: GLenum; - readonly STENCIL_BACK_VALUE_MASK: GLenum; - readonly STENCIL_BACK_WRITEMASK: GLenum; - readonly STENCIL_BITS: GLenum; - readonly STENCIL_BUFFER_BIT: GLenum; - readonly STENCIL_CLEAR_VALUE: GLenum; - readonly STENCIL_FAIL: GLenum; - readonly STENCIL_FUNC: GLenum; - readonly STENCIL_INDEX8: GLenum; - readonly STENCIL_PASS_DEPTH_FAIL: GLenum; - readonly STENCIL_PASS_DEPTH_PASS: GLenum; - readonly STENCIL_REF: GLenum; - readonly STENCIL_TEST: GLenum; - readonly STENCIL_VALUE_MASK: GLenum; - readonly STENCIL_WRITEMASK: GLenum; - readonly STREAM_DRAW: GLenum; - readonly SUBPIXEL_BITS: GLenum; - readonly TEXTURE: GLenum; - readonly TEXTURE0: GLenum; - readonly TEXTURE1: GLenum; - readonly TEXTURE10: GLenum; - readonly TEXTURE11: GLenum; - readonly TEXTURE12: GLenum; - readonly TEXTURE13: GLenum; - readonly TEXTURE14: GLenum; - readonly TEXTURE15: GLenum; - readonly TEXTURE16: GLenum; - readonly TEXTURE17: GLenum; - readonly TEXTURE18: GLenum; - readonly TEXTURE19: GLenum; - readonly TEXTURE2: GLenum; - readonly TEXTURE20: GLenum; - readonly TEXTURE21: GLenum; - readonly TEXTURE22: GLenum; - readonly TEXTURE23: GLenum; - readonly TEXTURE24: GLenum; - readonly TEXTURE25: GLenum; - readonly TEXTURE26: GLenum; - readonly TEXTURE27: GLenum; - readonly TEXTURE28: GLenum; - readonly TEXTURE29: GLenum; - readonly TEXTURE3: GLenum; - readonly TEXTURE30: GLenum; - readonly TEXTURE31: GLenum; - readonly TEXTURE4: GLenum; - readonly TEXTURE5: GLenum; - readonly TEXTURE6: GLenum; - readonly TEXTURE7: GLenum; - readonly TEXTURE8: GLenum; - readonly TEXTURE9: GLenum; - readonly TEXTURE_2D: GLenum; - readonly TEXTURE_BINDING_2D: GLenum; - readonly TEXTURE_BINDING_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; - readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; - readonly TEXTURE_MAG_FILTER: GLenum; - readonly TEXTURE_MIN_FILTER: GLenum; - readonly TEXTURE_WRAP_S: GLenum; - readonly TEXTURE_WRAP_T: GLenum; - readonly TRIANGLES: GLenum; - readonly TRIANGLE_FAN: GLenum; - readonly TRIANGLE_STRIP: GLenum; - readonly UNPACK_ALIGNMENT: GLenum; - readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; - readonly UNPACK_FLIP_Y_WEBGL: GLenum; - readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; - readonly UNSIGNED_BYTE: GLenum; - readonly UNSIGNED_INT: GLenum; - readonly UNSIGNED_SHORT: GLenum; - readonly UNSIGNED_SHORT_4_4_4_4: GLenum; - readonly UNSIGNED_SHORT_5_5_5_1: GLenum; - readonly UNSIGNED_SHORT_5_6_5: GLenum; - readonly VALIDATE_STATUS: GLenum; - readonly VENDOR: GLenum; - readonly VERSION: GLenum; - readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; - readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; - readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; - readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; - readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; - readonly VERTEX_SHADER: GLenum; - readonly VIEWPORT: GLenum; - readonly ZERO: GLenum; + readonly DEPTH_BUFFER_BIT: 0x00000100; + readonly STENCIL_BUFFER_BIT: 0x00000400; + readonly COLOR_BUFFER_BIT: 0x00004000; + readonly POINTS: 0x0000; + readonly LINES: 0x0001; + readonly LINE_LOOP: 0x0002; + readonly LINE_STRIP: 0x0003; + readonly TRIANGLES: 0x0004; + readonly TRIANGLE_STRIP: 0x0005; + readonly TRIANGLE_FAN: 0x0006; + readonly ZERO: 0; + readonly ONE: 1; + readonly SRC_COLOR: 0x0300; + readonly ONE_MINUS_SRC_COLOR: 0x0301; + readonly SRC_ALPHA: 0x0302; + readonly ONE_MINUS_SRC_ALPHA: 0x0303; + readonly DST_ALPHA: 0x0304; + readonly ONE_MINUS_DST_ALPHA: 0x0305; + readonly DST_COLOR: 0x0306; + readonly ONE_MINUS_DST_COLOR: 0x0307; + readonly SRC_ALPHA_SATURATE: 0x0308; + readonly FUNC_ADD: 0x8006; + readonly BLEND_EQUATION: 0x8009; + readonly BLEND_EQUATION_RGB: 0x8009; + readonly BLEND_EQUATION_ALPHA: 0x883D; + readonly FUNC_SUBTRACT: 0x800A; + readonly FUNC_REVERSE_SUBTRACT: 0x800B; + readonly BLEND_DST_RGB: 0x80C8; + readonly BLEND_SRC_RGB: 0x80C9; + readonly BLEND_DST_ALPHA: 0x80CA; + readonly BLEND_SRC_ALPHA: 0x80CB; + readonly CONSTANT_COLOR: 0x8001; + readonly ONE_MINUS_CONSTANT_COLOR: 0x8002; + readonly CONSTANT_ALPHA: 0x8003; + readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004; + readonly BLEND_COLOR: 0x8005; + readonly ARRAY_BUFFER: 0x8892; + readonly ELEMENT_ARRAY_BUFFER: 0x8893; + readonly ARRAY_BUFFER_BINDING: 0x8894; + readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; + readonly STREAM_DRAW: 0x88E0; + readonly STATIC_DRAW: 0x88E4; + readonly DYNAMIC_DRAW: 0x88E8; + readonly BUFFER_SIZE: 0x8764; + readonly BUFFER_USAGE: 0x8765; + readonly CURRENT_VERTEX_ATTRIB: 0x8626; + readonly FRONT: 0x0404; + readonly BACK: 0x0405; + readonly FRONT_AND_BACK: 0x0408; + readonly CULL_FACE: 0x0B44; + readonly BLEND: 0x0BE2; + readonly DITHER: 0x0BD0; + readonly STENCIL_TEST: 0x0B90; + readonly DEPTH_TEST: 0x0B71; + readonly SCISSOR_TEST: 0x0C11; + readonly POLYGON_OFFSET_FILL: 0x8037; + readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E; + readonly SAMPLE_COVERAGE: 0x80A0; + readonly NO_ERROR: 0; + readonly INVALID_ENUM: 0x0500; + readonly INVALID_VALUE: 0x0501; + readonly INVALID_OPERATION: 0x0502; + readonly OUT_OF_MEMORY: 0x0505; + readonly CW: 0x0900; + readonly CCW: 0x0901; + readonly LINE_WIDTH: 0x0B21; + readonly ALIASED_POINT_SIZE_RANGE: 0x846D; + readonly ALIASED_LINE_WIDTH_RANGE: 0x846E; + readonly CULL_FACE_MODE: 0x0B45; + readonly FRONT_FACE: 0x0B46; + readonly DEPTH_RANGE: 0x0B70; + readonly DEPTH_WRITEMASK: 0x0B72; + readonly DEPTH_CLEAR_VALUE: 0x0B73; + readonly DEPTH_FUNC: 0x0B74; + readonly STENCIL_CLEAR_VALUE: 0x0B91; + readonly STENCIL_FUNC: 0x0B92; + readonly STENCIL_FAIL: 0x0B94; + readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95; + readonly STENCIL_PASS_DEPTH_PASS: 0x0B96; + readonly STENCIL_REF: 0x0B97; + readonly STENCIL_VALUE_MASK: 0x0B93; + readonly STENCIL_WRITEMASK: 0x0B98; + readonly STENCIL_BACK_FUNC: 0x8800; + readonly STENCIL_BACK_FAIL: 0x8801; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; + readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; + readonly STENCIL_BACK_REF: 0x8CA3; + readonly STENCIL_BACK_VALUE_MASK: 0x8CA4; + readonly STENCIL_BACK_WRITEMASK: 0x8CA5; + readonly VIEWPORT: 0x0BA2; + readonly SCISSOR_BOX: 0x0C10; + readonly COLOR_CLEAR_VALUE: 0x0C22; + readonly COLOR_WRITEMASK: 0x0C23; + readonly UNPACK_ALIGNMENT: 0x0CF5; + readonly PACK_ALIGNMENT: 0x0D05; + readonly MAX_TEXTURE_SIZE: 0x0D33; + readonly MAX_VIEWPORT_DIMS: 0x0D3A; + readonly SUBPIXEL_BITS: 0x0D50; + readonly RED_BITS: 0x0D52; + readonly GREEN_BITS: 0x0D53; + readonly BLUE_BITS: 0x0D54; + readonly ALPHA_BITS: 0x0D55; + readonly DEPTH_BITS: 0x0D56; + readonly STENCIL_BITS: 0x0D57; + readonly POLYGON_OFFSET_UNITS: 0x2A00; + readonly POLYGON_OFFSET_FACTOR: 0x8038; + readonly TEXTURE_BINDING_2D: 0x8069; + readonly SAMPLE_BUFFERS: 0x80A8; + readonly SAMPLES: 0x80A9; + readonly SAMPLE_COVERAGE_VALUE: 0x80AA; + readonly SAMPLE_COVERAGE_INVERT: 0x80AB; + readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3; + readonly DONT_CARE: 0x1100; + readonly FASTEST: 0x1101; + readonly NICEST: 0x1102; + readonly GENERATE_MIPMAP_HINT: 0x8192; + readonly BYTE: 0x1400; + readonly UNSIGNED_BYTE: 0x1401; + readonly SHORT: 0x1402; + readonly UNSIGNED_SHORT: 0x1403; + readonly INT: 0x1404; + readonly UNSIGNED_INT: 0x1405; + readonly FLOAT: 0x1406; + readonly DEPTH_COMPONENT: 0x1902; + readonly ALPHA: 0x1906; + readonly RGB: 0x1907; + readonly RGBA: 0x1908; + readonly LUMINANCE: 0x1909; + readonly LUMINANCE_ALPHA: 0x190A; + readonly UNSIGNED_SHORT_4_4_4_4: 0x8033; + readonly UNSIGNED_SHORT_5_5_5_1: 0x8034; + readonly UNSIGNED_SHORT_5_6_5: 0x8363; + readonly FRAGMENT_SHADER: 0x8B30; + readonly VERTEX_SHADER: 0x8B31; + readonly MAX_VERTEX_ATTRIBS: 0x8869; + readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB; + readonly MAX_VARYING_VECTORS: 0x8DFC; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C; + readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD; + readonly SHADER_TYPE: 0x8B4F; + readonly DELETE_STATUS: 0x8B80; + readonly LINK_STATUS: 0x8B82; + readonly VALIDATE_STATUS: 0x8B83; + readonly ATTACHED_SHADERS: 0x8B85; + readonly ACTIVE_UNIFORMS: 0x8B86; + readonly ACTIVE_ATTRIBUTES: 0x8B89; + readonly SHADING_LANGUAGE_VERSION: 0x8B8C; + readonly CURRENT_PROGRAM: 0x8B8D; + readonly NEVER: 0x0200; + readonly LESS: 0x0201; + readonly EQUAL: 0x0202; + readonly LEQUAL: 0x0203; + readonly GREATER: 0x0204; + readonly NOTEQUAL: 0x0205; + readonly GEQUAL: 0x0206; + readonly ALWAYS: 0x0207; + readonly KEEP: 0x1E00; + readonly REPLACE: 0x1E01; + readonly INCR: 0x1E02; + readonly DECR: 0x1E03; + readonly INVERT: 0x150A; + readonly INCR_WRAP: 0x8507; + readonly DECR_WRAP: 0x8508; + readonly VENDOR: 0x1F00; + readonly RENDERER: 0x1F01; + readonly VERSION: 0x1F02; + readonly NEAREST: 0x2600; + readonly LINEAR: 0x2601; + readonly NEAREST_MIPMAP_NEAREST: 0x2700; + readonly LINEAR_MIPMAP_NEAREST: 0x2701; + readonly NEAREST_MIPMAP_LINEAR: 0x2702; + readonly LINEAR_MIPMAP_LINEAR: 0x2703; + readonly TEXTURE_MAG_FILTER: 0x2800; + readonly TEXTURE_MIN_FILTER: 0x2801; + readonly TEXTURE_WRAP_S: 0x2802; + readonly TEXTURE_WRAP_T: 0x2803; + readonly TEXTURE_2D: 0x0DE1; + readonly TEXTURE: 0x1702; + readonly TEXTURE_CUBE_MAP: 0x8513; + readonly TEXTURE_BINDING_CUBE_MAP: 0x8514; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C; + readonly TEXTURE0: 0x84C0; + readonly TEXTURE1: 0x84C1; + readonly TEXTURE2: 0x84C2; + readonly TEXTURE3: 0x84C3; + readonly TEXTURE4: 0x84C4; + readonly TEXTURE5: 0x84C5; + readonly TEXTURE6: 0x84C6; + readonly TEXTURE7: 0x84C7; + readonly TEXTURE8: 0x84C8; + readonly TEXTURE9: 0x84C9; + readonly TEXTURE10: 0x84CA; + readonly TEXTURE11: 0x84CB; + readonly TEXTURE12: 0x84CC; + readonly TEXTURE13: 0x84CD; + readonly TEXTURE14: 0x84CE; + readonly TEXTURE15: 0x84CF; + readonly TEXTURE16: 0x84D0; + readonly TEXTURE17: 0x84D1; + readonly TEXTURE18: 0x84D2; + readonly TEXTURE19: 0x84D3; + readonly TEXTURE20: 0x84D4; + readonly TEXTURE21: 0x84D5; + readonly TEXTURE22: 0x84D6; + readonly TEXTURE23: 0x84D7; + readonly TEXTURE24: 0x84D8; + readonly TEXTURE25: 0x84D9; + readonly TEXTURE26: 0x84DA; + readonly TEXTURE27: 0x84DB; + readonly TEXTURE28: 0x84DC; + readonly TEXTURE29: 0x84DD; + readonly TEXTURE30: 0x84DE; + readonly TEXTURE31: 0x84DF; + readonly ACTIVE_TEXTURE: 0x84E0; + readonly REPEAT: 0x2901; + readonly CLAMP_TO_EDGE: 0x812F; + readonly MIRRORED_REPEAT: 0x8370; + readonly FLOAT_VEC2: 0x8B50; + readonly FLOAT_VEC3: 0x8B51; + readonly FLOAT_VEC4: 0x8B52; + readonly INT_VEC2: 0x8B53; + readonly INT_VEC3: 0x8B54; + readonly INT_VEC4: 0x8B55; + readonly BOOL: 0x8B56; + readonly BOOL_VEC2: 0x8B57; + readonly BOOL_VEC3: 0x8B58; + readonly BOOL_VEC4: 0x8B59; + readonly FLOAT_MAT2: 0x8B5A; + readonly FLOAT_MAT3: 0x8B5B; + readonly FLOAT_MAT4: 0x8B5C; + readonly SAMPLER_2D: 0x8B5E; + readonly SAMPLER_CUBE: 0x8B60; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; + readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; + readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A; + readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F; + readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B; + readonly COMPILE_STATUS: 0x8B81; + readonly LOW_FLOAT: 0x8DF0; + readonly MEDIUM_FLOAT: 0x8DF1; + readonly HIGH_FLOAT: 0x8DF2; + readonly LOW_INT: 0x8DF3; + readonly MEDIUM_INT: 0x8DF4; + readonly HIGH_INT: 0x8DF5; + readonly FRAMEBUFFER: 0x8D40; + readonly RENDERBUFFER: 0x8D41; + readonly RGBA4: 0x8056; + readonly RGB5_A1: 0x8057; + readonly RGB565: 0x8D62; + readonly DEPTH_COMPONENT16: 0x81A5; + readonly STENCIL_INDEX8: 0x8D48; + readonly DEPTH_STENCIL: 0x84F9; + readonly RENDERBUFFER_WIDTH: 0x8D42; + readonly RENDERBUFFER_HEIGHT: 0x8D43; + readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44; + readonly RENDERBUFFER_RED_SIZE: 0x8D50; + readonly RENDERBUFFER_GREEN_SIZE: 0x8D51; + readonly RENDERBUFFER_BLUE_SIZE: 0x8D52; + readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53; + readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54; + readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3; + readonly COLOR_ATTACHMENT0: 0x8CE0; + readonly DEPTH_ATTACHMENT: 0x8D00; + readonly STENCIL_ATTACHMENT: 0x8D20; + readonly DEPTH_STENCIL_ATTACHMENT: 0x821A; + readonly NONE: 0; + readonly FRAMEBUFFER_COMPLETE: 0x8CD5; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9; + readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD; + readonly FRAMEBUFFER_BINDING: 0x8CA6; + readonly RENDERBUFFER_BINDING: 0x8CA7; + readonly MAX_RENDERBUFFER_SIZE: 0x84E8; + readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506; + readonly UNPACK_FLIP_Y_WEBGL: 0x9240; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; + readonly CONTEXT_LOST_WEBGL: 0x9242; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; + readonly BROWSER_DEFAULT_WEBGL: 0x9244; } interface WebGLRenderingContextOverloads { @@ -5482,10 +5519,10 @@ interface WebSocket extends EventTarget { close(code?: number, reason?: string): void; /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */ send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void; - readonly CLOSED: number; - readonly CLOSING: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSING: 2; + readonly CLOSED: 3; addEventListener(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -5495,10 +5532,10 @@ interface WebSocket extends EventTarget { declare var WebSocket: { prototype: WebSocket; new(url: string | URL, protocols?: string | string[]): WebSocket; - readonly CLOSED: number; - readonly CLOSING: number; - readonly CONNECTING: number; - readonly OPEN: number; + readonly CONNECTING: 0; + readonly OPEN: 1; + readonly CLOSING: 2; + readonly CLOSED: 3; }; /** This ServiceWorker API interface represents the scope of a service worker client that is a document in a browser context, controlled by an active worker. The service worker client independently selects and uses a service worker for its own loading and sub-resources. */ @@ -5748,11 +5785,11 @@ interface XMLHttpRequest extends XMLHttpRequestEventTarget { * Throws a "SyntaxError" DOMException if name is not a header name or if value is not a header value. */ setRequestHeader(name: string, value: string): void; - readonly DONE: number; - readonly HEADERS_RECEIVED: number; - readonly LOADING: number; - readonly OPENED: number; - readonly UNSENT: number; + readonly UNSENT: 0; + readonly OPENED: 1; + readonly HEADERS_RECEIVED: 2; + readonly LOADING: 3; + readonly DONE: 4; addEventListener(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -5762,11 +5799,11 @@ interface XMLHttpRequest extends XMLHttpRequestEventTarget { declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - readonly DONE: number; - readonly HEADERS_RECEIVED: number; - readonly LOADING: number; - readonly OPENED: number; - readonly UNSENT: number; + readonly UNSENT: 0; + readonly OPENED: 1; + readonly HEADERS_RECEIVED: 2; + readonly LOADING: 3; + readonly DONE: 4; }; interface XMLHttpRequestEventTargetEventMap { @@ -6144,6 +6181,7 @@ type ColorSpaceConversion = "default" | "none"; type DocumentVisibilityState = "hidden" | "visible"; type EndingType = "native" | "transparent"; type FileSystemHandleKind = "directory" | "file"; +type FontDisplay = "auto" | "block" | "fallback" | "optional" | "swap"; type FontFaceLoadStatus = "error" | "loaded" | "loading" | "unloaded"; type FontFaceSetLoadStatus = "loaded" | "loading"; type FrameType = "auxiliary" | "nested" | "none" | "top-level"; @@ -6153,7 +6191,7 @@ type IDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique"; type IDBRequestReadyState = "done" | "pending"; type IDBTransactionDurability = "default" | "relaxed" | "strict"; type IDBTransactionMode = "readonly" | "readwrite" | "versionchange"; -type ImageOrientation = "flipY" | "none"; +type ImageOrientation = "flipY" | "from-image"; type ImageSmoothingQuality = "high" | "low" | "medium"; type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; type KeyType = "private" | "public" | "secret"; diff --git a/lib/tsc.js b/lib/tsc.js index ed55980b613..f572475b0eb 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -23,7 +23,7 @@ var __export = (target, all) => { // src/compiler/corePublic.ts var versionMajorMinor = "5.0"; -var version = `${versionMajorMinor}.0-dev.20230112`; +var version = `${versionMajorMinor}.0-beta`; // src/compiler/core.ts var emptyArray = []; @@ -767,6 +767,18 @@ function arrayToMultiMap(values, makeKey, makeValue = identity) { function group(values, getGroupId, resultSelector = identity) { return arrayFrom(arrayToMultiMap(values, getGroupId).values(), resultSelector); } +function groupBy(values, keySelector) { + var _a2; + const result = {}; + if (values) { + for (const value of values) { + const key = `${keySelector(value)}`; + const array = (_a2 = result[key]) != null ? _a2 : result[key] = []; + array.push(value); + } + } + return result; +} function clone(object) { const result = {}; for (const id in object) { @@ -1263,12 +1275,24 @@ function padRight(s, length2, padString = " ") { return length2 <= s.length ? s : s + padString.repeat(length2 - s.length); } function takeWhile(array, predicate) { - const len = array.length; - let index = 0; - while (index < len && predicate(array[index])) { - index++; + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(0, index); + } +} +function skipWhile(array, predicate) { + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(index); } - return array.slice(0, index); } var trimString = !!String.prototype.trim ? (s) => s.trim() : (s) => trimStringEnd(trimStringStart(s)); var trimStringEnd = !!String.prototype.trimEnd ? (s) => s.trimEnd() : trimEndImpl; @@ -3445,14 +3469,15 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind4) => { SyntaxKind4[SyntaxKind4["JSDocSeeTag"] = 350] = "JSDocSeeTag"; SyntaxKind4[SyntaxKind4["JSDocPropertyTag"] = 351] = "JSDocPropertyTag"; SyntaxKind4[SyntaxKind4["JSDocThrowsTag"] = 352] = "JSDocThrowsTag"; - SyntaxKind4[SyntaxKind4["SyntaxList"] = 353] = "SyntaxList"; - SyntaxKind4[SyntaxKind4["NotEmittedStatement"] = 354] = "NotEmittedStatement"; - SyntaxKind4[SyntaxKind4["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; - SyntaxKind4[SyntaxKind4["CommaListExpression"] = 356] = "CommaListExpression"; - SyntaxKind4[SyntaxKind4["MergeDeclarationMarker"] = 357] = "MergeDeclarationMarker"; - SyntaxKind4[SyntaxKind4["EndOfDeclarationMarker"] = 358] = "EndOfDeclarationMarker"; - SyntaxKind4[SyntaxKind4["SyntheticReferenceExpression"] = 359] = "SyntheticReferenceExpression"; - SyntaxKind4[SyntaxKind4["Count"] = 360] = "Count"; + SyntaxKind4[SyntaxKind4["JSDocSatisfiesTag"] = 353] = "JSDocSatisfiesTag"; + SyntaxKind4[SyntaxKind4["SyntaxList"] = 354] = "SyntaxList"; + SyntaxKind4[SyntaxKind4["NotEmittedStatement"] = 355] = "NotEmittedStatement"; + SyntaxKind4[SyntaxKind4["PartiallyEmittedExpression"] = 356] = "PartiallyEmittedExpression"; + SyntaxKind4[SyntaxKind4["CommaListExpression"] = 357] = "CommaListExpression"; + SyntaxKind4[SyntaxKind4["MergeDeclarationMarker"] = 358] = "MergeDeclarationMarker"; + SyntaxKind4[SyntaxKind4["EndOfDeclarationMarker"] = 359] = "EndOfDeclarationMarker"; + SyntaxKind4[SyntaxKind4["SyntheticReferenceExpression"] = 360] = "SyntheticReferenceExpression"; + SyntaxKind4[SyntaxKind4["Count"] = 361] = "Count"; SyntaxKind4[SyntaxKind4["FirstAssignment"] = 63 /* EqualsToken */] = "FirstAssignment"; SyntaxKind4[SyntaxKind4["LastAssignment"] = 78 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind4[SyntaxKind4["FirstCompoundAssignment"] = 64 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -3481,9 +3506,9 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind4) => { SyntaxKind4[SyntaxKind4["LastStatement"] = 256 /* DebuggerStatement */] = "LastStatement"; SyntaxKind4[SyntaxKind4["FirstNode"] = 163 /* QualifiedName */] = "FirstNode"; SyntaxKind4[SyntaxKind4["FirstJSDocNode"] = 312 /* JSDocTypeExpression */] = "FirstJSDocNode"; - SyntaxKind4[SyntaxKind4["LastJSDocNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocNode"; + SyntaxKind4[SyntaxKind4["LastJSDocNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocNode"; SyntaxKind4[SyntaxKind4["FirstJSDocTagNode"] = 330 /* JSDocTag */] = "FirstJSDocTagNode"; - SyntaxKind4[SyntaxKind4["LastJSDocTagNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocTagNode"; + SyntaxKind4[SyntaxKind4["LastJSDocTagNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocTagNode"; SyntaxKind4[SyntaxKind4["FirstContextualKeyword"] = 126 /* AbstractKeyword */] = "FirstContextualKeyword"; SyntaxKind4[SyntaxKind4["LastContextualKeyword"] = 162 /* OfKeyword */] = "LastContextualKeyword"; return SyntaxKind4; @@ -3525,6 +3550,8 @@ var NodeFlags = /* @__PURE__ */ ((NodeFlags3) => { NodeFlags3[NodeFlags3["ContextFlags"] = 50720768] = "ContextFlags"; NodeFlags3[NodeFlags3["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; NodeFlags3[NodeFlags3["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; + NodeFlags3[NodeFlags3["IdentifierHasExtendedUnicodeEscape"] = 128 /* ContainsThis */] = "IdentifierHasExtendedUnicodeEscape"; + NodeFlags3[NodeFlags3["IdentifierIsInJSDocNamespace"] = 2048 /* HasAsyncFunctions */] = "IdentifierIsInJSDocNamespace"; return NodeFlags3; })(NodeFlags || {}); var ModifierFlags = /* @__PURE__ */ ((ModifierFlags3) => { @@ -3942,11 +3969,6 @@ var EmitFlags = /* @__PURE__ */ ((EmitFlags3) => { EmitFlags3[EmitFlags3["HasEndOfDeclarationMarker"] = 8388608] = "HasEndOfDeclarationMarker"; EmitFlags3[EmitFlags3["Iterator"] = 16777216] = "Iterator"; EmitFlags3[EmitFlags3["NoAsciiEscaping"] = 33554432] = "NoAsciiEscaping"; - EmitFlags3[EmitFlags3["TypeScriptClassWrapper"] = 67108864] = "TypeScriptClassWrapper"; - EmitFlags3[EmitFlags3["NeverApplyImportHelper"] = 134217728] = "NeverApplyImportHelper"; - EmitFlags3[EmitFlags3["IgnoreSourceNewlines"] = 268435456] = "IgnoreSourceNewlines"; - EmitFlags3[EmitFlags3["Immutable"] = 536870912] = "Immutable"; - EmitFlags3[EmitFlags3["IndirectCall"] = 1073741824] = "IndirectCall"; return EmitFlags3; })(EmitFlags || {}); var commentPragmas = { @@ -5916,10 +5938,9 @@ var Diagnostics = { Line_terminator_not_permitted_before_arrow: diag(1200, 1 /* Error */, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(1202, 1 /* Error */, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: diag(1203, 1 /* Error */, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), - Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), + Re_exporting_a_type_when_0_is_enabled_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205", "Re-exporting a type when '{0}' is enabled requires using 'export type'."), Decorators_are_not_valid_here: diag(1206, 1 /* Error */, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: diag(1207, 1 /* Error */, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), - _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: diag(1208, 1 /* Error */, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0: diag(1209, 1 /* Error */, "Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209", "Invalid optional chain from new expression. Did you mean to call '{0}()'?"), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: diag(1210, 1 /* Error */, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: diag(1211, 1 /* Error */, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), @@ -5929,7 +5950,6 @@ var Diagnostics = { Invalid_use_of_0_Modules_are_automatically_in_strict_mode: diag(1215, 1 /* Error */, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: diag(1216, 1 /* Error */, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: diag(1218, 1 /* Error */, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: diag(1219, 1 /* Error */, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: diag(1221, 1 /* Error */, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: diag(1222, 1 /* Error */, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: diag(1223, 1 /* Error */, "_0_tag_already_specified_1223", "'{0}' tag already specified."), @@ -5976,7 +5996,7 @@ var Diagnostics = { An_optional_element_cannot_follow_a_rest_element: diag(1266, 1 /* Error */, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: diag(1267, 1 /* Error */, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: diag(1268, 1 /* Error */, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), - Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), + Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269", "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled."), Decorator_function_return_type_0_is_not_assignable_to_type_1: diag(1270, 1 /* Error */, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: diag(1271, 1 /* Error */, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: diag(1272, 1 /* Error */, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), @@ -5985,6 +6005,17 @@ var Diagnostics = { accessor_modifier_can_only_appear_on_a_property_declaration: diag(1275, 1 /* Error */, "accessor_modifier_can_only_appear_on_a_property_declaration_1275", "'accessor' modifier can only appear on a property declaration."), An_accessor_property_cannot_be_declared_optional: diag(1276, 1 /* Error */, "An_accessor_property_cannot_be_declared_optional_1276", "An 'accessor' property cannot be declared optional."), _0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class: diag(1277, 1 /* Error */, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277", "'{0}' modifier can only appear on a type parameter of a function, method or class"), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0: diag(1278, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278", "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}."), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0: diag(1279, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279", "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}."), + Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement: diag(1280, 1 /* Error */, "Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280", "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement."), + Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead: diag(1281, 1 /* Error */, "Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281", "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead."), + An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1282, 1 /* Error */, "An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282", "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1283, 1 /* Error */, "An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283", "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1284, 1 /* Error */, "An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284", "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1285, 1 /* Error */, "An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285", "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1286, 1 /* Error */, "ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286", "ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1287, 1 /* Error */, "A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287", "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled: diag(1288, 1 /* Error */, "An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288", "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled."), with_statements_are_not_allowed_in_an_async_function_block: diag(1300, 1 /* Error */, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: diag(1308, 1 /* Error */, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: diag(1309, 1 /* Error */, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), @@ -6056,7 +6087,6 @@ var Diagnostics = { An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: diag(1380, 1 /* Error */, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: diag(1381, 1 /* Error */, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: diag(1382, 1 /* Error */, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), - Only_named_exports_may_use_export_type: diag(1383, 1 /* Error */, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1385, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1386, 1 /* Error */, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: diag(1387, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), @@ -6104,7 +6134,7 @@ var Diagnostics = { The_file_is_in_the_program_because_Colon: diag(1430, 3 /* Message */, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1431, 1 /* Error */, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: diag(1432, 1 /* Error */, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), - Decorators_may_not_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), + Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433", "Neither decorators nor modifiers may be applied to 'this' parameters."), Unexpected_keyword_or_identifier: diag(1434, 1 /* Error */, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: diag(1435, 1 /* Error */, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: diag(1436, 1 /* Error */, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), @@ -6117,7 +6147,7 @@ var Diagnostics = { Module_declaration_names_may_only_use_or_quoted_strings: diag(1443, 1 /* Error */, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1444, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1446, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), - _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: diag(1449, 3 /* Message */, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: diag(1450, 3 /* Message */, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: diag(1451, 1 /* Error */, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), @@ -6145,6 +6175,8 @@ var Diagnostics = { To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1: diag(1481, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481", `To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \`"type": "module"\` to '{1}'.`), To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0: diag(1482, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482", 'To convert this file to an ECMAScript module, add the field `"type": "module"` to \'{0}\'.'), To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module: diag(1483, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483", 'To convert this file to an ECMAScript module, create a local package.json file with `{ "type": "module" }`.'), + _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1484, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484", "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1485, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -6602,7 +6634,7 @@ var Diagnostics = { This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: diag(2745, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: diag(2746, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: diag(2747, 1 /* Error */, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), - Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), + Cannot_access_ambient_const_enums_when_0_is_enabled: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_0_is_enabled_2748", "Cannot access ambient const enums when '{0}' is enabled."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: diag(2749, 1 /* Error */, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: diag(2750, 1 /* Error */, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: diag(2751, 1 /* Error */, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), @@ -6850,12 +6882,12 @@ var Diagnostics = { The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: diag(5088, 1 /* Error */, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: diag(5089, 1 /* Error */, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: diag(5090, 1 /* Error */, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), - Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), + Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled."), The_root_value_of_a_0_file_must_be_an_object: diag(5092, 1 /* Error */, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: diag(5093, 1 /* Error */, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: diag(5094, 1 /* Error */, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: diag(5095, 1 /* Error */, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), - Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_eithe_5096", "Option 'allowImportingTsExtensions' can only be used when 'moduleResolution' is set to 'bundler' and either 'noEmit' or 'emitDeclarationOnly' is set."), + Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096", "Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set."), An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled: diag(5097, 1 /* Error */, "An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097", "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled."), Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler: diag(5098, 1 /* Error */, "Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098", "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'."), Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(5099, 1 /* Error */, "Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Aster_5099", `Import assignment is not allowed when 'moduleResolution' is set to 'bundler'. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), @@ -6863,6 +6895,9 @@ var Diagnostics = { Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error: diag(5101, 1 /* Error */, "Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_5101", `Flag '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify 'ignoreDeprecations: "{2}"' to silence this error.`), Flag_0_is_deprecated_Please_remove_it_from_your_configuration: diag(5102, 1 /* Error */, "Flag_0_is_deprecated_Please_remove_it_from_your_configuration_5102", "Flag '{0}' is deprecated. Please remove it from your configuration."), Invalid_value_for_ignoreDeprecations: diag(5103, 1 /* Error */, "Invalid_value_for_ignoreDeprecations_5103", "Invalid value for '--ignoreDeprecations'."), + Option_0_is_redundant_and_cannot_be_specified_with_option_1: diag(5104, 1 /* Error */, "Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104", "Option '{0}' is redundant and cannot be specified with option '{1}'."), + Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System: diag(5105, 1 /* Error */, "Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105", "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'."), + Use_0_instead: diag(5106, 3 /* Message */, "Use_0_instead_5106", "Use '{0}' instead."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -7145,6 +7180,8 @@ var Diagnostics = { package_json_scope_0_explicitly_maps_specifier_1_to_null: diag(6274, 3 /* Message */, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: diag(6275, 3 /* Message */, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: diag(6276, 3 /* Message */, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), + Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update: diag(6277, 3 /* Message */, "Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277", "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update."), + There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings: diag(6278, 3 /* Message */, "There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278", `There are types at '{0}', but this result could not be resolved when respecting package.json "exports". The '{1}' library may need to update its package.json or typings.`), Enable_project_compilation: diag(6302, 3 /* Message */, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: diag(6304, 1 /* Error */, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: diag(6305, 1 /* Error */, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), @@ -7269,7 +7306,7 @@ var Diagnostics = { Filters_results_from_the_include_option: diag(6627, 3 /* Message */, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: diag(6628, 3 /* Message */, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: diag(6629, 3 /* Message */, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), - Enable_experimental_support_for_TC39_stage_2_draft_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), + Enable_experimental_support_for_legacy_experimental_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_legacy_experimental_decorators_6630", "Enable experimental support for legacy experimental decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: diag(6631, 3 /* Message */, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: diag(6632, 3 /* Message */, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: diag(6633, 3 /* Message */, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), @@ -7355,6 +7392,7 @@ var Diagnostics = { Require_undeclared_properties_from_index_signatures_to_use_element_accesses: diag(6717, 3 /* Message */, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: diag(6718, 3 /* Message */, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: diag(6803, 3 /* Message */, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), + Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting: diag(6804, 3 /* Message */, "Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804", "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting."), one_of_Colon: diag(6900, 3 /* Message */, "one_of_Colon_6900", "one of:"), one_or_more_Colon: diag(6901, 3 /* Message */, "one_or_more_Colon_6901", "one or more:"), type_Colon: diag(6902, 3 /* Message */, "type_Colon_6902", "type:"), @@ -7490,6 +7528,7 @@ var Diagnostics = { You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder: diag(8035, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035", "You cannot rename elements that are defined in a 'node_modules' folder."), You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder: diag(8036, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036", "You cannot rename elements that are defined in another 'node_modules' folder."), Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files: diag(8037, 1 /* Error */, "Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037", "Type satisfaction expressions can only be used in TypeScript files."), + Decorators_must_come_after_export_or_export_default_in_JavaScript_files: diag(8038, 1 /* Error */, "Decorators_must_come_after_export_or_export_default_in_JavaScript_files_8038", "Decorators must come after 'export' or 'export default' in JavaScript files."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9005, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: diag(17e3, 1 /* Error */, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), @@ -7775,7 +7814,8 @@ var Diagnostics = { _0_is_possibly_null: diag(18047, 1 /* Error */, "_0_is_possibly_null_18047", "'{0}' is possibly 'null'."), _0_is_possibly_undefined: diag(18048, 1 /* Error */, "_0_is_possibly_undefined_18048", "'{0}' is possibly 'undefined'."), _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."), - The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here.") + The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."), + Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string.") }; // src/compiler/scanner.ts @@ -8365,10 +8405,7 @@ function reduceEachTrailingCommentRange(text, pos, cb, state, initial) { initial ); } -function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments) { - if (!comments) { - comments = []; - } +function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) { comments.push({ kind, pos, end, hasTrailingNewLine }); return comments; } @@ -9979,7 +10016,7 @@ function createTextChangeRange(span, newLength) { } var unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); function isParameterPropertyDeclaration(node, parent) { - return hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent.kind === 173 /* Constructor */; + return isParameter(node) && hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent.kind === 173 /* Constructor */; } function walkUpBindingElementsAndPatterns(binding) { let node = binding.parent; @@ -10069,7 +10106,10 @@ function getOriginalNode(node, nodeTest) { node = node.original; } } - return !nodeTest || nodeTest(node) ? node : void 0; + if (!node || !nodeTest) { + return node; + } + return nodeTest(node) ? node : void 0; } function findAncestor(node, callback) { while (node) { @@ -10108,6 +10148,10 @@ function unescapeLeadingUnderscores(identifier) { function idText(identifierOrPrivateName) { return unescapeLeadingUnderscores(identifierOrPrivateName.escapedText); } +function identifierToKeywordKind(node) { + const token = stringToToken(node.escapedText); + return token ? tryCast(token, isKeyword) : void 0; +} function symbolName(symbol) { if (symbol.valueDeclaration && isPrivateIdentifierClassElementDeclaration(symbol.valueDeclaration)) { return idText(symbol.valueDeclaration.name); @@ -10368,6 +10412,9 @@ function getJSDocThisTag(node) { function getJSDocReturnTag(node) { return getFirstJSDocTag(node, isJSDocReturnTag); } +function getJSDocSatisfiesTag(node) { + return getFirstJSDocTag(node, isJSDocSatisfiesTag); +} function getJSDocTypeTag(node) { const tag = getFirstJSDocTag(node, isJSDocTypeTag); if (tag && tag.typeExpression && tag.typeExpression.type) { @@ -10400,15 +10447,17 @@ function getJSDocReturnType(node) { } } function getJSDocTagsWorker(node, noCache) { + var _a2, _b; if (!canHaveJSDoc(node)) return emptyArray; - let tags = node.jsDocCache; + let tags = (_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache; if (tags === void 0 || noCache) { const comments = getJSDocCommentsAndTags(node, noCache); Debug.assert(comments.length < 2 || comments[0] !== comments[1]); tags = flatMap(comments, (j) => isJSDoc(j) ? j.tags : j); if (!noCache) { - node.jsDocCache = tags; + (_b = node.jsDoc) != null ? _b : node.jsDoc = []; + node.jsDoc.jsDocCache = tags; } } return tags; @@ -10534,9 +10583,6 @@ function isNodeKind(kind) { function isTokenKind(kind) { return kind >= 0 /* FirstToken */ && kind <= 162 /* LastToken */; } -function isToken(n) { - return isTokenKind(n.kind); -} function isNodeArray(array) { return hasProperty(array, "pos") && hasProperty(array, "end"); } @@ -10567,28 +10613,42 @@ function isTemplateMiddleOrTemplateTail(node) { function isImportOrExportSpecifier(node) { return isImportSpecifier(node) || isExportSpecifier(node); } -function isTypeOnlyImportOrExportDeclaration(node) { +function isTypeOnlyImportDeclaration(node) { switch (node.kind) { case 273 /* ImportSpecifier */: - case 278 /* ExportSpecifier */: return node.isTypeOnly || node.parent.parent.isTypeOnly; case 271 /* NamespaceImport */: return node.parent.isTypeOnly; case 270 /* ImportClause */: case 268 /* ImportEqualsDeclaration */: return node.isTypeOnly; - default: - return false; } + return false; +} +function isTypeOnlyExportDeclaration(node) { + switch (node.kind) { + case 278 /* ExportSpecifier */: + return node.isTypeOnly || node.parent.parent.isTypeOnly; + case 275 /* ExportDeclaration */: + return node.isTypeOnly && !!node.moduleSpecifier && !node.exportClause; + case 277 /* NamespaceExport */: + return node.parent.isTypeOnly; + } + return false; +} +function isTypeOnlyImportOrExportDeclaration(node) { + return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node); } function isAssertionKey(node) { return isStringLiteral(node) || isIdentifier(node); } function isGeneratedIdentifier(node) { - return isIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isGeneratedPrivateIdentifier(node) { - return isPrivateIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isPrivateIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isPrivateIdentifierClassElementDeclaration(node) { return (isPropertyDeclaration(node) || isMethodOrAccessor(node)) && isPrivateIdentifier(node.name); @@ -10702,6 +10762,17 @@ function isMethodOrAccessor(node) { return false; } } +function isNamedClassElement(node) { + switch (node.kind) { + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: + case 169 /* PropertyDeclaration */: + return true; + default: + return false; + } +} function isModifierLike(node) { return isModifier(node) || isDecorator(node); } @@ -10748,6 +10819,9 @@ function isDeclarationBindingElement(bindingElement) { } return false; } +function isBindingOrAssignmentElement(node) { + return isVariableDeclaration(node) || isParameter(node) || isObjectBindingOrAssignmentElement(node) || isArrayBindingOrAssignmentElement(node); +} function isBindingOrAssignmentPattern(node) { return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node); } @@ -10777,6 +10851,24 @@ function isArrayBindingOrAssignmentPattern(node) { } return false; } +function isArrayBindingOrAssignmentElement(node) { + switch (node.kind) { + case 205 /* BindingElement */: + case 229 /* OmittedExpression */: + case 227 /* SpreadElement */: + case 206 /* ArrayLiteralExpression */: + case 207 /* ObjectLiteralExpression */: + case 79 /* Identifier */: + case 208 /* PropertyAccessExpression */: + case 209 /* ElementAccessExpression */: + return true; + } + return isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ); +} function isPropertyAccessOrQualifiedNameOrImportTypeNode(node) { const kind = node.kind; return kind === 208 /* PropertyAccessExpression */ || kind === 163 /* QualifiedName */ || kind === 202 /* ImportType */; @@ -10836,6 +10928,7 @@ function isLeftHandSideExpressionKind(kind) { case 230 /* ExpressionWithTypeArguments */: case 233 /* MetaProperty */: case 100 /* ImportKeyword */: + case 279 /* MissingDeclaration */: return true; default: return false; @@ -10858,6 +10951,17 @@ function isUnaryExpressionKind(kind) { return isLeftHandSideExpressionKind(kind); } } +function isLiteralTypeLiteral(node) { + switch (node.kind) { + case 104 /* NullKeyword */: + case 110 /* TrueKeyword */: + case 95 /* FalseKeyword */: + case 221 /* PrefixUnaryExpression */: + return true; + default: + return isLiteralExpression(node); + } +} function isExpression(node) { return isExpressionKind(skipPartiallyEmittedExpressions(node).kind); } @@ -10870,8 +10974,8 @@ function isExpressionKind(kind) { case 227 /* SpreadElement */: case 231 /* AsExpression */: case 229 /* OmittedExpression */: - case 356 /* CommaListExpression */: - case 355 /* PartiallyEmittedExpression */: + case 357 /* CommaListExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: return true; default: @@ -11042,7 +11146,7 @@ function isDeclarationStatementKind(kind) { return kind === 259 /* FunctionDeclaration */ || kind === 279 /* MissingDeclaration */ || kind === 260 /* ClassDeclaration */ || kind === 261 /* InterfaceDeclaration */ || kind === 262 /* TypeAliasDeclaration */ || kind === 263 /* EnumDeclaration */ || kind === 264 /* ModuleDeclaration */ || kind === 269 /* ImportDeclaration */ || kind === 268 /* ImportEqualsDeclaration */ || kind === 275 /* ExportDeclaration */ || kind === 274 /* ExportAssignment */ || kind === 267 /* NamespaceExportDeclaration */; } function isStatementKindButNotDeclarationKind(kind) { - return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 354 /* NotEmittedStatement */ || kind === 358 /* EndOfDeclarationMarker */ || kind === 357 /* MergeDeclarationMarker */; + return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 355 /* NotEmittedStatement */ || kind === 359 /* EndOfDeclarationMarker */ || kind === 358 /* MergeDeclarationMarker */; } function isDeclaration(node) { if (node.kind === 165 /* TypeParameter */) { @@ -11103,10 +11207,10 @@ function isCaseOrDefaultClause(node) { return kind === 292 /* CaseClause */ || kind === 293 /* DefaultClause */; } function isJSDocNode(node) { - return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 352 /* LastJSDocNode */; + return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 353 /* LastJSDocNode */; } function isJSDocTag(node) { - return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 352 /* LastJSDocTagNode */; + return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 353 /* LastJSDocTagNode */; } function isSetAccessor(node) { return node.kind === 175 /* SetAccessor */; @@ -11139,9 +11243,6 @@ function hasOnlyExpressionInitializer(node) { return false; } } -function isObjectLiteralElement(node) { - return node.kind === 288 /* JsxAttribute */ || node.kind === 290 /* JsxSpreadAttribute */ || isObjectLiteralElementLike(node); -} function isTypeReferenceType(node) { return node.kind === 180 /* TypeReference */ || node.kind === 230 /* ExpressionWithTypeArguments */; } @@ -11494,7 +11595,7 @@ function getTokenPosOfNode(node, sourceFile, includeJsDoc) { if (includeJsDoc && hasJSDocNodes(node)) { return getTokenPosOfNode(node.jsDoc[0], sourceFile); } - if (node.kind === 353 /* SyntaxList */ && node._children.length > 0) { + if (node.kind === 354 /* SyntaxList */ && node._children.length > 0) { return getTokenPosOfNode(node._children[0], sourceFile, includeJsDoc); } return skipTrivia( @@ -11539,6 +11640,10 @@ function getEmitFlags(node) { const emitNode = node.emitNode; return emitNode && emitNode.flags || 0; } +function getInternalEmitFlags(node) { + const emitNode = node.emitNode; + return emitNode && emitNode.internalFlags || 0; +} function getScriptTargetFeatures() { return { es2015: { @@ -11757,6 +11862,9 @@ function isEffectiveStrictModeSourceFile(node, compilerOptions) { } return false; } +function isAmbientPropertyDeclaration(node) { + return !!(node.flags & 16777216 /* Ambient */) || hasSyntacticModifier(node, 2 /* Ambient */); +} function isBlockScope(node, parentNode) { switch (node.kind) { case 308 /* SourceFile */: @@ -11832,10 +11940,11 @@ function isComputedNonLiteralName(name) { return name.kind === 164 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression); } function tryGetTextOfPropertyName(name) { + var _a2; switch (name.kind) { case 79 /* Identifier */: case 80 /* PrivateIdentifier */: - return name.autoGenerate ? void 0 : name.escapedText; + return ((_a2 = name.emitNode) == null ? void 0 : _a2.autoGenerate) ? void 0 : name.escapedText; case 10 /* StringLiteral */: case 8 /* NumericLiteral */: case 14 /* NoSubstitutionTemplateLiteral */: @@ -11884,11 +11993,14 @@ function createDiagnosticForNodeInSourceFile(sourceFile, node, message, arg0, ar const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2, arg3); } -function createDiagnosticForNodeFromMessageChain(node, messageChain, relatedInformation) { - const sourceFile = getSourceFileOfNode(node); +function createDiagnosticForNodeFromMessageChain(sourceFile, node, messageChain, relatedInformation) { const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnosticFromMessageChain(sourceFile, span.start, span.length, messageChain, relatedInformation); } +function createDiagnosticForNodeArrayFromMessageChain(sourceFile, nodes, messageChain, relatedInformation) { + const start = skipTrivia(sourceFile.text, nodes.pos); + return createFileDiagnosticFromMessageChain(sourceFile, start, nodes.end - start, messageChain, relatedInformation); +} function assertDiagnosticLocation(file, start, length2) { Debug.assertGreaterThanOrEqual(start, 0); Debug.assertGreaterThanOrEqual(length2, 0); @@ -11953,6 +12065,20 @@ function getSpanOfTokenAtPosition(sourceFile, pos) { const start = scanner.getTokenPos(); return createTextSpanFromBounds(start, scanner.getTextPos()); } +function scanTokenAtPosition(sourceFile, pos) { + const scanner = createScanner( + sourceFile.languageVersion, + /*skipTrivia*/ + true, + sourceFile.languageVariant, + sourceFile.text, + /*onError:*/ + void 0, + pos + ); + scanner.scan(); + return scanner.getToken(); +} function getErrorSpanForArrowFunction(sourceFile, node) { const pos = skipTrivia(sourceFile.text, node.pos); if (node.body && node.body.kind === 238 /* Block */) { @@ -12528,47 +12654,90 @@ function getInvokedExpression(node) { return node.expression; } } -function nodeCanBeDecorated(node, parent, grandparent) { - if (isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { +function nodeCanBeDecorated(useLegacyDecorators, node, parent, grandparent) { + if (useLegacyDecorators && isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { return false; } switch (node.kind) { case 260 /* ClassDeclaration */: return true; + case 228 /* ClassExpression */: + return !useLegacyDecorators; case 169 /* PropertyDeclaration */: - return parent.kind === 260 /* ClassDeclaration */; + return parent !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent) : isClassLike(parent) && !hasAbstractModifier(node) && !hasAmbientModifier(node)); case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: - return node.body !== void 0 && parent.kind === 260 /* ClassDeclaration */; + return node.body !== void 0 && parent !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent) : isClassLike(parent)); case 166 /* Parameter */: - return parent.body !== void 0 && (parent.kind === 173 /* Constructor */ || parent.kind === 171 /* MethodDeclaration */ || parent.kind === 175 /* SetAccessor */) && grandparent.kind === 260 /* ClassDeclaration */; + if (!useLegacyDecorators) + return false; + return parent !== void 0 && parent.body !== void 0 && (parent.kind === 173 /* Constructor */ || parent.kind === 171 /* MethodDeclaration */ || parent.kind === 175 /* SetAccessor */) && getThisParameter(parent) !== node && grandparent !== void 0 && grandparent.kind === 260 /* ClassDeclaration */; } return false; } -function nodeIsDecorated(node, parent, grandparent) { - return hasDecorators(node) && nodeCanBeDecorated(node, parent, grandparent); +function nodeIsDecorated(useLegacyDecorators, node, parent, grandparent) { + return hasDecorators(node) && nodeCanBeDecorated(useLegacyDecorators, node, parent, grandparent); } -function nodeOrChildIsDecorated(node, parent, grandparent) { - return nodeIsDecorated(node, parent, grandparent) || childIsDecorated(node, parent); +function nodeOrChildIsDecorated(useLegacyDecorators, node, parent, grandparent) { + return nodeIsDecorated(useLegacyDecorators, node, parent, grandparent) || childIsDecorated(useLegacyDecorators, node, parent); } -function childIsDecorated(node, parent) { +function childIsDecorated(useLegacyDecorators, node, parent) { switch (node.kind) { case 260 /* ClassDeclaration */: - return some(node.members, (m) => nodeOrChildIsDecorated(m, node, parent)); + return some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent)); + case 228 /* ClassExpression */: + return !useLegacyDecorators && some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent)); case 171 /* MethodDeclaration */: case 175 /* SetAccessor */: case 173 /* Constructor */: - return some(node.parameters, (p) => nodeIsDecorated(p, node, parent)); + return some(node.parameters, (p) => nodeIsDecorated(useLegacyDecorators, p, node, parent)); default: return false; } } -function classOrConstructorParameterIsDecorated(node) { - if (nodeIsDecorated(node)) +function classOrConstructorParameterIsDecorated(useLegacyDecorators, node) { + if (nodeIsDecorated(useLegacyDecorators, node)) return true; const constructor = getFirstConstructorWithBody(node); - return !!constructor && childIsDecorated(constructor, node); + return !!constructor && childIsDecorated(useLegacyDecorators, constructor, node); +} +function classElementOrClassElementParameterIsDecorated(useLegacyDecorators, node, parent) { + let parameters; + if (isAccessor(node)) { + const { firstAccessor, secondAccessor, setAccessor } = getAllAccessorDeclarations(parent.members, node); + const firstAccessorWithDecorators = hasDecorators(firstAccessor) ? firstAccessor : secondAccessor && hasDecorators(secondAccessor) ? secondAccessor : void 0; + if (!firstAccessorWithDecorators || node !== firstAccessorWithDecorators) { + return false; + } + parameters = setAccessor == null ? void 0 : setAccessor.parameters; + } else if (isMethodDeclaration(node)) { + parameters = node.parameters; + } + if (nodeIsDecorated(useLegacyDecorators, node, parent)) { + return true; + } + if (parameters) { + for (const parameter of parameters) { + if (parameterIsThisKeyword(parameter)) + continue; + if (nodeIsDecorated(useLegacyDecorators, parameter, node, parent)) + return true; + } + } + return false; +} +function isEmptyStringLiteral(node) { + if (node.textSourceNode) { + switch (node.textSourceNode.kind) { + case 10 /* StringLiteral */: + return isEmptyStringLiteral(node.textSourceNode); + case 14 /* NoSubstitutionTemplateLiteral */: + return node.text === ""; + } + return false; + } + return node.text === ""; } function isJSXTagName(node) { const { parent } = node; @@ -12762,6 +12931,9 @@ function isVariableDeclarationInitializedToBareOrAccessedRequire(node) { true ); } +function isBindingElementOfBareOrAccessedRequire(node) { + return isBindingElement(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node.parent.parent); +} function isVariableDeclarationInitializedWithRequireHelper(node, allowAccessedRequire) { return isVariableDeclaration(node) && !!node.initializer && isRequireCall( allowAccessedRequire ? getLeftmostAccessExpression(node.initializer) : node.initializer, @@ -13006,7 +13178,7 @@ function isSpecialPropertyDeclaration(expr) { } function setValueDeclaration(symbol, node) { const { valueDeclaration } = symbol; - if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { + if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !isInJSFile(node) && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { symbol.valueDeclaration = node; } } @@ -13021,6 +13193,7 @@ function tryGetModuleSpecifierFromDeclaration(node) { var _a2, _b; switch (node.kind) { case 257 /* VariableDeclaration */: + case 205 /* BindingElement */: return (_a2 = findAncestor(node.initializer, (node2) => isRequireCall( node2, /*requireStringLiteralLikeArgument*/ @@ -13030,6 +13203,14 @@ function tryGetModuleSpecifierFromDeclaration(node) { return tryCast(node.moduleSpecifier, isStringLiteralLike); case 268 /* ImportEqualsDeclaration */: return tryCast((_b = tryCast(node.moduleReference, isExternalModuleReference)) == null ? void 0 : _b.expression, isStringLiteralLike); + case 270 /* ImportClause */: + case 277 /* NamespaceExport */: + return tryCast(node.parent.moduleSpecifier, isStringLiteralLike); + case 271 /* NamespaceImport */: + case 278 /* ExportSpecifier */: + return tryCast(node.parent.parent.moduleSpecifier, isStringLiteralLike); + case 273 /* ImportSpecifier */: + return tryCast(node.parent.parent.parent.moduleSpecifier, isStringLiteralLike); default: Debug.assertNever(node); } @@ -13252,7 +13433,7 @@ function filterOwnedJSDocTags(hostNode, jsDoc) { return ownsJSDocTag(hostNode, jsDoc) ? [jsDoc] : void 0; } function ownsJSDocTag(hostNode, tag) { - return !isJSDocTypeTag(tag) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; + return !(isJSDocTypeTag(tag) || isJSDocSatisfiesTag(tag)) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; } function getNextJSDocCommentLocation(node) { const parent = node.parent; @@ -13553,7 +13734,8 @@ function isStringANonContextualKeyword(name) { const token = stringToToken(name); return token !== void 0 && isNonContextualKeyword(token); } -function isIdentifierANonContextualKeyword({ originalKeywordKind }) { +function isIdentifierANonContextualKeyword(node) { + const originalKeywordKind = identifierToKeywordKind(node); return !!originalKeywordKind && !isContextualKeyword(originalKeywordKind); } function getFunctionFlags(node) { @@ -13652,6 +13834,72 @@ function getSymbolNameForPrivateIdentifier(containingClassSymbol, description) { function isKnownSymbol(symbol) { return startsWith(symbol.escapedName, "__@"); } +function isProtoSetter(node) { + return isIdentifier(node) ? idText(node) === "__proto__" : isStringLiteral(node) && node.text === "__proto__"; +} +function isAnonymousFunctionDefinition(node, cb) { + node = skipOuterExpressions(node); + switch (node.kind) { + case 228 /* ClassExpression */: + case 215 /* FunctionExpression */: + if (node.name) { + return false; + } + break; + case 216 /* ArrowFunction */: + break; + default: + return false; + } + return typeof cb === "function" ? cb(node) : true; +} +function isNamedEvaluationSource(node) { + switch (node.kind) { + case 299 /* PropertyAssignment */: + return !isProtoSetter(node.name); + case 300 /* ShorthandPropertyAssignment */: + return !!node.objectAssignmentInitializer; + case 257 /* VariableDeclaration */: + return isIdentifier(node.name) && !!node.initializer; + case 166 /* Parameter */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 205 /* BindingElement */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 169 /* PropertyDeclaration */: + return !!node.initializer; + case 223 /* BinaryExpression */: + switch (node.operatorToken.kind) { + case 63 /* EqualsToken */: + case 76 /* AmpersandAmpersandEqualsToken */: + case 75 /* BarBarEqualsToken */: + case 77 /* QuestionQuestionEqualsToken */: + return isIdentifier(node.left); + } + break; + case 274 /* ExportAssignment */: + return true; + } + return false; +} +function isNamedEvaluation(node, cb) { + if (!isNamedEvaluationSource(node)) + return false; + switch (node.kind) { + case 299 /* PropertyAssignment */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 300 /* ShorthandPropertyAssignment */: + return isAnonymousFunctionDefinition(node.objectAssignmentInitializer, cb); + case 257 /* VariableDeclaration */: + case 166 /* Parameter */: + case 205 /* BindingElement */: + case 169 /* PropertyDeclaration */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 223 /* BinaryExpression */: + return isAnonymousFunctionDefinition(node.right, cb); + case 274 /* ExportAssignment */: + return isAnonymousFunctionDefinition(node.expression, cb); + } +} function isPushOrUnshiftIdentifier(node) { return node.escapedText === "push" || node.escapedText === "unshift"; } @@ -13729,7 +13977,7 @@ function getOperator(expression) { } function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return 0 /* Comma */; case 227 /* SpreadElement */: return 1 /* Spread */; @@ -14365,7 +14613,7 @@ function isThisInTypeQuery(node) { return node.parent.kind === 183 /* TypeQuery */; } function identifierIsThisKeyword(id) { - return id.originalKeywordKind === 108 /* ThisKeyword */; + return id.escapedText === "this"; } function getAllAccessorDeclarations(declarations, accessor) { let firstAccessor; @@ -14664,7 +14912,7 @@ function getEffectiveModifierFlagsNoCache(node) { } function getSyntacticModifierFlagsNoCache(node) { let flags = canHaveModifiers(node) ? modifiersToFlags(node.modifiers) : 0 /* None */; - if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.isInJSDocNamespace) { + if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { flags |= 1 /* Export */; } return flags; @@ -14715,14 +14963,23 @@ function modifierToFlag(token) { } return 0 /* None */; } +function isBinaryLogicalOperator(token) { + return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */; +} function isLogicalOperator(token) { - return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */ || token === 53 /* ExclamationToken */; + return isBinaryLogicalOperator(token) || token === 53 /* ExclamationToken */; } function isLogicalOrCoalescingAssignmentOperator(token) { return token === 75 /* BarBarEqualsToken */ || token === 76 /* AmpersandAmpersandEqualsToken */ || token === 77 /* QuestionQuestionEqualsToken */; } function isLogicalOrCoalescingAssignmentExpression(expr) { - return isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + return isBinaryExpression(expr) && isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); +} +function isLogicalOrCoalescingBinaryOperator(token) { + return isBinaryLogicalOperator(token) || token === 60 /* QuestionQuestionToken */; +} +function isLogicalOrCoalescingBinaryExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingBinaryOperator(expr.operatorToken.kind); } function isAssignmentOperator(token) { return token >= 63 /* FirstAssignment */ && token <= 78 /* LastAssignment */; @@ -14901,14 +15158,14 @@ function directoryProbablyExists(directoryName, host) { } var carriageReturnLineFeed = "\r\n"; var lineFeed = "\n"; -function getNewLineCharacter(options, getNewLine) { +function getNewLineCharacter(options) { switch (options.newLine) { case 0 /* CarriageReturnLineFeed */: return carriageReturnLineFeed; case 1 /* LineFeed */: + case void 0: return lineFeed; } - return getNewLine ? getNewLine() : sys ? sys.newLine : carriageReturnLineFeed; } function createRange(pos, end = pos) { Debug.assert(end >= pos || end === -1); @@ -14925,6 +15182,9 @@ function moveRangePastDecorators(node) { return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? moveRangePos(node, lastDecorator.end) : node; } function moveRangePastModifiers(node) { + if (isPropertyDeclaration(node) || isMethodDeclaration(node)) { + return moveRangePos(node, node.name.pos); + } const lastModifier = canHaveModifiers(node) ? lastOrUndefined(node.modifiers) : void 0; return lastModifier && !positionIsSynthesized(lastModifier.end) ? moveRangePos(node, lastModifier.end) : moveRangePastDecorators(node); } @@ -15029,7 +15289,7 @@ function getInitializedVariables(node) { return filter(node.declarations, isInitializedVariable); } function isInitializedVariable(node) { - return node.initializer !== void 0; + return isVariableDeclaration(node) && node.initializer !== void 0; } function isWatchSet(options) { return options.watch && hasProperty(options, "watch"); @@ -15190,7 +15450,7 @@ function getLastChild(node) { return lastChild; } function isTypeNodeKind(kind) { - return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; + return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 139 /* IntrinsicKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; } function isAccessExpression(node) { return node.kind === 208 /* PropertyAccessExpression */ || node.kind === 209 /* ElementAccessExpression */; @@ -15233,7 +15493,7 @@ function getLeftmostExpression(node, stopAtCallExpressions) { case 209 /* ElementAccessExpression */: case 208 /* PropertyAccessExpression */: case 232 /* NonNullExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: node = node.expression; continue; @@ -15301,7 +15561,6 @@ function Identifier2(kind, pos, end) { this.parent = void 0; this.original = void 0; this.emitNode = void 0; - this.flowNode = void 0; } function SourceMapSource(fileName, text, skipTrivia2) { this.fileName = fileName; @@ -15599,6 +15858,9 @@ function hasJsonModuleEmitEnabled(options) { return false; } } +function getIsolatedModules(options) { + return !!(options.isolatedModules || options.verbatimModuleSyntax); +} function unreachableCodeIsError(options) { return options.allowUnreachableCode === false; } @@ -16451,7 +16713,7 @@ function getContainingNodeArray(node) { return node.parent.templateSpans; case 167 /* Decorator */: { const { parent: parent3 } = node; - return canHaveDecorators(parent3) ? parent3.modifiers : canHaveIllegalDecorators(parent3) ? parent3.illegalDecorators : void 0; + return canHaveDecorators(parent3) ? parent3.modifiers : void 0; } case 294 /* HeritageClause */: return node.parent.heritageClauses; @@ -16469,7 +16731,7 @@ function getContainingNodeArray(node) { return parent.types; case 186 /* TupleType */: case 206 /* ArrayLiteralExpression */: - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: case 272 /* NamedImports */: case 276 /* NamedExports */: return parent.elements; @@ -16643,6 +16905,16 @@ function isNonNullAccess(node) { const kind = node.kind; return (kind === 208 /* PropertyAccessExpression */ || kind === 209 /* ElementAccessExpression */) && isNonNullExpression(node.expression); } +function isJSDocSatisfiesExpression(node) { + return isInJSFile(node) && isParenthesizedExpression(node) && hasJSDocNodes(node) && !!getJSDocSatisfiesTag(node); +} +function getJSDocSatisfiesExpressionType(node) { + return Debug.checkDefined(tryGetJSDocSatisfiesTypeNode(node)); +} +function tryGetJSDocSatisfiesTypeNode(node) { + const tag = getJSDocSatisfiesTag(node); + return tag && tag.typeExpression && tag.typeExpression.type; +} // src/compiler/factory/baseNodeFactory.ts function createBaseNodeFactory() { @@ -17108,7 +17380,7 @@ function createNodeConverters(factory2) { if (!node.body) return Debug.fail(`Cannot convert a FunctionDeclaration without a body`); const updated = factory2.createFunctionExpression( - node.modifiers, + getModifiers(node), node.asteriskToken, node.name, node.typeParameters, @@ -17247,7 +17519,6 @@ function createNodeFactory(flags, baseFactory2) { createRegularExpressionLiteral, createLiteralLikeNode, createIdentifier, - updateIdentifier, createTempVariable, createLoopVariable, createUniqueName, @@ -17657,6 +17928,12 @@ function createNodeFactory(flags, baseFactory2) { get updateJSDocThrowsTag() { return getJSDocTypeLikeTagUpdateFunction(352 /* JSDocThrowsTag */); }, + get createJSDocSatisfiesTag() { + return getJSDocTypeLikeTagCreateFunction(353 /* JSDocSatisfiesTag */); + }, + get updateJSDocSatisfiesTag() { + return getJSDocTypeLikeTagUpdateFunction(353 /* JSDocSatisfiesTag */); + }, createJSDocEnumTag, updateJSDocEnumTag, createJSDocUnknownTag, @@ -17838,6 +18115,7 @@ function createNodeFactory(flags, baseFactory2) { createArraySliceCall, createArrayConcatCall, createObjectDefinePropertyCall, + createObjectGetOwnPropertyDescriptorCall, createReflectGetCall, createReflectSetCall, createPropertyDescriptor, @@ -17990,55 +18268,43 @@ function createNodeFactory(flags, baseFactory2) { ); } } - function createBaseIdentifier(escapedText, originalKeywordKind) { + function createBaseIdentifier(escapedText) { const node = baseFactory2.createBaseIdentifierNode(79 /* Identifier */); - node.originalKeywordKind = originalKeywordKind; node.escapedText = escapedText; - node.autoGenerate = void 0; - node.typeArguments = void 0; - node.hasExtendedUnicodeEscape = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.symbol = void 0; return node; } function createBaseGeneratedIdentifier(text, autoGenerateFlags, prefix, suffix) { - const node = createBaseIdentifier( - escapeLeadingUnderscores(text), - /*originalKeywordKind*/ - void 0 - ); - node.autoGenerate = { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } - function createIdentifier(text, typeArguments, originalKeywordKind, hasExtendedUnicodeEscape) { + function createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape) { if (originalKeywordKind === void 0 && text) { originalKeywordKind = stringToToken(text); } if (originalKeywordKind === 79 /* Identifier */) { originalKeywordKind = void 0; } - const node = createBaseIdentifier(escapeLeadingUnderscores(text), originalKeywordKind); - node.typeArguments = asNodeArray(typeArguments); - node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; - if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + if (hasExtendedUnicodeEscape) + node.flags |= 128 /* IdentifierHasExtendedUnicodeEscape */; + if (node.escapedText === "await") { node.transformFlags |= 67108864 /* ContainsPossibleTopLevelAwait */; } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { node.transformFlags |= 1024 /* ContainsES2015 */; } return node; } - function updateIdentifier(node, typeArguments) { - return node.typeArguments !== typeArguments ? update(createIdentifier(idText(node), typeArguments), node) : node; - } function createTempVariable(recordTempVariable, reservedInNestedScopes, prefix, suffix) { let flags2 = 1 /* Auto */; if (reservedInNestedScopes) @@ -18086,7 +18352,6 @@ function createNodeFactory(flags, baseFactory2) { function createBasePrivateIdentifier(escapedText) { const node = baseFactory2.createBasePrivateIdentifierNode(80 /* PrivateIdentifier */); node.escapedText = escapedText; - node.autoGenerate = void 0; node.transformFlags |= 16777216 /* ContainsClassFields */; return node; } @@ -18097,12 +18362,12 @@ function createNodeFactory(flags, baseFactory2) { } function createBaseGeneratedPrivateIdentifier(text, autoGenerateFlags, prefix, suffix) { const node = createBasePrivateIdentifier(escapeLeadingUnderscores(text)); - node.autoGenerate = { + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } @@ -18264,7 +18529,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.expression = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateTypeParameterDeclaration(node, modifiers, name, constraint, defaultType) { @@ -18285,7 +18549,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.dotDotDotToken) | propagateNameFlags(node.name) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.initializer) | (((_a2 = node.questionToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */) | (((_b = node.dotDotDotToken) != null ? _b : node.initializer) ? 1024 /* ContainsES2015 */ : 0 /* None */) | (modifiersToFlags(node.modifiers) & 16476 /* ParameterPropertyModifier */ ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */); } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { @@ -18313,7 +18576,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.initializer = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertySignature(node, modifiers, name, questionToken, type) { @@ -18336,7 +18598,6 @@ function createNodeFactory(flags, baseFactory2) { const isAmbient = node.flags & 16777216 /* Ambient */ || modifiersToFlags(node.modifiers) & 2 /* Ambient */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (isAmbient || node.questionToken || node.exclamationToken || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isComputedPropertyName(node.name) || modifiersToFlags(node.modifiers) & 32 /* Static */ && node.initializer ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */) | 16777216 /* ContainsClassFields */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyDeclaration(node, modifiers, name, questionOrExclamationToken, type, initializer) { @@ -18352,7 +18613,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18382,7 +18642,6 @@ function createNodeFactory(flags, baseFactory2) { } node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -18403,10 +18662,8 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(172 /* ClassStaticBlockDeclaration */); node.body = body; node.transformFlags = propagateChildFlags(body) | 16777216 /* ContainsClassFields */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -18418,7 +18675,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateClassStaticBlockDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -18429,12 +18685,10 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = createNodeArray(parameters); node.body = body; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | 1024 /* ContainsES2015 */; - node.illegalDecorators = void 0; node.typeParameters = void 0; node.type = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -18446,7 +18700,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateConstructorDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.typeParameters = original.typeParameters; updated.type = original.type; } @@ -18467,7 +18720,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeArguments = void 0; node.typeParameters = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -18499,7 +18751,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeParameters = void 0; node.type = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -18524,7 +18775,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18540,7 +18790,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18555,9 +18804,7 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18608,7 +18855,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18634,7 +18880,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -18703,7 +18948,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) { @@ -18905,7 +19149,6 @@ function createNodeFactory(flags, baseFactory2) { node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.properties); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateObjectLiteralExpression(node, properties) { @@ -18918,7 +19161,6 @@ function createNodeFactory(flags, baseFactory2) { node.name = name; node.transformFlags = propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | (isIdentifier(node.name) ? propagateIdentifierNameFlags(node.name) : propagateChildFlags(node.name) | 536870912 /* ContainsPrivateIdentifierInExpression */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -18969,7 +19211,6 @@ function createNodeFactory(flags, baseFactory2) { node.argumentExpression = argumentExpression; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | propagateChildFlags(node.argumentExpression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19120,7 +19361,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags = propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParenthesizedExpression(node, expression) { @@ -19141,7 +19381,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -19164,7 +19403,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.equalsGreaterThanToken) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isAsync ? 256 /* ContainsES2017 */ | 16384 /* ContainsLexicalThis */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -19262,7 +19500,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 536870912 /* ContainsPrivateIdentifierInExpression */; } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function propagateAssignmentPatternFlags(node) { @@ -19404,7 +19641,6 @@ function createNodeFactory(flags, baseFactory2) { node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.heritageClauses) | propagateChildrenFlags(node.members) | (node.typeParameters ? 1 /* ContainsTypeScript */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) { @@ -19520,7 +19756,6 @@ function createNodeFactory(flags, baseFactory2) { node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; @@ -19536,9 +19771,7 @@ function createNodeFactory(flags, baseFactory2) { if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19548,7 +19781,6 @@ function createNodeFactory(flags, baseFactory2) { function createEmptyStatement() { const node = createBaseNode(239 /* EmptyStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function createExpressionStatement(expression) { @@ -19556,7 +19788,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression); node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19570,7 +19801,6 @@ function createNodeFactory(flags, baseFactory2) { node.elseStatement = asEmbeddedStatement(elseStatement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thenStatement) | propagateChildFlags(node.elseStatement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19583,7 +19813,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.statement) | propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19596,7 +19825,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19611,7 +19839,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.condition) | propagateChildFlags(node.incrementor) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -19627,7 +19854,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -19646,7 +19872,6 @@ function createNodeFactory(flags, baseFactory2) { if (awaitModifier) node.transformFlags |= 128 /* ContainsES2018 */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -19660,7 +19885,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19672,7 +19896,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19684,7 +19907,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19697,7 +19919,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19710,7 +19931,6 @@ function createNodeFactory(flags, baseFactory2) { node.caseBlock = caseBlock; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.caseBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.possiblyExhaustive = false; return node; @@ -19724,7 +19944,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.label) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19736,7 +19955,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19750,7 +19968,6 @@ function createNodeFactory(flags, baseFactory2) { node.finallyBlock = finallyBlock; node.transformFlags |= propagateChildFlags(node.tryBlock) | propagateChildFlags(node.catchClause) | propagateChildFlags(node.finallyBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19760,7 +19977,6 @@ function createNodeFactory(flags, baseFactory2) { function createDebuggerStatement() { const node = createBaseNode(256 /* DebuggerStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -19773,7 +19989,6 @@ function createNodeFactory(flags, baseFactory2) { node.initializer = asInitializer(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (((_a2 = node.exclamationToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateVariableDeclaration(node, name, exclamationToken, type, initializer) { @@ -19809,10 +20024,8 @@ function createNodeFactory(flags, baseFactory2) { const isAsyncGenerator = isAsync && isGenerator; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; } - node.illegalDecorators = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -19824,7 +20037,9 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateFunctionDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return finishUpdateBaseSignatureDeclaration(updated, original); } @@ -19844,7 +20059,6 @@ function createNodeFactory(flags, baseFactory2) { } } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { @@ -19858,19 +20072,11 @@ function createNodeFactory(flags, baseFactory2) { node.heritageClauses = asNodeArray(heritageClauses); node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? finishUpdateInterfaceDeclaration(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; - } - function finishUpdateInterfaceDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } function createTypeAliasDeclaration(modifiers, name, typeParameters, type) { const node = createBaseDeclaration(262 /* TypeAliasDeclaration */); @@ -19879,21 +20085,13 @@ function createNodeFactory(flags, baseFactory2) { node.typeParameters = asNodeArray(typeParameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? finishUpdateTypeAliasDeclaration(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; - } - function finishUpdateTypeAliasDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? update(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; } function createEnumDeclaration(modifiers, name, members) { const node = createBaseDeclaration(263 /* EnumDeclaration */); @@ -19902,19 +20100,11 @@ function createNodeFactory(flags, baseFactory2) { node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildrenFlags(node.members) | 1 /* ContainsTypeScript */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateEnumDeclaration(node, modifiers, name, members) { - return node.modifiers !== modifiers || node.name !== name || node.members !== members ? finishUpdateEnumDeclaration(createEnumDeclaration(modifiers, name, members), node) : node; - } - function finishUpdateEnumDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.members !== members ? update(createEnumDeclaration(modifiers, name, members), node) : node; } function createModuleDeclaration(modifiers, name, body, flags2 = 0 /* None */) { const node = createBaseDeclaration(264 /* ModuleDeclaration */); @@ -19928,28 +20118,19 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildFlags(node.body) | 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateModuleDeclaration(node, modifiers, name, body) { - return node.modifiers !== modifiers || node.name !== name || node.body !== body ? finishUpdateModuleDeclaration(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; - } - function finishUpdateModuleDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.body !== body ? update(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; } function createModuleBlock(statements) { const node = createBaseNode(265 /* ModuleBlock */); node.statements = createNodeArray(statements); node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateModuleBlock(node, statements) { @@ -19970,10 +20151,8 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(267 /* NamespaceExportDeclaration */); node.name = asName(name); node.transformFlags |= propagateIdentifierNameFlags(node.name) | 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamespaceExportDeclaration(node, name) { @@ -19981,7 +20160,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateNamespaceExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -19997,19 +20175,11 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateImportEqualsDeclaration(node, modifiers, isTypeOnly, name, moduleReference) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? finishUpdateImportEqualsDeclaration(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; - } - function finishUpdateImportEqualsDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? update(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; } function createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause) { const node = createBaseNode(269 /* ImportDeclaration */); @@ -20019,19 +20189,11 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildFlags(node.importClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateImportDeclaration(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; - } - function finishUpdateImportDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? update(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; } function createImportClause(isTypeOnly, name, namedBindings) { const node = createBaseDeclaration(270 /* ImportClause */); @@ -20131,19 +20293,11 @@ function createNodeFactory(flags, baseFactory2) { ) : parenthesizerRules().parenthesizeExpressionOfExportDefault(expression); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportAssignment(node, modifiers, expression) { - return node.modifiers !== modifiers || node.expression !== expression ? finishUpdateExportAssignment(createExportAssignment(modifiers, node.isExportEquals, expression), node) : node; - } - function finishUpdateExportAssignment(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.expression !== expression ? update(createExportAssignment(modifiers, node.isExportEquals, expression), node) : node; } function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { const node = createBaseDeclaration(275 /* ExportDeclaration */); @@ -20154,9 +20308,7 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.exportClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportDeclaration(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { @@ -20164,7 +20316,9 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return update(updated, original); } @@ -20186,7 +20340,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.propertyName) | propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportSpecifier(node, isTypeOnly, propertyName, name) { @@ -20195,7 +20348,6 @@ function createNodeFactory(flags, baseFactory2) { function createMissingDeclaration() { const node = createBaseDeclaration(279 /* MissingDeclaration */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function createExternalModuleReference(expression) { @@ -20236,7 +20388,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = propagateChildrenFlags(node.parameters) | (node.type ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -20268,7 +20419,6 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = createNodeArray(parameters); node.type = type; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; @@ -20596,7 +20746,6 @@ function createNodeFactory(flags, baseFactory2) { node.statements = createNodeArray(statements); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateCaseClause(node, expression, statements) { @@ -20648,12 +20797,10 @@ function createNodeFactory(flags, baseFactory2) { node.name = asName(name); node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer); - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyAssignment(node, name, initializer) { @@ -20661,7 +20808,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdatePropertyAssignment(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; @@ -20674,12 +20820,10 @@ function createNodeFactory(flags, baseFactory2) { node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer); node.transformFlags |= propagateIdentifierNameFlags(node.name) | propagateChildFlags(node.objectAssignmentInitializer) | 1024 /* ContainsES2015 */; node.equalsToken = void 0; - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer) { @@ -20687,11 +20831,10 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateShorthandPropertyAssignment(updated, original) { if (updated !== original) { - updated.equalsToken = original.equalsToken; - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; + updated.equalsToken = original.equalsToken; } return update(updated, original); } @@ -20700,7 +20843,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateSpreadAssignment(node, expression) { @@ -20712,7 +20854,6 @@ function createNodeFactory(flags, baseFactory2) { node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateEnumMember(node, name, initializer) { @@ -20894,18 +21035,18 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createSyntaxList(children) { - const node = createBaseNode(353 /* SyntaxList */); + const node = createBaseNode(354 /* SyntaxList */); node._children = children; return node; } function createNotEmittedStatement(original) { - const node = createBaseNode(354 /* NotEmittedStatement */); + const node = createBaseNode(355 /* NotEmittedStatement */); node.original = original; setTextRange(node, original); return node; } function createPartiallyEmittedExpression(expression, original) { - const node = createBaseNode(355 /* PartiallyEmittedExpression */); + const node = createBaseNode(356 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; @@ -20927,7 +21068,7 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createCommaListExpression(elements) { - const node = createBaseNode(356 /* CommaListExpression */); + const node = createBaseNode(357 /* CommaListExpression */); node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; @@ -20936,19 +21077,19 @@ function createNodeFactory(flags, baseFactory2) { return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createEndOfDeclarationMarker(original) { - const node = createBaseNode(358 /* EndOfDeclarationMarker */); + const node = createBaseNode(359 /* EndOfDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createMergeDeclarationMarker(original) { - const node = createBaseNode(357 /* MergeDeclarationMarker */); + const node = createBaseNode(358 /* MergeDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(359 /* SyntheticReferenceExpression */); + const node = createBaseNode(360 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -20958,36 +21099,32 @@ function createNodeFactory(flags, baseFactory2) { return node.expression !== expression || node.thisArg !== thisArg ? update(createSyntheticReferenceExpression(expression, thisArg), node) : node; } function cloneGeneratedIdentifier(node) { - const clone2 = createBaseIdentifier( - node.escapedText, - /*originalKeywordKind*/ - void 0 - ); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function cloneIdentifier(node) { - const clone2 = createBaseIdentifier(node.escapedText, node.originalKeywordKind); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.typeArguments = node.typeArguments; - clone2.hasExtendedUnicodeEscape = node.hasExtendedUnicodeEscape; clone2.jsDoc = node.jsDoc; - clone2.jsDocCache = node.jsDocCache; clone2.flowNode = node.flowNode; clone2.symbol = node.symbol; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + const typeArguments = getIdentifierTypeArguments(node); + if (typeArguments) + setIdentifierTypeArguments(clone2, typeArguments); return clone2; } function cloneGeneratedPrivateIdentifier(node) { const clone2 = createBasePrivateIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function clonePrivateIdentifier(node) { @@ -21156,6 +21293,9 @@ function createNodeFactory(flags, baseFactory2) { function createObjectDefinePropertyCall(target, propertyName, attributes) { return createGlobalMethodCall("Object", "defineProperty", [target, asExpression(propertyName), attributes]); } + function createObjectGetOwnPropertyDescriptorCall(target, propertyName) { + return createGlobalMethodCall("Object", "getOwnPropertyDescriptor", [target, asExpression(propertyName)]); + } function createReflectGetCall(target, propertyKey, receiver) { return createGlobalMethodCall("Reflect", "get", receiver ? [target, propertyKey, receiver] : [target, propertyKey]); } @@ -21192,7 +21332,7 @@ function createNodeFactory(flags, baseFactory2) { return updateSatisfiesExpression(outerExpression, expression, outerExpression.type); case 232 /* NonNullExpression */: return updateNonNullExpression(outerExpression, expression); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return updatePartiallyEmittedExpression(outerExpression, expression); } } @@ -21728,7 +21868,7 @@ function getTransformFlagsSubtreeExclusions(kind) { case 213 /* TypeAssertionExpression */: case 235 /* SatisfiesExpression */: case 231 /* AsExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 214 /* ParenthesizedExpression */: case 106 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -21986,6 +22126,7 @@ function setOriginalNode(node, original) { function mergeEmitNode(sourceEmitNode, destEmitNode) { const { flags, + internalFlags, leadingComments, trailingComments, commentRange, @@ -22003,7 +22144,9 @@ function mergeEmitNode(sourceEmitNode, destEmitNode) { if (trailingComments) destEmitNode.trailingComments = addRange(trailingComments.slice(), destEmitNode.trailingComments); if (flags) - destEmitNode.flags = flags & ~536870912 /* Immutable */; + destEmitNode.flags = flags; + if (internalFlags) + destEmitNode.internalFlags = internalFlags & ~8 /* Immutable */; if (commentRange) destEmitNode.commentRange = commentRange; if (sourceMapRange) @@ -22045,7 +22188,7 @@ function getOrCreateEmitNode(node) { } node.emitNode = {}; } else { - Debug.assert(!(node.emitNode.flags & 536870912 /* Immutable */), "Invalid attempt to mutate an immutable node."); + Debug.assert(!(node.emitNode.internalFlags & 8 /* Immutable */), "Invalid attempt to mutate an immutable node."); } return node.emitNode; } @@ -22074,6 +22217,15 @@ function addEmitFlags(node, emitFlags) { emitNode.flags = emitNode.flags | emitFlags; return node; } +function setInternalEmitFlags(node, emitFlags) { + getOrCreateEmitNode(node).internalFlags = emitFlags; + return node; +} +function addInternalEmitFlags(node, emitFlags) { + const emitNode = getOrCreateEmitNode(node); + emitNode.internalFlags = emitNode.internalFlags | emitFlags; + return node; +} function getSourceMapRange(node) { var _a2, _b; return (_b = (_a2 = node.emitNode) == null ? void 0 : _a2.sourceMapRange) != null ? _b : node; @@ -22195,18 +22347,41 @@ function getTypeNode(node) { var _a2; return (_a2 = node.emitNode) == null ? void 0 : _a2.typeNode; } +function setIdentifierTypeArguments(node, typeArguments) { + getOrCreateEmitNode(node).identifierTypeArguments = typeArguments; + return node; +} +function getIdentifierTypeArguments(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.identifierTypeArguments; +} +function setIdentifierAutoGenerate(node, autoGenerate) { + getOrCreateEmitNode(node).autoGenerate = autoGenerate; + return node; +} +function setIdentifierGeneratedImportReference(node, value) { + getOrCreateEmitNode(node).generatedImportReference = value; + return node; +} +function getIdentifierGeneratedImportReference(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.generatedImportReference; +} // src/compiler/factory/emitHelpers.ts function createEmitHelperFactory(context) { const factory2 = context.factory; - const immutableTrue = memoize(() => setEmitFlags(factory2.createTrue(), 536870912 /* Immutable */)); - const immutableFalse = memoize(() => setEmitFlags(factory2.createFalse(), 536870912 /* Immutable */)); + const immutableTrue = memoize(() => setInternalEmitFlags(factory2.createTrue(), 8 /* Immutable */)); + const immutableFalse = memoize(() => setInternalEmitFlags(factory2.createFalse(), 8 /* Immutable */)); return { getUnscopedHelperName, // TypeScript Helpers createDecorateHelper, createMetadataHelper, createParamHelper, + // ES Decorators Helpers + createESDecorateHelper, + createRunInitializersHelper, // ES2018 Helpers createAssignHelper, createAwaitHelper, @@ -22221,6 +22396,8 @@ function createEmitHelperFactory(context) { createExtendsHelper, createTemplateObjectHelper, createSpreadArrayHelper, + createPropKeyHelper, + createSetFunctionNameHelper, // ES2015 Destructuring Helpers createValuesHelper, createReadHelper, @@ -22289,6 +22466,50 @@ function createEmitHelperFactory(context) { location ); } + function createESDecorateClassContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral("class")), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name) + ]); + } + function createESDecorateClassElementContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral(contextIn.kind)), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name.computed ? contextIn.name.name : factory2.createStringLiteralFromNode(contextIn.name.name)), + factory2.createPropertyAssignment(factory2.createIdentifier("static"), contextIn.static ? factory2.createTrue() : factory2.createFalse()), + factory2.createPropertyAssignment(factory2.createIdentifier("private"), contextIn.private ? factory2.createTrue() : factory2.createFalse()) + // Disabled, pending resolution of https://github.com/tc39/proposal-decorators/issues/494 + // factory.createPropertyAssignment(factory.createIdentifier("access"), createESDecorateClassElementAccessObject(contextIn.name, contextIn.access)) + ]); + } + function createESDecorateContextObject(contextIn) { + return contextIn.kind === "class" ? createESDecorateClassContextObject(contextIn) : createESDecorateClassElementContextObject(contextIn); + } + function createESDecorateHelper(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + context.requestEmitHelper(esDecorateHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__esDecorate"), + /*typeArguments*/ + void 0, + [ + ctor != null ? ctor : factory2.createNull(), + descriptorIn != null ? descriptorIn : factory2.createNull(), + decorators, + createESDecorateContextObject(contextIn), + initializers, + extraInitializers + ] + ); + } + function createRunInitializersHelper(thisArg, initializers, value) { + context.requestEmitHelper(runInitializersHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__runInitializers"), + /*typeArguments*/ + void 0, + value ? [thisArg, initializers, value] : [thisArg, initializers] + ); + } function createAssignHelper(attributesSegments) { if (getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { return factory2.createCallExpression( @@ -22445,6 +22666,24 @@ function createEmitHelperFactory(context) { [to, from, packFrom ? immutableTrue() : immutableFalse()] ); } + function createPropKeyHelper(expr) { + context.requestEmitHelper(propKeyHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__propKey"), + /*typeArguments*/ + void 0, + [expr] + ); + } + function createSetFunctionNameHelper(f, name, prefix) { + context.requestEmitHelper(setFunctionNameHelper); + return context.factory.createCallExpression( + getUnscopedHelperName("__setFunctionName"), + /*typeArguments*/ + void 0, + prefix ? [f, name, context.factory.createStringLiteral(prefix)] : [f, name] + ); + } function createValuesHelper(expression) { context.requestEmitHelper(valuesHelper); return factory2.createCallExpression( @@ -22608,6 +22847,54 @@ var paramHelper = { return function (target, key) { decorator(target, key, paramIndex); } };` }; +var esDecorateHelper = { + name: "typescript:esDecorate", + importName: "__esDecorate", + scoped: false, + priority: 2, + text: ` + var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + };` +}; +var runInitializersHelper = { + name: "typescript:runInitializers", + importName: "__runInitializers", + scoped: false, + priority: 2, + text: ` + var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + };` +}; var assignHelper = { name: "typescript:assign", importName: "__assign", @@ -22780,6 +23067,25 @@ var spreadArrayHelper = { return to.concat(ar || Array.prototype.slice.call(from)); };` }; +var propKeyHelper = { + name: "typescript:propKey", + importName: "__propKey", + scoped: false, + text: ` + var __propKey = (this && this.__propKey) || function (x) { + return typeof x === "symbol" ? x : "".concat(x); + };` +}; +var setFunctionNameHelper = { + name: "typescript:setFunctionName", + importName: "__setFunctionName", + scoped: false, + text: ` + var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + };` +}; var valuesHelper = { name: "typescript:values", importName: "__values", @@ -22935,6 +23241,8 @@ function getAllUnscopedEmitHelpers() { decorateHelper, metadataHelper, paramHelper, + esDecorateHelper, + runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, @@ -22947,6 +23255,8 @@ function getAllUnscopedEmitHelpers() { spreadArrayHelper, valuesHelper, readHelper, + propKeyHelper, + setFunctionNameHelper, generatorHelper, importStarHelper, importDefaultHelper, @@ -23035,6 +23345,9 @@ function isPrivateIdentifier(node) { function isExportModifier(node) { return node.kind === 93 /* ExportKeyword */; } +function isDefaultModifier(node) { + return node.kind === 88 /* DefaultKeyword */; +} function isAsyncModifier(node) { return node.kind === 132 /* AsyncKeyword */; } @@ -23255,10 +23568,10 @@ function isMetaProperty(node) { return node.kind === 233 /* MetaProperty */; } function isPartiallyEmittedExpression(node) { - return node.kind === 355 /* PartiallyEmittedExpression */; + return node.kind === 356 /* PartiallyEmittedExpression */; } function isCommaListExpression(node) { - return node.kind === 356 /* CommaListExpression */; + return node.kind === 357 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 236 /* TemplateSpan */; @@ -23381,10 +23694,10 @@ function isExportSpecifier(node) { return node.kind === 278 /* ExportSpecifier */; } function isNotEmittedStatement(node) { - return node.kind === 354 /* NotEmittedStatement */; + return node.kind === 355 /* NotEmittedStatement */; } function isSyntheticReference(node) { - return node.kind === 359 /* SyntheticReferenceExpression */; + return node.kind === 360 /* SyntheticReferenceExpression */; } function isExternalModuleReference(node) { return node.kind === 280 /* ExternalModuleReference */; @@ -23551,6 +23864,9 @@ function isJSDocPropertyTag(node) { function isJSDocImplementsTag(node) { return node.kind === 332 /* JSDocImplementsTag */; } +function isJSDocSatisfiesTag(node) { + return node.kind === 353 /* JSDocSatisfiesTag */; +} // src/compiler/factory/utilities.ts function createEmptyExports(factory2) { @@ -23572,7 +23888,7 @@ function createMemberAccessForPropertyName(factory2, target, memberName, locatio isMemberName(memberName) ? factory2.createPropertyAccessExpression(target, memberName) : factory2.createElementAccessExpression(target, memberName), memberName ); - getOrCreateEmitNode(expression).flags |= 128 /* NoNestedSourceMaps */; + addEmitFlags(expression, 128 /* NoNestedSourceMaps */); return expression; } } @@ -23905,8 +24221,11 @@ function startsWithUseStrict(statements) { const firstStatement = firstOrUndefined(statements); return firstStatement !== void 0 && isPrologueDirective(firstStatement) && isUseStrictPrologue(firstStatement); } +function isCommaExpression(node) { + return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */; +} function isCommaSequence(node) { - return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */ || node.kind === 356 /* CommaListExpression */; + return isCommaExpression(node) || isCommaListExpression(node); } function isJSDocTypeAssertion(node) { return isParenthesizedExpression(node) && isInJSFile(node) && !!getJSDocTypeTag(node); @@ -23925,11 +24244,12 @@ function isOuterExpression(node, kinds = 15 /* All */) { return (kinds & 1 /* Parentheses */) !== 0; case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: + case 230 /* ExpressionWithTypeArguments */: case 235 /* SatisfiesExpression */: return (kinds & 2 /* TypeAssertions */) !== 0; case 232 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -23940,6 +24260,14 @@ function skipOuterExpressions(node, kinds = 15 /* All */) { } return node; } +function walkUpOuterExpressions(node, kinds = 15 /* All */) { + let parent = node.parent; + while (isOuterExpression(parent, kinds)) { + parent = parent.parent; + Debug.assert(parent); + } + return parent; +} function startOnNewLine(node) { return setStartsOnNewLine( node, @@ -24018,7 +24346,7 @@ function createExternalHelpersImportDeclarationIfNeeded(nodeFactory, helperFacto /*assertClause*/ void 0 ); - addEmitFlags(externalHelpersImportDeclaration, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); return externalHelpersImportDeclaration; } } @@ -24226,12 +24554,21 @@ function canHaveIllegalModifiers(node) { const kind = node.kind; return kind === 172 /* ClassStaticBlockDeclaration */ || kind === 299 /* PropertyAssignment */ || kind === 300 /* ShorthandPropertyAssignment */ || kind === 181 /* FunctionType */ || kind === 279 /* MissingDeclaration */ || kind === 267 /* NamespaceExportDeclaration */; } -var isTypeNodeOrTypeParameterDeclaration = or(isTypeNode, isTypeParameterDeclaration); -var isQuestionOrExclamationToken = or(isQuestionToken, isExclamationToken); -var isIdentifierOrThisTypeNode = or(isIdentifier, isThisTypeNode); -var isReadonlyKeywordOrPlusOrMinusToken = or(isReadonlyKeyword, isPlusToken, isMinusToken); -var isQuestionOrPlusOrMinusToken = or(isQuestionToken, isPlusToken, isMinusToken); -var isModuleName = or(isIdentifier, isStringLiteral); +function isQuestionOrExclamationToken(node) { + return isQuestionToken(node) || isExclamationToken(node); +} +function isIdentifierOrThisTypeNode(node) { + return isIdentifier(node) || isThisTypeNode(node); +} +function isReadonlyKeywordOrPlusOrMinusToken(node) { + return isReadonlyKeyword(node) || isPlusToken(node) || isMinusToken(node); +} +function isQuestionOrPlusOrMinusToken(node) { + return isQuestionToken(node) || isPlusToken(node) || isMinusToken(node); +} +function isModuleName(node) { + return isIdentifier(node) || isStringLiteral(node); +} function isExponentiationOperator(kind) { return kind === 42 /* AsteriskAsteriskToken */; } @@ -24413,6 +24750,13 @@ function createBinaryExpressionTrampoline(onEnter, onLeft, onOperator, onRight, return resultHolder.value; } } +function isExportOrDefaultKeywordKind(kind) { + return kind === 93 /* ExportKeyword */ || kind === 88 /* DefaultKeyword */; +} +function isExportOrDefaultModifier(node) { + const kind = node.kind; + return isExportOrDefaultKeywordKind(kind); +} function elideNodes(factory2, nodes) { if (nodes === void 0) return void 0; @@ -24421,13 +24765,16 @@ function elideNodes(factory2, nodes) { return setTextRange(factory2.createNodeArray([], nodes.hasTrailingComma), nodes); } function getNodeForGeneratedName(name) { - if (name.autoGenerate.flags & 4 /* Node */) { - const autoGenerateId = name.autoGenerate.id; + var _a2; + const autoGenerate = name.emitNode.autoGenerate; + if (autoGenerate.flags & 4 /* Node */) { + const autoGenerateId = autoGenerate.id; let node = name; let original = node.original; while (original) { node = original; - if (isMemberName(node) && (node.autoGenerate === void 0 || !!(node.autoGenerate.flags & 4 /* Node */) && node.autoGenerate.id !== autoGenerateId)) { + const autoGenerate2 = (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + if (isMemberName(node) && (autoGenerate2 === void 0 || !!(autoGenerate2.flags & 4 /* Node */) && autoGenerate2.id !== autoGenerateId)) { break; } original = node.original; @@ -24526,6 +24873,50 @@ function createAccessorPropertySetRedirector(factory2, node, modifiers, name) { ]) ); } +function findComputedPropertyNameCacheAssignment(name) { + let node = name.expression; + while (true) { + node = skipOuterExpressions(node); + if (isCommaListExpression(node)) { + node = last(node.elements); + continue; + } + if (isCommaExpression(node)) { + node = node.right; + continue; + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ) && isGeneratedIdentifier(node.left)) { + return node; + } + break; + } +} +function isSyntheticParenthesizedExpression(node) { + return isParenthesizedExpression(node) && nodeIsSynthesized(node) && !node.emitNode; +} +function flattenCommaListWorker(node, expressions) { + if (isSyntheticParenthesizedExpression(node)) { + flattenCommaListWorker(node.expression, expressions); + } else if (isCommaExpression(node)) { + flattenCommaListWorker(node.left, expressions); + flattenCommaListWorker(node.right, expressions); + } else if (isCommaListExpression(node)) { + for (const child of node.elements) { + flattenCommaListWorker(child, expressions); + } + } else { + expressions.push(node); + } +} +function flattenCommaList(node) { + const expressions = []; + flattenCommaListWorker(node, expressions); + return expressions; +} // src/compiler/factory/utilitiesPublic.ts function setTextRange(range, location) { @@ -24599,7 +24990,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.constraint) || visitNode2(cbNode, node.default) || visitNode2(cbNode, node.expression); }, [300 /* ShorthandPropertyAssignment */]: function forEachChildInShorthandPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); }, [301 /* SpreadAssignment */]: function forEachChildInSpreadAssignment(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.expression); @@ -24614,7 +25005,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); }, [299 /* PropertyAssignment */]: function forEachChildInPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); }, [257 /* VariableDeclaration */]: function forEachChildInVariableDeclaration(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); @@ -24623,7 +25014,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.dotDotDotToken) || visitNode2(cbNode, node.propertyName) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [178 /* IndexSignature */]: function forEachChildInIndexSignature(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [182 /* ConstructorType */]: function forEachChildInConstructorType(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -24640,7 +25031,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [173 /* Constructor */]: function forEachChildInConstructor(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [174 /* GetAccessor */]: function forEachChildInGetAccessor(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -24649,7 +25040,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [259 /* FunctionDeclaration */]: function forEachChildInFunctionDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [215 /* FunctionExpression */]: function forEachChildInFunctionExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -24658,7 +25049,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.equalsGreaterThanToken) || visitNode2(cbNode, node.body); }, [172 /* ClassStaticBlockDeclaration */]: function forEachChildInClassStaticBlockDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); }, [180 /* TypeReference */]: function forEachChildInTypeReference(node, cbNode, cbNodes) { return visitNode2(cbNode, node.typeName) || visitNodes(cbNode, cbNodes, node.typeArguments); @@ -24779,7 +25170,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.statements) || visitNode2(cbNode, node.endOfFileToken); }, [240 /* VariableStatement */]: function forEachChildInVariableStatement(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); }, [258 /* VariableDeclarationList */]: function forEachChildInVariableDeclarationList(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.declarations); @@ -24843,25 +25234,25 @@ var forEachChildTable = { [260 /* ClassDeclaration */]: forEachChildInClassDeclarationOrExpression, [228 /* ClassExpression */]: forEachChildInClassDeclarationOrExpression, [261 /* InterfaceDeclaration */]: function forEachChildInInterfaceDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); }, [262 /* TypeAliasDeclaration */]: function forEachChildInTypeAliasDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); }, [263 /* EnumDeclaration */]: function forEachChildInEnumDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); }, [302 /* EnumMember */]: function forEachChildInEnumMember(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [264 /* ModuleDeclaration */]: function forEachChildInModuleDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); }, [268 /* ImportEqualsDeclaration */]: function forEachChildInImportEqualsDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); }, [269 /* ImportDeclaration */]: function forEachChildInImportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [270 /* ImportClause */]: function forEachChildInImportClause(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.namedBindings); @@ -24873,7 +25264,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.value); }, [267 /* NamespaceExportDeclaration */]: function forEachChildInNamespaceExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNode2(cbNode, node.name); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name); }, [271 /* NamespaceImport */]: function forEachChildInNamespaceImport(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name); @@ -24884,12 +25275,12 @@ var forEachChildTable = { [272 /* NamedImports */]: forEachChildInNamedImportsOrExports, [276 /* NamedExports */]: forEachChildInNamedImportsOrExports, [275 /* ExportDeclaration */]: function forEachChildInExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [273 /* ImportSpecifier */]: forEachChildInImportOrExportSpecifier, [278 /* ExportSpecifier */]: forEachChildInImportOrExportSpecifier, [274 /* ExportAssignment */]: function forEachChildInExportAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); }, [225 /* TemplateExpression */]: function forEachChildInTemplateExpression(node, cbNode, cbNodes) { return visitNode2(cbNode, node.head) || visitNodes(cbNode, cbNodes, node.templateSpans); @@ -24916,9 +25307,9 @@ var forEachChildTable = { return visitNode2(cbNode, node.expression); }, [279 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers); + return visitNodes(cbNode, cbNodes, node.modifiers); }, - [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [357 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [281 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -24990,6 +25381,7 @@ var forEachChildTable = { [347 /* JSDocTypeTag */]: forEachChildInJSDocTypeLikeTag, [346 /* JSDocThisTag */]: forEachChildInJSDocTypeLikeTag, [343 /* JSDocEnumTag */]: forEachChildInJSDocTypeLikeTag, + [353 /* JSDocSatisfiesTag */]: forEachChildInJSDocTypeLikeTag, [352 /* JSDocThrowsTag */]: forEachChildInJSDocTypeLikeTag, [342 /* JSDocOverloadTag */]: forEachChildInJSDocTypeLikeTag, [326 /* JSDocSignature */]: function forEachChildInJSDocSignature(node, cbNode, _cbNodes) { @@ -25009,7 +25401,7 @@ var forEachChildTable = { [339 /* JSDocReadonlyTag */]: forEachChildInJSDocTag, [334 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [340 /* JSDocOverrideTag */]: forEachChildInJSDocTag, - [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [356 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; function forEachChildInCallOrConstructSignature(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -26026,8 +26418,6 @@ var Parser; const pos = getNodePos(); const result = kind === 79 /* Identifier */ ? factory2.createIdentifier( "", - /*typeArguments*/ - void 0, /*originalKeywordKind*/ void 0 ) : isTemplateLiteralKind(kind) ? factory2.createTemplateLiteralLikeNode( @@ -26062,13 +26452,7 @@ var Parser; const text = internIdentifier(scanner.getTokenValue()); const hasExtendedUnicodeEscape = scanner.hasExtendedUnicodeEscape(); nextTokenWithoutCheck(); - return finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind, - hasExtendedUnicodeEscape - ), pos); + return finishNode(factory2.createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape), pos); } if (token() === 80 /* PrivateIdentifier */) { parseErrorAtCurrentToken(privateIdentifierDiagnosticMessage || Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); @@ -26179,7 +26563,7 @@ var Parser; } } function canFollowExportModifier() { - return token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); + return token() === 59 /* AtToken */ || token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); } function nextTokenCanFollowExportModifier() { nextToken(); @@ -26193,7 +26577,7 @@ var Parser; } function nextTokenCanFollowDefaultKeyword() { nextToken(); - return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); + return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 59 /* AtToken */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); } function isListElement(parsingContext2, inErrorRecovery) { const node = currentNode(parsingContext2); @@ -26410,6 +26794,7 @@ var Parser; return parseElement(); } function currentNode(parsingContext2, pos) { + var _a2; if (!syntaxCursor || !isReusableParsingContext(parsingContext2) || parseErrorBeforeNextFinishedNode) { return void 0; } @@ -26424,8 +26809,8 @@ var Parser; if (!canReuseNode(node, parsingContext2)) { return void 0; } - if (canHaveJSDoc(node) && node.jsDocCache) { - node.jsDocCache = void 0; + if (canHaveJSDoc(node) && ((_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache)) { + node.jsDoc.jsDocCache = void 0; } return node; } @@ -26484,7 +26869,7 @@ var Parser; return true; case 171 /* MethodDeclaration */: const methodDeclaration = node; - const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.originalKeywordKind === 135 /* ConstructorKeyword */; + const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.escapedText === "constructor"; return !nameIsConstructor; } } @@ -26706,13 +27091,10 @@ var Parser; function parseEntityName(allowReservedWords, diagnosticMessage) { const pos = getNodePos(); let entity = allowReservedWords ? parseIdentifierName(diagnosticMessage) : parseIdentifier(diagnosticMessage); - let dotPos = getNodePos(); while (parseOptional(24 /* DotToken */)) { if (token() === 29 /* LessThanToken */) { - entity.jsdocDotPos = dotPos; break; } - dotPos = getNodePos(); entity = finishNode( factory2.createQualifiedName( entity, @@ -27042,6 +27424,8 @@ var Parser; function parseTypeParameter() { const pos = getNodePos(); const modifiers = parseModifiers( + /*allowDecorators*/ + false, /*permitConstAsModifier*/ true ); @@ -27094,10 +27478,16 @@ var Parser; function parseParameterWorker(inOuterAwaitContext, allowAmbiguity = true) { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = inOuterAwaitContext ? doInAwaitContext(parseDecorators) : doOutsideOfAwaitContext(parseDecorators); + const modifiers = inOuterAwaitContext ? doInAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )) : doOutsideOfAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )); if (token() === 108 /* ThisKeyword */) { const node2 = factory2.createParameterDeclaration( - decorators, + modifiers, /*dotDotDotToken*/ void 0, createIdentifier( @@ -27110,14 +27500,14 @@ var Parser; /*initializer*/ void 0 ); - if (decorators) { - parseErrorAtRange(decorators[0], Diagnostics.Decorators_may_not_be_applied_to_this_parameters); + const modifier = firstOrUndefined(modifiers); + if (modifier) { + parseErrorAtRange(modifier, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); } return withJSDoc(finishNode(node2, pos), hasJSDoc); } const savedTopLevel = topLevel; topLevel = false; - const modifiers = combineDecoratorsAndModifiers(decorators, parseModifiers()); const dotDotDotToken = parseOptionalToken(25 /* DotDotDotToken */); if (!allowAmbiguity && !isParameterNameStart()) { return void 0; @@ -27229,7 +27619,7 @@ var Parser; nextToken(); return token() === 58 /* ColonToken */ || token() === 27 /* CommaToken */ || token() === 23 /* CloseBracketToken */; } - function parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers) { const parameters = parseBracketedList(ParsingContext.Parameters, () => parseParameter( /*inOuterAwaitContext*/ false @@ -27237,7 +27627,6 @@ var Parser; const type = parseTypeAnnotation(); parseTypeMemberSemicolon(); const node = factory2.createIndexSignature(modifiers, parameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers) { @@ -27292,37 +27681,18 @@ var Parser; } const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 174 /* GetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 4 /* Type */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 175 /* SetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 4 /* Type */); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers - ); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } return parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers); } @@ -27802,7 +28172,10 @@ var Parser; } function skipParameterStart() { if (isModifierKind(token())) { - parseModifiers(); + parseModifiers( + /*allowDecorators*/ + false + ); } if (isIdentifier2() || token() === 108 /* ThisKeyword */) { nextToken(); @@ -27930,6 +28303,7 @@ var Parser; case 133 /* AwaitKeyword */: case 125 /* YieldKeyword */: case 80 /* PrivateIdentifier */: + case 59 /* AtToken */: return true; default: if (isBinaryOperator2()) { @@ -29021,6 +29395,8 @@ var Parser; break; } return parseFunctionExpression(); + case 59 /* AtToken */: + return parseDecoratedExpression(); case 84 /* ClassKeyword */: return parseClassExpression(); case 98 /* FunctionKeyword */: @@ -29088,13 +29464,15 @@ var Parser; ); return withJSDoc(finishNode(factory2.createSpreadAssignment(expression), pos), hasJSDoc); } - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const tokenIsIdentifier = isIdentifier2(); @@ -29102,7 +29480,7 @@ var Parser; const questionToken = parseOptionalToken(57 /* QuestionToken */); const exclamationToken = parseOptionalToken(53 /* ExclamationToken */); if (asteriskToken || token() === 20 /* OpenParenToken */ || token() === 29 /* LessThanToken */) { - return parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken); + return parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken); } let node; const isShorthandPropertyAssignment2 = tokenIsIdentifier && token() !== 58 /* ColonToken */; @@ -29122,7 +29500,6 @@ var Parser; )); node = factory2.createPropertyAssignment(name, initializer); } - node.illegalDecorators = decorators; node.modifiers = modifiers; node.questionToken = questionToken; node.exclamationToken = exclamationToken; @@ -29150,7 +29527,10 @@ var Parser; ); const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); parseExpected(98 /* FunctionKeyword */); const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; @@ -29522,7 +29902,7 @@ var Parser; if (currentToken2 === 154 /* TypeKeyword */) { currentToken2 = lookAhead(nextToken); } - if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */) { + if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */ || currentToken2 === 59 /* AtToken */) { return true; } continue; @@ -29606,8 +29986,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -29616,8 +29994,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -29627,8 +30003,6 @@ var Parser; return parseFunctionDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -29636,8 +30010,6 @@ var Parser; return parseClassDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -29700,8 +30072,10 @@ var Parser; function parseDeclaration() { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); const isAmbient = some(modifiers, isDeclareModifier); if (isAmbient) { const node = tryReuseAmbientDeclaration(pos); @@ -29711,9 +30085,9 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, modifiers)); } else { - return parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers); + return parseDeclarationWorker(pos, hasJSDoc, modifiers); } } function tryReuseAmbientDeclaration(pos) { @@ -29724,41 +30098,41 @@ var Parser; } }); } - function parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers) { + function parseDeclarationWorker(pos, hasJSDoc, modifiersIn) { switch (token()) { case 113 /* VarKeyword */: case 119 /* LetKeyword */: case 85 /* ConstKeyword */: - return parseVariableStatement(pos, hasJSDoc, decorators, modifiers); + return parseVariableStatement(pos, hasJSDoc, modifiersIn); case 98 /* FunctionKeyword */: - return parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseFunctionDeclaration(pos, hasJSDoc, modifiersIn); case 84 /* ClassKeyword */: - return parseClassDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassDeclaration(pos, hasJSDoc, modifiersIn); case 118 /* InterfaceKeyword */: - return parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseInterfaceDeclaration(pos, hasJSDoc, modifiersIn); case 154 /* TypeKeyword */: - return parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseTypeAliasDeclaration(pos, hasJSDoc, modifiersIn); case 92 /* EnumKeyword */: - return parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseEnumDeclaration(pos, hasJSDoc, modifiersIn); case 159 /* GlobalKeyword */: case 142 /* ModuleKeyword */: case 143 /* NamespaceKeyword */: - return parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseModuleDeclaration(pos, hasJSDoc, modifiersIn); case 100 /* ImportKeyword */: - return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiersIn); case 93 /* ExportKeyword */: nextToken(); switch (token()) { case 88 /* DefaultKeyword */: case 63 /* EqualsToken */: - return parseExportAssignment(pos, hasJSDoc, decorators, modifiers); + return parseExportAssignment(pos, hasJSDoc, modifiersIn); case 128 /* AsKeyword */: - return parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseNamespaceExportDeclaration(pos, hasJSDoc, modifiersIn); default: - return parseExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseExportDeclaration(pos, hasJSDoc, modifiersIn); } default: - if (decorators || modifiers) { + if (modifiersIn) { const missing = createMissingNode( 279 /* MissingDeclaration */, /*reportAtCurrentPosition*/ @@ -29766,8 +30140,7 @@ var Parser; Diagnostics.Declaration_expected ); setTextRangePos(missing, pos); - missing.illegalDecorators = decorators; - missing.modifiers = modifiers; + missing.modifiers = modifiersIn; return missing; } return void 0; @@ -29900,17 +30273,16 @@ var Parser; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 21 /* CloseParenToken */; } - function parseVariableStatement(pos, hasJSDoc, decorators, modifiers) { + function parseVariableStatement(pos, hasJSDoc, modifiers) { const declarationList = parseVariableDeclarationList( /*inForStatementInitializer*/ false ); parseSemicolon(); const node = factory2.createVariableStatement(modifiers, declarationList); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseFunctionDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); const modifierFlags = modifiersToFlags(modifiers); parseExpected(98 /* FunctionKeyword */); @@ -29933,7 +30305,6 @@ var Parser; const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, Diagnostics.or_expected); setAwaitContext(savedAwaitContext); const node = factory2.createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseConstructorName() { @@ -29947,7 +30318,7 @@ var Parser; }); } } - function tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers) { + function tryParseConstructorDeclaration(pos, hasJSDoc, modifiers) { return tryParse(() => { if (parseConstructorName()) { const typeParameters = parseTypeParameters(); @@ -29959,14 +30330,13 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(0 /* None */, Diagnostics.or_expected); const node = factory2.createConstructorDeclaration(modifiers, parameters, body); - node.illegalDecorators = decorators; node.typeParameters = typeParameters; node.type = type; return withJSDoc(finishNode(node, pos), hasJSDoc); } }); } - function parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { + function parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; const isAsync = some(modifiers, isAsyncModifier) ? 2 /* Await */ : 0 /* None */; const typeParameters = parseTypeParameters(); @@ -29978,7 +30348,7 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage); const node = factory2.createMethodDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, asteriskToken, name, questionToken, @@ -29990,13 +30360,13 @@ var Parser; node.exclamationToken = exclamationToken; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken) { + function parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken) { const exclamationToken = !questionToken && !scanner.hasPrecedingLineBreak() ? parseOptionalToken(53 /* ExclamationToken */) : void 0; const type = parseTypeAnnotation(); const initializer = doOutsideOfContext(8192 /* YieldContext */ | 32768 /* AwaitContext */ | 4096 /* DisallowInContext */, parseInitializer); parseSemicolonAfterPropertyName(name, type, initializer); const node = factory2.createPropertyDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, name, questionToken || exclamationToken, type, @@ -30004,7 +30374,7 @@ var Parser; ); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers) { const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const name = parsePropertyName(); const questionToken = parseOptionalToken(57 /* QuestionToken */); @@ -30012,7 +30382,6 @@ var Parser; return parseMethodDeclaration( pos, hasJSDoc, - decorators, modifiers, asteriskToken, name, @@ -30022,9 +30391,9 @@ var Parser; Diagnostics.or_expected ); } - return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken); + return parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken); } - function parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, kind, flags) { + function parseAccessorDeclaration(pos, hasJSDoc, modifiers, kind, flags) { const name = parsePropertyName(); const typeParameters = parseTypeParameters(); const parameters = parseParameters(0 /* None */); @@ -30034,7 +30403,7 @@ var Parser; false ); const body = parseFunctionBlockOrSemicolon(flags); - const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body) : factory2.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body); + const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(modifiers, name, parameters, type, body) : factory2.createSetAccessorDeclaration(modifiers, name, parameters, body); node.typeParameters = typeParameters; if (isSetAccessorDeclaration(node)) node.type = type; @@ -30080,11 +30449,10 @@ var Parser; } return false; } - function parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers) { parseExpectedToken(124 /* StaticKeyword */); const body = parseClassStaticBlockBody(); const node = withJSDoc(finishNode(factory2.createClassStaticBlockDeclaration(body), pos), hasJSDoc); - node.illegalDecorators = decorators; node.modifiers = modifiers; return node; } @@ -30124,15 +30492,7 @@ var Parser; const expression = doInDecoratorContext(parseDecoratorExpression); return finishNode(factory2.createDecorator(expression), pos); } - function parseDecorators() { - const pos = getNodePos(); - let list, decorator; - while (decorator = tryParseDecorator()) { - list = append(list, decorator); - } - return list && createNodeArray(list, pos); - } - function tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + function tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); const kind = token(); if (token() === 85 /* ConstKeyword */ && permitConstAsModifier) { @@ -30150,23 +30510,26 @@ var Parser; } return finishNode(factory2.createToken(kind), pos); } - function combineDecoratorsAndModifiers(decorators, modifiers) { - if (!decorators) - return modifiers; - if (!modifiers) - return decorators; - const decoratorsAndModifiers = factory2.createNodeArray(concatenate(decorators, modifiers)); - setTextRangePosEnd(decoratorsAndModifiers, decorators.pos, modifiers.end); - return decoratorsAndModifiers; - } - function parseModifiers(permitConstAsModifier, stopOnStartOfClassStaticBlock) { + function parseModifiers(allowDecorators, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); - let list, modifier, hasSeenStatic = false; - while (modifier = tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) { + let list; + let modifier, hasSeenStaticModifier = false; + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { if (modifier.kind === 124 /* StaticKeyword */) - hasSeenStatic = true; + hasSeenStaticModifier = true; list = append(list, modifier); } + if (allowDecorators && token() === 59 /* AtToken */) { + let decorator; + while (decorator = tryParseDecorator()) { + list = append(list, decorator); + } + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { + if (modifier.kind === 124 /* StaticKeyword */) + hasSeenStaticModifier = true; + list = append(list, modifier); + } + } return list && createNodeArray(list, pos); } function parseModifiersForArrowFunction() { @@ -30186,30 +30549,31 @@ var Parser; return finishNode(factory2.createSemicolonClassElement(), pos); } const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); const modifiers = parseModifiers( + /*allowDecorators*/ + true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true ); if (token() === 124 /* StaticKeyword */ && lookAhead(nextTokenIsOpenBrace)) { - return parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers); } if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } if (token() === 135 /* ConstructorKeyword */ || token() === 10 /* StringLiteral */) { - const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers); + const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, modifiers); if (constructorDeclaration) { return constructorDeclaration; } } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } if (tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */ || token() === 41 /* AsteriskToken */ || token() === 22 /* OpenBracketToken */) { const isAmbient = some(modifiers, isDeclareModifier); @@ -30217,12 +30581,12 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers)); } else { - return parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers); + return parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers); } } - if (decorators || modifiers) { + if (modifiers) { const name = createMissingNode( 79 /* Identifier */, /*reportAtCurrentPosition*/ @@ -30232,7 +30596,6 @@ var Parser; return parsePropertyDeclaration( pos, hasJSDoc, - decorators, modifiers, name, /*questionToken*/ @@ -30241,21 +30604,39 @@ var Parser; } return Debug.fail("Should not have attempted to parse class member declaration."); } + function parseDecoratedExpression() { + const pos = getNodePos(); + const hasJSDoc = hasPrecedingJSDocComment(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); + if (token() === 84 /* ClassKeyword */) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 228 /* ClassExpression */); + } + const missing = createMissingNode( + 279 /* MissingDeclaration */, + /*reportAtCurrentPosition*/ + true, + Diagnostics.Expression_expected + ); + setTextRangePos(missing, pos); + missing.modifiers = modifiers; + return missing; + } function parseClassExpression() { return parseClassDeclarationOrExpression( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0, 228 /* ClassExpression */ ); } - function parseClassDeclaration(pos, hasJSDoc, decorators, modifiers) { - return parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, 260 /* ClassDeclaration */); + function parseClassDeclaration(pos, hasJSDoc, modifiers) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 260 /* ClassDeclaration */); } - function parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, kind) { + function parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, kind) { const savedAwaitContext = inAwaitContext(); parseExpected(84 /* ClassKeyword */); const name = parseNameOfClassDeclarationOrExpression(); @@ -30274,7 +30655,7 @@ var Parser; members = createMissingList(); } setAwaitContext(savedAwaitContext); - const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members) : factory2.createClassExpression(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members); + const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : factory2.createClassExpression(modifiers, name, typeParameters, heritageClauses, members); return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseNameOfClassDeclarationOrExpression() { @@ -30315,17 +30696,16 @@ var Parser; function parseClassMembers() { return parseList(ParsingContext.ClassMembers, parseClassElement); } - function parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseInterfaceDeclaration(pos, hasJSDoc, modifiers) { parseExpected(118 /* InterfaceKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); const heritageClauses = parseHeritageClauses(); const members = parseObjectTypeMembers(); const node = factory2.createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) { parseExpected(154 /* TypeKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); @@ -30333,7 +30713,6 @@ var Parser; const type = token() === 139 /* IntrinsicKeyword */ && tryParse(parseKeywordAndNoDot) || parseType(); parseSemicolon(); const node = factory2.createTypeAliasDeclaration(modifiers, name, typeParameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseEnumMember() { @@ -30343,7 +30722,7 @@ var Parser; const initializer = allowInAnd(parseInitializer); return withJSDoc(finishNode(factory2.createEnumMember(name, initializer), pos), hasJSDoc); } - function parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseEnumDeclaration(pos, hasJSDoc, modifiers) { parseExpected(92 /* EnumKeyword */); const name = parseIdentifier(); let members; @@ -30354,7 +30733,6 @@ var Parser; members = createMissingList(); } const node = factory2.createEnumDeclaration(modifiers, name, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseModuleBlock() { @@ -30368,24 +30746,21 @@ var Parser; } return finishNode(factory2.createModuleBlock(statements), pos); } - function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags) { + function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiers, flags) { const namespaceFlag = flags & 16 /* Namespace */; const name = parseIdentifier(); const body = parseOptional(24 /* DotToken */) ? parseModuleOrNamespaceDeclaration( getNodePos(), /*hasJSDoc*/ false, - /*decorators*/ - void 0, /*modifiers*/ void 0, 4 /* NestedNamespace */ | namespaceFlag ) : parseModuleBlock(); const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; let name; if (token() === 159 /* GlobalKeyword */) { @@ -30401,23 +30776,22 @@ var Parser; } else { parseSemicolon(); } - const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; + const node = factory2.createModuleDeclaration(modifiersIn, name, body, flags); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; if (token() === 159 /* GlobalKeyword */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } else if (parseOptional(143 /* NamespaceKeyword */)) { flags |= 16 /* Namespace */; } else { parseExpected(142 /* ModuleKeyword */); if (token() === 10 /* StringLiteral */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } } - return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags); + return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiersIn, flags); } function isExternalModuleReference2() { return token() === 147 /* RequireKeyword */ && lookAhead(nextTokenIsOpenParen); @@ -30431,17 +30805,16 @@ var Parser; function nextTokenIsSlash() { return nextToken() === 43 /* SlashToken */; } - function parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseNamespaceExportDeclaration(pos, hasJSDoc, modifiers) { parseExpected(128 /* AsKeyword */); parseExpected(143 /* NamespaceKeyword */); const name = parseIdentifier(); parseSemicolon(); const node = factory2.createNamespaceExportDeclaration(name); - node.illegalDecorators = decorators; node.modifiers = modifiers; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiers) { parseExpected(100 /* ImportKeyword */); const afterImportPos = scanner.getStartPos(); let identifier; @@ -30454,7 +30827,7 @@ var Parser; identifier = isIdentifier2() ? parseIdentifier() : void 0; } if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { - return parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly); + return parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly); } let importClause; if (identifier || // import id @@ -30470,7 +30843,6 @@ var Parser; } parseSemicolon(); const node = factory2.createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseAssertEntry() { @@ -30529,12 +30901,11 @@ var Parser; function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { return token() === 27 /* CommaToken */ || token() === 158 /* FromKeyword */; } - function parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly) { + function parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly) { parseExpected(63 /* EqualsToken */); const moduleReference = parseModuleReference(); parseSemicolon(); const node = factory2.createImportEqualsDeclaration(modifiers, isTypeOnly, identifier, moduleReference); - node.illegalDecorators = decorators; const finished = withJSDoc(finishNode(node, pos), hasJSDoc); return finished; } @@ -30644,7 +31015,7 @@ var Parser; function parseNamespaceExport(pos) { return finishNode(factory2.createNamespaceExport(parseIdentifierName()), pos); } - function parseExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseExportDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -30674,10 +31045,9 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseExportAssignment(pos, hasJSDoc, decorators, modifiers) { + function parseExportAssignment(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -30696,7 +31066,6 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportAssignment(modifiers, isExportEquals, expression); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } let ParsingContext; @@ -31080,6 +31449,9 @@ var Parser; case "overload": tag = parseOverloadTag(start2, tagName, margin, indentText); break; + case "satisfies": + tag = parseSatisfiesTag(start2, tagName, margin, indentText); + break; case "see": tag = parseSeeTag(start2, tagName, margin, indentText); break; @@ -31388,6 +31760,14 @@ var Parser; const className = parseExpressionWithTypeArgumentsForAugments(); return finishNode(factory2.createJSDocAugmentsTag(tagName, className, parseTrailingTagComments(start2, getNodePos(), margin, indentText)), start2); } + function parseSatisfiesTag(start2, tagName, margin, indentText) { + const typeExpression = parseJSDocTypeExpression( + /*mayOmitBraces*/ + false + ); + const comments2 = margin !== void 0 && indentText !== void 0 ? parseTrailingTagComments(start2, getNodePos(), margin, indentText) : void 0; + return finishNode(factory2.createJSDocSatisfiesTag(tagName, typeExpression, comments2), start2); + } function parseExpressionWithTypeArgumentsForAugments() { const usedBrace = parseOptional(18 /* OpenBraceToken */); const pos = getNodePos(); @@ -31492,7 +31872,7 @@ var Parser; return finishNode(jsDocNamespaceNode, pos); } if (nested) { - typeNameOrNamespaceName.isInJSDocNamespace = true; + typeNameOrNamespaceName.flags |= 2048 /* IdentifierIsInJSDocNamespace */; } return typeNameOrNamespaceName; } @@ -31696,12 +32076,7 @@ var Parser; const end2 = scanner.getTextPos(); const originalKeywordKind = token(); const text = internIdentifier(scanner.getTokenValue()); - const result = finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind - ), pos, end2); + const result = finishNode(factory2.createIdentifier(text, originalKeywordKind), pos, end2); nextTokenJSDoc(); return result; } @@ -32323,6 +32698,7 @@ var libEntries = [ ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], + ["es2023", "lib.es2023.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -32376,14 +32752,17 @@ var libEntries = [ ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], - ["esnext.array", "lib.es2022.array.d.ts"], + ["es2023.array", "lib.es2023.array.d.ts"], + ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], - ["esnext.weakref", "lib.es2021.weakref.d.ts"] + ["esnext.weakref", "lib.es2021.weakref.d.ts"], + ["decorators", "lib.decorators.d.ts"], + ["decorators.legacy", "lib.decorators.legacy.d.ts"] ]; var libs = libEntries.map((entry) => entry[0]); var libMap = new Map(libEntries); @@ -32926,6 +33305,13 @@ var commandOptionsWithoutBuild = [ transpileOptionValue: true, defaultValueDescription: false }, + { + name: "verbatimModuleSyntax", + type: "boolean", + category: Diagnostics.Interop_Constraints, + description: Diagnostics.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting, + defaultValueDescription: false + }, // Strict Type Checks { name: "strict", @@ -33227,7 +33613,7 @@ var commandOptionsWithoutBuild = [ { name: "allowImportingTsExtensions", type: "boolean", - affectsModuleResolution: true, + affectsSemanticDiagnostics: true, category: Diagnostics.Modules, description: Diagnostics.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set, defaultValueDescription: false @@ -33291,10 +33677,11 @@ var commandOptionsWithoutBuild = [ { name: "experimentalDecorators", type: "boolean", + affectsEmit: true, affectsSemanticDiagnostics: true, affectsBuildInfo: true, category: Diagnostics.Language_and_Environment, - description: Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, + description: Diagnostics.Enable_experimental_support_for_legacy_experimental_decorators, defaultValueDescription: false }, { @@ -33408,7 +33795,7 @@ var commandOptionsWithoutBuild = [ paramType: Diagnostics.NEWLINE, category: Diagnostics.Emit, description: Diagnostics.Set_the_newline_character_for_emitting_files, - defaultValueDescription: Diagnostics.Platform_specific + defaultValueDescription: "lf" }, { name: "noErrorTruncation", @@ -33584,7 +33971,7 @@ var commandOptionsWithoutBuild = [ affectsModuleResolution: true, category: Diagnostics.Interop_Constraints, description: Diagnostics.Ensure_that_casing_is_correct_in_imports, - defaultValueDescription: false + defaultValueDescription: true }, { name: "maxNodeModuleJsDepth", @@ -33708,14 +34095,6 @@ var buildOpts = [ ...optionsForBuild ]; var typeAcquisitionDeclarations = [ - { - /* @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - name: "enableAutoDiscovery", - type: "boolean", - defaultValueDescription: false - }, { name: "enable", type: "boolean", @@ -33770,16 +34149,6 @@ var defaultInitCompilerOptions = { forceConsistentCasingInFileNames: true, skipLibCheck: true }; -function convertEnableAutoDiscoveryToEnable(typeAcquisition) { - if (typeAcquisition && typeAcquisition.enableAutoDiscovery !== void 0 && typeAcquisition.enable === void 0) { - return { - enable: typeAcquisition.enableAutoDiscovery, - include: typeAcquisition.include || [], - exclude: typeAcquisition.exclude || [] - }; - } - return typeAcquisition; -} function createCompilerDiagnosticForInvalidCustomType(opt) { return createDiagnosticForInvalidCustomType(opt, createCompilerDiagnostic); } @@ -34150,12 +34519,6 @@ function getTsconfigRootOptionsMap() { elementOptions: getCommandLineWatchOptionsMap(), extraKeyDiagnostics: watchOptionsDidYouMeanDiagnostics }, - { - name: "typingOptions", - type: "object", - elementOptions: getCommandLineTypeAcquisitionMap(), - extraKeyDiagnostics: typeAcquisitionDidYouMeanDiagnostics - }, { name: "typeAcquisition", type: "object", @@ -34988,11 +35351,11 @@ function parseOwnConfigOfJson(json, host, basePath, configFileName, errors) { errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); } const options = convertCompilerOptionsFromJsonWorker(json.compilerOptions, basePath, errors, configFileName); - const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition || json.typingOptions, basePath, errors, configFileName); + const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition, basePath, errors, configFileName); const watchOptions = convertWatchOptionsFromJsonWorker(json.watchOptions, basePath, errors); json.compileOnSave = convertCompileOnSaveOptionFromJson(json, basePath, errors); let extendedConfigPath; - if (json.extends) { + if (json.extends || json.extends === "") { if (!isCompilerOptionsValue(extendsOptionDeclaration, json.extends)) { errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "extends", getCompilerOptionValueTypeString(extendsOptionDeclaration))); } else { @@ -35015,7 +35378,7 @@ function parseOwnConfigOfJson(json, host, basePath, configFileName, errors) { } function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileName, errors) { const options = getDefaultCompilerOptions(configFileName); - let typeAcquisition, typingOptionstypeAcquisition; + let typeAcquisition; let watchOptions; let extendedConfigPath; let rootCompilerOptions; @@ -35032,9 +35395,6 @@ function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileNa case "typeAcquisition": currentOption = typeAcquisition || (typeAcquisition = getDefaultTypeAcquisition(configFileName)); break; - case "typingOptions": - currentOption = typingOptionstypeAcquisition || (typingOptionstypeAcquisition = getDefaultTypeAcquisition(configFileName)); - break; default: Debug.fail("Unknown option"); } @@ -35087,15 +35447,7 @@ function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileNa optionsIterator ); if (!typeAcquisition) { - if (typingOptionstypeAcquisition) { - typeAcquisition = typingOptionstypeAcquisition.enableAutoDiscovery !== void 0 ? { - enable: typingOptionstypeAcquisition.enableAutoDiscovery, - include: typingOptionstypeAcquisition.include, - exclude: typingOptionstypeAcquisition.exclude - } : typingOptionstypeAcquisition; - } else { - typeAcquisition = getDefaultTypeAcquisition(configFileName); - } + typeAcquisition = getDefaultTypeAcquisition(configFileName); } if (rootCompilerOptions && json && json.compilerOptions === void 0) { errors.push(createDiagnosticForNodeInSourceFile(sourceFile, rootCompilerOptions[0], Diagnostics._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file, getTextOfPropertyName(rootCompilerOptions[0]))); @@ -35119,7 +35471,11 @@ function getExtendsConfigPath(extendedConfig, host, basePath, errors, createDiag if (resolved.resolvedModule) { return resolved.resolvedModule.resolvedFileName; } - errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + if (extendedConfig === "") { + errors.push(createDiagnostic(Diagnostics.Compiler_option_0_cannot_be_given_an_empty_string, "extends")); + } else { + errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + } return void 0; } function getExtendedConfig(sourceFile, extendedConfigPath, host, resolutionStack, errors, extendedConfigCache, result) { @@ -35187,8 +35543,7 @@ function getDefaultTypeAcquisition(configFileName) { } function convertTypeAcquisitionFromJsonWorker(jsonOptions, basePath, errors, configFileName) { const options = getDefaultTypeAcquisition(configFileName); - const typeAcquisition = convertEnableAutoDiscoveryToEnable(jsonOptions); - convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), typeAcquisition, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); + convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), jsonOptions, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); return options; } function convertWatchOptionsFromJsonWorker(jsonOptions, basePath, errors) { @@ -35392,6 +35747,7 @@ function validateSpecs(specs, errors, disallowTrailingRecursion, jsonSourceFile, } } function specToDiagnostic(spec, disallowTrailingRecursion) { + Debug.assert(typeof spec === "string"); if (disallowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return [Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec]; } else if (invalidDotDotAfterRecursiveWildcard(spec)) { @@ -35561,7 +35917,7 @@ function resolvedTypeScriptOnly(resolved) { Debug.assert(extensionIsTS(resolved.extension)); return { fileName: resolved.path, packageId: resolved.packageId }; } -function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache) { +function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache, legacyResult) { if (resultFromCache) { resultFromCache.failedLookupLocations = updateResolutionField(resultFromCache.failedLookupLocations, failedLookupLocations); resultFromCache.affectingLocations = updateResolutionField(resultFromCache.affectingLocations, affectingLocations); @@ -35579,7 +35935,8 @@ function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibra }, failedLookupLocations: initializeResolutionField(failedLookupLocations), affectingLocations: initializeResolutionField(affectingLocations), - resolutionDiagnostics: initializeResolutionField(diagnostics) + resolutionDiagnostics: initializeResolutionField(diagnostics), + node10Result: legacyResult }; } function initializeResolutionField(value) { @@ -36609,7 +36966,7 @@ function nodeNextJsonConfigResolver(moduleName, containingFile, host) { ); } function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, compilerOptions, host, cache, extensions, isConfigLookup, redirectedReference) { - var _a2, _b; + var _a2, _b, _c, _d; const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations = []; const affectingLocations = []; @@ -36636,44 +36993,60 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, if (getEmitModuleResolutionKind(compilerOptions) === 2 /* Node10 */) { const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */); const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */); - result = priorityExtensions && tryResolve(priorityExtensions) || secondaryExtensions && tryResolve(secondaryExtensions) || void 0; + result = priorityExtensions && tryResolve(priorityExtensions, state) || secondaryExtensions && tryResolve(secondaryExtensions, state) || void 0; } else { - result = tryResolve(extensions); + result = tryResolve(extensions, state); + } + let legacyResult; + if (((_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.isExternalLibraryImport) && !isConfigLookup && extensions & (1 /* TypeScript */ | 4 /* Declaration */) && features & 8 /* Exports */ && !isExternalModuleNameRelative(moduleName) && !extensionIsOk(1 /* TypeScript */ | 4 /* Declaration */, result.value.resolved.extension) && conditions.indexOf("import") > -1) { + traceIfEnabled(state, Diagnostics.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update); + const diagnosticState = { + ...state, + features: state.features & ~8 /* Exports */, + failedLookupLocations: [], + affectingLocations: [], + reportDiagnostic: noop + }; + const diagnosticResult = tryResolve(extensions & (1 /* TypeScript */ | 4 /* Declaration */), diagnosticState); + if ((_b = diagnosticResult == null ? void 0 : diagnosticResult.value) == null ? void 0 : _b.isExternalLibraryImport) { + legacyResult = diagnosticResult.value.resolved.path; + } } return createResolvedModuleWithFailedLookupLocations( - (_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.resolved, - (_b = result == null ? void 0 : result.value) == null ? void 0 : _b.isExternalLibraryImport, + (_c = result == null ? void 0 : result.value) == null ? void 0 : _c.resolved, + (_d = result == null ? void 0 : result.value) == null ? void 0 : _d.isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, - state.resultFromCache + state.resultFromCache, + legacyResult ); - function tryResolve(extensions2) { - const loader = (extensions3, candidate, onlyRecordFailures, state2) => nodeLoadModuleByRelativeName( + function tryResolve(extensions2, state2) { + const loader = (extensions3, candidate, onlyRecordFailures, state3) => nodeLoadModuleByRelativeName( extensions3, candidate, onlyRecordFailures, - state2, + state3, /*considerPackageJson*/ true ); - const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state); + const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state2); if (resolved) { return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) { if (traceEnabled) { trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) return void 0; @@ -36692,7 +37065,7 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, candidate, /*onlyRecordFailures*/ false, - state, + state2, /*considerPackageJson*/ true ); @@ -37794,7 +38167,7 @@ function classicNameResolver(moduleName, containingFile, compilerOptions, host, } } function shouldAllowImportingTsExtension(compilerOptions, fromFileName) { - return getEmitModuleResolutionKind(compilerOptions) === 100 /* Bundler */ && (!!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName)); + return !!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName); } function loadModuleFromGlobalCache(moduleName, projectName, compilerOptions, host, globalCache, packageJsonInfoCache) { const traceEnabled = isTraceEnabled(compilerOptions, host); @@ -37925,7 +38298,7 @@ function getModuleInstanceStateWorker(node, visited) { case 264 /* ModuleDeclaration */: return getModuleInstanceState(node, visited); case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { return 0 /* NonInstantiated */; } } @@ -38362,6 +38735,7 @@ function createBinder() { } else if (containerFlags & 64 /* IsInterface */) { seenThisKeyword = false; bindChildren(node); + Debug.assertNotNode(node, isIdentifier); node.flags = seenThisKeyword ? node.flags | 128 /* ContainsThis */ : node.flags & ~128 /* ContainsThis */; } else { bindChildren(node); @@ -38662,13 +39036,12 @@ function createBinder() { } else if (node.kind === 221 /* PrefixUnaryExpression */ && node.operator === 53 /* ExclamationToken */) { node = node.operand; } else { - return node.kind === 223 /* BinaryExpression */ && (node.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || node.operatorToken.kind === 56 /* BarBarToken */ || node.operatorToken.kind === 60 /* QuestionQuestionToken */); + return isLogicalOrCoalescingBinaryExpression(node); } } } function isLogicalAssignmentExpression(node) { - node = skipParentheses(node); - return isBinaryExpression(node) && isLogicalOrCoalescingAssignmentOperator(node.operatorToken.kind); + return isLogicalOrCoalescingAssignmentExpression(skipParentheses(node)); } function isTopLevelLogicalExpression(node) { while (isParenthesizedExpression(node.parent) || isPrefixUnaryExpression(node.parent) && node.parent.operator === 53 /* ExclamationToken */) { @@ -39051,7 +39424,7 @@ function createBinder() { }; } const operator = node.operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */ || isLogicalOrCoalescingAssignmentOperator(operator)) { + if (isLogicalOrCoalescingBinaryOperator(operator) || isLogicalOrCoalescingAssignmentOperator(operator)) { if (isTopLevelLogicalExpression(node)) { const postExpressionLabel = createBranchLabel(); bindLogicalLikeExpression(node, postExpressionLabel, postExpressionLabel); @@ -39521,13 +39894,17 @@ function createBinder() { } function checkContextualIdentifier(node) { if (!file.parseDiagnostics.length && !(node.flags & 16777216 /* Ambient */) && !(node.flags & 8388608 /* JSDoc */) && !isIdentifierName(node)) { - if (inStrictMode && node.originalKeywordKind >= 117 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 125 /* LastFutureReservedWord */) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind === void 0) { + return; + } + if (inStrictMode && originalKeywordKind >= 117 /* FirstFutureReservedWord */ && originalKeywordKind <= 125 /* LastFutureReservedWord */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, getStrictModeIdentifierMessage(node), declarationNameToString(node) )); - } else if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + } else if (originalKeywordKind === 133 /* AwaitKeyword */) { if (isExternalModule(file) && isInTopLevelContext(node)) { file.bindDiagnostics.push(createDiagnosticForNode2( node, @@ -39541,7 +39918,7 @@ function createBinder() { declarationNameToString(node) )); } - } else if (node.originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { + } else if (originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, @@ -39753,7 +40130,7 @@ function createBinder() { function bindWorker(node) { switch (node.kind) { case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; while (parentNode && !isJSDocTypeAlias(parentNode)) { parentNode = parentNode.parent; @@ -41729,6 +42106,7 @@ function createTypeChecker(host) { deferredDiagnosticsCallbacks.push(arg); }; let cancellationToken; + const requestedExternalEmitHelperNames = /* @__PURE__ */ new Set(); let requestedExternalEmitHelpers; let externalHelpersModule; const Symbol12 = objectAllocator.getSymbolConstructor(); @@ -41747,6 +42125,7 @@ function createTypeChecker(host) { const compilerOptions = host.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const allowSyntheticDefaultImports = getAllowSyntheticDefaultImports(compilerOptions); const strictNullChecks = getStrictOptionValue(compilerOptions, "strictNullChecks"); @@ -41771,6 +42150,7 @@ function createTypeChecker(host) { globals.set(globalThisSymbol.escapedName, globalThisSymbol); const argumentsSymbol = createSymbol(4 /* Property */, "arguments"); const requireSymbol = createSymbol(4 /* Property */, "require"); + const isolatedModulesLikeFlagName = compilerOptions.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules"; let apparentArgumentCount; const checker = { getNodeCount: () => reduceLeft(host.getSourceFiles(), (n, s) => n + s.nodeCount, 0), @@ -42191,6 +42571,7 @@ function createTypeChecker(host) { const stringMappingTypes = /* @__PURE__ */ new Map(); const substitutionTypes = /* @__PURE__ */ new Map(); const subtypeReductionCache = /* @__PURE__ */ new Map(); + const decoratorContextOverrideTypeCache = /* @__PURE__ */ new Map(); const cachedTypes = /* @__PURE__ */ new Map(); const evolvingArrayTypes = []; const undefinedProperties = /* @__PURE__ */ new Map(); @@ -42430,6 +42811,14 @@ function createTypeChecker(host) { let deferredGlobalBigIntType; let deferredGlobalNaNSymbol; let deferredGlobalRecordSymbol; + let deferredGlobalClassDecoratorContextType; + let deferredGlobalClassMethodDecoratorContextType; + let deferredGlobalClassGetterDecoratorContextType; + let deferredGlobalClassSetterDecoratorContextType; + let deferredGlobalClassAccessorDecoratorContextType; + let deferredGlobalClassAccessorDecoratorTargetType; + let deferredGlobalClassAccessorDecoratorResultType; + let deferredGlobalClassFieldDecoratorContextType; const allPotentiallyUnusedIdentifiers = /* @__PURE__ */ new Map(); let flowLoopStart = 0; let flowLoopCount = 0; @@ -42516,7 +42905,7 @@ function createTypeChecker(host) { if (jsxFragmentPragma) { const chosenPragma = isArray(jsxFragmentPragma) ? jsxFragmentPragma[0] : jsxFragmentPragma; file.localJsxFragmentFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFragmentFactory, markAsSynthetic); + visitNode(file.localJsxFragmentFactory, markAsSynthetic, isEntityName); if (file.localJsxFragmentFactory) { return file.localJsxFragmentNamespace = getFirstIdentifier(file.localJsxFragmentFactory).escapedText; } @@ -42559,7 +42948,7 @@ function createTypeChecker(host) { if (jsxPragma) { const chosenPragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; file.localJsxFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFactory, markAsSynthetic); + visitNode(file.localJsxFactory, markAsSynthetic, isEntityName); if (file.localJsxFactory) { return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText; } @@ -42612,7 +43001,7 @@ function createTypeChecker(host) { addErrorOrSuggestion(isError, "message" in message ? createFileDiagnostic(file, 0, 0, message, arg0, arg1, arg2, arg3) : createDiagnosticForFileFromMessageChain(file, message)); return; } - addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(location, message)); + addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(location), location, message)); } function errorAndMaybeSuggestAwait(location, maybeMissingAwait, message, arg0, arg1, arg2, arg3) { const diagnostic = error(location, message, arg0, arg1, arg2, arg3); @@ -42657,6 +43046,16 @@ function createTypeChecker(host) { symbol.links.checkFlags = checkFlags || 0 /* None */; return symbol; } + function createParameter(name, type) { + const symbol = createSymbol(1 /* FunctionScopedVariable */, name); + symbol.links.type = type; + return symbol; + } + function createProperty(name, type) { + const symbol = createSymbol(4 /* Property */, name); + symbol.links.type = type; + return symbol; + } function getExcludedSymbolFlags(flags) { let result = 0; if (flags & 2 /* BlockScopedVariable */) @@ -43203,6 +43602,15 @@ function createTypeChecker(host) { break; case 263 /* EnumDeclaration */: if (result = lookup(((_c = getSymbolOfDeclaration(location)) == null ? void 0 : _c.exports) || emptySymbols, name, meaning & 8 /* EnumMember */)) { + if (nameNotFoundMessage && getIsolatedModules(compilerOptions) && !(location.flags & 16777216 /* Ambient */) && getSourceFileOfNode(location) !== getSourceFileOfNode(result.valueDeclaration)) { + error( + errorLocation, + Diagnostics.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead, + unescapeLeadingUnderscores(name), + isolatedModulesLikeFlagName, + `${unescapeLeadingUnderscores(getSymbolOfNode(location).escapedName)}.${unescapeLeadingUnderscores(name)}` + ); + } break loop; } break; @@ -43448,7 +43856,7 @@ function createTypeChecker(host) { if (result && errorLocation && meaning & 111551 /* Value */ && result.flags & 2097152 /* Alias */ && !(result.flags & 111551 /* Value */) && !isValidTypeOnlyAliasUseSite(errorLocation)) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(result, 111551 /* Value */); if (typeOnlyDeclaration) { - const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; + const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; const unescapedName = unescapeLeadingUnderscores(name); addTypeOnlyDeclarationRelatedInfo( error(errorLocation, message, unescapedName), @@ -43468,7 +43876,7 @@ function createTypeChecker(host) { diagnostic, createDiagnosticForNode( typeOnlyDeclaration, - typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, + typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, unescapedName ) ); @@ -43847,10 +44255,10 @@ function createTypeChecker(host) { false ) && !node.isTypeOnly) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(getSymbolOfDeclaration(node)); - const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */; + const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */; const message = isExport ? Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type : Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type; const relatedMessage = isExport ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here; - const name = unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); + const name = typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? "*" : unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); addRelatedInfo(error(node.moduleReference, message), createDiagnosticForNode(typeOnlyDeclaration, relatedMessage, name)); } } @@ -44070,6 +44478,7 @@ function createTypeChecker(host) { return valueSymbol; } const result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.escapedName); + Debug.assert(valueSymbol.declarations || typeSymbol.declarations); result.declarations = deduplicate(concatenate(valueSymbol.declarations, typeSymbol.declarations), equateValues); result.parent = valueSymbol.parent || typeSymbol.parent; if (valueSymbol.valueDeclaration) @@ -44081,15 +44490,19 @@ function createTypeChecker(host) { return result; } function getExportOfModule(symbol, name, specifier, dontResolveAlias) { + var _a2; if (symbol.flags & 1536 /* Module */) { const exportSymbol = getExportsOfSymbol(symbol).get(name.escapedText); const resolved = resolveSymbol(exportSymbol, dontResolveAlias); + const exportStarDeclaration = (_a2 = getSymbolLinks(symbol).typeOnlyExportStarMap) == null ? void 0 : _a2.get(name.escapedText); markSymbolOfAliasDeclarationIfTypeOnly( specifier, exportSymbol, resolved, /*overwriteEmpty*/ - false + false, + exportStarDeclaration, + name.escapedText ); return resolved; } @@ -44416,7 +44829,7 @@ function createTypeChecker(host) { } return flags; } - function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty) { + function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty, exportStarDeclaration, exportStarName) { if (!aliasDeclaration || isPropertyAccessExpression(aliasDeclaration)) return false; const sourceSymbol = getSymbolOfDeclaration(aliasDeclaration); @@ -44425,6 +44838,14 @@ function createTypeChecker(host) { links2.typeOnlyDeclaration = aliasDeclaration; return true; } + if (exportStarDeclaration) { + const links2 = getSymbolLinks(sourceSymbol); + links2.typeOnlyDeclaration = exportStarDeclaration; + if (sourceSymbol.escapedName !== exportStarName) { + links2.typeOnlyExportStarName = exportStarName; + } + return true; + } const links = getSymbolLinks(sourceSymbol); return markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, immediateTarget, overwriteEmpty) || markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, finalTarget, overwriteEmpty); } @@ -44446,11 +44867,15 @@ function createTypeChecker(host) { return links.typeOnlyDeclaration || void 0; } if (links.typeOnlyDeclaration) { - return getAllSymbolFlags(resolveAlias(links.typeOnlyDeclaration.symbol)) & include ? links.typeOnlyDeclaration : void 0; + const resolved = links.typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? resolveSymbol(getExportsOfModule(links.typeOnlyDeclaration.symbol.parent).get(links.typeOnlyExportStarName || symbol.escapedName)) : resolveAlias(links.typeOnlyDeclaration.symbol); + return getAllSymbolFlags(resolved) & include ? links.typeOnlyDeclaration : void 0; } return void 0; } function markExportAsReferenced(node) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } const symbol = getSymbolOfDeclaration(node); const target = resolveAlias(symbol); if (target) { @@ -44461,6 +44886,7 @@ function createTypeChecker(host) { } } function markAliasSymbolAsReferenced(symbol) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); const links = getSymbolLinks(symbol); if (!links.referenced) { links.referenced = true; @@ -44767,6 +45193,8 @@ function createTypeChecker(host) { /*isError*/ false, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -44818,7 +45246,7 @@ function createTypeChecker(host) { } } } - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chainDiagnosticMessages( + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chainDiagnosticMessages( diagnosticDetails, Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead, moduleReference @@ -44852,6 +45280,8 @@ function createTypeChecker(host) { /*isError*/ noImplicitAny && !!moduleNotFoundError, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -44906,26 +45336,37 @@ function createTypeChecker(host) { return importSourceWithoutExtension; } } - function errorOnImplicitAnyModule(isError, errorNode, { packageId, resolvedFileName }, moduleReference) { - const errorInfo = !isExternalModuleNameRelative(moduleReference) && packageId ? typesPackageExists(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, - packageId.name, - mangleScopedPackageName(packageId.name) - ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, - packageId.name, - moduleReference - ) : chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, - moduleReference, - mangleScopedPackageName(packageId.name) - ) : void 0; + function errorOnImplicitAnyModule(isError, errorNode, sourceFile, mode, { packageId, resolvedFileName }, moduleReference) { + var _a2, _b; + let errorInfo; + if (!isExternalModuleNameRelative(moduleReference) && packageId) { + const node10Result = (_b = (_a2 = sourceFile.resolvedModules) == null ? void 0 : _a2.get(moduleReference, mode)) == null ? void 0 : _b.node10Result; + errorInfo = node10Result ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings, + node10Result, + node10Result.indexOf(nodeModulesPathPart + "@types/") > -1 ? `@types/${mangleScopedPackageName(packageId.name)}` : packageId.name + ) : typesPackageExists(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, + packageId.name, + mangleScopedPackageName(packageId.name) + ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, + packageId.name, + moduleReference + ) : chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, + moduleReference, + mangleScopedPackageName(packageId.name) + ); + } errorOrSuggestion(isError, errorNode, chainDiagnosticMessages( errorInfo, Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, @@ -45085,7 +45526,12 @@ function createTypeChecker(host) { } function getExportsOfModule(moduleSymbol) { const links = getSymbolLinks(moduleSymbol); - return links.resolvedExports || (links.resolvedExports = getExportsOfModuleWorker(moduleSymbol)); + if (!links.resolvedExports) { + const { exports, typeOnlyExportStarMap } = getExportsOfModuleWorker(moduleSymbol); + links.resolvedExports = exports; + links.typeOnlyExportStarMap = typeOnlyExportStarMap; + } + return links.resolvedExports; } function extendExportSymbols(target, source, lookupTable, exportNode) { if (!source) @@ -45113,9 +45559,21 @@ function createTypeChecker(host) { } function getExportsOfModuleWorker(moduleSymbol) { const visitedSymbols = []; + let typeOnlyExportStarMap; + const nonTypeOnlyNames = /* @__PURE__ */ new Set(); moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); - return visit(moduleSymbol) || emptySymbols; - function visit(symbol) { + const exports = visit(moduleSymbol) || emptySymbols; + if (typeOnlyExportStarMap) { + nonTypeOnlyNames.forEach((name) => typeOnlyExportStarMap.delete(name)); + } + return { + exports, + typeOnlyExportStarMap + }; + function visit(symbol, exportStar, isTypeOnly) { + if (!isTypeOnly && (symbol == null ? void 0 : symbol.exports)) { + symbol.exports.forEach((_, name) => nonTypeOnlyNames.add(name)); + } if (!(symbol && symbol.exports && pushIfUnique(visitedSymbols, symbol))) { return; } @@ -45127,7 +45585,7 @@ function createTypeChecker(host) { if (exportStars.declarations) { for (const node of exportStars.declarations) { const resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); - const exportedSymbols = visit(resolvedModule); + const exportedSymbols = visit(resolvedModule, node, isTypeOnly || node.isTypeOnly); extendExportSymbols( nestedSymbols, exportedSymbols, @@ -45151,6 +45609,13 @@ function createTypeChecker(host) { }); extendExportSymbols(symbols, nestedSymbols); } + if (exportStar == null ? void 0 : exportStar.isTypeOnly) { + typeOnlyExportStarMap != null ? typeOnlyExportStarMap : typeOnlyExportStarMap = /* @__PURE__ */ new Map(); + symbols.forEach((_, escapedName) => typeOnlyExportStarMap.set( + escapedName, + exportStar + )); + } return symbols; } } @@ -46582,13 +47047,17 @@ function createTypeChecker(host) { let qualifier = root.qualifier; if (qualifier) { if (isIdentifier(qualifier)) { - qualifier = factory.updateIdentifier(qualifier, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(qualifier)) { + qualifier = setIdentifierTypeArguments(factory.cloneNode(qualifier), typeArguments); + } } else { - qualifier = factory.updateQualifiedName( - qualifier, - qualifier.left, - factory.updateIdentifier(qualifier.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(qualifier.right)) { + qualifier = factory.updateQualifiedName( + qualifier, + qualifier.left, + setIdentifierTypeArguments(factory.cloneNode(qualifier.right), typeArguments) + ); + } } } typeArguments = ref.typeArguments; @@ -46608,13 +47077,17 @@ function createTypeChecker(host) { let typeArguments = root.typeArguments; let typeName = root.typeName; if (isIdentifier(typeName)) { - typeName = factory.updateIdentifier(typeName, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(typeName)) { + typeName = setIdentifierTypeArguments(factory.cloneNode(typeName), typeArguments); + } } else { - typeName = factory.updateQualifiedName( - typeName, - typeName.left, - factory.updateIdentifier(typeName.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(typeName.right)) { + typeName = factory.updateQualifiedName( + typeName, + typeName.left, + setIdentifierTypeArguments(factory.cloneNode(typeName.right), typeArguments) + ); + } } typeArguments = ref.typeArguments; const ids = getAccessStack(ref); @@ -47328,7 +47801,11 @@ function createTypeChecker(host) { if (!nonRootParts || isEntityName(nonRootParts)) { if (nonRootParts) { const lastId = isIdentifier(nonRootParts) ? nonRootParts : nonRootParts.right; - lastId.typeArguments = void 0; + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); } return factory.createImportTypeNode(lit, assertion, nonRootParts, typeParameterNodes, isTypeOf); } else { @@ -47345,8 +47822,12 @@ function createTypeChecker(host) { return factory.createTypeQueryNode(entityName); } else { const lastId = isIdentifier(entityName) ? entityName : entityName.right; - const lastTypeArgs = lastId.typeArguments; - lastId.typeArguments = void 0; + const lastTypeArgs = getIdentifierTypeArguments(lastId); + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); return factory.createTypeReferenceNode(entityName, lastTypeArgs); } function createAccessFromSymbolChain(chain2, index, stopper) { @@ -47390,7 +47871,9 @@ function createTypeChecker(host) { return factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(LHS, typeParameterNodes), factory.createLiteralTypeNode(factory.createStringLiteral(symbolName2))); } } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; if (index > stopper) { const LHS = createAccessFromSymbolChain(chain2, index - 1, stopper); @@ -47448,7 +47931,9 @@ function createTypeChecker(host) { text = `${rawtext}_${i}`; } if (text !== rawtext) { - result = factory.createIdentifier(text, result.typeArguments); + const typeArguments = getIdentifierTypeArguments(result); + result = factory.createIdentifier(text); + setIdentifierTypeArguments(result, typeArguments); } (context.typeParameterNamesByTextNextNameCount || (context.typeParameterNamesByTextNextNameCount = /* @__PURE__ */ new Map())).set(rawtext, i); (context.typeParameterNames || (context.typeParameterNames = /* @__PURE__ */ new Map())).set(getTypeId(type), result); @@ -47472,7 +47957,9 @@ function createTypeChecker(host) { if (index === 0) { context.flags ^= 16777216 /* InInitialEntityName */; } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createQualifiedName(createEntityNameFromSymbolChain(chain2, index - 1), identifier) : identifier; } @@ -47495,7 +47982,9 @@ function createTypeChecker(host) { return factory.createStringLiteral(getSpecifierForModuleSymbol(symbol2, context)); } if (index === 0 || canUsePropertyAccess(symbolName2, languageVersion)) { - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createPropertyAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), identifier) : identifier; } else { @@ -47510,8 +47999,11 @@ function createTypeChecker(host) { expression = factory.createNumericLiteral(+symbolName2); } if (!expression) { - expression = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); - expression.symbol = symbol2; + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); + identifier.symbol = symbol2; + expression = identifier; } return factory.createElementAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), expression); } @@ -47667,7 +48159,7 @@ function createTypeChecker(host) { } let hadError = false; const file = getSourceFileOfNode(existing); - const transformed = visitNode(existing, visitExistingNodeTreeSymbols); + const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); if (hadError) { return void 0; } @@ -47680,16 +48172,16 @@ function createTypeChecker(host) { return factory.createKeywordTypeNode(157 /* UnknownKeyword */); } if (isJSDocNullableType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createLiteralTypeNode(factory.createNull())]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); } if (isJSDocOptionalType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); } if (isJSDocNonNullableType(node)) { return visitNode(node.type, visitExistingNodeTreeSymbols); } if (isJSDocVariadicType(node)) { - return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols)); + return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); } if (isJSDocTypeLiteral(node)) { return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { @@ -47701,7 +48193,7 @@ function createTypeChecker(host) { void 0, name, t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(57 /* QuestionToken */) : void 0, - overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); })); } @@ -47720,9 +48212,9 @@ function createTypeChecker(host) { "x", /*questionToken*/ void 0, - visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) )], - visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) )]); } if (isJSDocFunctionType(node)) { @@ -47731,33 +48223,33 @@ function createTypeChecker(host) { return factory.createConstructorTypeNode( /*modifiers*/ void 0, - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } else { return factory.createFunctionTypeNode( - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), map(node.parameters, (p, i) => factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } } @@ -48206,7 +48698,7 @@ function createTypeChecker(host) { /*modifiers*/ void 0, /*isTypeOnly*/ - false, + node.isTypeOnly, /*exportClause*/ void 0, factory.createStringLiteral(getSpecifierForModuleSymbol(resolvedModule, context)) @@ -48679,7 +49171,7 @@ function createTypeChecker(host) { break; } case 268 /* ImportEqualsDeclaration */: - if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, isJsonSourceFile)) { + if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, (d) => isSourceFile(d) && isJsonSourceFile(d))) { serializeMaybeAliasAssignment(symbol); break; } @@ -48920,7 +49412,7 @@ function createTypeChecker(host) { !!(length(filter(getPropertiesOfType(typeToSerialize), isNamespaceMember)) || length(getSignaturesOfType(typeToSerialize, 0 /* Call */))) && !length(getSignaturesOfType(typeToSerialize, 1 /* Construct */)) && // TODO: could probably serialize as function + ns + class, now that that's OK !getDeclarationWithTypeAnnotation(hostSymbol, enclosingDeclaration) && !(typeToSerialize.symbol && some(typeToSerialize.symbol.declarations, (d) => getSourceFileOfNode(d) !== ctxSrc)) && !some(getPropertiesOfType(typeToSerialize), (p) => isLateBoundName(p.escapedName)) && !some(getPropertiesOfType(typeToSerialize), (p) => some(p.declarations, (d) => getSourceFileOfNode(d) !== ctxSrc)) && every(getPropertiesOfType(typeToSerialize), (p) => isIdentifierText(symbolName(p), languageVersion)); } - function makeSerializePropertySymbol(createProperty, methodKind, useAccessors) { + function makeSerializePropertySymbol(createProperty2, methodKind, useAccessors) { return function serializePropertySymbol(p, isStatic2, baseType) { var _a2, _b, _c, _d, _e; const modifierFlags = getDeclarationModifierFlagsFromSymbol(p); @@ -48967,7 +49459,7 @@ function createTypeChecker(host) { } return result; } else if (p.flags & (4 /* Property */ | 3 /* Variable */ | 98304 /* Accessor */)) { - return setTextRange(createProperty( + return setTextRange(createProperty2( factory.createModifiersFromModifierFlags((isReadonlySymbol(p) ? 64 /* Readonly */ : 0) | flag), name, p.flags & 16777216 /* Optional */ ? factory.createToken(57 /* QuestionToken */) : void 0, @@ -48982,7 +49474,7 @@ function createTypeChecker(host) { const type = getTypeOfSymbol(p); const signatures = getSignaturesOfType(type, 0 /* Call */); if (flag & 8 /* Private */) { - return setTextRange(createProperty( + return setTextRange(createProperty2( factory.createModifiersFromModifierFlags((isReadonlySymbol(p) ? 64 /* Readonly */ : 0) | flag), name, p.flags & 16777216 /* Optional */ ? factory.createToken(57 /* QuestionToken */) : void 0, @@ -49774,6 +50266,12 @@ function createTypeChecker(host) { const isProperty = isPropertyDeclaration(declaration) && !hasAccessorModifier(declaration) || isPropertySignature(declaration) || isJSDocPropertyTag(declaration); const isOptional = includeOptionality && isOptionalDeclaration(declaration); const declaredType = tryGetTypeFromEffectiveTypeNode(declaration); + if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { + if (declaredType) { + return isTypeAny(declaredType) || declaredType === unknownType ? declaredType : errorType; + } + return useUnknownInCatchVariables ? unknownType : anyType; + } if (declaredType) { return addOptionality(declaredType, isProperty, isOptional); } @@ -50352,14 +50850,6 @@ function createTypeChecker(host) { } Debug.assertIsDefined(symbol.valueDeclaration); const declaration = symbol.valueDeclaration; - if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); - if (typeNode === void 0) { - return useUnknownInCatchVariables ? unknownType : anyType; - } - const type2 = getTypeOfNode(typeNode); - return isTypeAny(type2) || type2 === unknownType ? type2 : errorType; - } if (isSourceFile(declaration) && isJsonSourceFile(declaration)) { if (!declaration.statements.length) { return emptyObjectType; @@ -50951,7 +51441,7 @@ function createTypeChecker(host) { baseType ); const diagnostic = chainDiagnosticMessages(elaboration, Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members, typeToString(reducedBaseType)); - diagnostics.add(createDiagnosticForNodeFromMessageChain(baseTypeNode.expression, diagnostic)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(baseTypeNode.expression), baseTypeNode.expression, diagnostic)); return type.resolvedBaseTypes = emptyArray; } if (type === reducedBaseType || hasBaseType(reducedBaseType, type)) { @@ -51352,7 +51842,7 @@ function createTypeChecker(host) { const links = getSymbolLinks(symbol); if (!links[resolutionKind]) { const isStatic2 = resolutionKind === "resolvedExports" /* resolvedExports */; - const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol) : symbol.exports; + const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol).exports : symbol.exports; links[resolutionKind] = earlySymbols || emptySymbols; const lateSymbols = createSymbolTable(); for (const decl of symbol.declarations || emptyArray) { @@ -52341,7 +52831,7 @@ function createTypeChecker(host) { } function isConstTypeVariable(type) { var _a2; - return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); + return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || isGenericTupleType(type) && findIndex(getTypeArguments(type), (t, i) => !!(type.target.elementFlags[i] & 8 /* Variadic */) && isConstTypeVariable(t)) >= 0 || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); } function getConstraintOfIndexedAccess(type) { return hasNonCircularBaseConstraint(type) ? getConstraintFromIndexedAccess(type) : void 0; @@ -53565,6 +54055,12 @@ function createTypeChecker(host) { } return result & 458752 /* PropagatingFlags */; } + function tryCreateTypeReference(target, typeArguments) { + if (some(typeArguments) && target === emptyGenericType) { + return unknownType; + } + return createTypeReference(target, typeArguments); + } function createTypeReference(target, typeArguments) { const id = getTypeListId(typeArguments); let type = target.instantiations.get(id); @@ -54259,6 +54755,78 @@ function createTypeChecker(host) { false )) || emptyObjectType; } + function getGlobalClassDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassDecoratorContextType != null ? deferredGlobalClassDecoratorContextType : deferredGlobalClassDecoratorContextType = getGlobalType( + "ClassDecoratorContext", + /*arity*/ + 1, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassMethodDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassMethodDecoratorContextType != null ? deferredGlobalClassMethodDecoratorContextType : deferredGlobalClassMethodDecoratorContextType = getGlobalType( + "ClassMethodDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassGetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassGetterDecoratorContextType != null ? deferredGlobalClassGetterDecoratorContextType : deferredGlobalClassGetterDecoratorContextType = getGlobalType( + "ClassGetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassSetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassSetterDecoratorContextType != null ? deferredGlobalClassSetterDecoratorContextType : deferredGlobalClassSetterDecoratorContextType = getGlobalType( + "ClassSetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorContextType != null ? deferredGlobalClassAccessorDecoratorContextType : deferredGlobalClassAccessorDecoratorContextType = getGlobalType( + "ClassAccessorDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorTargetType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorTargetType != null ? deferredGlobalClassAccessorDecoratorTargetType : deferredGlobalClassAccessorDecoratorTargetType = getGlobalType( + "ClassAccessorDecoratorTarget", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorResultType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorResultType != null ? deferredGlobalClassAccessorDecoratorResultType : deferredGlobalClassAccessorDecoratorResultType = getGlobalType( + "ClassAccessorDecoratorResult", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassFieldDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassFieldDecoratorContextType != null ? deferredGlobalClassFieldDecoratorContextType : deferredGlobalClassFieldDecoratorContextType = getGlobalType( + "ClassFieldDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } function getGlobalNaNSymbol() { return deferredGlobalNaNSymbol || (deferredGlobalNaNSymbol = getGlobalValueSymbol( "NaN", @@ -55569,7 +56137,7 @@ function createTypeChecker(host) { typeToString(fullIndexType), typeToString(objectType) ); - diagnostics.add(createDiagnosticForNodeFromMessageChain(accessExpression, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(accessExpression), accessExpression, errorInfo)); } } } @@ -57983,7 +58551,7 @@ function createTypeChecker(host) { } } } - const diag2 = createDiagnosticForNodeFromMessageChain(errorNode, errorInfo, relatedInformation); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, errorInfo, relatedInformation); if (relatedInfo) { addRelatedInfo(diag2, ...relatedInfo); } @@ -61026,19 +61594,22 @@ function createTypeChecker(host) { break; case 166 /* Parameter */: const param = declaration; - if (isIdentifier(param.name) && (isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( - param, - param.name.escapedText, - 788968 /* Type */, - void 0, - param.name.escapedText, - /*isUse*/ - true - ) || param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) { - const newName = "arg" + param.parent.parameters.indexOf(param); - const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); - errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); - return; + if (isIdentifier(param.name)) { + const originalKeywordKind = identifierToKeywordKind(param.name); + if ((isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( + param, + param.name.escapedText, + 788968 /* Type */, + void 0, + param.name.escapedText, + /*isUse*/ + true + ) || originalKeywordKind && isTypeNodeKind(originalKeywordKind))) { + const newName = "arg" + param.parent.parameters.indexOf(param); + const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); + errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); + return; + } } diagnostic = declaration.dotDotDotToken ? noImplicitAny ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage : noImplicitAny ? Diagnostics.Parameter_0_implicitly_has_an_1_type : Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; break; @@ -61226,6 +61797,10 @@ function createTypeChecker(host) { function isTypeParameterAtTopLevel(type, typeParameter) { return !!(type === typeParameter || type.flags & 3145728 /* UnionOrIntersection */ && some(type.types, (t) => isTypeParameterAtTopLevel(t, typeParameter)) || type.flags & 16777216 /* Conditional */ && (getTrueTypeFromConditionalType(type) === typeParameter || getFalseTypeFromConditionalType(type) === typeParameter)); } + function isTypeParameterAtTopLevelInReturnType(signature, typeParameter) { + const typePredicate = getTypePredicateOfSignature(signature); + return typePredicate ? !!typePredicate.type && isTypeParameterAtTopLevel(typePredicate.type, typeParameter) : isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), typeParameter); + } function createEmptyObjectTypeFromStringLiteral(type) { const members = createSymbolTable(); forEachType(type, (t) => { @@ -61949,7 +62524,7 @@ function createTypeChecker(host) { } else { const middleLength = targetArity - startLength - endLength; if (middleLength === 2) { - if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */) { const targetInfo = getInferenceInfoForType(elementTypes[startLength]); if (targetInfo && targetInfo.impliedArity !== void 0) { inferFromTypes(sliceTupleType(source, startLength, endLength + sourceArity - targetInfo.impliedArity), elementTypes[startLength]); @@ -61963,7 +62538,7 @@ function createTypeChecker(host) { inferFromTypes(sliceTupleType(source, startLength, sourceArity - (startLength + impliedArity)), elementTypes[startLength]); inferFromTypes(getElementTypeOfSliceOfTupleType(source, startLength + impliedArity, endLength), elementTypes[startLength + 1]); } - } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */) { const param = (_b = getInferenceInfoForType(elementTypes[startLength + 1])) == null ? void 0 : _b.typeParameter; const constraint = param && getBaseConstraintOfType(param); if (constraint && isTupleType(constraint) && !constraint.target.hasRestElement) { @@ -61983,10 +62558,10 @@ function createTypeChecker(host) { } } else if (middleLength === 1 && elementFlags[startLength] & 8 /* Variadic */) { const endsInOptional = target.target.elementFlags[targetArity - 1] & 2 /* Optional */; - const sourceSlice = isTupleType(source) ? sliceTupleType(source, startLength, endLength) : createArrayType(getTypeArguments(source)[0]); + const sourceSlice = sliceTupleType(source, startLength, endLength); inferWithPriority(sourceSlice, elementTypes[startLength], endsInOptional ? 2 /* SpeculativeTuple */ : 0); } else if (middleLength === 1 && elementFlags[startLength] & 4 /* Rest */) { - const restType = isTupleType(source) ? getElementTypeOfSliceOfTupleType(source, startLength, endLength) : getTypeArguments(source)[0]; + const restType = getElementTypeOfSliceOfTupleType(source, startLength, endLength); if (restType) { inferFromTypes(restType, elementTypes[startLength]); } @@ -62097,7 +62672,7 @@ function createTypeChecker(host) { function getCovariantInference(inference, signature) { const candidates = unionObjectAndArrayLiteralCandidates(inference.candidates); const primitiveConstraint = hasPrimitiveConstraint(inference.typeParameter) || isConstTypeVariable(inference.typeParameter); - const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), inference.typeParameter)); + const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevelInReturnType(signature, inference.typeParameter)); const baseCandidates = primitiveConstraint ? sameMap(candidates, getRegularTypeOfLiteralType) : widenLiteralTypes ? sameMap(candidates, getWidenedLiteralType) : candidates; const unwidenedType = inference.priority & 416 /* PriorityImpliesCombination */ ? getUnionType(baseCandidates, 2 /* Subtype */) : getCommonSupertype(baseCandidates); return getWidenedType(unwidenedType); @@ -64152,7 +64727,7 @@ function createTypeChecker(host) { return getNonMissingTypeOfSymbol(symbol); } function getControlFlowContainer(node) { - return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 169 /* PropertyDeclaration */); + return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 295 /* CatchClause */ || node2.kind === 169 /* PropertyDeclaration */); } function isSymbolAssigned(symbol) { if (!symbol.valueDeclaration) { @@ -64234,6 +64809,9 @@ function createTypeChecker(host) { }); } function markAliasReferenced(symbol, location) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } if (isNonLocalAlias( symbol, /*excludes*/ @@ -64241,7 +64819,7 @@ function createTypeChecker(host) { ) && !isInTypeQuery(location) && !getTypeOnlyAliasDeclaration(symbol, 111551 /* Value */)) { const target = resolveAlias(symbol); if (getAllSymbolFlags(target) & (111551 /* Value */ | 1048576 /* ExportValue */)) { - if (compilerOptions.isolatedModules || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { + if (getIsolatedModules(compilerOptions) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { markAliasSymbolAsReferenced(symbol); } else { markConstEnumAliasAsReferenced(symbol); @@ -64250,6 +64828,7 @@ function createTypeChecker(host) { } } function getNarrowedTypeOfSymbol(symbol, location) { + var _a2; const type = getTypeOfSymbol(symbol); const declaration = symbol.valueDeclaration; if (declaration) { @@ -64285,7 +64864,7 @@ function createTypeChecker(host) { if (func.parameters.length >= 2 && isContextSensitiveFunctionOrObjectLiteralMethod(func)) { const contextualSignature = getContextualSignature(func); if (contextualSignature && contextualSignature.parameters.length === 1 && signatureHasRestParameter(contextualSignature)) { - const restType = getReducedApparentType(getTypeOfSymbol(contextualSignature.parameters[0])); + const restType = getReducedApparentType(instantiateType(getTypeOfSymbol(contextualSignature.parameters[0]), (_a2 = getInferenceContext(func)) == null ? void 0 : _a2.nonFixingMapper)); if (restType.flags & 1048576 /* Union */ && everyType(restType, isTupleType) && !isSymbolAssigned(symbol)) { const narrowedType = getFlowTypeOfReference( func, @@ -64338,7 +64917,7 @@ function createTypeChecker(host) { } let declaration = localOrExportSymbol.valueDeclaration; if (declaration && localOrExportSymbol.flags & 32 /* Class */) { - if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(declaration)) { + if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(legacyDecorators, declaration)) { let container = getContainingClass(node); while (container !== void 0) { if (container === declaration && container.name !== node) { @@ -64409,13 +64988,14 @@ function createTypeChecker(host) { const isParameter2 = getRootDeclaration(declaration).kind === 166 /* Parameter */; const declarationContainer = getControlFlowContainer(declaration); let flowContainer = getControlFlowContainer(node); + const isCatch = flowContainer.kind === 295 /* CatchClause */; const isOuterVariable = flowContainer !== declarationContainer; const isSpreadDestructuringAssignmentTarget = node.parent && node.parent.parent && isSpreadAssignment(node.parent) && isDestructuringAssignmentTarget(node.parent.parent); const isModuleExports = symbol.flags & 134217728 /* ModuleExports */; while (flowContainer !== declarationContainer && (flowContainer.kind === 215 /* FunctionExpression */ || flowContainer.kind === 216 /* ArrowFunction */ || isObjectLiteralOrClassExpressionMethodOrAccessor(flowContainer)) && (isConstVariable(localOrExportSymbol) && type !== autoArrayType || isParameter2 && !isSymbolAssigned(localOrExportSymbol))) { flowContainer = getControlFlowContainer(flowContainer); } - const assumeInitialized = isParameter2 || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; + const assumeInitialized = isParameter2 || isCatch || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; const initialType = assumeInitialized ? isParameter2 ? removeOptionalityFromDeclaredType(type, declaration) : type : type === autoType || type === autoArrayType ? undefinedType : getOptionalType(type); const flowType = getFlowTypeOfReference(node, type, initialType, flowContainer); if (!isEvolvingArrayOperationTarget(node) && (type === autoType || type === autoArrayType)) { @@ -64562,7 +65142,7 @@ function createTypeChecker(host) { } } function checkThisInStaticClassFieldInitializerInDecoratedClass(thisExpression, container) { - if (isPropertyDeclaration(container) && hasStaticModifier(container) && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { + if (isPropertyDeclaration(container) && hasStaticModifier(container) && legacyDecorators && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { error(thisExpression, Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class); } } @@ -64940,7 +65520,7 @@ function createTypeChecker(host) { } } function getContextualTypeForVariableLikeDeclaration(declaration, contextFlags) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration) || (isInJSFile(declaration) ? tryGetJSDocSatisfiesTypeNode(declaration) : void 0); if (typeNode) { return getTypeFromTypeNode(typeNode); } @@ -65106,6 +65686,10 @@ function createTypeChecker(host) { const restIndex = signature.parameters.length - 1; return signatureHasRestParameter(signature) && argIndex >= restIndex ? getIndexedAccessType(getTypeOfSymbol(signature.parameters[restIndex]), getNumberLiteralType(argIndex - restIndex), 256 /* Contextual */) : getTypeAtPosition(signature, argIndex); } + function getContextualTypeForDecorator(decorator) { + const signature = getDecoratorCallSignature(decorator); + return signature ? getOrCreateTypeFromSignature(signature) : void 0; + } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { if (template.parent.kind === 212 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); @@ -65506,7 +66090,9 @@ function createTypeChecker(host) { } const index = findContextualNode(node); if (index >= 0) { - return contextualTypes[index]; + const cached = contextualTypes[index]; + if (cached || !contextFlags) + return cached; } const { parent } = node; switch (parent.kind) { @@ -65526,6 +66112,8 @@ function createTypeChecker(host) { case 210 /* CallExpression */: case 211 /* NewExpression */: return getContextualTypeForArgument(parent, node); + case 167 /* Decorator */: + return getContextualTypeForDecorator(parent); case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: return isConstTypeReference(parent.type) ? getContextualType(parent, contextFlags) : getTypeFromTypeNode(parent.type); @@ -65547,8 +66135,16 @@ function createTypeChecker(host) { Debug.assert(parent.parent.kind === 225 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent.parent, node); case 214 /* ParenthesizedExpression */: { - const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : void 0; - return !tag ? getContextualType(parent, contextFlags) : isJSDocTypeTag(tag) && isConstTypeReference(tag.typeExpression.type) ? getContextualType(parent, contextFlags) : getTypeFromTypeNode(tag.typeExpression.type); + if (isInJSFile(parent)) { + if (isJSDocSatisfiesExpression(parent)) { + return getTypeFromTypeNode(getJSDocSatisfiesExpressionType(parent)); + } + const typeTag = getJSDocTypeTag(parent); + if (typeTag && !isConstTypeReference(typeTag.typeExpression.type)) { + return getTypeFromTypeNode(typeTag.typeExpression.type); + } + } + return getContextualType(parent, contextFlags); } case 232 /* NonNullExpression */: return getContextualType(parent, contextFlags); @@ -66700,7 +67296,7 @@ function createTypeChecker(host) { } if (jsxFactorySym) { jsxFactorySym.isReferenced = 67108863 /* All */; - if (jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { + if (!compilerOptions.verbatimModuleSyntax && jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { markAliasSymbolAsReferenced(jsxFactorySym); } } @@ -67157,7 +67753,7 @@ function createTypeChecker(host) { node.kind === 163 /* QualifiedName */ ); } - if (isIdentifier(left) && parentSymbol && (compilerOptions.isolatedModules || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { + if (isIdentifier(left) && parentSymbol && (getIsolatedModules(compilerOptions) || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { markAliasReferenced(parentSymbol, node); } let propType; @@ -67366,7 +67962,7 @@ function createTypeChecker(host) { } } } - const resultDiagnostic = createDiagnosticForNodeFromMessageChain(propNode, errorInfo); + const resultDiagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(propNode), propNode, errorInfo); if (relatedInfo) { addRelatedInfo(resultDiagnostic, relatedInfo); } @@ -68228,35 +68824,22 @@ function createTypeChecker(host) { return args; } function getEffectiveDecoratorArguments(node) { - const parent = node.parent; const expr = node.expression; - switch (parent.kind) { - case 260 /* ClassDeclaration */: - case 228 /* ClassExpression */: - return [ - createSyntheticExpression(expr, getTypeOfSymbol(getSymbolOfDeclaration(parent))) - ]; - case 166 /* Parameter */: - const func = parent.parent; - return [ - createSyntheticExpression(expr, parent.parent.kind === 173 /* Constructor */ ? getTypeOfSymbol(getSymbolOfDeclaration(func)) : errorType), - createSyntheticExpression(expr, anyType), - createSyntheticExpression(expr, numberType) - ]; - case 169 /* PropertyDeclaration */: - case 171 /* MethodDeclaration */: - case 174 /* GetAccessor */: - case 175 /* SetAccessor */: - const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent) || hasAccessorModifier(parent)); - return [ - createSyntheticExpression(expr, getParentTypeOfClassElement(parent)), - createSyntheticExpression(expr, getClassElementPropertyKeyType(parent)), - createSyntheticExpression(expr, hasPropDesc ? createTypedPropertyDescriptorType(getTypeOfNode(parent)) : anyType) - ]; + const signature = getDecoratorCallSignature(node); + if (signature) { + const args = []; + for (const param of signature.parameters) { + const type = getTypeOfSymbol(param); + args.push(createSyntheticExpression(expr, type)); + } + return args; } return Debug.fail(); } function getDecoratorArgumentCount(node, signature) { + return compilerOptions.experimentalDecorators ? getLegacyDecoratorArgumentCount(node, signature) : 2; + } + function getLegacyDecoratorArgumentCount(node, signature) { switch (node.parent.kind) { case 260 /* ClassDeclaration */: case 228 /* ClassExpression */: @@ -68291,9 +68874,15 @@ function createTypeChecker(host) { function getDiagnosticForCallNode(node, message, arg0, arg1, arg2, arg3) { if (isCallExpression(node)) { const { sourceFile, start, length: length2 } = getDiagnosticSpanForCallNode(node); - return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForFileFromMessageChain(sourceFile, message); } else { - return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, message); } } function isPromiseResolveArityError(node) { @@ -68317,7 +68906,7 @@ function createTypeChecker(host) { ); return constructorSymbol === globalPromiseSymbol; } - function getArgumentArityError(node, signatures, args) { + function getArgumentArityError(node, signatures, args, headMessage) { var _a2; const spreadIndex = getSpreadArgumentIndex(args); if (spreadIndex > -1) { @@ -68347,11 +68936,36 @@ function createTypeChecker(host) { if (isVoidPromiseError && isInJSFile(node)) { return getDiagnosticForCallNode(node, Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); } - const error2 = hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; + const error2 = isDecorator(node) ? hasRestParameter2 ? Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0 : Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0 : hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; if (min2 < args.length && args.length < max) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, + args.length, + maxBelow, + minAbove + ); + chain = chainDiagnosticMessages(chain, headMessage); + return getDiagnosticForCallNode(node, chain); + } return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, args.length, maxBelow, minAbove); } else if (args.length < min2) { - const diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + let diagnostic; + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + diagnostic = getDiagnosticForCallNode(node, chain); + } else { + diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + } const parameter = (_a2 = closestSignature == null ? void 0 : closestSignature.declaration) == null ? void 0 : _a2.parameters[closestSignature.thisParameter ? args.length + 1 : args.length]; if (parameter) { const parameterError = createDiagnosticForNode( @@ -68370,15 +68984,37 @@ function createTypeChecker(host) { end++; } setTextRangePosEnd(errorSpan, pos, end); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), errorSpan, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), errorSpan, error2, parameterRange, args.length); } } - function getTypeArgumentArityError(node, signatures, typeArguments) { + function getTypeArgumentArityError(node, signatures, typeArguments, headMessage) { const argCount = typeArguments.length; if (signatures.length === 1) { const sig = signatures[0]; const min2 = getMinTypeArgumentCount(sig.typeParameters); const max = length(sig.typeParameters); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + min2 < max ? min2 + "-" + max : min2, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, min2 < max ? min2 + "-" + max : min2, argCount); } let belowArgCount = -Infinity; @@ -68393,11 +69029,34 @@ function createTypeChecker(host) { } } if (belowArgCount !== -Infinity && aboveArgCount !== Infinity) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, + argCount, + belowArgCount, + aboveArgCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, argCount, belowArgCount, aboveArgCount); } + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + belowArgCount === -Infinity ? aboveArgCount : belowArgCount, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, belowArgCount === -Infinity ? aboveArgCount : belowArgCount, argCount); } - function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, fallbackError) { + function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, headMessage) { const isTaggedTemplate = node.kind === 212 /* TaggedTemplateExpression */; const isDecorator2 = node.kind === 167 /* Decorator */; const isJsxOpeningOrSelfClosingElement = isJsxOpeningLikeElement(node); @@ -68446,6 +69105,9 @@ function createTypeChecker(host) { chain = chainDiagnosticMessages(chain, Diagnostics.The_last_overload_gave_the_following_error); chain = chainDiagnosticMessages(chain, Diagnostics.No_overload_matches_this_call); } + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const diags = getSignatureApplicabilityError( node, args, @@ -68506,39 +69168,40 @@ function createTypeChecker(host) { } const diags = max > 1 ? allDiagnostics[minIndex] : flatten(allDiagnostics); Debug.assert(diags.length > 0, "No errors reported for 3 or fewer overload signatures"); - const chain = chainDiagnosticMessages( + let chain = chainDiagnosticMessages( map(diags, createDiagnosticMessageChainFromDiagnostic), Diagnostics.No_overload_matches_this_call ); + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const related = [...flatMap(diags, (d) => d.relatedInformation)]; let diag2; if (every(diags, (d) => d.start === diags[0].start && d.length === diags[0].length && d.file === diags[0].file)) { const { file, start, length: length2 } = diags[0]; diag2 = { file, start, length: length2, code: chain.code, category: chain.category, messageText: chain, relatedInformation: related }; } else { - diag2 = createDiagnosticForNodeFromMessageChain(node, chain, related); + diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, chain, related); } addImplementationSuccessElaboration(candidatesForArgumentError[0], diag2); diagnostics.add(diag2); } } else if (candidateForArgumentArityError) { - diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args)); + diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args, headMessage)); } else if (candidateForTypeArgumentError) { checkTypeArguments( candidateForTypeArgumentError, node.typeArguments, /*reportErrors*/ true, - fallbackError + headMessage ); } else { const signaturesWithCorrectTypeArgumentArity = filter(signatures, (s) => hasCorrectTypeArgumentArity(s, typeArguments)); if (signaturesWithCorrectTypeArgumentArity.length === 0) { - diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments)); - } else if (!isDecorator2) { - diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args)); - } else if (fallbackError) { - diagnostics.add(getDiagnosticForCallNode(node, fallbackError)); + diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments, headMessage)); + } else { + diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args, headMessage)); } } } @@ -69041,7 +69704,7 @@ function createTypeChecker(host) { } function invocationError(errorTarget, apparentType, kind, relatedInformation) { const { messageChain, relatedMessage: relatedInfo } = invocationErrorDetails(errorTarget, apparentType, kind); - const diagnostic = createDiagnosticForNodeFromMessageChain(errorTarget, messageChain); + const diagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorTarget), errorTarget, messageChain); if (relatedInfo) { addRelatedInfo(diagnostic, createDiagnosticForNode(errorTarget, relatedInfo)); } @@ -69122,7 +69785,7 @@ function createTypeChecker(host) { if (isUntypedFunctionCall(funcType, apparentType, callSignatures.length, numConstructSignatures)) { return resolveUntypedCall(node); } - if (isPotentiallyUncalledDecorator(node, callSignatures)) { + if (isPotentiallyUncalledDecorator(node, callSignatures) && !isParenthesizedExpression(node.expression)) { const nodeStr = getTextOfNode( node.expression, /*includeTrivia*/ @@ -69135,7 +69798,7 @@ function createTypeChecker(host) { if (!callSignatures.length) { const errorDetails = invocationErrorDetails(node.expression, apparentType, 0 /* Call */); const messageChain = chainDiagnosticMessages(errorDetails.messageChain, headMessage); - const diag2 = createDiagnosticForNodeFromMessageChain(node.expression, messageChain); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node.expression), node.expression, messageChain); if (errorDetails.relatedMessage) { addRelatedInfo(diag2, createDiagnosticForNode(node.expression, errorDetails.relatedMessage)); } @@ -69752,12 +70415,15 @@ function createTypeChecker(host) { } function checkSatisfiesExpression(node) { checkSourceElement(node.type); - const exprType = checkExpression(node.expression); - const targetType = getTypeFromTypeNode(node.type); + return checkSatisfiesExpressionWorker(node.expression, node.type); + } + function checkSatisfiesExpressionWorker(expression, target, checkMode) { + const exprType = checkExpression(expression, checkMode); + const targetType = getTypeFromTypeNode(target); if (isErrorType(targetType)) { return targetType; } - checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, node.type, node.expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); + checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, target, expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); return exprType; } function checkMetaProperty(node) { @@ -70095,6 +70761,243 @@ function createTypeChecker(host) { } } } + function createClassDecoratorContextType(classType) { + return tryCreateTypeReference(getGlobalClassDecoratorContextType( + /*reportErrors*/ + true + ), [classType]); + } + function createClassMethodDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassMethodDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassGetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassGetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassSetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassSetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassFieldDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2) { + const key = `${isPrivate ? "p" : "P"}${isStatic2 ? "s" : "S"}${nameType.id}`; + let overrideType = decoratorContextOverrideTypeCache.get(key); + if (!overrideType) { + const members = createSymbolTable(); + members.set("name", createProperty("name", nameType)); + members.set("private", createProperty("private", isPrivate ? trueType : falseType)); + members.set("static", createProperty("static", isStatic2 ? trueType : falseType)); + overrideType = createAnonymousType( + /*symbol*/ + void 0, + members, + emptyArray, + emptyArray, + emptyArray + ); + decoratorContextOverrideTypeCache.set(key, overrideType); + } + return overrideType; + } + function createClassMemberDecoratorContextTypeForNode(node, thisType, valueType) { + const isStatic2 = hasStaticModifier(node); + const isPrivate = isPrivateIdentifier(node.name); + const nameType = isPrivate ? getStringLiteralType(idText(node.name)) : getLiteralTypeFromPropertyName(node.name); + const contextType = isMethodDeclaration(node) ? createClassMethodDecoratorContextType(thisType, valueType) : isGetAccessorDeclaration(node) ? createClassGetterDecoratorContextType(thisType, valueType) : isSetAccessorDeclaration(node) ? createClassSetterDecoratorContextType(thisType, valueType) : isAutoAccessorPropertyDeclaration(node) ? createClassAccessorDecoratorContextType(thisType, valueType) : isPropertyDeclaration(node) ? createClassFieldDecoratorContextType(thisType, valueType) : Debug.failBadSyntaxKind(node); + const overrideType = getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2); + return getIntersectionType([contextType, overrideType]); + } + function createClassAccessorDecoratorTargetType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorTargetType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorResultType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorResultType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorInitializerMutatorType(thisType, valueType) { + const thisParam = createParameter("this", thisType); + const valueParam = createParameter("value", valueType); + return createFunctionType( + /*typeParameters*/ + void 0, + thisParam, + [valueParam], + valueType, + /*typePredicate*/ + void 0, + 1 + ); + } + function createESDecoratorCallSignature(targetType, contextType, nonOptionalReturnType) { + const targetParam = createParameter("target", targetType); + const contextParam = createParameter("context", contextType); + const returnType = getUnionType([nonOptionalReturnType, voidType]); + return createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, contextParam], + returnType + ); + } + function getESDecoratorCallSignature(decorator) { + const { parent } = decorator; + const links = getNodeLinks(parent); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const contextType = createClassDecoratorContextType(targetType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, targetType); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: { + const node = parent; + if (!isClassLike(node.parent)) + break; + const valueType = isMethodDeclaration(node) ? getOrCreateTypeFromSignature(getSignatureFromDeclaration(node)) : getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + case 169 /* PropertyDeclaration */: { + const node = parent; + if (!isClassLike(node.parent)) + break; + const valueType = getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = hasAccessorModifier(node) ? createClassAccessorDecoratorTargetType(thisType, valueType) : undefinedType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = hasAccessorModifier(node) ? createClassAccessorDecoratorResultType(thisType, valueType) : createClassFieldDecoratorInitializerMutatorType(thisType, valueType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getLegacyDecoratorCallSignature(decorator) { + const { parent } = decorator; + const links = getNodeLinks(parent); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const targetParam = createParameter("target", targetType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam], + getUnionType([targetType, voidType]) + ); + break; + } + case 166 /* Parameter */: { + const node = parent; + if (!isConstructorDeclaration(node.parent) && !(isMethodDeclaration(node.parent) || isSetAccessorDeclaration(node.parent) && isClassLike(node.parent.parent))) { + break; + } + if (getThisParameter(node.parent) === node) { + break; + } + const index = getThisParameter(node.parent) ? node.parent.parameters.indexOf(node) - 1 : node.parent.parameters.indexOf(node); + Debug.assert(index >= 0); + const targetType = isConstructorDeclaration(node.parent) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent.parent)) : getParentTypeOfClassElement(node.parent); + const keyType = isConstructorDeclaration(node.parent) ? undefinedType : getClassElementPropertyKeyType(node.parent); + const indexType = getNumberLiteralType(index); + const targetParam = createParameter("target", targetType); + const keyParam = createParameter("propertyKey", keyType); + const indexParam = createParameter("parameterIndex", indexType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, indexParam], + voidType + ); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: + case 169 /* PropertyDeclaration */: { + const node = parent; + if (!isClassLike(node.parent)) + break; + const targetType = getParentTypeOfClassElement(node); + const targetParam = createParameter("target", targetType); + const keyType = getClassElementPropertyKeyType(node); + const keyParam = createParameter("propertyKey", keyType); + const returnType = isPropertyDeclaration(node) ? voidType : createTypedPropertyDescriptorType(getTypeOfNode(node)); + const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent) || hasAccessorModifier(parent)); + if (hasPropDesc) { + const descriptorType = createTypedPropertyDescriptorType(getTypeOfNode(node)); + const descriptorParam = createParameter("descriptor", descriptorType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, descriptorParam], + getUnionType([returnType, voidType]) + ); + } else { + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam], + getUnionType([returnType, voidType]) + ); + } + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getDecoratorCallSignature(decorator) { + return legacyDecorators ? getLegacyDecoratorCallSignature(decorator) : getESDecoratorCallSignature(decorator); + } function createPromiseType(promisedType) { const globalPromiseType = getGlobalPromiseType( /*reportErrors*/ @@ -71164,12 +72067,12 @@ function createTypeChecker(host) { void 0 ); const operator = operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { - if (operator === 55 /* AmpersandAmpersandToken */) { - let parent = node.parent; - while (parent.kind === 214 /* ParenthesizedExpression */ || isBinaryExpression(parent) && (parent.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || parent.operatorToken.kind === 56 /* BarBarToken */)) { - parent = parent.parent; - } + if (isLogicalOrCoalescingBinaryOperator(operator)) { + let parent = node.parent; + while (parent.kind === 214 /* ParenthesizedExpression */ || isLogicalOrCoalescingBinaryExpression(parent)) { + parent = parent.parent; + } + if (operator === 55 /* AmpersandAmpersandToken */ || isIfStatement(parent)) { checkTestingKnownTruthyCallableOrAwaitableType(node.left, leftType, isIfStatement(parent) ? parent.thenStatement : void 0); } checkTruthinessOfType(leftType, node.left); @@ -71246,7 +72149,7 @@ function createTypeChecker(host) { return checkDestructuringAssignment(left, checkExpression(right, checkMode), checkMode, right.kind === 108 /* ThisKeyword */); } let leftType; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { + if (isLogicalOrCoalescingBinaryOperator(operator)) { leftType = checkTruthinessExpression(left, checkMode); } else { leftType = checkExpression(left, checkMode); @@ -71397,7 +72300,14 @@ function createTypeChecker(host) { if (checkForDisallowedESSymbolOperand(operator)) { leftType = getBaseTypeOfLiteralType(checkNonNullType(leftType, left)); rightType = getBaseTypeOfLiteralType(checkNonNullType(rightType, right)); - reportOperatorErrorUnless((left2, right2) => isTypeComparableTo(left2, right2) || isTypeComparableTo(right2, left2) || isTypeAssignableTo(left2, numberOrBigIntType) && isTypeAssignableTo(right2, numberOrBigIntType)); + reportOperatorErrorUnless((left2, right2) => { + if (isTypeAny(left2) || isTypeAny(right2)) { + return true; + } + const leftAssignableToNumber = isTypeAssignableTo(left2, numberOrBigIntType); + const rightAssignableToNumber = isTypeAssignableTo(right2, numberOrBigIntType); + return leftAssignableToNumber && rightAssignableToNumber || !leftAssignableToNumber && !rightAssignableToNumber && areTypesComparable(left2, right2); + }); } return booleanType; case 34 /* EqualsEqualsToken */: @@ -71530,7 +72440,7 @@ function createTypeChecker(host) { left, Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access - ) && (!isIdentifier(left) || unescapeLeadingUnderscores(left.escapedText) !== "exports")) { + )) { let headMessage; if (exactOptionalPropertyTypes && isPropertyAccessExpression(left) && maybeTypeOfKind(valueType, 32768 /* Undefined */)) { const target = getTypeOfPropertyOfType(getTypeOfExpression(left.expression), left.name.escapedText); @@ -71789,6 +72699,12 @@ function createTypeChecker(host) { } function checkDeclarationInitializer(declaration, checkMode, contextualType) { const initializer = getEffectiveInitializer(declaration); + if (isInJSFile(declaration)) { + const typeNode = tryGetJSDocSatisfiesTypeNode(declaration); + if (typeNode) { + return checkSatisfiesExpressionWorker(initializer, typeNode, checkMode); + } + } const type = getQuickTypeOfExpression(initializer) || (contextualType ? checkExpressionWithContextualType( initializer, contextualType, @@ -72107,18 +73023,23 @@ function createTypeChecker(host) { if (!ok) { error(node, Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query); } - if (compilerOptions.isolatedModules) { + if (getIsolatedModules(compilerOptions)) { Debug.assert(!!(type.symbol.flags & 128 /* ConstEnum */)); const constEnumDeclaration = type.symbol.valueDeclaration; if (constEnumDeclaration.flags & 16777216 /* Ambient */) { - error(node, Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_access_ambient_const_enums_when_0_is_enabled, isolatedModulesLikeFlagName); } } } function checkParenthesizedExpression(node, checkMode) { - if (hasJSDocNodes(node) && isJSDocTypeAssertion(node)) { - const type = getJSDocTypeAssertionType(node); - return checkAssertionWorker(type, type, node.expression, checkMode); + if (hasJSDocNodes(node)) { + if (isJSDocSatisfiesExpression(node)) { + return checkSatisfiesExpressionWorker(node.expression, getJSDocSatisfiesExpressionType(node), checkMode); + } + if (isJSDocTypeAssertion(node)) { + const type = getJSDocTypeAssertionType(node); + return checkAssertionWorker(type, type, node.expression, checkMode); + } } return checkExpression(node.expression, checkMode); } @@ -72281,7 +73202,7 @@ function createTypeChecker(host) { } } function checkParameter(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkVariableLikeDeclaration(node); const func = getContainingFunction(node); if (hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */)) { @@ -72602,7 +73523,7 @@ function createTypeChecker(host) { } } function checkPropertyDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarProperty(node)) + if (!checkGrammarModifiers(node) && !checkGrammarProperty(node)) checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); setNodeLinksForPrivateIdentifierScope(node); @@ -72646,7 +73567,7 @@ function createTypeChecker(host) { } } function checkClassStaticBlockDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); forEachChild(node, checkSourceElement); } function checkConstructorDeclaration(node) { @@ -72826,8 +73747,11 @@ function createTypeChecker(host) { } function checkTypeReferenceNode(node) { checkGrammarTypeArguments(node, node.typeArguments); - if (node.kind === 180 /* TypeReference */ && node.typeName.jsdocDotPos !== void 0 && !isInJSFile(node) && !isInJSDoc(node)) { - grammarErrorAtPos(node, node.typeName.jsdocDotPos, 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + if (node.kind === 180 /* TypeReference */ && !isInJSFile(node) && !isInJSDoc(node) && node.typeArguments && node.typeName.end !== node.typeArguments.pos) { + const sourceFile = getSourceFileOfNode(node); + if (scanTokenAtPosition(sourceFile, node.typeName.end) === 24 /* DotToken */) { + grammarErrorAtPos(node, skipTrivia(sourceFile.text, node.typeName.end), 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + } } forEach(node.typeArguments, checkSourceElement); const type = getTypeFromTypeReference(node); @@ -73520,7 +74444,7 @@ function createTypeChecker(host) { chain = chainDiagnosticMessages(chain, Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1, typeToString(type), typeToString(thisTypeForErrorOut.value)); } chain = chainDiagnosticMessages(chain, diagnosticMessage, arg0); - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chain)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chain)); } return void 0; } @@ -73611,36 +74535,66 @@ function createTypeChecker(host) { if (returnType.flags & 1 /* Any */) { return; } + const decoratorSignature = getDecoratorCallSignature(node); + if (!(decoratorSignature == null ? void 0 : decoratorSignature.resolvedReturnType)) + return; let headMessage; - let expectedReturnType; + const expectedReturnType = decoratorSignature.resolvedReturnType; switch (node.parent.kind) { case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const classSymbol = getSymbolOfDeclaration(node.parent); - const classConstructorType = getTypeOfSymbol(classSymbol); - expectedReturnType = getUnionType([classConstructorType, voidType]); break; case 169 /* PropertyDeclaration */: + if (!legacyDecorators) { + headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + break; + } case 166 /* Parameter */: headMessage = Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any; - expectedReturnType = voidType; break; case 171 /* MethodDeclaration */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const methodType = getTypeOfNode(node.parent); - const descriptorType = createTypedPropertyDescriptorType(methodType); - expectedReturnType = getUnionType([descriptorType, voidType]); break; default: - return Debug.fail(); + return Debug.failBadSyntaxKind(node.parent); } - checkTypeAssignableTo( - returnType, - expectedReturnType, - node, - headMessage + checkTypeAssignableTo(returnType, expectedReturnType, node.expression, headMessage); + } + function createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount = parameters.length, flags = 0 /* None */) { + const decl = factory.createFunctionTypeNode( + /*typeParameters*/ + void 0, + emptyArray, + factory.createKeywordTypeNode(131 /* AnyKeyword */) + ); + return createSignature(decl, typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + } + function createFunctionType(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags) { + const signature = createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + return getOrCreateTypeFromSignature(signature); + } + function createGetterFunctionType(type) { + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + emptyArray, + type + ); + } + function createSetterFunctionType(type) { + const valueParam = createParameter("value", type); + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [valueParam], + voidType ); } function markTypeNodeAsReferenced(node) { @@ -73667,9 +74621,9 @@ function createTypeChecker(host) { true ); if (rootSymbol && rootSymbol.flags & 2097152 /* Alias */) { - if (symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { + if (!compilerOptions.verbatimModuleSyntax && symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { markAliasSymbolAsReferenced(rootSymbol); - } else if (forDecoratorMetadata && compilerOptions.isolatedModules && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { + } else if (forDecoratorMetadata && getIsolatedModules(compilerOptions) && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { const diag2 = error(typeName, Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled); const aliasDeclaration = find(rootSymbol.declarations || emptyArray, isAliasSymbolDeclaration); if (aliasDeclaration) { @@ -73735,19 +74689,37 @@ function createTypeChecker(host) { return isRestParameter(node) ? getRestParameterElementType(typeNode) : typeNode; } function checkDecorators(node) { - if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(node, node.parent, node.parent.parent)) { + if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { return; } - if (!compilerOptions.experimentalDecorators) { - error(node, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning); - } const firstDecorator = find(node.modifiers, isDecorator); if (!firstDecorator) { return; } - checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); - if (node.kind === 166 /* Parameter */) { - checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + if (legacyDecorators) { + checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); + if (node.kind === 166 /* Parameter */) { + checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + } + } else if (languageVersion < 99 /* ESNext */) { + checkExternalEmitHelpers(firstDecorator, 8 /* ESDecorateAndRunInitializers */); + if (isClassDeclaration(node)) { + if (!node.name) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } else { + const member = getFirstTransformableStaticClassElement(node); + if (member) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + } + } else if (!isClassExpression(node)) { + if (isPrivateIdentifier(node.name) && (isMethodDeclaration(node) || isAccessor(node) || isAutoAccessorPropertyDeclaration(node))) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + if (isComputedPropertyName(node.name)) { + checkExternalEmitHelpers(firstDecorator, 16777216 /* PropKey */); + } + } } if (compilerOptions.emitDecoratorMetadata) { checkExternalEmitHelpers(firstDecorator, 16 /* Metadata */); @@ -73817,6 +74789,19 @@ function createTypeChecker(host) { function checkJSDocTypeTag(node) { checkSourceElement(node.typeExpression); } + function checkJSDocSatisfiesTag(node) { + checkSourceElement(node.typeExpression); + const host2 = getEffectiveJSDocHost(node); + if (host2) { + const tags = getAllJSDocTags(host2, isJSDocSatisfiesTag); + if (length(tags) > 1) { + for (let i = 1; i < length(tags); i++) { + const tagName = tags[i].tagName; + error(tagName, Diagnostics._0_tag_already_specified, idText(tagName)); + } + } + } + } function checkJSDocLinkLikeTag(node) { if (node.name) { resolveJSDocMemberName( @@ -74489,7 +75474,7 @@ function createTypeChecker(host) { return; } const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 2097152 /* Alias */ && isVariableDeclarationInitializedToBareOrAccessedRequire(node.kind === 205 /* BindingElement */ ? node.parent.parent : node)) { + if (symbol.flags & 2097152 /* Alias */ && (isVariableDeclarationInitializedToBareOrAccessedRequire(node) || isBindingElementOfBareOrAccessedRequire(node))) { checkAliasSymbol(node); return; } @@ -74581,7 +75566,7 @@ function createTypeChecker(host) { return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) + if (!checkGrammarModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) checkGrammarForDisallowedLetOrConstStatement(node); forEach(node.declarationList.declarations, checkSourceElement); } @@ -74602,15 +75587,24 @@ function createTypeChecker(host) { function checkTestingKnownTruthyCallableOrAwaitableType(condExpr, condType, body) { if (!strictNullChecks) return; - helper(condExpr, body); - while (isBinaryExpression(condExpr) && condExpr.operatorToken.kind === 56 /* BarBarToken */) { - condExpr = condExpr.left; - helper(condExpr, body); + bothHelper(condExpr, body); + function bothHelper(condExpr2, body2) { + condExpr2 = skipParentheses(condExpr2); + helper(condExpr2, body2); + while (isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 60 /* QuestionQuestionToken */)) { + condExpr2 = skipParentheses(condExpr2.left); + helper(condExpr2, body2); + } } function helper(condExpr2, body2) { - const location = isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 55 /* AmpersandAmpersandToken */) ? condExpr2.right : condExpr2; - if (isModuleExportsAccessExpression(location)) + const location = isLogicalOrCoalescingBinaryExpression(condExpr2) ? skipParentheses(condExpr2.right) : condExpr2; + if (isModuleExportsAccessExpression(location)) { return; + } + if (isLogicalOrCoalescingBinaryExpression(location)) { + bothHelper(location, body2); + return; + } const type = location === condExpr2 ? condType : checkTruthinessExpression(location); const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion(location.expression); if (!(getTypeFacts(type) & 4194304 /* Truthy */) || isPropertyExpressionCast) @@ -74620,7 +75614,7 @@ function createTypeChecker(host) { if (callSignatures.length === 0 && !isPromise) { return; } - const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : isBinaryExpression(location) && isIdentifier(location.right) ? location.right : void 0; + const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : void 0; const testedSymbol = testedNode && getSymbolAtLocation(testedNode); if (!testedSymbol && !isPromise) { return; @@ -75578,14 +76572,10 @@ function createTypeChecker(host) { if (catchClause) { if (catchClause.variableDeclaration) { const declaration = catchClause.variableDeclaration; - const typeNode = getEffectiveTypeAnnotationNode(getRootDeclaration(declaration)); + checkVariableLikeDeclaration(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration); if (typeNode) { - const type = getTypeForVariableLikeDeclaration( - declaration, - /*includeOptionality*/ - false, - 0 /* Normal */ - ); + const type = getTypeFromTypeNode(typeNode); if (type && !(type.flags & 3 /* AnyOrUnknown */)) { grammarErrorOnFirstToken(typeNode, Diagnostics.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified); } @@ -75840,9 +76830,65 @@ function createTypeChecker(host) { } return true; } + function getFirstTransformableStaticClassElement(node) { + var _a2; + const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < 99 /* ESNext */ && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + ); + const willTransformPrivateElementsOrClassStaticBlocks = languageVersion <= 9 /* ES2022 */; + const willTransformInitializers = !useDefineForClassFields || languageVersion < 9 /* ES2022 */; + if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) { + for (const member of node.members) { + if (willTransformStaticElementsOfDecoratedClass && classElementOrClassElementParameterIsDecorated( + /*useLegacyDecorators*/ + false, + member, + node + )) { + return (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else if (willTransformPrivateElementsOrClassStaticBlocks) { + if (isClassStaticBlockDeclaration(member)) { + return member; + } else if (isStatic(member)) { + if (isPrivateIdentifierClassElementDeclaration(member) || willTransformInitializers && isInitializedProperty(member)) { + return member; + } + } + } + } + } + } + function checkClassExpressionExternalHelpers(node) { + var _a2; + if (node.name) + return; + const parent = walkUpOuterExpressions(node); + if (!isNamedEvaluationSource(parent)) + return; + const willTransformESDecorators = !legacyDecorators && languageVersion < 99 /* ESNext */; + let location; + if (willTransformESDecorators && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + )) { + location = (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else { + location = getFirstTransformableStaticClassElement(node); + } + if (location) { + checkExternalEmitHelpers(location, 8388608 /* SetFunctionName */); + if ((isPropertyAssignment(parent) || isPropertyDeclaration(parent) || isBindingElement(parent)) && isComputedPropertyName(parent.name)) { + checkExternalEmitHelpers(location, 16777216 /* PropKey */); + } + } + } function checkClassExpression(node) { checkClassLikeDeclaration(node); checkNodeDeferred(node); + checkClassExpressionExternalHelpers(node); return getTypeOfSymbol(getSymbolOfDeclaration(node)); } function checkClassExpressionDeferred(node) { @@ -75851,7 +76897,7 @@ function createTypeChecker(host) { } function checkClassDeclaration(node) { const firstDecorator = find(node.modifiers, isDecorator); - if (firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { + if (legacyDecorators && firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { grammarErrorOnNode(firstDecorator, Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator); } if (!node.name && !hasSyntacticModifier(node, 1024 /* Default */)) { @@ -76325,7 +77371,7 @@ function createTypeChecker(host) { typeName2 ); errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); - diagnostics.add(createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(typeNode), typeNode, errorInfo)); } } } @@ -76381,7 +77427,7 @@ function createTypeChecker(host) { return !containsUndefinedType(flowType); } function checkInterfaceDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node)) + if (!checkGrammarModifiers(node)) checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); addLazyDiagnostic(() => { @@ -76415,7 +77461,7 @@ function createTypeChecker(host) { }); } function checkTypeAliasDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); @@ -76611,7 +77657,7 @@ function createTypeChecker(host) { addLazyDiagnostic(() => checkEnumDeclarationWorker(node)); } function checkEnumDeclarationWorker(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkCollisionsForDeclarationName(node, node.name); checkExportsOnMergedDeclarations(node); node.members.forEach(checkEnumMember); @@ -76686,6 +77732,7 @@ function createTypeChecker(host) { } addLazyDiagnostic(checkModuleDeclarationDiagnostics); function checkModuleDeclarationDiagnostics() { + var _a2, _b; const isGlobalAugmentation = isGlobalScopeAugmentation(node); const inAmbientContext = node.flags & 16777216 /* Ambient */; if (isGlobalAugmentation && !inAmbientContext) { @@ -76696,7 +77743,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, contextErrorMessage)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node)) { + if (!checkGrammarModifiers(node)) { if (!inAmbientContext && node.name.kind === 10 /* StringLiteral */) { grammarErrorOnNode(node.name, Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -76706,18 +77753,29 @@ function createTypeChecker(host) { } checkExportsOnMergedDeclarations(node); const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && symbol.declarations && symbol.declarations.length > 1 && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { - const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); - if (firstNonAmbientClassOrFunc) { - if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); - } else if (node.pos < firstNonAmbientClassOrFunc.pos) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { + if (getIsolatedModules(compilerOptions) && !getSourceFileOfNode(node).externalModuleIndicator) { + error(node.name, Diagnostics.Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement, isolatedModulesLikeFlagName); + } + if (((_a2 = symbol.declarations) == null ? void 0 : _a2.length) > 1) { + const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + if (firstNonAmbientClassOrFunc) { + if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); + } else if (node.pos < firstNonAmbientClassOrFunc.pos) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + } + } + const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); + if (mergedClass && inSameLexicalScope(node, mergedClass)) { + getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; } } - const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); - if (mergedClass && inSameLexicalScope(node, mergedClass)) { - getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; + if (compilerOptions.verbatimModuleSyntax && node.parent.kind === 308 /* SourceFile */) { + const exportModifier = (_b = node.modifiers) == null ? void 0 : _b.find((m) => m.kind === 93 /* ExportKeyword */); + if (exportModifier) { + error(exportModifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } } if (isAmbientExternalModule) { @@ -76873,7 +77931,7 @@ function createTypeChecker(host) { const message = node.kind === 278 /* ExportSpecifier */ ? Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); } - if (compilerOptions.isolatedModules && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { + if (getIsolatedModules(compilerOptions) && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { const typeOnlyAlias = getTypeOnlyAliasDeclaration(symbol); const isType = !(targetFlags & 111551 /* Value */); if (isType || typeOnlyAlias) { @@ -76881,9 +77939,9 @@ function createTypeChecker(host) { case 270 /* ImportClause */: case 273 /* ImportSpecifier */: case 268 /* ImportEqualsDeclaration */: { - if (compilerOptions.preserveValueImports) { + if (compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) { Debug.assertIsDefined(node.name, "An ImportClause with a symbol should have a name"); - const message = isType ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; + const message = compilerOptions.verbatimModuleSyntax && isInternalModuleImportEqualsDeclaration(node) ? Diagnostics.An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled : isType ? compilerOptions.verbatimModuleSyntax ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : compilerOptions.verbatimModuleSyntax ? Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; const name = idText(node.kind === 273 /* ImportSpecifier */ ? node.propertyName || node.name : node.name); addTypeOnlyDeclarationRelatedInfo( error(node, message, name), @@ -76892,24 +77950,23 @@ function createTypeChecker(host) { ); } if (isType && node.kind === 268 /* ImportEqualsDeclaration */ && hasEffectiveModifier(node, 1 /* Export */)) { - error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled, isolatedModulesLikeFlagName); } break; } case 278 /* ExportSpecifier */: { - if (getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { - const message = isType ? Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled; + if (compilerOptions.verbatimModuleSyntax || getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { const name = idText(node.propertyName || node.name); - addTypeOnlyDeclarationRelatedInfo( - error(node, message, name), - isType ? void 0 : typeOnlyAlias, - name - ); - return; + const diagnostic = isType ? error(node, Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type, isolatedModulesLikeFlagName) : error(node, Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled, name, isolatedModulesLikeFlagName); + addTypeOnlyDeclarationRelatedInfo(diagnostic, isType ? void 0 : typeOnlyAlias, name); + break; } } } } + if (compilerOptions.verbatimModuleSyntax && node.kind !== 268 /* ImportEqualsDeclaration */ && !isInJSFile(node) && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } if (isImportSpecifier(node)) { const targetSymbol = checkDeprecatedAliasedSymbol(symbol, node); @@ -76989,7 +78046,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -77019,7 +78076,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); if (isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (hasSyntacticModifier(node, 1 /* Export */)) { @@ -77055,7 +78112,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasSyntacticModifiers(node)) { + if (!checkGrammarModifiers(node) && hasSyntacticModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_declaration_cannot_have_modifiers); } if (node.moduleSpecifier && node.exportClause && isNamedExports(node.exportClause) && length(node.exportClause.elements) && languageVersion === 0 /* ES3 */) { @@ -77092,12 +78149,8 @@ function createTypeChecker(host) { } function checkGrammarExportDeclaration(node) { var _a2; - if (node.isTypeOnly) { - if (((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { - return checkGrammarNamedImportsOrExports(node.exportClause); - } else { - return grammarErrorOnNode(node, Diagnostics.Only_named_exports_may_use_export_type); - } + if (node.isTypeOnly && ((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { + return checkGrammarNamedImportsOrExports(node.exportClause); } return false; } @@ -77195,13 +78248,14 @@ function createTypeChecker(host) { } return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_assignment_cannot_have_modifiers); } const typeAnnotationNode = getEffectiveTypeAnnotationNode(node); if (typeAnnotationNode) { checkTypeAssignableTo(checkExpressionCached(node.expression), getTypeFromTypeNode(typeAnnotationNode), node.expression); } + const isIllegalExportDefaultInCJS = !node.isExportEquals && compilerOptions.verbatimModuleSyntax && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */); if (node.expression.kind === 79 /* Identifier */) { const id = node.expression; const sym = resolveEntityName( @@ -77215,16 +78269,28 @@ function createTypeChecker(host) { ); if (sym) { markAliasReferenced(sym, id); - const target = sym.flags & 2097152 /* Alias */ ? resolveAlias(sym) : sym; - if (getAllSymbolFlags(target) & 111551 /* Value */) { - checkExpressionCached(node.expression); + if (getAllSymbolFlags(sym) & 111551 /* Value */) { + checkExpressionCached(id); + if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax && getTypeOnlyAliasDeclaration(sym, 111551 /* Value */)) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration : Diagnostics.An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration, + idText(id) + ); + } + } else if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type : Diagnostics.An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type, + idText(id) + ); } } else { - checkExpressionCached(node.expression); + checkExpressionCached(id); } if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases( - node.expression, + id, /*setVisibility*/ true ); @@ -77232,6 +78298,9 @@ function createTypeChecker(host) { } else { checkExpressionCached(node.expression); } + if (isIllegalExportDefaultInCJS) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } checkExternalModuleExports(container); if (node.flags & 16777216 /* Ambient */ && !isEntityNameExpression(node.expression)) { grammarErrorOnNode(node.expression, Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context); @@ -77421,6 +78490,8 @@ function createTypeChecker(host) { case 338 /* JSDocProtectedTag */: case 337 /* JSDocPrivateTag */: return checkJSDocAccessibilityModifiers(node); + case 353 /* JSDocSatisfiesTag */: + return checkJSDocSatisfiesTag(node); case 196 /* IndexedAccessType */: return checkIndexedAccessType(node); case 197 /* MappedType */: @@ -78436,8 +79507,9 @@ function createTypeChecker(host) { } } function getReferencedImportDeclaration(nodeIn) { - if (nodeIn.generatedImportReference) { - return nodeIn.generatedImportReference; + const specifier = getIdentifierGeneratedImportReference(nodeIn); + if (specifier) { + return specifier; } const node = getParseTreeNode(nodeIn, isIdentifier); if (node) { @@ -78519,6 +79591,7 @@ function createTypeChecker(host) { return false; } function isValueAliasDeclaration(node) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); switch (node.kind) { case 268 /* ImportEqualsDeclaration */: return isAliasResolvedToValue(getSymbolOfDeclaration(node)); @@ -78559,6 +79632,7 @@ function createTypeChecker(host) { return isConstEnumSymbol(s) || !!s.constEnumOnlyModule; } function isReferencedAliasDeclaration(node, checkChildren) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); if (isAliasSymbolDeclaration(node)) { const symbol = getSymbolOfDeclaration(node); const links = symbol && getSymbolLinks(symbol); @@ -79275,23 +80349,27 @@ function createTypeChecker(host) { const helpersModule = resolveHelpersModule(sourceFile, location); if (helpersModule !== unknownSymbol) { const uncheckedHelpers = helpers & ~requestedExternalEmitHelpers; - for (let helper = 1 /* FirstEmitHelper */; helper <= 4194304 /* LastEmitHelper */; helper <<= 1) { + for (let helper = 1 /* FirstEmitHelper */; helper <= 16777216 /* LastEmitHelper */; helper <<= 1) { if (uncheckedHelpers & helper) { - const name = getHelperName(helper); - const symbol = getSymbol(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); - if (!symbol) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); - } else if (helper & 524288 /* ClassPrivateFieldGet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); - } - } else if (helper & 1048576 /* ClassPrivateFieldSet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); - } - } else if (helper & 1024 /* SpreadArray */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + for (const name of getHelperNames(helper)) { + if (requestedExternalEmitHelperNames.has(name)) + continue; + requestedExternalEmitHelperNames.add(name); + const symbol = getSymbol(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); + if (!symbol) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); + } else if (helper & 524288 /* ClassPrivateFieldGet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); + } + } else if (helper & 1048576 /* ClassPrivateFieldSet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); + } + } else if (helper & 1024 /* SpreadArray */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + } } } } @@ -79301,54 +80379,58 @@ function createTypeChecker(host) { } } } - function getHelperName(helper) { + function getHelperNames(helper) { switch (helper) { case 1 /* Extends */: - return "__extends"; + return ["__extends"]; case 2 /* Assign */: - return "__assign"; + return ["__assign"]; case 4 /* Rest */: - return "__rest"; + return ["__rest"]; case 8 /* Decorate */: - return "__decorate"; + return legacyDecorators ? ["__decorate"] : ["__esDecorate", "__runInitializers"]; case 16 /* Metadata */: - return "__metadata"; + return ["__metadata"]; case 32 /* Param */: - return "__param"; + return ["__param"]; case 64 /* Awaiter */: - return "__awaiter"; + return ["__awaiter"]; case 128 /* Generator */: - return "__generator"; + return ["__generator"]; case 256 /* Values */: - return "__values"; + return ["__values"]; case 512 /* Read */: - return "__read"; + return ["__read"]; case 1024 /* SpreadArray */: - return "__spreadArray"; + return ["__spreadArray"]; case 2048 /* Await */: - return "__await"; + return ["__await"]; case 4096 /* AsyncGenerator */: - return "__asyncGenerator"; + return ["__asyncGenerator"]; case 8192 /* AsyncDelegator */: - return "__asyncDelegator"; + return ["__asyncDelegator"]; case 16384 /* AsyncValues */: - return "__asyncValues"; + return ["__asyncValues"]; case 32768 /* ExportStar */: - return "__exportStar"; + return ["__exportStar"]; case 65536 /* ImportStar */: - return "__importStar"; + return ["__importStar"]; case 131072 /* ImportDefault */: - return "__importDefault"; + return ["__importDefault"]; case 262144 /* MakeTemplateObject */: - return "__makeTemplateObject"; + return ["__makeTemplateObject"]; case 524288 /* ClassPrivateFieldGet */: - return "__classPrivateFieldGet"; + return ["__classPrivateFieldGet"]; case 1048576 /* ClassPrivateFieldSet */: - return "__classPrivateFieldSet"; + return ["__classPrivateFieldSet"]; case 2097152 /* ClassPrivateFieldIn */: - return "__classPrivateFieldIn"; + return ["__classPrivateFieldIn"]; case 4194304 /* CreateBinding */: - return "__createBinding"; + return ["__createBinding"]; + case 8388608 /* SetFunctionName */: + return ["__setFunctionName"]; + case 16777216 /* PropKey */: + return ["__propKey"]; default: return Debug.fail("Unrecognized helper"); } @@ -79359,257 +80441,264 @@ function createTypeChecker(host) { } return externalHelpersModule; } - function checkGrammarDecoratorsAndModifiers(node) { - return checkGrammarDecorators(node) || checkGrammarModifiers(node); - } - function checkGrammarDecorators(node) { - if (canHaveIllegalDecorators(node) && some(node.illegalDecorators)) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - if (!canHaveDecorators(node) || !hasDecorators(node)) { - return false; - } - if (!nodeCanBeDecorated(node, node.parent, node.parent.parent)) { - if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { - return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); - } else { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - } else if (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */) { - const accessors = getAllAccessorDeclarations(node.parent.members, node); - if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); - } - } - return false; - } function checkGrammarModifiers(node) { - const quickResult = reportObviousModifierErrors(node); + const quickResult = reportObviousDecoratorErrors(node) || reportObviousModifierErrors(node); if (quickResult !== void 0) { return quickResult; } - let lastStatic, lastDeclare, lastAsync, lastOverride; + if (isParameter(node) && parameterIsThisKeyword(node)) { + return grammarErrorOnFirstToken(node, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); + } + let lastStatic, lastDeclare, lastAsync, lastOverride, firstDecorator; let flags = 0 /* None */; + let sawExportBeforeDecorators = false; for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - if (modifier.kind !== 146 /* ReadonlyKeyword */) { - if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); + if (isDecorator(modifier)) { + if (!nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { + if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } else { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); + } + } else if (legacyDecorators && (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */)) { + const accessors = getAllAccessorDeclarations(node.parent.members, node); + if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } } - if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); + if (flags & ~(1025 /* ExportDefault */ | 131072 /* Decorator */)) { + return grammarErrorOnNode(modifier, Diagnostics.Decorators_are_not_valid_here); } - } - if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { - if (node.kind === 165 /* TypeParameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); + flags |= 131072 /* Decorator */; + if (flags & 1 /* Export */) { + sawExportBeforeDecorators = true; } - } - switch (modifier.kind) { - case 85 /* ConstKeyword */: - if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { - return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); + firstDecorator != null ? firstDecorator : firstDecorator = modifier; + } else { + if (modifier.kind !== 146 /* ReadonlyKeyword */) { + if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); } - const parent = node.parent; - if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent) || isClassLike(parent) || isFunctionTypeNode(parent) || isConstructorTypeNode(parent) || isCallSignatureDeclaration(parent) || isConstructSignatureDeclaration(parent) || isMethodSignature(parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); + if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); } - break; - case 161 /* OverrideKeyword */: - if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); + } + if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { + if (node.kind === 165 /* TypeParameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); } - flags |= 16384 /* Override */; - lastOverride = modifier; - break; - case 123 /* PublicKeyword */: - case 122 /* ProtectedKeyword */: - case 121 /* PrivateKeyword */: - const text = visibilityToString(modifierToFlag(modifier.kind)); - if (flags & 28 /* AccessibilityModifier */) { - return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); - } else if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); - } else if (flags & 256 /* Abstract */) { - if (modifier.kind === 121 /* PrivateKeyword */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); - } else { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + switch (modifier.kind) { + case 85 /* ConstKeyword */: + if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { + return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); } - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); - } - flags |= modifierToFlag(modifier.kind); - break; - case 124 /* StaticKeyword */: - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); - } - flags |= 32 /* Static */; - lastStatic = modifier; - break; - case 127 /* AccessorKeyword */: - if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); - } else if (node.kind !== 169 /* PropertyDeclaration */) { - return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); - } - flags |= 128 /* Accessor */; - break; - case 146 /* ReadonlyKeyword */: - if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); - } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); - } - flags |= 64 /* Readonly */; - break; - case 93 /* ExportKeyword */: - if (flags & 1 /* Export */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); - } else if (isClassLike(node.parent)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); - } - flags |= 1 /* Export */; - break; - case 88 /* DefaultKeyword */: - const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { - return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); - } else if (!(flags & 1 /* Export */)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); - } - flags |= 1024 /* Default */; - break; - case 136 /* DeclareKeyword */: - if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); - } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); - } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { - return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); - } - flags |= 2 /* Ambient */; - lastDeclare = modifier; - break; - case 126 /* AbstractKeyword */: - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); - } - if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { - if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { - return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); - } - if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { - return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); - } - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } - if (flags & 8 /* Private */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); - } - if (flags & 512 /* Async */ && lastAsync) { - return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + const parent = node.parent; + if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent) || isClassLike(parent) || isFunctionTypeNode(parent) || isConstructorTypeNode(parent) || isCallSignatureDeclaration(parent) || isConstructSignatureDeclaration(parent) || isMethodSignature(parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); } + break; + case 161 /* OverrideKeyword */: if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); } + flags |= 16384 /* Override */; + lastOverride = modifier; + break; + case 123 /* PublicKeyword */: + case 122 /* ProtectedKeyword */: + case 121 /* PrivateKeyword */: + const text = visibilityToString(modifierToFlag(modifier.kind)); + if (flags & 28 /* AccessibilityModifier */) { + return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); + } else if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); + } else if (flags & 256 /* Abstract */) { + if (modifier.kind === 121 /* PrivateKeyword */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); + } else { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + } + flags |= modifierToFlag(modifier.kind); + break; + case 124 /* StaticKeyword */: + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); + } + flags |= 32 /* Static */; + lastStatic = modifier; + break; + case 127 /* AccessorKeyword */: if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); + } else if (node.kind !== 169 /* PropertyDeclaration */) { + return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); } - } - if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); - } - flags |= 256 /* Abstract */; - break; - case 132 /* AsyncKeyword */: - if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); - } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); - } - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); - } - flags |= 512 /* Async */; - lastAsync = modifier; - break; - case 101 /* InKeyword */: - case 145 /* OutKeyword */: - const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; - const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; - if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); - } - if (flags & inOutFlag) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); - } - if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); - } - flags |= inOutFlag; - break; + flags |= 128 /* Accessor */; + break; + case 146 /* ReadonlyKeyword */: + if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); + } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); + } + flags |= 64 /* Readonly */; + break; + case 93 /* ExportKeyword */: + if (compilerOptions.verbatimModuleSyntax && !(node.flags & 16777216 /* Ambient */) && node.kind !== 262 /* TypeAliasDeclaration */ && node.kind !== 261 /* InterfaceDeclaration */ && // ModuleDeclaration needs to be checked that it is uninstantiated later + node.kind !== 264 /* ModuleDeclaration */ && node.parent.kind === 308 /* SourceFile */ && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + return grammarErrorOnNode(modifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } + if (flags & 1 /* Export */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); + } else if (isClassLike(node.parent)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + } + flags |= 1 /* Export */; + break; + case 88 /* DefaultKeyword */: + const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { + return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + } else if (!(flags & 1 /* Export */)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); + } else if (sawExportBeforeDecorators) { + return grammarErrorOnNode(firstDecorator, Diagnostics.Decorators_are_not_valid_here); + } + flags |= 1024 /* Default */; + break; + case 136 /* DeclareKeyword */: + if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); + } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { + return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); + } + flags |= 2 /* Ambient */; + lastDeclare = modifier; + break; + case 126 /* AbstractKeyword */: + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); + } + if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { + if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { + return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); + } + if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { + return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); + } + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } + if (flags & 8 /* Private */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); + } + if (flags & 512 /* Async */ && lastAsync) { + return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + } + if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + } + } + if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); + } + flags |= 256 /* Abstract */; + break; + case 132 /* AsyncKeyword */: + if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); + } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); + } + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + flags |= 512 /* Async */; + lastAsync = modifier; + break; + case 101 /* InKeyword */: + case 145 /* OutKeyword */: + const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; + const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; + if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); + } + if (flags & inOutFlag) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); + } + if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); + } + flags |= inOutFlag; + break; + } } } if (node.kind === 173 /* Constructor */) { @@ -79636,9 +80725,16 @@ function createTypeChecker(host) { return false; } function reportObviousModifierErrors(node) { - return !node.modifiers ? false : shouldReportBadModifier(node) ? grammarErrorOnFirstToken(node, Diagnostics.Modifiers_cannot_appear_here) : void 0; + if (!node.modifiers) + return false; + const modifier = findFirstIllegalModifier(node); + return modifier && grammarErrorOnFirstToken(modifier, Diagnostics.Modifiers_cannot_appear_here); } - function shouldReportBadModifier(node) { + function findFirstModifierExcept(node, allowedModifier) { + const modifier = find(node.modifiers, isModifier); + return modifier && modifier.kind !== allowedModifier ? modifier : void 0; + } + function findFirstIllegalModifier(node) { switch (node.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: @@ -79657,43 +80753,42 @@ function createTypeChecker(host) { case 216 /* ArrowFunction */: case 166 /* Parameter */: case 165 /* TypeParameter */: - return false; + return void 0; case 172 /* ClassStaticBlockDeclaration */: case 299 /* PropertyAssignment */: case 300 /* ShorthandPropertyAssignment */: case 267 /* NamespaceExportDeclaration */: case 181 /* FunctionType */: case 279 /* MissingDeclaration */: - return true; + return find(node.modifiers, isModifier); default: if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return false; + return void 0; } switch (node.kind) { case 259 /* FunctionDeclaration */: - return nodeHasAnyModifiersExcept(node, 132 /* AsyncKeyword */); + return findFirstModifierExcept(node, 132 /* AsyncKeyword */); case 260 /* ClassDeclaration */: case 182 /* ConstructorType */: - return nodeHasAnyModifiersExcept(node, 126 /* AbstractKeyword */); + return findFirstModifierExcept(node, 126 /* AbstractKeyword */); case 228 /* ClassExpression */: case 261 /* InterfaceDeclaration */: case 240 /* VariableStatement */: case 262 /* TypeAliasDeclaration */: - return true; + return find(node.modifiers, isModifier); case 263 /* EnumDeclaration */: - return nodeHasAnyModifiersExcept(node, 85 /* ConstKeyword */); + return findFirstModifierExcept(node, 85 /* ConstKeyword */); default: Debug.assertNever(node); } } } - function nodeHasAnyModifiersExcept(node, allowedModifier) { - for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - return modifier.kind !== allowedModifier; - } - return false; + function reportObviousDecoratorErrors(node) { + const decorator = findFirstIllegalDecorator(node); + return decorator && grammarErrorOnFirstToken(decorator, Diagnostics.Decorators_are_not_valid_here); + } + function findFirstIllegalDecorator(node) { + return canHaveIllegalDecorators(node) ? find(node.modifiers, isDecorator) : void 0; } function checkGrammarAsyncModifier(node, asyncModifier) { switch (node.kind) { @@ -79772,7 +80867,7 @@ function createTypeChecker(host) { } function checkGrammarFunctionLikeDeclaration(node) { const file = getSourceFileOfNode(node); - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); + return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); } function checkGrammarClassLikeDeclaration(node) { const file = getSourceFileOfNode(node); @@ -79830,7 +80925,7 @@ function createTypeChecker(host) { return false; } function checkGrammarIndexSignature(node) { - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarIndexSignatureParameters(node); + return checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -79870,7 +80965,7 @@ function createTypeChecker(host) { function checkGrammarClassDeclarationHeritageClauses(node) { let seenExtendsClause = false; let seenImplementsClause = false; - if (!checkGrammarDecoratorsAndModifiers(node) && node.heritageClauses) { + if (!checkGrammarModifiers(node) && node.heritageClauses) { for (const heritageClause of node.heritageClauses) { if (heritageClause.token === 94 /* ExtendsKeyword */) { if (seenExtendsClause) { @@ -79971,7 +81066,9 @@ function createTypeChecker(host) { } } else if (canHaveIllegalModifiers(prop) && prop.modifiers) { for (const mod of prop.modifiers) { - grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + if (isModifier(mod)) { + grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + } } } let currentKind; @@ -80415,7 +81512,7 @@ function createTypeChecker(host) { } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 79 /* Identifier */) { - if (name.originalKeywordKind === 119 /* LetKeyword */) { + if (name.escapedText === "let") { return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { @@ -80703,6 +81800,9 @@ function createTypeChecker(host) { }); } function checkGrammarImportCallExpression(node) { + if (compilerOptions.verbatimModuleSyntax && moduleKind === 1 /* CommonJS */) { + return grammarErrorOnNode(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } if (moduleKind === 5 /* ES2015 */) { return grammarErrorOnNode(node, Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext); } @@ -80978,13 +82078,10 @@ var SymbolTrackerImpl = class { // src/compiler/visitorPublic.ts function visitNode(node, visitor, test, lift) { - if (node === void 0 || visitor === void 0) { + if (node === void 0) { return node; } const visited = visitor(node); - if (visited === node) { - return node; - } let visitedNode; if (visited === void 0) { return void 0; @@ -80997,7 +82094,7 @@ function visitNode(node, visitor, test, lift) { return visitedNode; } function visitNodes2(nodes, visitor, test, start, count) { - if (nodes === void 0 || visitor === void 0) { + if (nodes === void 0) { return nodes; } const length2 = nodes.length; @@ -81046,25 +82143,30 @@ function visitArrayWorker(nodes, visitor, test, start, count) { } for (let i = 0; i < count; i++) { const node = nodes[i + start]; - const visited = node !== void 0 ? visitor(node) : void 0; + const visited = node !== void 0 ? visitor ? visitor(node) : node : void 0; if (updated !== void 0 || visited === void 0 || visited !== node) { if (updated === void 0) { updated = nodes.slice(0, i); + Debug.assertEachNode(updated, test); } if (visited) { if (isArray(visited)) { for (const visitedNode of visited) { - void Debug.assertNode(visitedNode, test); + Debug.assertNode(visitedNode, test); updated.push(visitedNode); } } else { - void Debug.assertNode(visited, test); + Debug.assertNode(visited, test); updated.push(visited); } } } } - return updated != null ? updated : nodes; + if (updated) { + return updated; + } + Debug.assertEachNode(nodes, test); + return nodes; } function visitLexicalEnvironment(statements, visitor, context, start, ensureUseStrict, nodesVisitor = visitNodes2) { context.startLexicalEnvironment(); @@ -81078,7 +82180,7 @@ function visitParameterList(nodes, visitor, context, nodesVisitor = visitNodes2) context.startLexicalEnvironment(); if (nodes) { context.setLexicalEnvironmentFlags(1 /* InParameters */, true); - updated = nodesVisitor(nodes, visitor, isParameterDeclaration); + updated = nodesVisitor(nodes, visitor, isParameter); if (context.getLexicalEnvironmentFlags() & 2 /* VariablesHoistedInParameters */ && getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } @@ -81200,6 +82302,7 @@ function visitFunctionBody(node, visitor, context, nodeVisitor = visitNode) { function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { context.startBlockScope(); const updated = nodeVisitor(body, visitor, isStatement, context.factory.liftToBlock); + Debug.assert(updated); const declarations = context.endBlockScope(); if (some(declarations)) { if (isBlock(updated)) { @@ -81211,6 +82314,18 @@ function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { } return updated; } +function visitCommaListElements(elements, visitor, discardVisitor = visitor) { + if (discardVisitor === visitor || elements.length <= 1) { + return visitNodes2(elements, visitor, isExpression); + } + let i = 0; + const length2 = elements.length; + return visitNodes2(elements, (node) => { + const discarded = i < length2 - 1; + i++; + return discarded ? discardVisitor(node) : visitor(node); + }, isExpression); +} function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, tokenVisitor, nodeVisitor = visitNode) { if (node === void 0) { return void 0; @@ -81219,23 +82334,17 @@ function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, toke return fn === void 0 ? node : fn(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor); } var visitEachChildTable = { - [79 /* Identifier */]: function visitEachChildOfIdentifier(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { - return context.factory.updateIdentifier( - node, - nodesVisitor(node.typeArguments, visitor, isTypeNodeOrTypeParameterDeclaration) - ); - }, [163 /* QualifiedName */]: function visitEachChildOfQualifiedName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateQualifiedName( node, - nodeVisitor(node.left, visitor, isEntityName), - nodeVisitor(node.right, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.left, visitor, isEntityName)), + Debug.checkDefined(nodeVisitor(node.right, visitor, isIdentifier)) ); }, [164 /* ComputedPropertyName */]: function visitEachChildOfComputedPropertyName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateComputedPropertyName( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Signature elements @@ -81243,7 +82352,7 @@ var visitEachChildTable = { return context.factory.updateTypeParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.constraint, visitor, isTypeNode), nodeVisitor(node.default, visitor, isTypeNode) ); @@ -81252,9 +82361,9 @@ var visitEachChildTable = { return context.factory.updateParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -81262,7 +82371,7 @@ var visitEachChildTable = { [167 /* Decorator */]: function visitEachChildOfDecorator(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDecorator( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Type elements @@ -81270,19 +82379,19 @@ var visitEachChildTable = { return context.factory.updatePropertySignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode) ); }, [169 /* PropertyDeclaration */]: function visitEachChildOfPropertyDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { - var _a2; + var _a2, _b; return context.factory.updatePropertyDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), // QuestionToken and ExclamationToken are mutually exclusive in PropertyDeclaration - nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken), + tokenVisitor ? nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken) : (_b = node.questionToken) != null ? _b : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -81291,10 +82400,10 @@ var visitEachChildTable = { return context.factory.updateMethodSignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -81302,9 +82411,9 @@ var visitEachChildTable = { return context.factory.updateMethodDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), @@ -81314,7 +82423,7 @@ var visitEachChildTable = { [173 /* Constructor */]: function visitEachChildOfConstructorDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConstructorDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -81323,7 +82432,7 @@ var visitEachChildTable = { return context.factory.updateGetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), visitFunctionBody(node.body, visitor, context, nodeVisitor) @@ -81333,7 +82442,7 @@ var visitEachChildTable = { return context.factory.updateSetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -81350,7 +82459,7 @@ var visitEachChildTable = { return context.factory.updateCallSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -81358,16 +82467,16 @@ var visitEachChildTable = { return context.factory.updateConstructSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, [178 /* IndexSignature */]: function visitEachChildOfIndexSignatureDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexSignature( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.modifiers, visitor, isModifierLike), + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, // Types @@ -81375,14 +82484,14 @@ var visitEachChildTable = { return context.factory.updateTypePredicateNode( node, nodeVisitor(node.assertsModifier, visitor, isAssertsKeyword), - nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode), + Debug.checkDefined(nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode)), nodeVisitor(node.type, visitor, isTypeNode) ); }, [180 /* TypeReference */]: function visitEachChildOfTypeReferenceNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeReferenceNode( node, - nodeVisitor(node.typeName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.typeName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -81390,8 +82499,8 @@ var visitEachChildTable = { return context.factory.updateFunctionTypeNode( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [182 /* ConstructorType */]: function visitEachChildOfConstructorTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -81399,14 +82508,14 @@ var visitEachChildTable = { node, nodesVisitor(node.modifiers, visitor, isModifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [183 /* TypeQuery */]: function visitEachChildOfTypeQueryNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeQueryNode( node, - nodeVisitor(node.exprName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.exprName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -81419,7 +82528,7 @@ var visitEachChildTable = { [185 /* ArrayType */]: function visitEachChildOfArrayTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateArrayTypeNode( node, - nodeVisitor(node.elementType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.elementType, visitor, isTypeNode)) ); }, [186 /* TupleType */]: function visitEachChildOfTupleTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -81431,13 +82540,13 @@ var visitEachChildTable = { [187 /* OptionalType */]: function visitEachChildOfOptionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateOptionalTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [188 /* RestType */]: function visitEachChildOfRestTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateRestTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [189 /* UnionType */]: function visitEachChildOfUnionTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -81455,22 +82564,22 @@ var visitEachChildTable = { [191 /* ConditionalType */]: function visitEachChildOfConditionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConditionalTypeNode( node, - nodeVisitor(node.checkType, visitor, isTypeNode), - nodeVisitor(node.extendsType, visitor, isTypeNode), - nodeVisitor(node.trueType, visitor, isTypeNode), - nodeVisitor(node.falseType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.checkType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.extendsType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.trueType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.falseType, visitor, isTypeNode)) ); }, [192 /* InferType */]: function visitEachChildOfInferTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInferTypeNode( node, - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration) + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)) ); }, [202 /* ImportType */]: function visitEachChildOfImportTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeNode( node, - nodeVisitor(node.argument, visitor, isTypeNode), + Debug.checkDefined(nodeVisitor(node.argument, visitor, isTypeNode)), nodeVisitor(node.assertions, visitor, isImportTypeAssertionContainer), nodeVisitor(node.qualifier, visitor, isEntityName), nodesVisitor(node.typeArguments, visitor, isTypeNode), @@ -81480,45 +82589,45 @@ var visitEachChildTable = { [298 /* ImportTypeAssertionContainer */]: function visitEachChildOfImportTypeAssertionContainer(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeAssertionContainer( node, - nodeVisitor(node.assertClause, visitor, isAssertClause), + Debug.checkDefined(nodeVisitor(node.assertClause, visitor, isAssertClause)), node.multiLine ); }, [199 /* NamedTupleMember */]: function visitEachChildOfNamedTupleMember(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateNamedTupleMember( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.type, visitor, isTypeNode) + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [193 /* ParenthesizedType */]: function visitEachChildOfParenthesizedType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedType( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [195 /* TypeOperator */]: function visitEachChildOfTypeOperatorNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOperatorNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [196 /* IndexedAccessType */]: function visitEachChildOfIndexedAccessType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexedAccessTypeNode( node, - nodeVisitor(node.objectType, visitor, isTypeNode), - nodeVisitor(node.indexType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.objectType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.indexType, visitor, isTypeNode)) ); }, [197 /* MappedType */]: function visitEachChildOfMappedType(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateMappedTypeNode( node, - nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken), - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration), + tokenVisitor ? nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken) : node.readonlyToken, + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)), nodeVisitor(node.nameType, visitor, isTypeNode), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodesVisitor(node.members, visitor, isTypeElement) ); @@ -81526,21 +82635,21 @@ var visitEachChildTable = { [198 /* LiteralType */]: function visitEachChildOfLiteralTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLiteralTypeNode( node, - nodeVisitor(node.literal, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.literal, visitor, isLiteralTypeLiteral)) ); }, [200 /* TemplateLiteralType */]: function visitEachChildOfTemplateLiteralType(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralType( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateLiteralTypeSpan) ); }, [201 /* TemplateLiteralTypeSpan */]: function visitEachChildOfTemplateLiteralTypeSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralTypeSpan( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Binding patterns @@ -81559,9 +82668,9 @@ var visitEachChildTable = { [205 /* BindingElement */]: function visitEachChildOfBindingElement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBindingElement( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, nodeVisitor(node.propertyName, visitor, isPropertyName), - nodeVisitor(node.name, visitor, isBindingName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -81581,37 +82690,37 @@ var visitEachChildTable = { [208 /* PropertyAccessExpression */]: function visitEachChildOfPropertyAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isPropertyAccessChain(node) ? context.factory.updatePropertyAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ) : context.factory.updatePropertyAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ); }, [209 /* ElementAccessExpression */]: function visitEachChildOfElementAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isElementAccessChain(node) ? context.factory.updateElementAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ) : context.factory.updateElementAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ); }, [210 /* CallExpression */]: function visitEachChildOfCallExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return isCallChain(node) ? context.factory.updateCallChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ) : context.factory.updateCallExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -81619,7 +82728,7 @@ var visitEachChildTable = { [211 /* NewExpression */]: function visitEachChildOfNewExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNewExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -81627,29 +82736,29 @@ var visitEachChildTable = { [212 /* TaggedTemplateExpression */]: function visitEachChildOfTaggedTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTaggedTemplateExpression( node, - nodeVisitor(node.tag, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.tag, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.template, visitor, isTemplateLiteral) + Debug.checkDefined(nodeVisitor(node.template, visitor, isTemplateLiteral)) ); }, [213 /* TypeAssertionExpression */]: function visitEachChildOfTypeAssertionExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAssertion( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [214 /* ParenthesizedExpression */]: function visitEachChildOfParenthesizedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [215 /* FunctionExpression */]: function visitEachChildOfFunctionExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateFunctionExpression( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -81664,82 +82773,82 @@ var visitEachChildTable = { nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken)) : node.equalsGreaterThanToken, visitFunctionBody(node.body, visitor, context, nodeVisitor) ); }, [217 /* DeleteExpression */]: function visitEachChildOfDeleteExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDeleteExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [218 /* TypeOfExpression */]: function visitEachChildOfTypeOfExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOfExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [219 /* VoidExpression */]: function visitEachChildOfVoidExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVoidExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [220 /* AwaitExpression */]: function visitEachChildOfAwaitExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAwaitExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [221 /* PrefixUnaryExpression */]: function visitEachChildOfPrefixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePrefixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [222 /* PostfixUnaryExpression */]: function visitEachChildOfPostfixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePostfixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [223 /* BinaryExpression */]: function visitEachChildOfBinaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBinaryExpression( node, - nodeVisitor(node.left, visitor, isExpression), - nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken), - nodeVisitor(node.right, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.left, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken)) : node.operatorToken, + Debug.checkDefined(nodeVisitor(node.right, visitor, isExpression)) ); }, [224 /* ConditionalExpression */]: function visitEachChildOfConditionalExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateConditionalExpression( node, - nodeVisitor(node.condition, visitor, isExpression), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.whenTrue, visitor, isExpression), - nodeVisitor(node.colonToken, tokenVisitor, isColonToken), - nodeVisitor(node.whenFalse, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.condition, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken)) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.whenTrue, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.colonToken, tokenVisitor, isColonToken)) : node.colonToken, + Debug.checkDefined(nodeVisitor(node.whenFalse, visitor, isExpression)) ); }, [225 /* TemplateExpression */]: function visitEachChildOfTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateExpression( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateSpan) ); }, [226 /* YieldExpression */]: function visitEachChildOfYieldExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateYieldExpression( node, - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.expression, visitor, isExpression) ); }, [227 /* SpreadElement */]: function visitEachChildOfSpreadElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadElement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [228 /* ClassExpression */]: function visitEachChildOfClassExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -81755,45 +82864,45 @@ var visitEachChildTable = { [230 /* ExpressionWithTypeArguments */]: function visitEachChildOfExpressionWithTypeArguments(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionWithTypeArguments( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, [231 /* AsExpression */]: function visitEachChildOfAsExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAsExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [235 /* SatisfiesExpression */]: function visitEachChildOfSatisfiesExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSatisfiesExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [232 /* NonNullExpression */]: function visitEachChildOfNonNullExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return isOptionalChain(node) ? context.factory.updateNonNullChain( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ) : context.factory.updateNonNullExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [233 /* MetaProperty */]: function visitEachChildOfMetaProperty(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateMetaProperty( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Misc [236 /* TemplateSpan */]: function visitEachChildOfTemplateSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateSpan( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Element @@ -81806,21 +82915,21 @@ var visitEachChildTable = { [240 /* VariableStatement */]: function visitEachChildOfVariableStatement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVariableStatement( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.declarationList, visitor, isVariableDeclarationList) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.declarationList, visitor, isVariableDeclarationList)) ); }, [241 /* ExpressionStatement */]: function visitEachChildOfExpressionStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [242 /* IfStatement */]: function visitEachChildOfIfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIfStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock)), nodeVisitor(node.elseStatement, visitor, isStatement, context.factory.liftToBlock) ); }, @@ -81828,13 +82937,13 @@ var visitEachChildTable = { return context.factory.updateDoStatement( node, visitIterationBody(node.statement, visitor, context, nodeVisitor), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [244 /* WhileStatement */]: function visitEachChildOfWhileStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWhileStatement( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -81850,17 +82959,17 @@ var visitEachChildTable = { [246 /* ForInStatement */]: function visitEachChildOfForInStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateForInStatement( node, - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, [247 /* ForOfStatement */]: function visitEachChildOfForOfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateForOfStatement( node, - nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword), - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + tokenVisitor ? nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword) : node.awaitModifier, + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -81885,34 +82994,34 @@ var visitEachChildTable = { [251 /* WithStatement */]: function visitEachChildOfWithStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWithStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [252 /* SwitchStatement */]: function visitEachChildOfSwitchStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSwitchStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.caseBlock, visitor, isCaseBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.caseBlock, visitor, isCaseBlock)) ); }, [253 /* LabeledStatement */]: function visitEachChildOfLabeledStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLabeledStatement( node, - nodeVisitor(node.label, visitor, isIdentifier), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.label, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [254 /* ThrowStatement */]: function visitEachChildOfThrowStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateThrowStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [255 /* TryStatement */]: function visitEachChildOfTryStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTryStatement( node, - nodeVisitor(node.tryBlock, visitor, isBlock), + Debug.checkDefined(nodeVisitor(node.tryBlock, visitor, isBlock)), nodeVisitor(node.catchClause, visitor, isCatchClause), nodeVisitor(node.finallyBlock, visitor, isBlock) ); @@ -81920,8 +83029,8 @@ var visitEachChildTable = { [257 /* VariableDeclaration */]: function visitEachChildOfVariableDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateVariableDeclaration( node, - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken) : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -81936,7 +83045,7 @@ var visitEachChildTable = { return context.factory.updateFunctionDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -81957,8 +83066,8 @@ var visitEachChildTable = { [261 /* InterfaceDeclaration */]: function visitEachChildOfInterfaceDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInterfaceDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), nodesVisitor(node.heritageClauses, visitor, isHeritageClause), nodesVisitor(node.members, visitor, isTypeElement) @@ -81967,25 +83076,25 @@ var visitEachChildTable = { [262 /* TypeAliasDeclaration */]: function visitEachChildOfTypeAliasDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAliasDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [263 /* EnumDeclaration */]: function visitEachChildOfEnumDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.members, visitor, isEnumMember) ); }, [264 /* ModuleDeclaration */]: function visitEachChildOfModuleDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateModuleDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isModuleName), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isModuleName)), nodeVisitor(node.body, visitor, isModuleBody) ); }, @@ -82004,24 +83113,24 @@ var visitEachChildTable = { [267 /* NamespaceExportDeclaration */]: function visitEachChildOfNamespaceExportDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExportDeclaration( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [268 /* ImportEqualsDeclaration */]: function visitEachChildOfImportEqualsDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportEqualsDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.moduleReference, visitor, isModuleReference) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.moduleReference, visitor, isModuleReference)) ); }, [269 /* ImportDeclaration */]: function visitEachChildOfImportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), nodeVisitor(node.importClause, visitor, isImportClause), - nodeVisitor(node.moduleSpecifier, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.moduleSpecifier, visitor, isExpression)), nodeVisitor(node.assertClause, visitor, isAssertClause) ); }, @@ -82035,8 +83144,8 @@ var visitEachChildTable = { [297 /* AssertEntry */]: function visitEachChildOfAssertEntry(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAssertEntry( node, - nodeVisitor(node.name, visitor, isAssertionKey), - nodeVisitor(node.value, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isAssertionKey)), + Debug.checkDefined(nodeVisitor(node.value, visitor, isExpression)) ); }, [270 /* ImportClause */]: function visitEachChildOfImportClause(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -82050,13 +83159,13 @@ var visitEachChildTable = { [271 /* NamespaceImport */]: function visitEachChildOfNamespaceImport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceImport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [277 /* NamespaceExport */]: function visitEachChildOfNamespaceExport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [272 /* NamedImports */]: function visitEachChildOfNamedImports(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -82070,20 +83179,20 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [274 /* ExportAssignment */]: function visitEachChildOfExportAssignment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportAssignment( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.expression, visitor, isExpression) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [275 /* ExportDeclaration */]: function visitEachChildOfExportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, nodeVisitor(node.exportClause, visitor, isNamedExportBindings), nodeVisitor(node.moduleSpecifier, visitor, isExpression), @@ -82101,59 +83210,59 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Module references [280 /* ExternalModuleReference */]: function visitEachChildOfExternalModuleReference(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExternalModuleReference( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // JSX [281 /* JsxElement */]: function visitEachChildOfJsxElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxElement( node, - nodeVisitor(node.openingElement, visitor, isJsxOpeningElement), + Debug.checkDefined(nodeVisitor(node.openingElement, visitor, isJsxOpeningElement)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingElement, visitor, isJsxClosingElement) + Debug.checkDefined(nodeVisitor(node.closingElement, visitor, isJsxClosingElement)) ); }, [282 /* JsxSelfClosingElement */]: function visitEachChildOfJsxSelfClosingElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSelfClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [283 /* JsxOpeningElement */]: function visitEachChildOfJsxOpeningElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxOpeningElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [284 /* JsxClosingElement */]: function visitEachChildOfJsxClosingElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression) + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)) ); }, [285 /* JsxFragment */]: function visitEachChildOfJsxFragment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxFragment( node, - nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment), + Debug.checkDefined(nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment) + Debug.checkDefined(nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment)) ); }, [288 /* JsxAttribute */]: function visitEachChildOfJsxAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxAttribute( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.initializer, visitor, isStringLiteralOrJsxExpression) ); }, @@ -82166,20 +83275,20 @@ var visitEachChildTable = { [290 /* JsxSpreadAttribute */]: function visitEachChildOfJsxSpreadAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSpreadAttribute( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [291 /* JsxExpression */]: function visitEachChildOfJsxExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Clauses [292 /* CaseClause */]: function visitEachChildOfCaseClause(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateCaseClause( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.statements, visitor, isStatement) ); }, @@ -82199,35 +83308,35 @@ var visitEachChildTable = { return context.factory.updateCatchClause( node, nodeVisitor(node.variableDeclaration, visitor, isVariableDeclaration), - nodeVisitor(node.block, visitor, isBlock) + Debug.checkDefined(nodeVisitor(node.block, visitor, isBlock)) ); }, // Property assignments [299 /* PropertyAssignment */]: function visitEachChildOfPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePropertyAssignment( node, - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.initializer, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isExpression)) ); }, [300 /* ShorthandPropertyAssignment */]: function visitEachChildOfShorthandPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateShorthandPropertyAssignment( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.objectAssignmentInitializer, visitor, isExpression) ); }, [301 /* SpreadAssignment */]: function visitEachChildOfSpreadAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadAssignment( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Enum [302 /* EnumMember */]: function visitEachChildOfEnumMember(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumMember( node, - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -82239,13 +83348,13 @@ var visitEachChildTable = { ); }, // Transformation nodes - [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [356 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [357 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -82964,10 +84073,13 @@ function getAllDecoratorsOfClass(node) { parameters }; } -function getAllDecoratorsOfClassElement(member, parent) { +function getAllDecoratorsOfClassElement(member, parent, useLegacyDecorators) { switch (member.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: + if (!useLegacyDecorators) { + return getAllDecoratorsOfMethod(member); + } return getAllDecoratorsOfAccessors(member, parent); case 171 /* MethodDeclaration */: return getAllDecoratorsOfMethod(member); @@ -83016,6 +84128,34 @@ function getAllDecoratorsOfProperty(property) { } return { decorators }; } +function walkUpLexicalEnvironments(env, cb) { + while (env) { + const result = cb(env); + if (result !== void 0) + return result; + env = env.previous; + } +} +function newPrivateEnvironment(data) { + return { data }; +} +function getPrivateIdentifier(privateEnv, name) { + var _a2, _b; + return isGeneratedPrivateIdentifier(name) ? (_a2 = privateEnv == null ? void 0 : privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(getNodeForGeneratedName(name)) : (_b = privateEnv == null ? void 0 : privateEnv.identifiers) == null ? void 0 : _b.get(name.escapedText); +} +function setPrivateIdentifier(privateEnv, name, entry) { + var _a2, _b; + if (isGeneratedPrivateIdentifier(name)) { + (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); + privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), entry); + } else { + (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); + privateEnv.identifiers.set(name.escapedText, entry); + } +} +function accessPrivateIdentifier(env, name) { + return walkUpLexicalEnvironments(env, (env2) => getPrivateIdentifier(env2.privateEnv, name)); +} // src/compiler/transformers/destructuring.ts function flattenDestructuringAssignment(node, visitor, context, level, needsValue, createAssignmentCallback) { @@ -83028,7 +84168,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu location = node = value; value = node.right; } else { - return visitNode(value, visitor, isExpression); + return Debug.checkDefined(visitNode(value, visitor, isExpression)); } } } @@ -83047,6 +84187,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu }; if (value) { value = visitNode(value, visitor, isExpression); + Debug.assert(value); if (isIdentifier(value) && bindingOrAssignmentElementAssignsToName(node, value.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node)) { value = ensureIdentifier( flattenContext, @@ -83088,7 +84229,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu function emitBindingOrAssignment(target, value2, location2, original) { Debug.assertNode(target, createAssignmentCallback ? isIdentifier : isExpression); const expression = createAssignmentCallback ? createAssignmentCallback(target, value2, location2) : setTextRange( - context.factory.createAssignment(visitNode(target, visitor, isExpression), value2), + context.factory.createAssignment(Debug.checkDefined(visitNode(target, visitor, isExpression)), value2), location2 ); expression.original = original; @@ -83145,7 +84286,7 @@ function flattenDestructuringBinding(node, visitor, context, level, rval, hoistT if (initializer && (isIdentifier(initializer) && bindingOrAssignmentElementAssignsToName(node, initializer.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node))) { initializer = ensureIdentifier( flattenContext, - visitNode(initializer, flattenContext.visitor), + Debug.checkDefined(visitNode(initializer, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, initializer @@ -83266,7 +84407,7 @@ function flattenObjectBindingOrAssignmentPattern(flattenContext, parent, pattern if (!getRestIndicatorOfBindingOrAssignmentElement(element)) { const propertyName = getPropertyNameOfBindingOrAssignmentElement(element); if (flattenContext.level >= 1 /* ObjectRest */ && !(element.transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !(getTargetOfBindingOrAssignmentElement(element).transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !isComputedPropertyName(propertyName)) { - bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor)); + bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor, isBindingOrAssignmentElement)); } else { if (bindingElements) { flattenContext.emitBindingOrAssignment(flattenContext.createObjectBindingOrAssignmentPattern(bindingElements), value, location, pattern); @@ -83404,7 +84545,7 @@ function createDestructuringPropertyAccess(flattenContext, value, propertyName) if (isComputedPropertyName(propertyName)) { const argumentExpression = ensureIdentifier( flattenContext, - visitNode(propertyName.expression, flattenContext.visitor), + Debug.checkDefined(visitNode(propertyName.expression, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, /*location*/ @@ -83447,6 +84588,7 @@ function makeArrayBindingPattern(factory2, elements) { return factory2.createArrayBindingPattern(elements); } function makeArrayAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isArrayBindingOrAssignmentElement); return factory2.createArrayLiteralExpression(map(elements, factory2.converters.convertToArrayAssignmentElement)); } function makeObjectBindingPattern(factory2, elements) { @@ -83454,6 +84596,7 @@ function makeObjectBindingPattern(factory2, elements) { return factory2.createObjectBindingPattern(elements); } function makeObjectAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isObjectBindingOrAssignmentElement); return factory2.createObjectLiteralExpression(map(elements, factory2.converters.convertToObjectAssignmentElement)); } function makeBindingElement(factory2, name) { @@ -83472,6 +84615,7 @@ function makeAssignmentElement(name) { // src/compiler/transformers/taggedTemplate.ts function processTaggedTemplateExpression(context, node, visitor, currentSourceFile, recordTaggedTemplateString, level) { const tag = visitNode(node.tag, visitor, isExpression); + Debug.assert(tag); const templateArguments = [void 0]; const cookedStrings = []; const rawStrings = []; @@ -83488,7 +84632,7 @@ function processTaggedTemplateExpression(context, node, visitor, currentSourceFi for (const templateSpan of template.templateSpans) { cookedStrings.push(createTemplateCooked(templateSpan.literal)); rawStrings.push(getRawLiteral(templateSpan.literal, currentSourceFile)); - templateArguments.push(visitNode(templateSpan.expression, visitor, isExpression)); + templateArguments.push(Debug.checkDefined(visitNode(templateSpan.expression, visitor, isExpression))); } } const helperCall = context.getEmitHelperFactory().createTemplateObjectHelper( @@ -83548,6 +84692,7 @@ function transformTypeScript(context) { const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const typeSerializer = compilerOptions.emitDecoratorMetadata ? createRuntimeTypeSerializer(context) : void 0; const previousOnEmitNode = context.onEmitNode; const previousOnSubstituteNode = context.onSubstituteNode; @@ -83722,6 +84867,12 @@ function transformTypeScript(context) { return Debug.failBadSyntaxKind(node); } } + function decoratorElidingVisitor(node) { + return isDecorator(node) ? void 0 : visitor(node); + } + function modifierElidingVisitor(node) { + return isModifier(node) ? void 0 : visitor(node); + } function modifierVisitor(node) { if (isDecorator(node)) return void 0; @@ -83861,19 +85012,25 @@ function transformTypeScript(context) { function visitObjectLiteralExpression(node) { return factory2.updateObjectLiteralExpression( node, - visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElement) + visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElementLike) ); } - function getClassFacts(node, staticProperties) { + function getClassFacts(node) { let facts = 0 /* None */; - if (some(staticProperties)) + if (some(getProperties( + node, + /*requireInitialized*/ + true, + /*isStatic*/ + true + ))) facts |= 1 /* HasStaticInitializedProperties */; const extendsClauseElement = getEffectiveBaseTypeNode(node); if (extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */) facts |= 64 /* IsDerivedClass */; - if (classOrConstructorParameterIsDecorated(node)) - facts |= 2 /* HasConstructorDecorators */; - if (childIsDecorated(node)) + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) + facts |= 2 /* HasClassOrConstructorParameterDecorators */; + if (childIsDecorated(legacyDecorators, node)) facts |= 4 /* HasMemberDecorators */; if (isExportOfNamespace(node)) facts |= 8 /* IsExportOfNamespace */; @@ -83881,8 +85038,6 @@ function transformTypeScript(context) { facts |= 32 /* IsDefaultExternalExport */; else if (isNamedExternalModuleExport(node)) facts |= 16 /* IsNamedExternalExport */; - if (languageVersion <= 1 /* ES5 */ && facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */) - facts |= 128 /* UseImmediatelyInvokedFunctionExpression */; return facts; } function hasTypeScriptClassSyntax(node) { @@ -83892,7 +85047,10 @@ function transformTypeScript(context) { return hasDecorators(node) || some(node.typeParameters) || some(node.heritageClauses, hasTypeScriptClassSyntax) || some(node.members, hasTypeScriptClassSyntax); } function visitClassDeclaration(node) { - if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !(currentNamespace && hasSyntacticModifier(node, 1 /* Export */))) { + var _a2; + const facts = getClassFacts(node); + const promoteToIIFE = languageVersion <= 1 /* ES5 */ && !!(facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */); + if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !classOrConstructorParameterIsDecorated(legacyDecorators, node) && !isExportOfNamespace(node)) { return factory2.updateClassDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), @@ -83903,24 +85061,19 @@ function transformTypeScript(context) { visitNodes2(node.members, getClassElementVisitor(node), isClassElement) ); } - const staticProperties = getProperties( - node, - /*requireInitializer*/ - true, - /*isStatic*/ - true - ); - const facts = getClassFacts(node, staticProperties); - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + if (promoteToIIFE) { context.startLexicalEnvironment(); } - const name = node.name || (facts & 5 /* NeedsName */ ? factory2.getGeneratedNameForNode(node) : void 0); - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); - const modifiers = !(facts & 128 /* UseImmediatelyInvokedFunctionExpression */) ? visitNodes2(node.modifiers, modifierVisitor, isModifier) : elideNodes(factory2, node.modifiers); - const classStatement = factory2.updateClassDeclaration( + const moveModifiers = promoteToIIFE || facts & 8 /* IsExportOfNamespace */ || facts & 2 /* HasClassOrConstructorParameterDecorators */ && legacyDecorators || facts & 1 /* HasStaticInitializedProperties */; + let modifiers = moveModifiers ? visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, visitor, isModifierLike); + if (facts & 2 /* HasClassOrConstructorParameterDecorators */) { + modifiers = injectClassTypeMetadata(modifiers, node); + } + const needsName = moveModifiers && !node.name || facts & 4 /* HasMemberDecorators */ || facts & 1 /* HasStaticInitializedProperties */; + const name = needsName ? (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node) : node.name; + const classDeclaration = factory2.updateClassDeclaration( node, - concatenate(decorators, modifiers), + modifiers, name, /*typeParameters*/ void 0, @@ -83931,24 +85084,25 @@ function transformTypeScript(context) { if (facts & 1 /* HasStaticInitializedProperties */) { emitFlags |= 64 /* NoTrailingSourceMap */; } - setEmitFlags(classStatement, emitFlags); - let statements = [classStatement]; - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + setEmitFlags(classDeclaration, emitFlags); + let statement; + if (promoteToIIFE) { + const statements = [classDeclaration]; const closingBraceLocation = createTokenRange(skipTrivia(currentSourceFile.text, node.members.end), 19 /* CloseBraceToken */); const localName = factory2.getInternalName(node); const outer = factory2.createPartiallyEmittedExpression(localName); setTextRangeEnd(outer, closingBraceLocation.end); setEmitFlags(outer, 3072 /* NoComments */); - const statement = factory2.createReturnStatement(outer); - setTextRangePos(statement, closingBraceLocation.pos); - setEmitFlags(statement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); - statements.push(statement); + const returnStatement = factory2.createReturnStatement(outer); + setTextRangePos(returnStatement, closingBraceLocation.pos); + setEmitFlags(returnStatement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); + statements.push(returnStatement); insertStatementsAfterStandardPrologue(statements, context.endLexicalEnvironment()); const iife = factory2.createImmediatelyInvokedArrowFunction(statements); - setEmitFlags(iife, 67108864 /* TypeScriptClassWrapper */); + setInternalEmitFlags(iife, 1 /* TypeScriptClassWrapper */); + const modifiers2 = facts & 16 /* IsNamedExternalExport */ ? factory2.createModifiersFromModifierFlags(1 /* Export */) : void 0; const varStatement = factory2.createVariableStatement( - /*modifiers*/ - void 0, + modifiers2, factory2.createVariableDeclarationList([ factory2.createVariableDeclaration( factory2.getLocalName( @@ -83964,114 +85118,133 @@ function transformTypeScript(context) { void 0, iife ) - ]) + ], 1 /* Let */) ); setOriginalNode(varStatement, node); setCommentRange(varStatement, node); setSourceMapRange(varStatement, moveRangePastDecorators(node)); startOnNewLine(varStatement); - statements = [varStatement]; + statement = varStatement; + } else { + statement = classDeclaration; } - if (facts & 8 /* IsExportOfNamespace */) { - addExportMemberAssignment(statements, node); - } else if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */ || facts & 2 /* HasConstructorDecorators */) { + if (moveModifiers) { + if (facts & 8 /* IsExportOfNamespace */) { + return demarcateMultiStatementExport( + statement, + createExportMemberAssignmentStatement(node) + ); + } if (facts & 32 /* IsDefaultExternalExport */) { - statements.push(factory2.createExportDefault(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); - } else if (facts & 16 /* IsNamedExternalExport */) { - statements.push(factory2.createExternalModuleExport(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); + return demarcateMultiStatementExport( + statement, + factory2.createExportDefault(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); + } + if (facts & 16 /* IsNamedExternalExport */ && !promoteToIIFE) { + return demarcateMultiStatementExport( + statement, + factory2.createExternalModuleExport(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); } } - if (statements.length > 1) { - statements.push(factory2.createEndOfDeclarationMarker(node)); - setEmitFlags(classStatement, getEmitFlags(classStatement) | 8388608 /* HasEndOfDeclarationMarker */); - } - return singleOrMany(statements); + return statement; + } + function demarcateMultiStatementExport(declarationStatement, exportStatement) { + addEmitFlags(declarationStatement, 8388608 /* HasEndOfDeclarationMarker */); + return [ + declarationStatement, + exportStatement, + factory2.createEndOfDeclarationMarker(declarationStatement) + ]; } function visitClassExpression(node) { - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); + let modifiers = visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike); + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) { + modifiers = injectClassTypeMetadata(modifiers, node); + } return factory2.updateClassExpression( node, - decorators, + modifiers, node.name, /*typeParameters*/ void 0, visitNodes2(node.heritageClauses, visitor, isHeritageClause), - isClassLikeDeclarationWithTypeScriptSyntax(node) ? transformClassMembers(node) : visitNodes2(node.members, getClassElementVisitor(node), isClassElement) + transformClassMembers(node) ); } function transformClassMembers(node) { - const members = []; + const members = visitNodes2(node.members, getClassElementVisitor(node), isClassElement); + let newMembers; const constructor = getFirstConstructorWithBody(node); const parametersWithPropertyAssignments = constructor && filter(constructor.parameters, (p) => isParameterPropertyDeclaration(p, constructor)); if (parametersWithPropertyAssignments) { for (const parameter of parametersWithPropertyAssignments) { - if (isIdentifier(parameter.name)) { - members.push(setOriginalNode(factory2.createPropertyDeclaration( - /*modifiers*/ - void 0, - parameter.name, - /*questionOrExclamationToken*/ - void 0, - /*type*/ - void 0, - /*initializer*/ - void 0 - ), parameter)); - } + const parameterProperty = factory2.createPropertyDeclaration( + /*modifiers*/ + void 0, + parameter.name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + /*initializer*/ + void 0 + ); + setOriginalNode(parameterProperty, parameter); + newMembers = append(newMembers, parameterProperty); } } - addRange(members, visitNodes2(node.members, getClassElementVisitor(node), isClassElement)); - return setTextRange( - factory2.createNodeArray(members), - /*location*/ - node.members - ); - } - function transformAllDecoratorsOfDeclaration(node, container, allDecorators) { - var _a2, _b, _c, _d; - if (!allDecorators) { - return void 0; + if (newMembers) { + newMembers = addRange(newMembers, members); + return setTextRange( + factory2.createNodeArray(newMembers), + /*location*/ + node.members + ); } - const decorators = visitArray(allDecorators.decorators, visitor, isDecorator); - const parameterDecorators = flatMap(allDecorators.parameters, transformDecoratorsOfParameter); - const metadataDecorators = some(decorators) || some(parameterDecorators) ? getTypeMetadata(node, container) : void 0; - const result = factory2.createNodeArray(concatenate(concatenate(decorators, parameterDecorators), metadataDecorators)); - const pos = (_b = (_a2 = firstOrUndefined(allDecorators.decorators)) == null ? void 0 : _a2.pos) != null ? _b : -1; - const end = (_d = (_c = lastOrUndefined(allDecorators.decorators)) == null ? void 0 : _c.end) != null ? _d : -1; - setTextRangePosEnd(result, pos, end); - return result; + return members; } - function transformDecoratorsOfParameter(parameterDecorators, parameterOffset) { - if (parameterDecorators) { - const decorators = []; - for (const parameterDecorator of parameterDecorators) { - const expression = visitNode(parameterDecorator.expression, visitor, isExpression); - const helper = emitHelpers().createParamHelper(expression, parameterOffset); - setTextRange(helper, parameterDecorator.expression); - setEmitFlags(helper, 3072 /* NoComments */); - const decorator = factory2.createDecorator(helper); - setSourceMapRange(decorator, parameterDecorator.expression); - setCommentRange(decorator, parameterDecorator.expression); - setEmitFlags(decorator, 3072 /* NoComments */); - decorators.push(decorator); + function injectClassTypeMetadata(modifiers, node) { + const metadata = getTypeMetadata(node, node); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, takeWhile(modifiers, isExportOrDefaultModifier)); + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(skipWhile(modifiers, isExportOrDefaultModifier), isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); + } + return modifiers; + } + function injectClassElementTypeMetadata(modifiers, node, container) { + if (isClassLike(container) && classElementOrClassElementParameterIsDecorated(legacyDecorators, node, container)) { + const metadata = getTypeMetadata(node, container); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(modifiers, isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); } - return decorators; } + return modifiers; } function getTypeMetadata(node, container) { + if (!legacyDecorators) + return void 0; return USE_NEW_TYPE_METADATA_FORMAT ? getNewTypeMetadata(node, container) : getOldTypeMetadata(node, container); } function getOldTypeMetadata(node, container) { @@ -84180,8 +85353,9 @@ function transformTypeScript(context) { } function visitPropertyNameOfClassElement(member) { const name = member.name; - if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member))) { + if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member) && legacyDecorators)) { const expression = visitNode(name.expression, visitor, isExpression); + Debug.assert(expression); const innerExpression = skipPartiallyEmittedExpressions(expression); if (!isSimpleInlineableExpression(innerExpression)) { const generatedName = factory2.getGeneratedNameForNode(name); @@ -84189,7 +85363,7 @@ function transformTypeScript(context) { return factory2.updateComputedPropertyName(name, factory2.createAssignment(generatedName, expression)); } } - return visitNode(name, visitor, isPropertyName); + return Debug.checkDefined(visitNode(name, visitor, isPropertyName)); } function visitHeritageClause(node) { if (node.token === 117 /* ImplementsKeyword */) { @@ -84200,7 +85374,7 @@ function transformTypeScript(context) { function visitExpressionWithTypeArguments(node) { return factory2.updateExpressionWithTypeArguments( node, - visitNode(node.expression, visitor, isLeftHandSideExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression)), /*typeArguments*/ void 0 ); @@ -84210,16 +85384,16 @@ function transformTypeScript(context) { } function visitPropertyDeclaration(node, parent) { const isAmbient = node.flags & 16777216 /* Ambient */ || hasSyntacticModifier(node, 256 /* Abstract */); - if (isAmbient && !hasDecorators(node)) { + if (isAmbient && !(legacyDecorators && hasDecorators(node))) { return void 0; } - const allDecorators = getAllDecoratorsOfClassElement(node, parent); - const decorators = transformAllDecoratorsOfDeclaration(node, parent, allDecorators); + let modifiers = isClassLike(parent) ? !isAmbient ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent); if (isAmbient) { return factory2.updatePropertyDeclaration( node, - concatenate(decorators, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), - visitNode(node.name, visitor, isPropertyName), + concatenate(modifiers, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -84230,13 +85404,13 @@ function transformTypeScript(context) { } return factory2.updatePropertyDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), /*questionOrExclamationToken*/ void 0, /*type*/ void 0, - visitNode(node.initializer, visitor) + visitNode(node.initializer, visitor, isExpression) ); } function visitConstructor(node) { @@ -84337,11 +85511,11 @@ function transformTypeScript(context) { if (!shouldEmitFunctionLikeDeclaration(node)) { return void 0; } - const allDecorators = isClassLike(parent) ? getAllDecoratorsOfClassElement(node, parent) : void 0; - const decorators = isClassLike(parent) ? transformAllDecoratorsOfDeclaration(node, parent, allDecorators) : void 0; + let modifiers = isClassLike(parent) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent); return factory2.updateMethodDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, node.asteriskToken, visitPropertyNameOfClassElement(node), /*questionToken*/ @@ -84364,10 +85538,11 @@ function transformTypeScript(context) { if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent) ? transformAllDecoratorsOfDeclaration(node, parent, getAllDecoratorsOfClassElement(node, parent)) : void 0; + let modifiers = isClassLike(parent) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent); return factory2.updateGetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), /*type*/ @@ -84382,10 +85557,11 @@ function transformTypeScript(context) { if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent) ? transformAllDecoratorsOfDeclaration(node, parent, getAllDecoratorsOfClassElement(node, parent)) : void 0; + let modifiers = isClassLike(parent) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent); return factory2.updateSetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), visitFunctionBody(node.body, visitor, context) || factory2.createBlock([]) @@ -84452,10 +85628,9 @@ function transformTypeScript(context) { } const updated = factory2.updateParameterDeclaration( node, - elideNodes(factory2, node.modifiers), - // preserve positions, if available + visitNodes2(node.modifiers, (node2) => isDecorator(node2) ? visitor(node2) : void 0, isModifierLike), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -84504,7 +85679,7 @@ function transformTypeScript(context) { return setTextRange( factory2.createAssignment( getNamespaceMemberNameWithSourceMapsAndWithoutComments(name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), /*location*/ node @@ -84514,7 +85689,7 @@ function transformTypeScript(context) { function visitVariableDeclaration(node) { const updated = factory2.updateVariableDeclaration( node, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*exclamationToken*/ void 0, /*type*/ @@ -84530,26 +85705,30 @@ function transformTypeScript(context) { const innerExpression = skipOuterExpressions(node.expression, ~6 /* Assertions */); if (isAssertionExpression(innerExpression)) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } return visitEachChild(node, visitor, context); } function visitAssertionExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitNonNullExpression(node) { const expression = visitNode(node.expression, visitor, isLeftHandSideExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitSatisfiesExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitCallExpression(node) { return factory2.updateCallExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -84558,7 +85737,7 @@ function transformTypeScript(context) { function visitNewExpression(node) { return factory2.updateNewExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -84567,28 +85746,28 @@ function transformTypeScript(context) { function visitTaggedTemplateExpression(node) { return factory2.updateTaggedTemplateExpression( node, - visitNode(node.tag, visitor, isExpression), + Debug.checkDefined(visitNode(node.tag, visitor, isExpression)), /*typeArguments*/ void 0, - visitNode(node.template, visitor, isExpression) + Debug.checkDefined(visitNode(node.template, visitor, isTemplateLiteral)) ); } function visitJsxSelfClosingElement(node) { return factory2.updateJsxSelfClosingElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function visitJsxJsxOpeningElement(node) { return factory2.updateJsxOpeningElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function shouldEmitEnumDeclaration(node) { @@ -84734,7 +85913,7 @@ function transformTypeScript(context) { } else { enableSubstitutionForNonQualifiedEnumMembers(); if (member.initializer) { - return visitNode(member.initializer, visitor, isExpression); + return Debug.checkDefined(visitNode(member.initializer, visitor, isExpression)); } else { return factory2.createVoidZero(); } @@ -84976,7 +86155,7 @@ function transformTypeScript(context) { if (node.kind === 271 /* NamespaceImport */) { return shouldEmitAliasDeclaration(node) ? node : void 0; } else { - const allowEmpty = compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const elements = visitNodes2(node.elements, visitImportSpecifier, isImportSpecifier); return allowEmpty || some(elements) ? factory2.updateNamedImports(node, elements) : void 0; } @@ -84985,7 +86164,7 @@ function transformTypeScript(context) { return !node.isTypeOnly && shouldEmitAliasDeclaration(node) ? node : void 0; } function visitExportAssignment(node) { - return resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; + return compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; } function visitExportDeclaration(node) { if (node.isTypeOnly) { @@ -84994,7 +86173,7 @@ function transformTypeScript(context) { if (!node.exportClause || isNamespaceExport(node.exportClause)) { return node; } - const allowEmpty = !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const exportClause = visitNode( node.exportClause, (bindings) => visitNamedExportBindings(bindings, allowEmpty), @@ -85015,13 +86194,13 @@ function transformTypeScript(context) { return allowEmpty || some(elements) ? factory2.updateNamedExports(node, elements) : void 0; } function visitNamespaceExports(node) { - return factory2.updateNamespaceExport(node, visitNode(node.name, visitor, isIdentifier)); + return factory2.updateNamespaceExport(node, Debug.checkDefined(visitNode(node.name, visitor, isIdentifier))); } function visitNamedExportBindings(node, allowEmpty) { return isNamespaceExport(node) ? visitNamespaceExports(node) : visitNamedExports(node, allowEmpty); } function visitExportSpecifier(node) { - return !node.isTypeOnly && resolver.isValueAliasDeclaration(node) ? node : void 0; + return !node.isTypeOnly && (compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node)) ? node : void 0; } function shouldEmitImportEqualsDeclaration(node) { return shouldEmitAliasDeclaration(node) || !isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node); @@ -85102,7 +86281,7 @@ function transformTypeScript(context) { function isDefaultExternalModuleExport(node) { return isExternalModuleExport(node) && hasSyntacticModifier(node, 1024 /* Default */); } - function addExportMemberAssignment(statements, node) { + function createExportMemberAssignmentStatement(node) { const expression = factory2.createAssignment( factory2.getExternalModuleOrNamespaceExportName( currentNamespaceContainerName, @@ -85117,7 +86296,10 @@ function transformTypeScript(context) { setSourceMapRange(expression, createRange(node.name ? node.name.pos : node.pos, node.end)); const statement = factory2.createExpressionStatement(expression); setSourceMapRange(statement, createRange(-1, node.end)); - statements.push(statement); + return statement; + } + function addExportMemberAssignment(statements, node) { + statements.push(createExportMemberAssignmentStatement(node)); } function createNamespaceExport(exportName, exportValue, location) { return setTextRange( @@ -85280,7 +86462,7 @@ function transformTypeScript(context) { return isPropertyAccessExpression(node) || isElementAccessExpression(node) ? resolver.getConstantValue(node) : void 0; } function shouldEmitAliasDeclaration(node) { - return isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); + return compilerOptions.verbatimModuleSyntax || isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); } } @@ -85288,6 +86470,7 @@ function transformTypeScript(context) { function transformClassFields(context) { const { factory: factory2, + getEmitHelperFactory: emitHelpers, hoistVariableDeclaration, endLexicalEnvironment, startLexicalEnvironment, @@ -85298,6 +86481,7 @@ function transformClassFields(context) { const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const shouldTransformInitializersUsingSet = !useDefineForClassFields; const shouldTransformInitializersUsingDefine = useDefineForClassFields && languageVersion < 9 /* ES2022 */; const shouldTransformInitializers = shouldTransformInitializersUsingSet || shouldTransformInitializersUsingDefine; @@ -85310,42 +86494,69 @@ function transformClassFields(context) { context.onSubstituteNode = onSubstituteNode; const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; + let shouldTransformPrivateStaticElementsInFile = false; let enabledSubstitutions; let classAliases; let pendingExpressions; let pendingStatements; - const classLexicalEnvironmentStack = []; - const classLexicalEnvironmentMap = /* @__PURE__ */ new Map(); - let currentClassLexicalEnvironment; + let lexicalEnvironment; + const lexicalEnvironmentMap = /* @__PURE__ */ new Map(); let currentClassContainer; - let currentComputedPropertyNameClassLexicalEnvironment; let currentStaticPropertyDeclarationOrStaticBlock; + let shouldSubstituteThisWithClassThis = false; + let previousShouldSubstituteThisWithClassThis = false; return chainBundle(context, transformSourceFile); function transformSourceFile(node) { - if (node.isDeclarationFile || !shouldTransformAnything) { + if (node.isDeclarationFile) { + return node; + } + lexicalEnvironment = void 0; + shouldTransformPrivateStaticElementsInFile = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (!shouldTransformAnything && !shouldTransformPrivateStaticElementsInFile) { return node; } const visited = visitEachChild(node, visitor, context); addEmitHelpers(visited, context.readEmitHelpers()); return visited; } + function modifierVisitor(node) { + switch (node.kind) { + case 127 /* AccessorKeyword */: + return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + default: + return tryCast(node, isModifier); + } + } function visitor(node) { if (!(node.transformFlags & 16777216 /* ContainsClassFields */) && !(node.transformFlags & 134234112 /* ContainsLexicalThisOrSuper */)) { return node; } switch (node.kind) { case 127 /* AccessorKeyword */: - return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + return Debug.fail("Use `modifierVisitor` instead."); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); case 228 /* ClassExpression */: - return visitClassExpression(node); + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); case 172 /* ClassStaticBlockDeclaration */: - return visitClassStaticBlockDeclaration(node); case 169 /* PropertyDeclaration */: - return visitPropertyDeclaration(node); + return Debug.fail("Use `classElementVisitor` instead."); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); case 240 /* VariableStatement */: return visitVariableStatement(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); case 80 /* PrivateIdentifier */: return visitPrivateIdentifier(node); case 208 /* PropertyAccessExpression */: @@ -85356,15 +86567,23 @@ function transformClassFields(context) { case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); case 210 /* CallExpression */: return visitCallExpression(node); case 241 /* ExpressionStatement */: @@ -85393,21 +86612,57 @@ function transformClassFields(context) { function fallbackVisitor(node) { return visitEachChild(node, visitor, context); } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } function discardedValueVisitor(node) { switch (node.kind) { case 221 /* PrefixUnaryExpression */: case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); default: return visitor(node); } @@ -85451,10 +86706,20 @@ function transformClassFields(context) { visitPropertyDeclaration, node ); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); case 164 /* ComputedPropertyName */: return visitComputedPropertyName(node); case 237 /* SemicolonClassElement */: return node; + default: + return isModifierLike(node) ? modifierVisitor(node) : visitor(node); + } + } + function propertyNameVisitor(node) { + switch (node.kind) { + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); default: return visitor(node); } @@ -85480,20 +86745,25 @@ function transformClassFields(context) { } return setOriginalNode(factory2.createIdentifier(""), node); } - function isPrivateIdentifierInExpression(node) { - return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; - } function transformPrivateIdentifierInInExpression(node) { - const info = accessPrivateIdentifier(node.left); + const info = accessPrivateIdentifier2(node.left); if (info) { const receiver = visitNode(node.right, visitor, isExpression); return setOriginalNode( - context.getEmitHelperFactory().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), + emitHelpers().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), node ); } return visitEachChild(node, visitor, context); } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } function visitVariableStatement(node) { const savedPendingStatements = pendingStatements; pendingStatements = []; @@ -85502,17 +86772,90 @@ function transformClassFields(context) { pendingStatements = savedPendingStatements; return statement; } - function visitComputedPropertyName(node) { - let expression = visitNode(node.expression, visitor, isExpression); + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function injectPendingExpressions(expression) { if (some(pendingExpressions)) { if (isParenthesizedExpression(expression)) { - expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions([...pendingExpressions, expression.expression])); + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); } else { - expression = factory2.inlineExpressions([...pendingExpressions, expression]); + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); } pendingExpressions = void 0; } - return factory2.updateComputedPropertyName(node, expression); + return expression; + } + function visitComputedPropertyName(node) { + const expression = visitNode(node.expression, visitor, isExpression); + return factory2.updateComputedPropertyName(node, injectPendingExpressions(expression)); } function visitConstructorDeclaration(node) { if (currentClassContainer) { @@ -85520,12 +86863,19 @@ function transformClassFields(context) { } return fallbackVisitor(node); } + function shouldTransformClassElementToWeakMap(node) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) + return true; + if (hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) + return true; + return false; + } function visitMethodOrAccessorDeclaration(node) { Debug.assert(!hasDecorators(node)); - if (!shouldTransformPrivateElementsOrClassStaticBlocks || !isPrivateIdentifier(node.name)) { + if (!isPrivateIdentifierClassElementDeclaration(node) || !shouldTransformClassElementToWeakMap(node)) { return visitEachChild(node, classElementVisitor, context); } - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (!info.isValid) { return node; @@ -85560,7 +86910,7 @@ function transformClassFields(context) { } function getHoistedFunctionName(node) { Debug.assert(isPrivateIdentifier(node.name)); - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (info.kind === "m" /* Method */) { return info.methodName; @@ -85575,42 +86925,61 @@ function transformClassFields(context) { } } function transformAutoAccessor(node) { - Debug.assertEachNode(node.modifiers, isModifier); const commentRange = getCommentRange(node); const sourceMapRange = getSourceMapRange(node); const name = node.name; let getterName = name; let setterName = name; if (isComputedPropertyName(name) && !isSimpleInlineableExpression(name.expression)) { - const temp = factory2.createTempVariable(hoistVariableDeclaration); - setSourceMapRange(temp, name.expression); - const expression = visitNode(name.expression, visitor, isExpression); - const assignment = factory2.createAssignment(temp, expression); - setSourceMapRange(assignment, name.expression); - getterName = factory2.updateComputedPropertyName(name, factory2.inlineExpressions([assignment, temp])); - setterName = factory2.updateComputedPropertyName(name, temp); + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name, visitNode(name.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name.expression); + const expression = visitNode(name.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name.expression); + getterName = factory2.updateComputedPropertyName(name, assignment); + setterName = factory2.updateComputedPropertyName(name, temp); + } } - const backingField = createAccessorPropertyBackingField(factory2, node, node.modifiers, node.initializer); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiers, node.initializer); setOriginalNode(backingField, node); setEmitFlags(backingField, 3072 /* NoComments */); setSourceMapRange(backingField, sourceMapRange); - const getter = createAccessorPropertyGetRedirector(factory2, node, node.modifiers, getterName); + const getter = createAccessorPropertyGetRedirector(factory2, node, modifiers, getterName); setOriginalNode(getter, node); setCommentRange(getter, commentRange); setSourceMapRange(getter, sourceMapRange); - const setter = createAccessorPropertySetRedirector(factory2, node, node.modifiers, setterName); + const setter = createAccessorPropertySetRedirector(factory2, node, modifiers, setterName); setOriginalNode(setter, node); setEmitFlags(setter, 3072 /* NoComments */); setSourceMapRange(setter, sourceMapRange); return visitArray([backingField, getter, setter], accessorFieldResultVisitor, isClassElement); } function transformPrivateFieldInitializer(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { - const info = accessPrivateIdentifier(node.name); + if (shouldTransformClassElementToWeakMap(node)) { + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); - return info.isValid ? void 0 : node; + if (!info.isValid) { + return node; + } + if (info.isStatic && !shouldTransformPrivateElementsOrClassStaticBlocks) { + const statement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); + if (statement) { + return factory2.createClassStaticBlockDeclaration(factory2.createBlock( + [statement], + /*multiLine*/ + true + )); + } + } + return void 0; } - if (shouldTransformInitializersUsingSet && !isStatic(node) && currentClassLexicalEnvironment && currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */) { + if (shouldTransformInitializersUsingSet && !isStatic(node) && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */) { return factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, visitor, isModifierLike), @@ -85623,6 +86992,19 @@ function transformClassFields(context) { void 0 ); } + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, (child) => namedEvaluationVisitor(child, referencedName), isExpression) + ); + } return visitEachChild(node, visitor, context); } function transformPublicFieldInitializer(node) { @@ -85630,10 +87012,12 @@ function transformClassFields(context) { const expr = getPropertyNameExpressionIfNeeded( node.name, /*shouldHoist*/ - !!node.initializer || useDefineForClassFields + !!node.initializer || useDefineForClassFields, + /*captureReferencedName*/ + isNamedEvaluation(node, isAnonymousClassNeedingAssignedName) ); if (expr) { - getPendingExpressions().push(expr); + getPendingExpressions().push(...flattenCommaList(expr)); } if (isStatic(node) && !shouldTransformPrivateElementsOrClassStaticBlocks) { const initializerStatement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); @@ -85651,17 +87035,26 @@ function transformClassFields(context) { } return void 0; } - return visitEachChild(node, classElementVisitor, context); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + visitNode(node.name, propertyNameVisitor, isPropertyName), + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); } function transformFieldInitializer(node) { Debug.assert(!hasDecorators(node), "Decorators should already have been transformed and elided."); return isPrivateIdentifierClassElementDeclaration(node) ? transformPrivateFieldInitializer(node) : transformPublicFieldInitializer(node); } function shouldTransformAutoAccessorsInCurrentClass() { - return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!currentClassLexicalEnvironment && !!(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */); + return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && !!(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */); } function visitPropertyDeclaration(node) { - if (shouldTransformAutoAccessorsInCurrentClass() && isAutoAccessorPropertyDeclaration(node)) { + if (isAutoAccessorPropertyDeclaration(node) && (shouldTransformAutoAccessorsInCurrentClass() || hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */)) { return transformAutoAccessor(node); } return transformFieldInitializer(node); @@ -85673,33 +87066,35 @@ function transformClassFields(context) { setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.getterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.methodName ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } } function visitPropertyAccessExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(node.name)) { - const privateIdentifierInfo = accessPrivateIdentifier(node.name); + if (isPrivateIdentifier(node.name)) { + const privateIdentifierInfo = accessPrivateIdentifier2(node.name); if (privateIdentifierInfo) { return setTextRange( setOriginalNode( @@ -85710,8 +87105,8 @@ function transformClassFields(context) { ); } } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -85729,8 +87124,8 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function visitElementAccessExpression(node) { - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -85747,16 +87142,16 @@ function transformClassFields(context) { } return visitEachChild(node, visitor, context); } - function visitPreOrPostfixUnaryExpression(node, valueIsDiscarded) { + function visitPreOrPostfixUnaryExpression(node, discarded) { if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { const operand = skipParentheses(node.operand); - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(operand)) { + if (isPrivateIdentifierPropertyAccessExpression(operand)) { let info; - if (info = accessPrivateIdentifier(operand.name)) { + if (info = accessPrivateIdentifier2(operand.name)) { const receiver = visitNode(operand.expression, visitor, isExpression); const { readExpression, initializeExpression } = createCopiableReceiverExpr(receiver); let expression = createPrivateIdentifierAccess(info, readExpression); - const temp = isPrefixUnaryExpression(node) || valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = isPrefixUnaryExpression(node) || discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = createPrivateIdentifierAssignment( info, @@ -85772,8 +87167,8 @@ function transformClassFields(context) { } return expression; } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { const expression = visitInvalidSuperProperty(operand); return isPrefixUnaryExpression(node) ? factory2.updatePrefixUnaryExpression(node, expression) : factory2.updatePostfixUnaryExpression(node, expression); @@ -85796,7 +87191,7 @@ function transformClassFields(context) { if (setterName && getterName) { let expression = factory2.createReflectGetCall(superClassReference, getterName, classConstructor); setTextRange(expression, operand); - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = factory2.createReflectSetCall(superClassReference, setterName, expression, classConstructor); setOriginalNode(expression, node); @@ -85837,12 +87232,13 @@ function transformClassFields(context) { return { readExpression, initializeExpression }; } function visitCallExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.expression)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.expression) && accessPrivateIdentifier2(node.expression.name)) { const { thisArg, target } = factory2.createCallBinding(node.expression, hoistVariableDeclaration, languageVersion); if (isCallChain(node)) { return factory2.updateCallChain( node, - factory2.createPropertyAccessChain(visitNode(target, visitor), node.questionDotToken, "call"), + factory2.createPropertyAccessChain(visitNode(target, visitor, isExpression), node.questionDotToken, "call"), /*questionDotToken*/ void 0, /*typeArguments*/ @@ -85852,16 +87248,16 @@ function transformClassFields(context) { } return factory2.updateCallExpression( node, - factory2.createPropertyAccessExpression(visitNode(target, visitor), "call"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "call"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression), ...visitNodes2(node.arguments, visitor, isExpression)] ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionCallCall( visitNode(node.expression, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, visitNodes2(node.arguments, visitor, isExpression) ); setOriginalNode(invocation, node); @@ -85871,12 +87267,13 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function visitTaggedTemplateExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.tag)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.tag) && accessPrivateIdentifier2(node.tag.name)) { const { thisArg, target } = factory2.createCallBinding(node.tag, hoistVariableDeclaration, languageVersion); return factory2.updateTaggedTemplateExpression( node, factory2.createCallExpression( - factory2.createPropertyAccessExpression(visitNode(target, visitor), "bind"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "bind"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression)] @@ -85886,10 +87283,10 @@ function transformClassFields(context) { visitNode(node.template, visitor, isTemplateLiteral) ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionBindCall( visitNode(node.tag, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, [] ); setOriginalNode(invocation, node); @@ -85905,10 +87302,10 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function transformClassStaticBlockDeclaration(node) { + if (lexicalEnvironment) { + lexicalEnvironmentMap.set(getOriginalNode(node), lexicalEnvironment); + } if (shouldTransformPrivateElementsOrClassStaticBlocks) { - if (currentClassLexicalEnvironment) { - classLexicalEnvironmentMap.set(getOriginalNodeId(node), currentClassLexicalEnvironment); - } startLexicalEnvironment(); let statements = setCurrentStaticPropertyDeclarationOrStaticBlockAnd( node, @@ -85923,23 +87320,45 @@ function transformClassFields(context) { return iife; } } - function visitBinaryExpression(node, valueIsDiscarded) { + function isAnonymousClassNeedingAssignedName(node) { + if (isClassExpression(node) && !node.name) { + const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); + const classStaticBlock = find(staticPropertiesOrClassStaticBlocks, isClassStaticBlockDeclaration); + if (classStaticBlock) { + for (const statement of classStaticBlock.body.statements) { + if (isExpressionStatement(statement) && isCallToHelper(statement.expression, "___setFunctionName")) { + return false; + } + } + } + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || !!(getInternalEmitFlags(node) && 32 /* TransformPrivateStaticElements */)) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + return hasTransformableStatics; + } + return false; + } + function visitBinaryExpression(node, discarded) { if (isDestructuringAssignment(node)) { const savedPendingExpressions = pendingExpressions; pendingExpressions = void 0; node = factory2.updateBinaryExpression( node, - visitNode(node.left, assignmentTargetVisitor), + visitNode(node.left, assignmentTargetVisitor, isExpression), node.operatorToken, - visitNode(node.right, visitor) + visitNode(node.right, visitor, isExpression) ); const expr = some(pendingExpressions) ? factory2.inlineExpressions(compact([...pendingExpressions, node])) : node; pendingExpressions = savedPendingExpressions; return expr; } if (isAssignmentExpression(node)) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.left)) { - const info = accessPrivateIdentifier(node.left.name); + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isPrivateIdentifierPropertyAccessExpression(node.left)) { + const info = accessPrivateIdentifier2(node.left.name); if (info) { return setTextRange( setOriginalNode( @@ -85949,8 +87368,8 @@ function transformClassFields(context) { node ); } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return factory2.updateBinaryExpression( node, @@ -85983,7 +87402,7 @@ function transformClassFields(context) { ); setTextRange(expression, node); } - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); if (temp) { expression = factory2.createAssignment(temp, expression); setTextRange(temp, node); @@ -86005,11 +87424,42 @@ function transformClassFields(context) { } } } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierInExpression(node)) { + if (isPrivateIdentifierInExpression(node)) { return transformPrivateIdentifierInInExpression(node); } return visitEachChild(node, visitor, context); } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.createTempVariable(hoistVariableDeclaration); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } function createPrivateIdentifierAssignment(info, receiver, right, operator) { receiver = visitNode(receiver, visitor, isExpression); right = visitNode(right, visitor, isExpression); @@ -86025,7 +87475,7 @@ function transformClassFields(context) { setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -86033,7 +87483,7 @@ function transformClassFields(context) { info.setterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -86042,13 +87492,15 @@ function transformClassFields(context) { void 0 ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } @@ -86059,7 +87511,7 @@ function transformClassFields(context) { function getClassFacts(node) { let facts = 0 /* None */; const original = getOriginalNode(node); - if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(original)) { + if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(legacyDecorators, original)) { facts |= 1 /* ClassWasDecorated */; } let containsPublicInstanceFields = false; @@ -86103,7 +87555,8 @@ function transformClassFields(context) { return facts; } function visitExpressionWithTypeArgumentsInHeritageClause(node) { - const facts = (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts) || 0 /* None */; + var _a2; + const facts = ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts) || 0 /* None */; if (facts & 4 /* NeedsClassSuperReference */) { const temp = factory2.createTempVariable( hoistVariableDeclaration, @@ -86123,20 +87576,24 @@ function transformClassFields(context) { } return visitEachChild(node, visitor, context); } - function visitInNewClassLexicalEnvironment(node, visitor2) { + function visitInNewClassLexicalEnvironment(node, referencedName, visitor2) { const savedCurrentClassContainer = currentClassContainer; const savedPendingExpressions = pendingExpressions; + const savedLexicalEnvironment = lexicalEnvironment; currentClassContainer = node; pendingExpressions = void 0; startClassLexicalEnvironment(); - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldAlwaysTransformPrivateStaticElements = getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */; + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldAlwaysTransformPrivateStaticElements) { const name = getNameOfDeclaration(node); if (name && isIdentifier(name)) { - getPrivateIdentifierEnvironment().className = name; + getPrivateIdentifierEnvironment().data.className = name; } + } + if (shouldTransformPrivateElementsOrClassStaticBlocks) { const privateInstanceMethodsAndAccessors = getPrivateInstanceMethodsAndAccessors(node); if (some(privateInstanceMethodsAndAccessors)) { - getPrivateIdentifierEnvironment().weakSetName = createHoistedVariableForClass( + getPrivateIdentifierEnvironment().data.weakSetName = createHoistedVariableForClass( "instances", privateInstanceMethodsAndAccessors[0].name ); @@ -86149,27 +87606,42 @@ function transformClassFields(context) { if (facts & 8 /* NeedsSubstitutionForThisInClassStaticField */) { enableSubstitutionForClassStaticThisOrSuperReference(); } - const result = visitor2(node, facts); + const result = visitor2(node, facts, referencedName); endClassLexicalEnvironment(); + Debug.assert(lexicalEnvironment === savedLexicalEnvironment); currentClassContainer = savedCurrentClassContainer; pendingExpressions = savedPendingExpressions; return result; } function visitClassDeclaration(node) { - return visitInNewClassLexicalEnvironment(node, visitClassDeclarationInNewClassLexicalEnvironment); + return visitInNewClassLexicalEnvironment( + node, + /*referencedName*/ + void 0, + visitClassDeclarationInNewClassLexicalEnvironment + ); } function visitClassDeclarationInNewClassLexicalEnvironment(node, facts) { + var _a2, _b; let pendingClassReferenceAssignment; if (facts & 2 /* NeedsClassConstructorReference */) { - const temp = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); - pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis)) { + getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + pendingClassReferenceAssignment = factory2.createAssignment(node.emitNode.classThis, factory2.getInternalName(node)); + } else { + const temp = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + } + if ((_b = node.emitNode) == null ? void 0 : _b.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; + } } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); const classDecl = factory2.updateClassDeclaration( @@ -86192,7 +87664,7 @@ function transformClassFields(context) { if (some(pendingExpressions)) { statements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); } - if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks) { + if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) { const staticProperties = getStaticPropertiesAndClassStaticBlock(node); if (some(staticProperties)) { addPropertyOrClassStaticBlockStatements(statements, staticProperties, factory2.getInternalName(node)); @@ -86200,28 +87672,37 @@ function transformClassFields(context) { } return statements; } - function visitClassExpression(node) { - return visitInNewClassLexicalEnvironment(node, visitClassExpressionInNewClassLexicalEnvironment); + function visitClassExpression(node, referencedName) { + return visitInNewClassLexicalEnvironment(node, referencedName, visitClassExpressionInNewClassLexicalEnvironment); } - function visitClassExpressionInNewClassLexicalEnvironment(node, facts) { + function visitClassExpressionInNewClassLexicalEnvironment(node, facts, referencedName) { + var _a2, _b, _c, _d, _e, _f; const isDecoratedClassDeclaration = !!(facts & 1 /* ClassWasDecorated */); const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); const isClassWithConstructorReference = resolver.getNodeCheckFlags(node) & 1048576 /* ClassWithConstructorReference */; let temp; function createClassTempVar() { + var _a3; + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a3 = node.emitNode) == null ? void 0 : _a3.classThis)) { + return getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + } const classCheckFlags = resolver.getNodeCheckFlags(node); const isClassWithConstructorReference2 = classCheckFlags & 1048576 /* ClassWithConstructorReference */; const requiresBlockScopedVar = classCheckFlags & 32768 /* BlockScopedBindingInLoop */; - return factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + const temp2 = factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp2); + return temp2; + } + if ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; } if (facts & 2 /* NeedsClassConstructorReference */) { - temp = createClassTempVar(); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + temp != null ? temp : temp = createClassTempVar(); } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); - const classExpression = factory2.updateClassExpression( + let classExpression = factory2.updateClassExpression( node, modifiers, node.name, @@ -86234,46 +87715,68 @@ function transformClassFields(context) { if (prologue) { expressions.push(prologue); } - const hasTransformableStatics = shouldTransformPrivateElementsOrClassStaticBlocks && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); - if (hasTransformableStatics || some(pendingExpressions)) { + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + if (hasTransformableStatics || some(pendingExpressions) || referencedName) { if (isDecoratedClassDeclaration) { Debug.assertIsDefined(pendingStatements, "Decorated classes transformed by TypeScript are expected to be within a variable declaration."); - if (pendingStatements && pendingExpressions && some(pendingExpressions)) { - pendingStatements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); + if (some(pendingExpressions)) { + addRange(pendingStatements, map(pendingExpressions, factory2.createExpressionStatement)); } - if (pendingStatements && some(staticPropertiesOrClassStaticBlocks)) { - addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, factory2.getInternalName(node)); - } - if (temp) { - expressions.push( - startOnNewLine(factory2.createAssignment(temp, classExpression)), - startOnNewLine(temp) - ); - } else { - expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); + if (referencedName) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const setNameExpression = emitHelpers().createSetFunctionNameHelper((_c = temp != null ? temp : (_b = node.emitNode) == null ? void 0 : _b.classThis) != null ? _c : factory2.getInternalName(node), referencedName); + pendingStatements.push(factory2.createExpressionStatement(setNameExpression)); + } else { + const setNameExpression = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), referencedName); + classExpression = factory2.updateClassExpression( + classExpression, + classExpression.modifiers, + classExpression.name, + classExpression.typeParameters, + classExpression.heritageClauses, + [ + factory2.createClassStaticBlockDeclaration( + factory2.createBlock([ + factory2.createExpressionStatement(setNameExpression) + ]) + ), + ...classExpression.members + ] + ); } } + if (some(staticPropertiesOrClassStaticBlocks)) { + addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, (_e = (_d = node.emitNode) == null ? void 0 : _d.classThis) != null ? _e : factory2.getInternalName(node)); + } + if (temp) { + expressions.push(factory2.createAssignment(temp, classExpression)); + } else if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_f = node.emitNode) == null ? void 0 : _f.classThis)) { + expressions.push(factory2.createAssignment(node.emitNode.classThis, classExpression)); + } else { + expressions.push(classExpression); + } } else { - temp || (temp = createClassTempVar()); + temp != null ? temp : temp = createClassTempVar(); if (isClassWithConstructorReference) { enableSubstitutionForClassAliases(); const alias = factory2.cloneNode(temp); - alias.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; + alias.emitNode.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; classAliases[getOriginalNodeId(node)] = alias; } - setEmitFlags(classExpression, 131072 /* Indented */ | getEmitFlags(classExpression)); - expressions.push(startOnNewLine(factory2.createAssignment(temp, classExpression))); - addRange(expressions, map(pendingExpressions, startOnNewLine)); + expressions.push(factory2.createAssignment(temp, classExpression)); + addRange(expressions, pendingExpressions); + if (referencedName) { + expressions.push(emitHelpers().createSetFunctionNameHelper(temp, referencedName)); + } addRange(expressions, generateInitializedPropertyExpressionsOrClassStaticBlock(staticPropertiesOrClassStaticBlocks, temp)); - expressions.push(startOnNewLine(temp)); + expressions.push(factory2.cloneNode(temp)); } } else { expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); - } + } + if (expressions.length > 1) { + addEmitFlags(classExpression, 131072 /* Indented */); + expressions.forEach(startOnNewLine); } return factory2.inlineExpressions(expressions); } @@ -86284,16 +87787,24 @@ function transformClassFields(context) { return void 0; } function transformClassMembers(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldTransformPrivateStaticElementsInClass = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInFile) { for (const member of node.members) { if (isPrivateIdentifierClassElementDeclaration(member)) { - addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + if (shouldTransformClassElementToWeakMap(member)) { + addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, member.name, { kind: "untransformed" }); + } } } - if (some(getPrivateInstanceMethodsAndAccessors(node))) { - createBrandCheckWeakSetForPrivateMethods(); + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + if (some(getPrivateInstanceMethodsAndAccessors(node))) { + createBrandCheckWeakSetForPrivateMethods(); + } } - if (shouldTransformAutoAccessors) { + if (shouldTransformAutoAccessorsInCurrentClass()) { for (const member of node.members) { if (isAutoAccessorPropertyDeclaration(member)) { const storageName = factory2.getGeneratedPrivateNameForNode( @@ -86302,7 +87813,12 @@ function transformClassFields(context) { void 0, "_accessor_storage" ); - addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInClass && hasStaticModifier(member)) { + addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, storageName, { kind: "untransformed" }); + } } } } @@ -86361,7 +87877,7 @@ function transformClassFields(context) { return { members, prologue }; } function createBrandCheckWeakSetForPrivateMethods() { - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); getPendingExpressions().push( factory2.createAssignment( @@ -86377,7 +87893,7 @@ function transformClassFields(context) { } function transformConstructor(constructor, container) { constructor = visitNode(constructor, visitor, isConstructorDeclaration); - if (!currentClassLexicalEnvironment || !(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */)) { + if (!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) || !(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */)) { return constructor; } const extendsClauseElement = getEffectiveBaseTypeNode(container); @@ -86414,13 +87930,14 @@ function transformClassFields(context) { } function transformConstructorBody(node, constructor, isDerivedClass) { var _a2, _b; - let properties = getProperties( + const instanceProperties = getProperties( node, /*requireInitializer*/ false, /*isStatic*/ false ); + let properties = instanceProperties; if (!useDefineForClassFields) { properties = filter(properties, (property) => !!property.initializer || isPrivateIdentifier(property.name) || hasAccessorModifier(property)); } @@ -86474,37 +87991,30 @@ function transformClassFields(context) { } let parameterPropertyDeclarationCount = 0; if (constructor == null ? void 0 : constructor.body) { - if (useDefineForClassFields) { - statements = statements.filter((statement) => !isParameterPropertyDeclaration(getOriginalNode(statement), constructor)); - } else { - for (const statement of constructor.body.statements) { - if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - parameterPropertyDeclarationCount++; - } - } - if (parameterPropertyDeclarationCount > 0) { - const parameterProperties = visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue, parameterPropertyDeclarationCount); - if (superStatementIndex >= 0) { - addRange(statements, parameterProperties); - } else { - let superAndPrologueStatementCount = prologueStatementCount; - if (needsSyntheticConstructor) - superAndPrologueStatementCount++; - statements = [ - ...statements.slice(0, superAndPrologueStatementCount), - ...parameterProperties, - ...statements.slice(superAndPrologueStatementCount) - ]; - } - indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + for (let i = indexOfFirstStatementAfterSuperAndPrologue; i < constructor.body.statements.length; i++) { + const statement = constructor.body.statements[i]; + if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { + parameterPropertyDeclarationCount++; + } else { + break; } } + if (parameterPropertyDeclarationCount > 0) { + indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + } } const receiver = factory2.createThis(); - addMethodStatements(statements, privateMethodsAndAccessors, receiver); - addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + addInstanceMethodStatements(statements, privateMethodsAndAccessors, receiver); if (constructor) { - addRange(statements, visitNodes2(constructor.body.statements, visitBodyStatement, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); + const parameterProperties = filter(instanceProperties, (prop) => isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + const nonParameterProperties = filter(properties, (prop) => !isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + addPropertyOrClassStaticBlockStatements(statements, parameterProperties, receiver); + addPropertyOrClassStaticBlockStatements(statements, nonParameterProperties, receiver); + } else { + addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + } + if (constructor) { + addRange(statements, visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); } statements = factory2.mergeLexicalEnvironment(statements, endLexicalEnvironment()); if (statements.length === 0 && !constructor) { @@ -86523,16 +88033,10 @@ function transformClassFields(context) { /*location*/ constructor ? constructor.body : void 0 ); - function visitBodyStatement(statement) { - if (useDefineForClassFields && isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - return void 0; - } - return visitor(statement); - } } function addPropertyOrClassStaticBlockStatements(statements, properties, receiver) { for (const property of properties) { - if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks && !useDefineForClassFields) { + if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks) { continue; } const statement = transformPropertyOrClassStaticBlock(property, receiver); @@ -86550,10 +88054,19 @@ function transformClassFields(context) { const statement = factory2.createExpressionStatement(expression); setOriginalNode(statement, property); addEmitFlags(statement, getEmitFlags(property) & 3072 /* NoComments */); - setSourceMapRange(statement, moveRangePastModifiers(property)); setCommentRange(statement, property); + const propertyOriginalNode = getOriginalNode(property); + if (isParameter(propertyOriginalNode)) { + setSourceMapRange(statement, propertyOriginalNode); + removeAllComments(statement); + } else { + setSourceMapRange(statement, moveRangePastModifiers(property)); + } setSyntheticLeadingComments(expression, void 0); setSyntheticTrailingComments(expression, void 0); + if (hasAccessorModifier(propertyOriginalNode)) { + addEmitFlags(statement, 3072 /* NoComments */); + } return statement; } function generateInitializedPropertyExpressionsOrClassStaticBlock(propertiesOrClassStaticBlocks, receiver) { @@ -86573,37 +88086,49 @@ function transformClassFields(context) { return expressions; } function transformProperty(property, receiver) { + var _a2; const savedCurrentStaticPropertyDeclarationOrStaticBlock = currentStaticPropertyDeclarationOrStaticBlock; const transformed = transformPropertyWorker(property, receiver); - if (transformed && hasStaticModifier(property) && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts)) { + if (transformed && hasStaticModifier(property) && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts)) { setOriginalNode(transformed, property); addEmitFlags(transformed, 4 /* AdviseOnEmitNode */); - classLexicalEnvironmentMap.set(getOriginalNodeId(transformed), currentClassLexicalEnvironment); + setSourceMapRange(transformed, getSourceMapRange(property.name)); + lexicalEnvironmentMap.set(getOriginalNode(property), lexicalEnvironment); } currentStaticPropertyDeclarationOrStaticBlock = savedCurrentStaticPropertyDeclarationOrStaticBlock; return transformed; } function transformPropertyWorker(property, receiver) { - var _a2; const emitAssignment = !useDefineForClassFields; + let referencedName; + if (isNamedEvaluation(property, isAnonymousClassNeedingAssignedName)) { + if (isPropertyNameLiteral(property.name) || isPrivateIdentifier(property.name)) { + referencedName = factory2.createStringLiteralFromNode(property.name); + } else if (isPropertyNameLiteral(property.name.expression) && !isIdentifier(property.name.expression)) { + referencedName = factory2.createStringLiteralFromNode(property.name.expression); + } else { + referencedName = factory2.getGeneratedNameForNode(property.name); + } + } const propertyName = hasAccessorModifier(property) ? factory2.getGeneratedPrivateNameForNode(property.name) : isComputedPropertyName(property.name) && !isSimpleInlineableExpression(property.name.expression) ? factory2.updateComputedPropertyName(property.name, factory2.getGeneratedNameForNode(property.name)) : property.name; if (hasStaticModifier(property)) { currentStaticPropertyDeclarationOrStaticBlock = property; } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(propertyName)) { - const privateIdentifierInfo = accessPrivateIdentifier(propertyName); + const initializerVisitor = referencedName ? (child) => namedEvaluationVisitor(child, referencedName) : visitor; + if (isPrivateIdentifier(propertyName) && shouldTransformClassElementToWeakMap(property)) { + const privateIdentifierInfo = accessPrivateIdentifier2(propertyName); if (privateIdentifierInfo) { if (privateIdentifierInfo.kind === "f" /* Field */) { if (!privateIdentifierInfo.isStatic) { return createPrivateInstanceFieldInitializer( receiver, - visitNode(property.initializer, visitor, isExpression), + visitNode(property.initializer, initializerVisitor, isExpression), privateIdentifierInfo.brandCheckIdentifier ); } else { return createPrivateStaticFieldInitializer( privateIdentifierInfo.variableName, - visitNode(property.initializer, visitor, isExpression) + visitNode(property.initializer, initializerVisitor, isExpression) ); } } else { @@ -86620,7 +88145,23 @@ function transformClassFields(context) { if (hasSyntacticModifier(propertyOriginalNode, 256 /* Abstract */)) { return void 0; } - const initializer = property.initializer || emitAssignment ? (_a2 = visitNode(property.initializer, visitor, isExpression)) != null ? _a2 : factory2.createVoidZero() : isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName) ? propertyName : factory2.createVoidZero(); + let initializer = visitNode(property.initializer, initializerVisitor, isExpression); + if (isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName)) { + const localName = factory2.cloneNode(propertyName); + if (initializer) { + if (isParenthesizedExpression(initializer) && isCommaExpression(initializer.expression) && isCallToHelper(initializer.expression.left, "___runInitializers") && isVoidExpression(initializer.expression.right) && isNumericLiteral(initializer.expression.right.expression)) { + initializer = initializer.expression.left; + } + initializer = factory2.inlineExpressions([initializer, localName]); + } else { + initializer = localName; + } + setEmitFlags(propertyName, 3072 /* NoComments */ | 96 /* NoSourceMap */); + setSourceMapRange(localName, propertyOriginalNode.name); + setEmitFlags(localName, 3072 /* NoComments */); + } else { + initializer != null ? initializer : initializer = factory2.createVoidZero(); + } if (emitAssignment || isPrivateIdentifier(propertyName)) { const memberAccess = createMemberAccessForPropertyName( factory2, @@ -86629,7 +88170,9 @@ function transformClassFields(context) { /*location*/ propertyName ); - return factory2.createAssignment(memberAccess, initializer); + addEmitFlags(memberAccess, 1024 /* NoLeadingComments */); + const expression = factory2.createAssignment(memberAccess, initializer); + return expression; } else { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; const descriptor = factory2.createPropertyDescriptor({ value: initializer, configurable: true, writable: true, enumerable: true }); @@ -86657,11 +88200,11 @@ function transformClassFields(context) { context.enableEmitNotification(164 /* ComputedPropertyName */); } } - function addMethodStatements(statements, methods, receiver) { + function addInstanceMethodStatements(statements, methods, receiver) { if (!shouldTransformPrivateElementsOrClassStaticBlocks || !some(methods)) { return; } - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); statements.push( factory2.createExpressionStatement( @@ -86680,20 +88223,352 @@ function transformClassFields(context) { visitNode(node.argumentExpression, visitor, isExpression) ); } + function getPropertyNameExpressionIfNeeded(name, shouldHoist, captureReferencedName) { + if (isComputedPropertyName(name)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + let expression = visitNode(name.expression, visitor, isExpression); + const innerExpression = skipPartiallyEmittedExpressions(expression); + const inlinable = isSimpleInlineableExpression(innerExpression); + const alreadyTransformed = !!cacheAssignment || isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); + if (!alreadyTransformed && !inlinable && shouldHoist) { + const generatedName = factory2.getGeneratedNameForNode(name); + if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(generatedName); + } else { + hoistVariableDeclaration(generatedName); + } + if (captureReferencedName) { + expression = emitHelpers().createPropKeyHelper(expression); + } + return factory2.createAssignment(generatedName, expression); + } + return inlinable || isIdentifier(innerExpression) ? void 0 : expression; + } + } + function startClassLexicalEnvironment() { + lexicalEnvironment = { previous: lexicalEnvironment, data: void 0 }; + } + function endClassLexicalEnvironment() { + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + } + function getClassLexicalEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.data) != null ? _a2 : lexicalEnvironment.data = { + facts: 0 /* None */, + classConstructor: void 0, + classThis: void 0, + superClassReference: void 0 + // privateIdentifierEnvironment: undefined, + }; + } + function getPrivateIdentifierEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.privateEnv) != null ? _a2 : lexicalEnvironment.privateEnv = newPrivateEnvironment({ + className: void 0, + weakSetName: void 0 + }); + } + function getPendingExpressions() { + return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + } + function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + if (isAutoAccessorPropertyDeclaration(node)) { + addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isPropertyDeclaration(node)) { + addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isMethodDeclaration(node)) { + addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isGetAccessorDeclaration(node)) { + addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isSetAccessorDeclaration(node)) { + addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + } + function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + if (isStatic2) { + const brandCheckIdentifier = Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment"); + const variableName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: true, + brandCheckIdentifier, + variableName, + isValid + }); + } else { + const weakMapName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: false, + brandCheckIdentifier: weakMapName, + isValid + }); + getPendingExpressions().push(factory2.createAssignment( + weakMapName, + factory2.createNewExpression( + factory2.createIdentifier("WeakMap"), + /*typeArguments*/ + void 0, + [] + ) + )); + } + } + function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const methodName = createHoistedVariableForPrivateName(name); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "m" /* Method */, + methodName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { + previousInfo.getterName = getterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName: void 0, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { + previousInfo.setterName = setterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName: void 0, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { + const lex = getClassLexicalEnvironment(); + const privateEnv = getPrivateIdentifierEnvironment(); + const previousInfo = getPrivateIdentifier(privateEnv, name); + const isStatic2 = hasStaticModifier(node); + const isValid = !isReservedPrivateName(name) && previousInfo === void 0; + addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + function createHoistedVariableForClass(name, node, suffix) { + const { className } = getPrivateIdentifierEnvironment().data; + const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; + const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( + /*recordTempVariable*/ + void 0, + /*reserveInNestedScopes*/ + true, + prefix, + suffix + ); + if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(identifier); + } else { + hoistVariableDeclaration(identifier); + } + return identifier; + } + function createHoistedVariableForPrivateName(name, suffix) { + var _a2; + const text = tryGetTextOfPropertyName(name); + return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); + } + function accessPrivateIdentifier2(name) { + const info = accessPrivateIdentifier(lexicalEnvironment, name); + return (info == null ? void 0 : info.kind) === "untransformed" ? void 0 : info; + } + function wrapPrivateIdentifierForDestructuringTarget(node) { + const parameter = factory2.getGeneratedNameForNode(node); + const info = accessPrivateIdentifier2(node.name); + if (!info) { + return visitEachChild(node, visitor, context); + } + let receiver = node.expression; + if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { + receiver = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); + } + return factory2.createAssignmentTargetWrapper( + parameter, + createPrivateIdentifierAssignment( + info, + receiver, + parameter, + 63 /* EqualsToken */ + ) + ); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isPrivateIdentifierPropertyAccessExpression(node)) { + return wrapPrivateIdentifierForDestructuringTarget(node); + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */) { + return visitInvalidSuperProperty(node); + } else if (classConstructor && superClassReference) { + const name = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (name) { + const temp = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + return factory2.createAssignmentTargetWrapper( + temp, + factory2.createReflectSetCall( + superClassReference, + name, + temp, + classConstructor + ) + ); + } + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const left = visitDestructuringAssignmentTarget(node.left); + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const left = visitDestructuringAssignmentTarget(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitDestructuringAssignmentTarget(node); + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, node.name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + return factory2.updateArrayLiteralExpression( + node, + visitNodes2(node.elements, visitArrayAssignmentElement, isExpression) + ); + } else { + return factory2.updateObjectLiteralExpression( + node, + visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike) + ); + } + } function onEmitNode(hint, node, emitCallback) { const original = getOriginalNode(node); - if (original.id) { - const classLexicalEnvironment = classLexicalEnvironmentMap.get(original.id); - if (classLexicalEnvironment) { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = classLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = classLexicalEnvironment; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + const lex = lexicalEnvironmentMap.get(original); + if (lex) { + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = lex; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = !isClassStaticBlockDeclaration(original) || !(getInternalEmitFlags(original) & 32 /* TransformPrivateStaticElements */); + previousOnEmitNode(hint, node, emitCallback); + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; + return; } switch (node.kind) { case 215 /* FunctionExpression */: @@ -86701,37 +88576,30 @@ function transformClassFields(context) { break; } case 259 /* FunctionDeclaration */: - case 173 /* Constructor */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; - currentComputedPropertyNameClassLexicalEnvironment = void 0; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + case 173 /* Constructor */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: case 169 /* PropertyDeclaration */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = currentClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = void 0; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = false; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } case 164 /* ComputedPropertyName */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = savedShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } } @@ -86754,15 +88622,16 @@ function transformClassFields(context) { return node; } function substituteThisExpression(node) { - if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && currentClassLexicalEnvironment) { - const { facts, classConstructor } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { + if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { facts, classConstructor, classThis } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */ && legacyDecorators) { return factory2.createParenthesizedExpression(factory2.createVoidZero()); } - if (classConstructor) { + const substituteThis = shouldSubstituteThisWithClassThis ? classThis != null ? classThis : classConstructor : classConstructor; + if (substituteThis) { return setTextRange( setOriginalNode( - factory2.cloneNode(classConstructor), + factory2.cloneNode(substituteThis), node ), node @@ -86791,350 +88660,6 @@ function transformClassFields(context) { } return void 0; } - function getPropertyNameExpressionIfNeeded(name, shouldHoist) { - if (isComputedPropertyName(name)) { - const expression = visitNode(name.expression, visitor, isExpression); - const innerExpression = skipPartiallyEmittedExpressions(expression); - const inlinable = isSimpleInlineableExpression(innerExpression); - const alreadyTransformed = isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); - if (!alreadyTransformed && !inlinable && shouldHoist) { - const generatedName = factory2.getGeneratedNameForNode(name); - if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(generatedName); - } else { - hoistVariableDeclaration(generatedName); - } - return factory2.createAssignment(generatedName, expression); - } - return inlinable || isIdentifier(innerExpression) ? void 0 : expression; - } - } - function startClassLexicalEnvironment() { - classLexicalEnvironmentStack.push(currentClassLexicalEnvironment); - currentClassLexicalEnvironment = void 0; - } - function endClassLexicalEnvironment() { - currentClassLexicalEnvironment = classLexicalEnvironmentStack.pop(); - } - function getClassLexicalEnvironment() { - return currentClassLexicalEnvironment || (currentClassLexicalEnvironment = { - facts: 0 /* None */, - classConstructor: void 0, - superClassReference: void 0, - privateIdentifierEnvironment: void 0 - }); - } - function getPrivateIdentifierEnvironment() { - const lex = getClassLexicalEnvironment(); - lex.privateIdentifierEnvironment || (lex.privateIdentifierEnvironment = { - className: void 0, - weakSetName: void 0, - identifiers: void 0, - generatedIdentifiers: void 0 - }); - return lex.privateIdentifierEnvironment; - } - function getPendingExpressions() { - return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; - } - function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - if (isAutoAccessorPropertyDeclaration(node)) { - addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isPropertyDeclaration(node)) { - addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isMethodDeclaration(node)) { - addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isGetAccessorDeclaration(node)) { - addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isSetAccessorDeclaration(node)) { - addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - } - function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - if (isStatic2) { - Debug.assert(lex.classConstructor, "classConstructor should be set in private identifier environment"); - const variableName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: lex.classConstructor, - variableName, - isStatic: true, - isValid - }); - } else { - const weakMapName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: weakMapName, - variableName: void 0, - isStatic: false, - isValid - }); - getPendingExpressions().push(factory2.createAssignment( - weakMapName, - factory2.createNewExpression( - factory2.createIdentifier("WeakMap"), - /*typeArguments*/ - void 0, - [] - ) - )); - } - } - function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const methodName = createHoistedVariableForPrivateName(name); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "m" /* Method */, - methodName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { - previousInfo.getterName = getterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName: void 0, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { - previousInfo.setterName = setterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName: void 0, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { - const lex = getClassLexicalEnvironment(); - const privateEnv = getPrivateIdentifierEnvironment(); - const previousInfo = getPrivateIdentifier(privateEnv, name); - const isStatic2 = hasStaticModifier(node); - const isValid = !isReservedPrivateName(name) && previousInfo === void 0; - addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - function createHoistedVariableForClass(name, node, suffix) { - const { className } = getPrivateIdentifierEnvironment(); - const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; - const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( - /*recordTempVariable*/ - void 0, - /*reserveInNestedScopes*/ - true, - prefix, - suffix - ); - if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(identifier); - } else { - hoistVariableDeclaration(identifier); - } - return identifier; - } - function createHoistedVariableForPrivateName(name, suffix) { - var _a2; - const text = tryGetTextOfPropertyName(name); - return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); - } - function accessPrivateIdentifier(name) { - if (isGeneratedPrivateIdentifier(name)) { - return accessGeneratedPrivateIdentifier(name); - } else { - return accessPrivateIdentifierByText(name.escapedText); - } - } - function accessPrivateIdentifierByText(text) { - return accessPrivateIdentifierWorker(getPrivateIdentifierInfo, text); - } - function accessGeneratedPrivateIdentifier(name) { - return accessPrivateIdentifierWorker(getGeneratedPrivateIdentifierInfo, getNodeForGeneratedName(name)); - } - function accessPrivateIdentifierWorker(getPrivateIdentifierInfo2, privateIdentifierKey) { - if (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(currentClassLexicalEnvironment.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - for (let i = classLexicalEnvironmentStack.length - 1; i >= 0; --i) { - const env = classLexicalEnvironmentStack[i]; - if (!env) { - continue; - } - if (env.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(env.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - } - return void 0; - } - function wrapPrivateIdentifierForDestructuringTarget(node) { - const parameter = factory2.getGeneratedNameForNode(node); - const info = accessPrivateIdentifier(node.name); - if (!info) { - return visitEachChild(node, visitor, context); - } - let receiver = node.expression; - if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { - receiver = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); - } - return factory2.createAssignmentTargetWrapper( - parameter, - createPrivateIdentifierAssignment( - info, - receiver, - parameter, - 63 /* EqualsToken */ - ) - ); - } - function visitArrayAssignmentTarget(node) { - const target = getTargetOfBindingOrAssignmentElement(node); - if (target) { - let wrapped; - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - if (wrapped) { - if (isAssignmentExpression(node)) { - return factory2.updateBinaryExpression( - node, - wrapped, - node.operatorToken, - visitNode(node.right, visitor, isExpression) - ); - } else if (isSpreadElement(node)) { - return factory2.updateSpreadElement(node, wrapped); - } else { - return wrapped; - } - } - } - return visitNode(node, assignmentTargetVisitor); - } - function visitObjectAssignmentTarget(node) { - if (isObjectBindingOrAssignmentElement(node) && !isShorthandPropertyAssignment(node)) { - const target = getTargetOfBindingOrAssignmentElement(node); - let wrapped; - if (target) { - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - } - if (isPropertyAssignment(node)) { - const initializer = getInitializerOfBindingOrAssignmentElement(node); - return factory2.updatePropertyAssignment( - node, - visitNode(node.name, visitor, isPropertyName), - wrapped ? initializer ? factory2.createAssignment(wrapped, visitNode(initializer, visitor)) : wrapped : visitNode(node.initializer, assignmentTargetVisitor, isExpression) - ); - } - if (isSpreadAssignment(node)) { - return factory2.updateSpreadAssignment( - node, - wrapped || visitNode(node.expression, assignmentTargetVisitor, isExpression) - ); - } - Debug.assert(wrapped === void 0, "Should not have generated a wrapped target"); - } - return visitNode(node, visitor); - } - function visitAssignmentPattern(node) { - if (isArrayLiteralExpression(node)) { - return factory2.updateArrayLiteralExpression( - node, - visitNodes2(node.elements, visitArrayAssignmentTarget, isExpression) - ); - } else { - return factory2.updateObjectLiteralExpression( - node, - visitNodes2(node.properties, visitObjectAssignmentTarget, isObjectLiteralElementLike) - ); - } - } } function createPrivateStaticFieldInitializer(variableName, initializer) { return factory.createAssignment( @@ -87163,26 +88688,8 @@ function createPrivateInstanceMethodInitializer(receiver, weakSetName) { function isReservedPrivateName(node) { return !isGeneratedPrivateIdentifier(node) && node.escapedText === "#constructor"; } -function getPrivateIdentifier(privateEnv, name) { - return isGeneratedPrivateIdentifier(name) ? getGeneratedPrivateIdentifierInfo(privateEnv, getNodeForGeneratedName(name)) : getPrivateIdentifierInfo(privateEnv, name.escapedText); -} -function setPrivateIdentifier(privateEnv, name, info) { - var _a2, _b; - if (isGeneratedPrivateIdentifier(name)) { - (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); - privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), info); - } else { - (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); - privateEnv.identifiers.set(name.escapedText, info); - } -} -function getPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.identifiers) == null ? void 0 : _a2.get(key); -} -function getGeneratedPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(key); +function isPrivateIdentifierInExpression(node) { + return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; } // src/compiler/transformers/typeSerializer.ts @@ -87588,9 +89095,22 @@ function transformLegacyDecorators(context) { } } function visitClassDeclaration(node) { - if (!(classOrConstructorParameterIsDecorated(node) || childIsDecorated(node))) + if (!(classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + true, + node + ) || childIsDecorated( + /*legacyDecorators*/ + true, + node + ))) { return visitEachChild(node, visitor, context); - const statements = hasDecorators(node) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); + } + const statements = classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + true, + node + ) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); if (statements.length > 1) { statements.push(factory2.createEndOfDeclarationMarker(node)); setEmitFlags(statements[0], getEmitFlags(statements[0]) | 8388608 /* HasEndOfDeclarationMarker */); @@ -87607,7 +89127,12 @@ function transformLegacyDecorators(context) { for (const member of node.members) { if (!canHaveDecorators(member)) continue; - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); if (some(allDecorators == null ? void 0 : allDecorators.decorators, decoratorContainsPrivateIdentifierInExpression)) return true; if (some(allDecorators == null ? void 0 : allDecorators.parameters, parameterDecoratorsContainPrivateIdentifierInExpression)) @@ -87684,7 +89209,7 @@ function transformLegacyDecorators(context) { const classExpression = factory2.createClassExpression( /*modifiers*/ void 0, - name, + name && isGeneratedIdentifier(name) ? void 0 : name, /*typeParameters*/ void 0, heritageClauses, @@ -87729,7 +89254,7 @@ function transformLegacyDecorators(context) { return factory2.updateConstructorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ); } @@ -87745,12 +89270,12 @@ function transformLegacyDecorators(context) { node, visitNodes2(node.modifiers, modifierVisitor, isModifier), node.asteriskToken, - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionToken*/ void 0, /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -87760,8 +89285,8 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updateGetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -87771,8 +89296,8 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updateSetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ), node); } @@ -87783,7 +89308,7 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -87796,7 +89321,7 @@ function transformLegacyDecorators(context) { node, elideNodes(factory2, node.modifiers), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -87811,20 +89336,30 @@ function transformLegacyDecorators(context) { } return updated; } + function isSyntheticMetadataDecorator(node) { + return isCallToHelper(node.expression, "___metadata"); + } function transformAllDecoratorsOfDeclaration(allDecorators) { if (!allDecorators) { return void 0; } + const { false: decorators, true: metadata } = groupBy(allDecorators.decorators, isSyntheticMetadataDecorator); const decoratorExpressions = []; - addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + addRange(decoratorExpressions, map(decorators, transformDecorator)); addRange(decoratorExpressions, flatMap(allDecorators.parameters, transformDecoratorsOfParameter)); + addRange(decoratorExpressions, map(metadata, transformDecorator)); return decoratorExpressions; } function addClassElementDecorationStatements(statements, node, isStatic2) { addRange(statements, map(generateClassElementDecorationExpressions(node, isStatic2), (expr) => factory2.createExpressionStatement(expr))); } function isDecoratedClassElement(member, isStaticElement, parent) { - return nodeOrChildIsDecorated(member, parent) && isStaticElement === isStatic(member); + return nodeOrChildIsDecorated( + /*legacyDecorators*/ + true, + member, + parent + ) && isStaticElement === isStatic(member); } function getDecoratedClassElements(node, isStatic2) { return filter(node.members, (m) => isDecoratedClassElement(m, isStatic2, node)); @@ -87838,7 +89373,12 @@ function transformLegacyDecorators(context) { return expressions; } function generateClassElementDecorationExpression(node, member) { - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); const decoratorExpressions = transformAllDecoratorsOfDeclaration(allDecorators); if (!decoratorExpressions) { return void 0; @@ -87893,7 +89433,7 @@ function transformLegacyDecorators(context) { return expression; } function transformDecorator(decorator) { - return visitNode(decorator.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(decorator.expression, visitor, isExpression)); } function transformDecoratorsOfParameter(decorators, parameterOffset) { let expressions; @@ -87981,6 +89521,1713 @@ function transformLegacyDecorators(context) { } } +// src/compiler/transformers/esDecorators.ts +function transformESDecorators(context) { + const { + factory: factory2, + getEmitHelperFactory: emitHelpers, + startLexicalEnvironment, + endLexicalEnvironment, + hoistVariableDeclaration + } = context; + let top; + let classInfo; + let classThis; + let classSuper; + let pendingExpressions; + let shouldTransformPrivateStaticElementsInFile; + return chainBundle(context, transformSourceFile); + function transformSourceFile(node) { + top = void 0; + shouldTransformPrivateStaticElementsInFile = false; + const visited = visitEachChild(node, visitor, context); + addEmitHelpers(visited, context.readEmitHelpers()); + if (shouldTransformPrivateStaticElementsInFile) { + addInternalEmitFlags(visited, 32 /* TransformPrivateStaticElements */); + shouldTransformPrivateStaticElementsInFile = false; + } + return visited; + } + function updateState() { + classInfo = void 0; + classThis = void 0; + classSuper = void 0; + switch (top == null ? void 0 : top.kind) { + case "class": + classInfo = top.classInfo; + break; + case "class-element": + classInfo = top.next.classInfo; + classThis = top.classThis; + classSuper = top.classSuper; + break; + case "name": + const grandparent = top.next.next.next; + if ((grandparent == null ? void 0 : grandparent.kind) === "class-element") { + classInfo = grandparent.next.classInfo; + classThis = grandparent.classThis; + classSuper = grandparent.classSuper; + } + break; + } + } + function enterClass(classInfo2) { + top = { kind: "class", next: top, classInfo: classInfo2, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + function exitClass() { + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + function enterClassElement(node) { + var _a2, _b; + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "class-element", next: top }; + if (isClassStaticBlockDeclaration(node) || isPropertyDeclaration(node) && hasStaticModifier(node)) { + top.classThis = (_a2 = top.next.classInfo) == null ? void 0 : _a2.classThis; + top.classSuper = (_b = top.next.classInfo) == null ? void 0 : _b.classSuper; + } + updateState(); + } + function exitClassElement() { + var _a2; + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + Debug.assert(((_a2 = top.next) == null ? void 0 : _a2.kind) === "class", "Incorrect value for top.next.kind.", () => { + var _a3; + return `Expected top.next.kind to be 'class' but got '${(_a3 = top.next) == null ? void 0 : _a3.kind}' instead.`; + }); + top = top.next; + updateState(); + } + function enterName() { + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "name", next: top }; + updateState(); + } + function exitName() { + Debug.assert((top == null ? void 0 : top.kind) === "name", "Incorrect value for top.kind.", () => `Expected top.kind to be 'name' but got '${top == null ? void 0 : top.kind}' instead.`); + top = top.next; + updateState(); + } + function enterOther() { + if ((top == null ? void 0 : top.kind) === "other") { + Debug.assert(!pendingExpressions); + top.depth++; + } else { + top = { kind: "other", next: top, depth: 0, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + } + function exitOther() { + Debug.assert((top == null ? void 0 : top.kind) === "other", "Incorrect value for top.kind.", () => `Expected top.kind to be 'other' but got '${top == null ? void 0 : top.kind}' instead.`); + if (top.depth > 0) { + Debug.assert(!pendingExpressions); + top.depth--; + } else { + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + } + function shouldVisitNode(node) { + return !!(node.transformFlags & 33554432 /* ContainsDecorators */) || !!classThis && !!(node.transformFlags & 16384 /* ContainsLexicalThis */) || !!classThis && !!classSuper && !!(node.transformFlags & 134217728 /* ContainsLexicalSuper */); + } + function visitor(node) { + if (!shouldVisitNode(node)) { + return node; + } + switch (node.kind) { + case 167 /* Decorator */: + return Debug.fail("Use `modifierVisitor` instead."); + case 260 /* ClassDeclaration */: + return visitClassDeclaration(node); + case 228 /* ClassExpression */: + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); + case 173 /* Constructor */: + case 169 /* PropertyDeclaration */: + case 172 /* ClassStaticBlockDeclaration */: + return Debug.fail("Not supported outside of a class. Use 'classElementVisitor' instead."); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + false + ); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); + case 108 /* ThisKeyword */: + return visitThisExpression(node); + case 245 /* ForStatement */: + return visitForStatement(node); + case 241 /* ExpressionStatement */: + return visitExpressionStatement(node); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + false + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 210 /* CallExpression */: + return visitCallExpression(node); + case 212 /* TaggedTemplateExpression */: + return visitTaggedTemplateExpression(node); + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discard*/ + false + ); + case 208 /* PropertyAccessExpression */: + return visitPropertyAccessExpression(node); + case 209 /* ElementAccessExpression */: + return visitElementAccessExpression(node); + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); + case 171 /* MethodDeclaration */: + case 175 /* SetAccessor */: + case 174 /* GetAccessor */: + case 215 /* FunctionExpression */: + case 259 /* FunctionDeclaration */: { + enterOther(); + const result = visitEachChild(node, fallbackVisitor, context); + exitOther(); + return result; + } + default: + return visitEachChild(node, fallbackVisitor, context); + } + } + function fallbackVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return visitor(node); + } + } + function modifierVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return node; + } + } + function classElementVisitor(node) { + switch (node.kind) { + case 173 /* Constructor */: + return visitConstructorDeclaration(node); + case 171 /* MethodDeclaration */: + return visitMethodDeclaration(node); + case 174 /* GetAccessor */: + return visitGetAccessorDeclaration(node); + case 175 /* SetAccessor */: + return visitSetAccessorDeclaration(node); + case 169 /* PropertyDeclaration */: + return visitPropertyDeclaration(node); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); + default: + return visitor(node); + } + } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } + function discardedValueVisitor(node) { + switch (node.kind) { + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discarded*/ + true + ); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + true + ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); + default: + return visitor(node); + } + } + function getHelperVariableName(node) { + let declarationName = node.name && isIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name) : node.name && isPrivateIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name).slice(1) : node.name && isStringLiteral(node.name) && isIdentifierText(node.name.text, 99 /* ESNext */) ? node.name.text : isClassLike(node) ? "class" : "member"; + if (isGetAccessor(node)) + declarationName = `get_${declarationName}`; + if (isSetAccessor(node)) + declarationName = `set_${declarationName}`; + if (node.name && isPrivateIdentifier(node.name)) + declarationName = `private_${declarationName}`; + if (isStatic(node)) + declarationName = `static_${declarationName}`; + return "_" + declarationName; + } + function createHelperVariable(node, suffix) { + return factory2.createUniqueName(`${getHelperVariableName(node)}_${suffix}`, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */); + } + function createLet(name, initializer) { + return factory2.createVariableStatement( + /*modifiers*/ + void 0, + factory2.createVariableDeclarationList([ + factory2.createVariableDeclaration( + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ) + ], 1 /* Let */) + ); + } + function createClassInfo(node) { + let instanceExtraInitializersName; + let staticExtraInitializersName; + let hasStaticInitializers = false; + let hasNonAmbientInstanceFields = false; + let hasStaticPrivateClassElements = false; + for (const member of node.members) { + if (isNamedClassElement(member) && nodeOrChildIsDecorated( + /*legacyDecorators*/ + false, + member, + node + )) { + if (hasStaticModifier(member)) { + staticExtraInitializersName != null ? staticExtraInitializersName : staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */); + } else { + instanceExtraInitializersName != null ? instanceExtraInitializersName : instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + } + } + if (isClassStaticBlockDeclaration(member)) { + hasStaticInitializers = true; + } else if (isPropertyDeclaration(member)) { + if (hasStaticModifier(member)) { + hasStaticInitializers || (hasStaticInitializers = !!member.initializer || hasDecorators(member)); + } else { + hasNonAmbientInstanceFields || (hasNonAmbientInstanceFields = !isAmbientPropertyDeclaration(member)); + } + } + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + hasStaticPrivateClassElements = true; + } + if (staticExtraInitializersName && instanceExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) { + break; + } + } + return { + class: node, + instanceExtraInitializersName, + staticExtraInitializersName, + hasStaticInitializers, + hasNonAmbientInstanceFields, + hasStaticPrivateClassElements + }; + } + function containsLexicalSuperInStaticInitializer(node) { + for (const member of node.members) { + if (isClassStaticBlockDeclaration(member) || isPropertyDeclaration(member) && hasStaticModifier(member)) { + if (member.transformFlags & 134217728 /* ContainsLexicalSuper */) { + return true; + } + } + } + return false; + } + function transformClassLike(node, className) { + var _a2, _b, _c, _d, _e; + startLexicalEnvironment(); + const classReference = (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node); + const classInfo2 = createClassInfo(node); + const classDefinitionStatements = []; + let leadingBlockStatements; + let trailingBlockStatements; + let syntheticConstructor; + let heritageClauses; + let shouldTransformPrivateStaticElementsInClass = false; + const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass(node)); + if (classDecorators) { + classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */); + classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */); + classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */); + classInfo2.classThis = factory2.createUniqueName("_classThis", 16 /* Optimistic */); + classDefinitionStatements.push( + createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)), + createLet(classInfo2.classDescriptorName), + createLet(classInfo2.classExtraInitializersName, factory2.createArrayLiteralExpression()), + createLet(classInfo2.classThis) + ); + if (classInfo2.hasStaticPrivateClassElements) { + shouldTransformPrivateStaticElementsInClass = true; + shouldTransformPrivateStaticElementsInFile = true; + } + } + if (classDecorators && containsLexicalSuperInStaticInitializer(node)) { + const extendsClause = getHeritageClause(node.heritageClauses, 94 /* ExtendsKeyword */); + const extendsElement = extendsClause && firstOrUndefined(extendsClause.types); + const extendsExpression = extendsElement && visitNode(extendsElement.expression, visitor, isExpression); + if (extendsExpression) { + classInfo2.classSuper = factory2.createUniqueName("_classSuper", 16 /* Optimistic */); + const unwrapped = skipOuterExpressions(extendsExpression); + const safeExtendsExpression = isClassExpression(unwrapped) && !unwrapped.name || isFunctionExpression(unwrapped) && !unwrapped.name || isArrowFunction(unwrapped) ? factory2.createComma(factory2.createNumericLiteral(0), extendsExpression) : extendsExpression; + classDefinitionStatements.push(createLet(classInfo2.classSuper, safeExtendsExpression)); + const updatedExtendsElement = factory2.updateExpressionWithTypeArguments( + extendsElement, + classInfo2.classSuper, + /*typeArguments*/ + void 0 + ); + const updatedExtendsClause = factory2.updateHeritageClause(extendsClause, [updatedExtendsElement]); + heritageClauses = factory2.createNodeArray([updatedExtendsClause]); + } + } else { + heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + } + const renamedClassThis = (_b = classInfo2.classThis) != null ? _b : factory2.createThis(); + const needsSetNameHelper = !((_c = getOriginalNode(node, isClassLike)) == null ? void 0 : _c.name) && (classDecorators || !isStringLiteral(className) || !isEmptyStringLiteral(className)); + if (needsSetNameHelper) { + const setNameExpr = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), className); + leadingBlockStatements = append(leadingBlockStatements, factory2.createExpressionStatement(setNameExpr)); + } + enterClass(classInfo2); + let members = visitNodes2(node.members, classElementVisitor, isClassElement); + if (pendingExpressions) { + let outerThis; + for (let expression of pendingExpressions) { + expression = visitNode(expression, function thisVisitor(node2) { + if (!(node2.transformFlags & 16384 /* ContainsLexicalThis */)) { + return node2; + } + switch (node2.kind) { + case 108 /* ThisKeyword */: + if (!outerThis) { + outerThis = factory2.createUniqueName("_outerThis", 16 /* Optimistic */); + classDefinitionStatements.unshift(createLet(outerThis, factory2.createThis())); + } + return outerThis; + default: + return visitEachChild(node2, thisVisitor, context); + } + }, isExpression); + const statement = factory2.createExpressionStatement(expression); + leadingBlockStatements = append(leadingBlockStatements, statement); + } + pendingExpressions = void 0; + } + exitClass(); + if (classInfo2.instanceExtraInitializersName && !getFirstConstructorWithBody(node)) { + const initializerStatements = prepareConstructor(node, classInfo2); + if (initializerStatements) { + const extendsClauseElement = getEffectiveBaseTypeNode(node); + const isDerivedClass = !!(extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */); + const constructorStatements = []; + if (isDerivedClass) { + const spreadArguments = factory2.createSpreadElement(factory2.createIdentifier("arguments")); + const superCall = factory2.createCallExpression( + factory2.createSuper(), + /*typeArguments*/ + void 0, + [spreadArguments] + ); + constructorStatements.push(factory2.createExpressionStatement(superCall)); + } + addRange(constructorStatements, initializerStatements); + const constructorBody = factory2.createBlock( + constructorStatements, + /*multiLine*/ + true + ); + syntheticConstructor = factory2.createConstructorDeclaration( + /*modifiers*/ + void 0, + [], + constructorBody + ); + } + } + if (classInfo2.staticExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.staticExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.instanceExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.instanceExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (!isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticFieldDecorationStatements); + if (classInfo2.classDescriptorName && classInfo2.classDecoratorsName && classInfo2.classExtraInitializersName && classInfo2.classThis) { + leadingBlockStatements != null ? leadingBlockStatements : leadingBlockStatements = []; + const valueProperty = factory2.createPropertyAssignment("value", factory2.createThis()); + const classDescriptor = factory2.createObjectLiteralExpression([valueProperty]); + const classDescriptorAssignment = factory2.createAssignment(classInfo2.classDescriptorName, classDescriptor); + const classNameReference = factory2.createPropertyAccessExpression(factory2.createThis(), "name"); + const esDecorateHelper2 = emitHelpers().createESDecorateHelper( + factory2.createNull(), + classDescriptorAssignment, + classInfo2.classDecoratorsName, + { kind: "class", name: classNameReference }, + factory2.createNull(), + classInfo2.classExtraInitializersName + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateHelper2); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(node)); + leadingBlockStatements.push(esDecorateStatement); + const classDescriptorValueReference = factory2.createPropertyAccessExpression(classInfo2.classDescriptorName, "value"); + const classThisAssignment = factory2.createAssignment(classInfo2.classThis, classDescriptorValueReference); + const classReferenceAssignment = factory2.createAssignment(classReference, classThisAssignment); + leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment)); + } + if (classInfo2.staticExtraInitializersName) { + const runStaticInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.staticExtraInitializersName); + const runStaticInitializersStatement = factory2.createExpressionStatement(runStaticInitializersHelper); + setSourceMapRange(runStaticInitializersStatement, (_d = node.name) != null ? _d : moveRangePastDecorators(node)); + leadingBlockStatements = append(leadingBlockStatements, runStaticInitializersStatement); + } + if (classInfo2.classExtraInitializersName) { + const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName); + const runClassInitializersStatement = factory2.createExpressionStatement(runClassInitializersHelper); + setSourceMapRange(runClassInitializersStatement, (_e = node.name) != null ? _e : moveRangePastDecorators(node)); + trailingBlockStatements = append(trailingBlockStatements, runClassInitializersStatement); + } + if (leadingBlockStatements && trailingBlockStatements && !classInfo2.hasStaticInitializers) { + addRange(leadingBlockStatements, trailingBlockStatements); + trailingBlockStatements = void 0; + } + let newMembers = members; + if (leadingBlockStatements) { + const leadingStaticBlockBody = factory2.createBlock( + leadingBlockStatements, + /*multiline*/ + true + ); + const leadingStaticBlock = factory2.createClassStaticBlockDeclaration(leadingStaticBlockBody); + if (shouldTransformPrivateStaticElementsInClass) { + setInternalEmitFlags(leadingStaticBlock, 32 /* TransformPrivateStaticElements */); + } + newMembers = [leadingStaticBlock, ...newMembers]; + } + if (syntheticConstructor) { + newMembers = [...newMembers, syntheticConstructor]; + } + if (trailingBlockStatements) { + const trailingStaticBlockBody = factory2.createBlock( + trailingBlockStatements, + /*multiline*/ + true + ); + const trailingStaticBlock = factory2.createClassStaticBlockDeclaration(trailingStaticBlockBody); + newMembers = [...newMembers, trailingStaticBlock]; + } + if (newMembers !== members) { + members = setTextRange(factory2.createNodeArray(newMembers), members); + } + const lexicalEnvironment = endLexicalEnvironment(); + let classExpression; + if (classDecorators) { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + const classReferenceDeclaration = factory2.createVariableDeclaration( + classReference, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + classExpression + ); + const classReferenceVarDeclList = factory2.createVariableDeclarationList([classReferenceDeclaration]); + const returnExpr = classInfo2.classThis ? factory2.createAssignment(classReference, classInfo2.classThis) : classReference; + classDefinitionStatements.push( + factory2.createVariableStatement( + /*modifiers*/ + void 0, + classReferenceVarDeclList + ), + factory2.createReturnStatement(returnExpr) + ); + } else { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + classDefinitionStatements.push(factory2.createReturnStatement(classExpression)); + } + if (shouldTransformPrivateStaticElementsInClass) { + addInternalEmitFlags(classExpression, 32 /* TransformPrivateStaticElements */); + for (const member of classExpression.members) { + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + addInternalEmitFlags(member, 32 /* TransformPrivateStaticElements */); + } + } + } + setOriginalNode(classExpression, node); + getOrCreateEmitNode(classExpression).classThis = classInfo2.classThis; + return factory2.createImmediatelyInvokedArrowFunction(factory2.mergeLexicalEnvironment(classDefinitionStatements, lexicalEnvironment)); + } + function isDecoratedClassLike(node) { + return classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + false, + node + ) || childIsDecorated( + /*legacyDecorators*/ + false, + node + ); + } + function visitClassDeclaration(node) { + var _a2; + if (isDecoratedClassLike(node)) { + if (hasSyntacticModifier(node, 1 /* Export */) && hasSyntacticModifier(node, 1024 /* Default */)) { + const originalClass = (_a2 = getOriginalNode(node, isClassLike)) != null ? _a2 : node; + const className = originalClass.name ? factory2.createStringLiteralFromNode(originalClass.name) : factory2.createStringLiteral("default"); + const iife = transformClassLike(node, className); + const statement = factory2.createExportDefault(iife); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + setSourceMapRange(statement, moveRangePastDecorators(node)); + return statement; + } else { + Debug.assertIsDefined(node.name, "A class declaration that is not a default export must have a name."); + const iife = transformClassLike(node, factory2.createStringLiteralFromNode(node.name)); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const varDecl = factory2.createVariableDeclaration( + node.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + iife + ); + const varDecls = factory2.createVariableDeclarationList([varDecl], 1 /* Let */); + const statement = factory2.createVariableStatement(modifiers, varDecls); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + return statement; + } + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassDeclaration( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function visitClassExpression(node, referencedName) { + if (isDecoratedClassLike(node)) { + const className = node.name ? factory2.createStringLiteralFromNode(node.name) : referencedName != null ? referencedName : factory2.createStringLiteral(""); + const iife = transformClassLike(node, className); + setOriginalNode(iife, node); + return iife; + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassExpression( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function prepareConstructor(_parent, classInfo2) { + if (classInfo2.instanceExtraInitializersName && !classInfo2.hasNonAmbientInstanceFields) { + const statements = []; + statements.push( + factory2.createExpressionStatement( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo2.instanceExtraInitializersName + ) + ) + ); + return statements; + } + } + function visitConstructorDeclaration(node) { + enterClassElement(node); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const parameters = visitNodes2(node.parameters, visitor, isParameter); + let body; + if (node.body && classInfo) { + const initializerStatements = prepareConstructor(classInfo.class, classInfo); + if (initializerStatements) { + const statements = []; + const nonPrologueStart = factory2.copyPrologue( + node.body.statements, + statements, + /*ensureUseStrict*/ + false, + visitor + ); + addRange(statements, initializerStatements); + addRange(statements, visitNodes2(node.body.statements, visitor, isStatement, nonPrologueStart)); + body = factory2.createBlock( + statements, + /*multiLine*/ + true + ); + setOriginalNode(body, node.body); + setTextRange(body, node.body); + } + } + body != null ? body : body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return factory2.updateConstructorDeclaration(node, modifiers, parameters, body); + } + function finishClassElement(updated, original) { + if (updated !== original) { + setCommentRange(updated, original); + setSourceMapRange(updated, moveRangePastDecorators(original)); + } + return updated; + } + function partialTransformClassElement(member, useNamedEvaluation, classInfo2, createDescriptor) { + var _a2, _b, _c, _d, _e, _f, _g, _h; + let referencedName; + let name; + let initializersName; + let thisArg; + let descriptorName; + if (!classInfo2) { + const modifiers2 = visitNodes2(member.modifiers, modifierVisitor, isModifier); + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + return { modifiers: modifiers2, referencedName, name, initializersName, descriptorName, thisArg }; + } + const memberDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClassElement( + member, + classInfo2.class, + /*useLegacyDecorators*/ + false + )); + const modifiers = visitNodes2(member.modifiers, modifierVisitor, isModifier); + if (memberDecorators) { + const memberDecoratorsName = createHelperVariable(member, "decorators"); + const memberDecoratorsArray = factory2.createArrayLiteralExpression(memberDecorators); + const memberDecoratorsAssignment = factory2.createAssignment(memberDecoratorsName, memberDecoratorsArray); + const memberInfo = { memberDecoratorsName }; + (_a2 = classInfo2.memberInfos) != null ? _a2 : classInfo2.memberInfos = /* @__PURE__ */ new Map(); + classInfo2.memberInfos.set(member, memberInfo); + pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + pendingExpressions.push(memberDecoratorsAssignment); + const statements = isMethodOrAccessor(member) || isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_b = classInfo2.staticNonFieldDecorationStatements) != null ? _b : classInfo2.staticNonFieldDecorationStatements = [] : (_c = classInfo2.nonStaticNonFieldDecorationStatements) != null ? _c : classInfo2.nonStaticNonFieldDecorationStatements = [] : isPropertyDeclaration(member) && !isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_d = classInfo2.staticFieldDecorationStatements) != null ? _d : classInfo2.staticFieldDecorationStatements = [] : (_e = classInfo2.nonStaticFieldDecorationStatements) != null ? _e : classInfo2.nonStaticFieldDecorationStatements = [] : Debug.fail(); + const kind = isGetAccessorDeclaration(member) ? "getter" : isSetAccessorDeclaration(member) ? "setter" : isMethodDeclaration(member) ? "method" : isAutoAccessorPropertyDeclaration(member) ? "accessor" : isPropertyDeclaration(member) ? "field" : Debug.fail(); + let propertyName; + if (isIdentifier(member.name) || isPrivateIdentifier(member.name)) { + propertyName = { computed: false, name: member.name }; + } else if (isPropertyNameLiteral(member.name)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(member.name) }; + } else { + const expression = member.name.expression; + if (isPropertyNameLiteral(expression) && !isIdentifier(expression)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(expression) }; + } else { + enterName(); + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + propertyName = { computed: true, name: referencedName }; + exitName(); + } + } + const context2 = { + kind, + name: propertyName, + static: isStatic(member), + private: isPrivateIdentifier(member.name), + access: { + // 15.7.3 CreateDecoratorAccessObject (kind, name) + // 2. If _kind_ is ~field~, ~method~, ~accessor~, or ~getter~, then ... + get: isPropertyDeclaration(member) || isGetAccessorDeclaration(member) || isMethodDeclaration(member), + // 3. If _kind_ is ~field~, ~accessor~, or ~setter~, then ... + set: isPropertyDeclaration(member) || isSetAccessorDeclaration(member) + } + }; + const extraInitializers = isStatic(member) ? (_f = classInfo2.staticExtraInitializersName) != null ? _f : classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */) : (_g = classInfo2.instanceExtraInitializersName) != null ? _g : classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + if (isMethodOrAccessor(member)) { + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) { + descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier)); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor != null ? descriptor : factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), extraInitializers); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } else if (isPropertyDeclaration(member)) { + initializersName = (_h = memberInfo.memberInitializersName) != null ? _h : memberInfo.memberInitializersName = createHelperVariable(member, "initializers"); + if (isStatic(member)) { + thisArg = classInfo2.classThis; + } + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && hasAccessorModifier(member) && createDescriptor) { + descriptor = createDescriptor( + member, + /*modifiers*/ + void 0 + ); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper( + isAutoAccessorPropertyDeclaration(member) ? factory2.createThis() : factory2.createNull(), + descriptor != null ? descriptor : factory2.createNull(), + memberDecoratorsName, + context2, + initializersName, + extraInitializers + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } + } + if (name === void 0) { + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + } + if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) { + setEmitFlags(name, 1024 /* NoLeadingComments */); + } + return { modifiers, referencedName, name, initializersName, descriptorName, thisArg }; + } + function visitMethodDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createMethodDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createMethodDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateMethodDeclaration( + node, + modifiers, + node.asteriskToken, + name, + /*questionToken*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitGetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createGetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createGetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateGetAccessorDeclaration( + node, + modifiers, + name, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitSetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createSetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createSetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateSetAccessorDeclaration(node, modifiers, name, parameters, body), node); + } + } + function visitClassStaticBlockDeclaration(node) { + enterClassElement(node); + if (classInfo) + classInfo.hasStaticInitializers = true; + const result = visitEachChild(node, visitor, context); + exitClassElement(); + return result; + } + function visitPropertyDeclaration(node) { + enterClassElement(node); + Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented."); + const useNamedEvaluation = isNamedEvaluation(node, isAnonymousClassNeedingAssignedName); + const { modifiers, name, referencedName, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, useNamedEvaluation, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0); + startLexicalEnvironment(); + let initializer = referencedName ? visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression) : visitNode(node.initializer, visitor, isExpression); + if (initializersName) { + initializer = emitHelpers().createRunInitializersHelper( + thisArg != null ? thisArg : factory2.createThis(), + initializersName, + initializer != null ? initializer : factory2.createVoidZero() + ); + } + if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) { + classInfo.hasInjectedInstanceInitializers = true; + initializer != null ? initializer : initializer = factory2.createVoidZero(); + initializer = factory2.createParenthesizedExpression(factory2.createComma( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo.instanceExtraInitializersName + ), + initializer + )); + } + if (isStatic(node) && classInfo && initializer) { + classInfo.hasStaticInitializers = true; + } + const declarations = endLexicalEnvironment(); + if (some(declarations)) { + initializer = factory2.createImmediatelyInvokedArrowFunction([ + ...declarations, + factory2.createReturnStatement(initializer) + ]); + } + exitClassElement(); + if (hasAccessorModifier(node) && descriptorName) { + const commentRange = getCommentRange(node); + const sourceMapRange = getSourceMapRange(node); + const name2 = node.name; + let getterName = name2; + let setterName = name2; + if (isComputedPropertyName(name2) && !isSimpleInlineableExpression(name2.expression)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name2); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name2, visitNode(name2.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name2, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name2.expression); + const expression = visitNode(name2.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name2.expression); + getterName = factory2.updateComputedPropertyName(name2, assignment); + setterName = factory2.updateComputedPropertyName(name2, temp); + } + } + const modifiersWithoutAccessor = visitNodes2(modifiers, (node2) => node2.kind !== 127 /* AccessorKeyword */ ? node2 : void 0, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiersWithoutAccessor, initializer); + setOriginalNode(backingField, node); + setEmitFlags(backingField, 3072 /* NoComments */); + setSourceMapRange(backingField, sourceMapRange); + setSourceMapRange(backingField.name, node.name); + const getter = createGetAccessorDescriptorForwarder(modifiersWithoutAccessor, getterName, descriptorName); + setOriginalNode(getter, node); + setCommentRange(getter, commentRange); + setSourceMapRange(getter, sourceMapRange); + const setter = createSetAccessorDescriptorForwarder(modifiersWithoutAccessor, setterName, descriptorName); + setOriginalNode(setter, node); + setEmitFlags(setter, 3072 /* NoComments */); + setSourceMapRange(setter, sourceMapRange); + return [backingField, getter, setter]; + } + return finishClassElement(factory2.updatePropertyDeclaration( + node, + modifiers, + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ), node); + } + function visitThisExpression(node) { + return classThis != null ? classThis : node; + } + function visitCallExpression(node) { + if (isSuperProperty(node.expression) && classThis) { + const expression = visitNode(node.expression, visitor, isExpression); + const argumentsList = visitNodes2(node.arguments, visitor, isExpression); + const invocation = factory2.createFunctionCallCall(expression, classThis, argumentsList); + setOriginalNode(invocation, node); + setTextRange(invocation, node); + return invocation; + } + return visitEachChild(node, visitor, context); + } + function visitTaggedTemplateExpression(node) { + if (isSuperProperty(node.tag) && classThis) { + const tag = visitNode(node.tag, visitor, isExpression); + const boundTag = factory2.createFunctionBindCall(tag, classThis, []); + setOriginalNode(boundTag, node); + setTextRange(boundTag, node); + const template = visitNode(node.template, visitor, isTemplateLiteral); + return factory2.updateTaggedTemplateExpression( + node, + boundTag, + /*typeArguments*/ + void 0, + template + ); + } + return visitEachChild(node, visitor, context); + } + function visitPropertyAccessExpression(node) { + if (isSuperProperty(node) && isIdentifier(node.name) && classThis && classSuper) { + const propertyName = factory2.createStringLiteralFromNode(node.name); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitElementAccessExpression(node) { + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = visitNode(node.argumentExpression, visitor, isExpression); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + let updated; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } else { + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + node.dotDotDotToken, + visitNode(node.name, visitor, isBindingName), + /*questionToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); + } + if (updated !== node) { + setCommentRange(updated, node); + setTextRange(updated, moveRangePastModifiers(node)); + setSourceMapRange(updated, moveRangePastModifiers(node)); + setEmitFlags(updated.name, 64 /* NoTrailingSourceMap */); + } + return updated; + } + function isAnonymousClassNeedingAssignedName(node) { + return isClassExpression(node) && !node.name && isDecoratedClassLike(node); + } + function visitForStatement(node) { + return factory2.updateForStatement( + node, + visitNode(node.initializer, discardedValueVisitor, isForInitializer), + visitNode(node.condition, visitor, isExpression), + visitNode(node.incrementor, discardedValueVisitor, isExpression), + visitIterationBody(node.statement, visitor, context) + ); + } + function visitExpressionStatement(node) { + return visitEachChild(node, discardedValueVisitor, context); + } + function visitBinaryExpression(node, discarded) { + if (isDestructuringAssignment(node)) { + const left = visitAssignmentPattern(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression(node)) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isSuperProperty(node.left) && classThis && classSuper) { + let setterName = isElementAccessExpression(node.left) ? visitNode(node.left.argumentExpression, visitor, isExpression) : isIdentifier(node.left.name) ? factory2.createStringLiteralFromNode(node.left.name) : void 0; + if (setterName) { + let expression = visitNode(node.right, visitor, isExpression); + if (isCompoundAssignment(node.operatorToken.kind)) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + const superPropertyGet = factory2.createReflectGetCall( + classSuper, + getterName, + classThis + ); + setOriginalNode(superPropertyGet, node.left); + setTextRange(superPropertyGet, node.left); + expression = factory2.createBinaryExpression( + superPropertyGet, + getNonAssignmentOperatorForCompoundAssignment(node.operatorToken.kind), + expression + ); + setTextRange(expression, node); + } + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + if (temp) { + expression = factory2.createAssignment(temp, expression); + setTextRange(temp, node); + } + expression = factory2.createReflectSetCall( + classSuper, + setterName, + expression, + classThis + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + if (node.operatorToken.kind === 27 /* CommaToken */) { + const left = visitNode(node.left, discardedValueVisitor, isExpression); + const right = visitNode(node.right, discarded ? discardedValueVisitor : visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitEachChild(node, visitor, context); + } + function visitPreOrPostfixUnaryExpression(node, discarded) { + if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { + const operand = skipParentheses(node.operand); + if (isSuperProperty(operand) && classThis && classSuper) { + let setterName = isElementAccessExpression(operand) ? visitNode(operand.argumentExpression, visitor, isExpression) : isIdentifier(operand.name) ? factory2.createStringLiteralFromNode(operand.name) : void 0; + if (setterName) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + let expression = factory2.createReflectGetCall(classSuper, getterName, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); + expression = factory2.createReflectSetCall(classSuper, setterName, expression, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + return visitEachChild(node, visitor, context); + } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.getGeneratedNameForNode(node); + hoistVariableDeclaration(referencedName); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } + function visitPropertyName(node) { + if (isComputedPropertyName(node)) { + return visitComputedPropertyName(node); + } + return visitNode(node, visitor, isPropertyName); + } + function visitComputedPropertyName(node) { + let expression = visitNode(node.expression, visitor, isExpression); + if (!isSimpleInlineableExpression(expression)) { + expression = injectPendingExpressions(expression); + } + return factory2.updateComputedPropertyName(node, expression); + } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (propertyName) { + const paramName = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + const expression = factory2.createAssignmentTargetWrapper( + paramName, + factory2.createReflectSetCall( + classSuper, + propertyName, + paramName, + classThis + ) + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + return expression; + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentTarget = visitDestructuringAssignmentTarget(node.left); + let initializer; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + initializer = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + } else { + initializer = visitNode(node.right, visitor, isExpression); + } + return factory2.updateBinaryExpression(node, assignmentTarget, node.operatorToken, initializer); + } else { + return visitDestructuringAssignmentTarget(node); + } + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const name = visitNode(node.name, visitor, isIdentifier); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + const elements = visitNodes2(node.elements, visitArrayAssignmentElement, isExpression); + return factory2.updateArrayLiteralExpression(node, elements); + } else { + const properties = visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike); + return factory2.updateObjectLiteralExpression(node, properties); + } + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const referencedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function injectPendingExpressions(expression) { + if (some(pendingExpressions)) { + if (isParenthesizedExpression(expression)) { + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); + } else { + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); + } + pendingExpressions = void 0; + } + return expression; + } + function transformAllDecoratorsOfDeclaration(allDecorators) { + if (!allDecorators) { + return void 0; + } + const decoratorExpressions = []; + addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + return decoratorExpressions; + } + function transformDecorator(decorator) { + const expression = visitNode(decorator.expression, visitor, isExpression); + setEmitFlags(expression, 3072 /* NoComments */); + return expression; + } + function createDescriptorMethod(original, name, modifiers, asteriskToken, kind, parameters, body) { + const func = factory2.createFunctionExpression( + modifiers, + asteriskToken, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body != null ? body : factory2.createBlock([]) + ); + setOriginalNode(func, original); + setSourceMapRange(func, moveRangePastDecorators(original)); + setEmitFlags(func, 3072 /* NoComments */); + const prefix = kind === "get" || kind === "set" ? kind : void 0; + const functionName = factory2.createStringLiteralFromNode( + name, + /*isSingleQuote*/ + void 0 + ); + const namedFunction = emitHelpers().createSetFunctionNameHelper(func, functionName, prefix); + const method = factory2.createPropertyAssignment(factory2.createIdentifier(kind), namedFunction); + setOriginalNode(method, original); + setSourceMapRange(method, moveRangePastDecorators(original)); + setEmitFlags(method, 3072 /* NoComments */); + return method; + } + function createMethodDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + node.asteriskToken, + "value", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createGetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createSetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createAccessorPropertyDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ) + ) + ]) + ), + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createExpressionStatement( + factory2.createAssignment( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ), + factory2.createIdentifier("value") + ) + ) + ]) + ) + ]); + } + function createMethodDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("value") + ) + ) + ]) + ); + } + function createGetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("get") + ), + factory2.createThis(), + [] + ) + ) + ]) + ); + } + function createSetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createSetAccessorDeclaration( + modifiers, + name, + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("set") + ), + factory2.createThis(), + [factory2.createIdentifier("value")] + ) + ) + ]) + ); + } + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } +} + // src/compiler/transformers/es2017.ts function transformES2017(context) { const { @@ -88159,21 +91406,21 @@ function transformES2017(context) { node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } function visitForOfStatementInAsyncBody(node) { return factory2.updateForOfStatement( node, - visitNode(node.awaitModifier, visitor, isToken), + visitNode(node.awaitModifier, visitor, isAwaitKeyword), isVariableDeclarationListWithCollidingName(node.initializer) ? visitVariableDeclarationListWithCollidingNames( node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } @@ -88210,7 +91457,7 @@ function transformES2017(context) { function visitConstructorDeclaration(node) { return factory2.updateConstructorDeclaration( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), visitParameterList(node.parameters, visitor, context), transformMethodBody(node) ); @@ -88268,7 +91515,7 @@ function transformES2017(context) { function visitFunctionExpression(node) { return factory2.updateFunctionExpression( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), node.asteriskToken, node.name, /*typeParameters*/ @@ -88282,7 +91529,7 @@ function transformES2017(context) { function visitArrowFunction(node) { return factory2.updateArrowFunction( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), /*typeParameters*/ void 0, visitParameterList(node.parameters, visitor, context), @@ -88339,7 +91586,7 @@ function transformES2017(context) { ), node ); - return visitNode(converted, visitor, isExpression); + return Debug.checkDefined(visitNode(converted, visitor, isExpression)); } function collidesWithParameterName({ name }) { if (isIdentifier(name)) { @@ -88471,7 +91718,7 @@ function transformES2017(context) { if (isBlock(body)) { return factory2.updateBlock(body, visitNodes2(body.statements, asyncBodyVisitor, isStatement, start)); } else { - return factory2.converters.convertToFunctionBlock(visitNode(body, asyncBodyVisitor, isConciseBody)); + return factory2.converters.convertToFunctionBlock(Debug.checkDefined(visitNode(body, asyncBodyVisitor, isConciseBody))); } } function getPromiseConstructor(type) { @@ -88826,7 +92073,7 @@ function transformES2018(context) { return visitObjectLiteralExpression(node); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 295 /* CatchClause */: return visitCatchClause(node); @@ -89584,7 +92831,7 @@ function transformES2018(context) { /*questionToken*/ void 0, visitor, - isToken + isQuestionToken ), /*typeParameters*/ void 0, @@ -90258,15 +93505,10 @@ function transformES2021(context) { if ((node.transformFlags & 16 /* ContainsES2021 */) === 0) { return node; } - switch (node.kind) { - case 223 /* BinaryExpression */: - const binaryExpression = node; - if (isLogicalOrCoalescingAssignmentExpression(binaryExpression)) { - return transformLogicalAssignment(binaryExpression); - } - default: - return visitEachChild(node, visitor, context); + if (isLogicalOrCoalescingAssignmentExpression(node)) { + return transformLogicalAssignment(node); } + return visitEachChild(node, visitor, context); } function transformLogicalAssignment(binaryExpression) { const operator = binaryExpression.operatorToken; @@ -90396,7 +93638,7 @@ function transformJsx(context) { factory2.createIdentifier(name), generatedName ); - generatedName.generatedImportReference = specifier; + setIdentifierGeneratedImportReference(generatedName, specifier); specifierSourceImports.set(name, specifier); return generatedName; } @@ -90712,7 +93954,7 @@ function transformJsx(context) { return element; } function transformJsxSpreadAttributeToSpreadAssignment(node) { - return factory2.createSpreadAssignment(visitNode(node.expression, visitor, isExpression)); + return factory2.createSpreadAssignment(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); } function transformJsxAttributesToObjectProps(attrs, children) { const target = getEmitScriptTarget(compilerOptions); @@ -90742,7 +93984,7 @@ function transformJsx(context) { return singleOrUndefined(expressions) || emitHelpers().createAssignHelper(expressions); } function transformJsxSpreadAttributeToExpression(node) { - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } function transformJsxAttributeToObjectLiteralElement(node) { const name = getAttributeName(node); @@ -90762,7 +94004,7 @@ function transformJsx(context) { if (node.expression === void 0) { return factory2.createTrue(); } - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } if (isJsxElement(node)) { return visitJsxElement( @@ -91273,7 +94515,7 @@ function transformES2015(context) { node, /*lookInLabeledStatements*/ false - ) && shouldConvertIterationStatement(node) || (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) !== 0; + ) && shouldConvertIterationStatement(node) || (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) !== 0; } function visitor(node) { return shouldVisitNode(node) ? visitorWorker( @@ -91404,7 +94646,7 @@ function transformES2015(context) { return visitParenthesizedExpression(node, expressionResultIsUnused2); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 14 /* NoSubstitutionTemplateLiteral */: case 15 /* TemplateHead */: @@ -91507,7 +94749,7 @@ function transformES2015(context) { [ factory2.createPropertyAssignment( factory2.createIdentifier("value"), - node.expression ? visitNode(node.expression, visitor, isExpression) : factory2.createVoidZero() + node.expression ? Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) : factory2.createVoidZero() ) ] ) @@ -91539,7 +94781,7 @@ function transformES2015(context) { return convertedLoopState.argumentsName || (convertedLoopState.argumentsName = factory2.createUniqueName("arguments")); } } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { return setOriginalNode(setTextRange( factory2.createIdentifier(unescapeLeadingUnderscores(node.escapedText)), node @@ -91678,7 +94920,7 @@ function transformES2015(context) { outer, /*typeArguments*/ void 0, - extendsClauseElement ? [visitNode(extendsClauseElement.expression, visitor, isExpression)] : [] + extendsClauseElement ? [Debug.checkDefined(visitNode(extendsClauseElement.expression, visitor, isExpression))] : [] ) ); addSyntheticLeadingComment(result, 3 /* MultiLineCommentTrivia */, "* @class "); @@ -92020,7 +95262,7 @@ function transformES2015(context) { factory2.createExpressionStatement( factory2.createAssignment( factory2.getGeneratedNameForNode(parameter), - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ) ), 2097152 /* CustomPrologue */ @@ -92031,7 +95273,7 @@ function transformES2015(context) { return false; } function insertDefaultValueAssignmentForInitializer(statements, parameter, name, initializer) { - initializer = visitNode(initializer, visitor, isExpression); + initializer = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); const statement = factory2.createIfStatement( factory2.createTypeCheck(factory2.cloneNode(name), "undefined"), setEmitFlags( @@ -92307,6 +95549,7 @@ function transformES2015(context) { container ); const propertyName = visitNode(member.name, visitor, isPropertyName); + Debug.assert(propertyName); let e; if (!isPrivateIdentifier(propertyName) && getUseDefineForClassFields(context.getCompilerOptions())) { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; @@ -92350,6 +95593,7 @@ function transformES2015(context) { setEmitFlags(target, 3072 /* NoComments */ | 64 /* NoTrailingSourceMap */); setSourceMapRange(target, firstAccessor.name); const visitedAccessorName = visitNode(firstAccessor.name, visitor, isPropertyName); + Debug.assert(visitedAccessorName); if (isPrivateIdentifier(visitedAccessorName)) { return Debug.failBadSyntaxKind(visitedAccessorName, "Encountered unhandled private identifier while transforming ES2015."); } @@ -92622,9 +95866,9 @@ function transformES2015(context) { if (node.operatorToken.kind === 27 /* CommaToken */) { return factory2.updateBinaryExpression( node, - visitNode(node.left, visitorWithUnusedExpressionResult, isExpression), + Debug.checkDefined(visitNode(node.left, visitorWithUnusedExpressionResult, isExpression)), node.operatorToken, - visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression) + Debug.checkDefined(visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -92639,6 +95883,7 @@ function transformES2015(context) { const visited = visitNode(element, i < node.elements.length - 1 ? visitorWithUnusedExpressionResult : visitor, isExpression); if (result || visited !== element) { result || (result = node.elements.slice(0, i)); + Debug.assert(visited); result.push(visited); } } @@ -92646,7 +95891,7 @@ function transformES2015(context) { return factory2.updateCommaListExpression(node, elements); } function isVariableStatementOfTypeScriptClassWrapper(node) { - return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getEmitFlags(node.declarationList.declarations[0].initializer) & 67108864 /* TypeScriptClassWrapper */); + return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getInternalEmitFlags(node.declarationList.declarations[0].initializer) & 1 /* TypeScriptClassWrapper */); } function visitVariableStatement(node) { const ancestorFacts = enterSubtree(0 /* None */, hasSyntacticModifier(node, 1 /* Export */) ? 32 /* ExportedVariableStatement */ : 0 /* None */); @@ -92665,7 +95910,7 @@ function transformES2015(context) { 0 /* All */ ); } else { - assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, visitNode(decl.initializer, visitor, isExpression)); + assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, Debug.checkDefined(visitNode(decl.initializer, visitor, isExpression))); setTextRange(assignment, decl); } assignments = append(assignments, assignment); @@ -92687,7 +95932,7 @@ function transformES2015(context) { if (node.flags & 3 /* BlockScoped */) { enableSubstitutionsForBlockScopedBindings(); } - const declarations = flatMap(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration); + const declarations = visitNodes2(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration, isVariableDeclaration); const declarationList = factory2.createVariableDeclarationList(declarations); setOriginalNode(declarationList, node); setTextRange(declarationList, node); @@ -92771,7 +96016,7 @@ function transformES2015(context) { statement, /*outermostLabeledStatement*/ node - ) : factory2.restoreEnclosingLabel(visitNode(statement, visitor, isStatement, factory2.liftToBlock), node, convertedLoopState && resetLabel); + ) : factory2.restoreEnclosingLabel(Debug.checkDefined(visitNode(statement, visitor, isStatement, factory2.liftToBlock)), node, convertedLoopState && resetLabel); } function visitIterationStatement(node, outermostLabeledStatement) { switch (node.kind) { @@ -92814,7 +96059,7 @@ function transformES2015(context) { visitNode(node.initializer, visitorWithUnusedExpressionResult, isForInitializer), visitNode(node.condition, visitor, isExpression), visitNode(node.incrementor, visitorWithUnusedExpressionResult, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } function visitForInStatement(node, outermostLabeledStatement) { @@ -92900,13 +96145,14 @@ function transformES2015(context) { ))); } else { setTextRangeEnd(assignment, initializer.end); - statements.push(setTextRange(factory2.createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1))); + statements.push(setTextRange(factory2.createExpressionStatement(Debug.checkDefined(visitNode(assignment, visitor, isExpression))), moveRangeEnd(initializer, -1))); } } if (convertedLoopBodyStatements) { return createSyntheticBlockForConvertedStatements(addRange(statements, convertedLoopBodyStatements)); } else { const statement = visitNode(node.statement, visitor, isStatement, factory2.liftToBlock); + Debug.assert(statement); if (isBlock(statement)) { return factory2.updateBlock(statement, setTextRange(factory2.createNodeArray(concatenate(statements, statement.statements)), statement.statements)); } else { @@ -92927,6 +96173,7 @@ function transformES2015(context) { } function convertForOfStatementForArray(node, outermostLabeledStatement, convertedLoopBodyStatements) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const counter = factory2.createLoopVariable(); const rhsReference = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ @@ -92986,6 +96233,7 @@ function transformES2015(context) { } function convertForOfStatementForIterable(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const iterator = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ void 0 @@ -93243,7 +96491,7 @@ function transformES2015(context) { loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } } else { - const clone2 = convertIterationStatementCore(node, initializerFunction, visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)); + const clone2 = convertIterationStatementCore(node, initializerFunction, Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock))); loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } statements.push(loop); @@ -93281,16 +96529,16 @@ function transformES2015(context) { node, /*awaitModifier*/ void 0, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } function convertForInStatement(node, convertedLoopBody) { return factory2.updateForInStatement( node, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -93298,13 +96546,13 @@ function transformES2015(context) { return factory2.updateDoStatement( node, convertedLoopBody, - visitNode(node.expression, visitor, isExpression) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) ); } function convertWhileStatement(node, convertedLoopBody) { return factory2.updateWhileStatement( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -93466,7 +96714,7 @@ function transformES2015(context) { void 0, /*type*/ void 0, - visitNode( + Debug.checkDefined(visitNode( factory2.createBlock( statements, /*multiLine*/ @@ -93474,7 +96722,7 @@ function transformES2015(context) { ), visitor, isBlock - ) + )) ), emitFlags ) @@ -93497,7 +96745,7 @@ function transformES2015(context) { if (node.incrementor) { statements.push(factory2.createIfStatement( currentState.conditionVariable, - factory2.createExpressionStatement(visitNode(node.incrementor, visitor, isExpression)), + factory2.createExpressionStatement(Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression))), factory2.createExpressionStatement(factory2.createAssignment(currentState.conditionVariable, factory2.createTrue())) )); } else { @@ -93508,11 +96756,12 @@ function transformES2015(context) { } if (shouldConvertConditionOfForStatement(node)) { statements.push(factory2.createIfStatement( - factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, visitNode(node.condition, visitor, isExpression)), - visitNode(factory2.createBreakStatement(), visitor, isStatement) + factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))), + Debug.checkDefined(visitNode(factory2.createBreakStatement(), visitor, isStatement)) )); } } + Debug.assert(statement); if (isBlock(statement)) { addRange(statements, statement.statements); } else { @@ -93780,9 +97029,9 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), - visitNode(property.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(property.initializer, visitor, isExpression)) ); setTextRange(expression, property); if (startsOnNewLine) { @@ -93795,7 +97044,7 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), factory2.cloneNode(property.name) ); @@ -93810,7 +97059,7 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(method.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(method.name, visitor, isPropertyName)) ), transformFunctionLikeToExpression( method, @@ -93931,7 +97180,7 @@ function transformES2015(context) { return visitEachChild(node, visitor, context); } function visitCallExpression(node) { - if (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) { + if (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) { return visitTypeScriptClassWrapper(node); } const expression = skipOuterExpressions(node.expression); @@ -93944,7 +97193,7 @@ function transformES2015(context) { } return factory2.updateCallExpression( node, - visitNode(node.expression, callExpressionVisitor, isExpression), + Debug.checkDefined(visitNode(node.expression, callExpressionVisitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -93996,7 +97245,14 @@ function transformES2015(context) { if (classBodyEnd < -1) { addRange(statements, funcStatements, classBodyEnd + 1); } - addRange(statements, remainingStatements); + const returnStatement = tryCast(elementAt(funcStatements, classBodyEnd), isReturnStatement); + for (const statement of remainingStatements) { + if (isReturnStatement(statement) && (returnStatement == null ? void 0 : returnStatement.expression) && !isIdentifier(returnStatement.expression)) { + statements.push(returnStatement); + } else { + statements.push(statement); + } + } addRange( statements, classStatements, @@ -94056,8 +97312,8 @@ function transformES2015(context) { let resultingCall; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { resultingCall = factory2.createFunctionApplyCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), transformAndSpreadElements( node.arguments, /*isArgumentList*/ @@ -94071,8 +97327,8 @@ function transformES2015(context) { } else { resultingCall = setTextRange( factory2.createFunctionCallCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), visitNodes2(node.arguments, visitor, isExpression) ), node @@ -94094,7 +97350,7 @@ function transformES2015(context) { const { target, thisArg } = factory2.createCallBinding(factory2.createPropertyAccessExpression(node.expression, "bind"), hoistVariableDeclaration); return factory2.createNewExpression( factory2.createFunctionApplyCall( - visitNode(target, visitor, isExpression), + Debug.checkDefined(visitNode(target, visitor, isExpression)), thisArg, transformAndSpreadElements( factory2.createNodeArray([factory2.createVoidZero(), ...node.arguments]), @@ -94151,7 +97407,9 @@ function transformES2015(context) { return map(chunk, visitExpressionOfSpread); } function visitExpressionOfSpread(node) { + Debug.assertNode(node, isSpreadElement); let expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const isCallToReadHelper = isCallToHelper(expression, "___read"); let kind = isCallToReadHelper || isPackedArrayLiteral(expression) ? 2 /* PackedSpread */ : 1 /* UnpackedSpread */; if (compilerOptions.downlevelIteration && kind === 1 /* UnpackedSpread */ && !isArrayLiteralExpression(expression) && !isCallToReadHelper) { @@ -94202,7 +97460,7 @@ function transformES2015(context) { function visitTemplateExpression(node) { let expression = factory2.createStringLiteral(node.head.text); for (const span of node.templateSpans) { - const args = [visitNode(span.expression, visitor, isExpression)]; + const args = [Debug.checkDefined(visitNode(span.expression, visitor, isExpression))]; if (span.literal.text.length > 0) { args.push(factory2.createStringLiteral(span.literal.text)); } @@ -94420,7 +97678,7 @@ function transformES5(context) { return node; } function trySubstituteReservedName(name) { - const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(idText(name)) : void 0); + const token = identifierToKeywordKind(name); if (token !== void 0 && token >= 81 /* FirstReservedWord */ && token <= 116 /* LastReservedWord */) { return setTextRange(factory2.createStringLiteralFromNode(name), name); } @@ -94556,7 +97814,7 @@ function transformGenerators(context) { switch (node.kind) { case 223 /* BinaryExpression */: return visitBinaryExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node); case 224 /* ConditionalExpression */: return visitConditionalExpression(node); @@ -94768,19 +98026,19 @@ function transformGenerators(context) { case 208 /* PropertyAccessExpression */: target = factory2.updatePropertyAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), left.name ); break; case 209 /* ElementAccessExpression */: target = factory2.updateElementAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), - cacheExpression(visitNode(left.argumentExpression, visitor, isExpression)) + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), + cacheExpression(Debug.checkDefined(visitNode(left.argumentExpression, visitor, isExpression))) ); break; default: - target = visitNode(left, visitor, isExpression); + target = Debug.checkDefined(visitNode(left, visitor, isExpression)); break; } const operator = node.operatorToken.kind; @@ -94792,7 +98050,7 @@ function transformGenerators(context) { factory2.createBinaryExpression( cacheExpression(target), getNonAssignmentOperatorForCompoundAssignment(operator), - visitNode(right, visitor, isExpression) + Debug.checkDefined(visitNode(right, visitor, isExpression)) ), node ) @@ -94800,7 +98058,7 @@ function transformGenerators(context) { node ); } else { - return factory2.updateBinaryExpression(node, target, node.operatorToken, visitNode(right, visitor, isExpression)); + return factory2.updateBinaryExpression(node, target, node.operatorToken, Debug.checkDefined(visitNode(right, visitor, isExpression))); } } return visitEachChild(node, visitor, context); @@ -94814,9 +98072,9 @@ function transformGenerators(context) { } return factory2.updateBinaryExpression( node, - cacheExpression(visitNode(node.left, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(node.left, visitor, isExpression))), node.operatorToken, - visitNode(node.right, visitor, isExpression) + Debug.checkDefined(visitNode(node.right, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -94835,7 +98093,7 @@ function transformGenerators(context) { emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(node2, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(node2, visitor, isExpression))); } } } @@ -94849,7 +98107,7 @@ function transformGenerators(context) { emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(elem, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(elem, visitor, isExpression))); } } return factory2.inlineExpressions(pendingExpressions); @@ -94859,7 +98117,7 @@ function transformGenerators(context) { const resultLocal = declareLocal(); emitAssignment( resultLocal, - visitNode(node.left, visitor, isExpression), + Debug.checkDefined(visitNode(node.left, visitor, isExpression)), /*location*/ node.left ); @@ -94880,7 +98138,7 @@ function transformGenerators(context) { } emitAssignment( resultLocal, - visitNode(node.right, visitor, isExpression), + Debug.checkDefined(visitNode(node.right, visitor, isExpression)), /*location*/ node.right ); @@ -94894,13 +98152,13 @@ function transformGenerators(context) { const resultLocal = declareLocal(); emitBreakWhenFalse( whenFalseLabel, - visitNode(node.condition, visitor, isExpression), + Debug.checkDefined(visitNode(node.condition, visitor, isExpression)), /*location*/ node.condition ); emitAssignment( resultLocal, - visitNode(node.whenTrue, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenTrue, visitor, isExpression)), /*location*/ node.whenTrue ); @@ -94908,7 +98166,7 @@ function transformGenerators(context) { markLabel(whenFalseLabel); emitAssignment( resultLocal, - visitNode(node.whenFalse, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenFalse, visitor, isExpression)), /*location*/ node.whenFalse ); @@ -94988,7 +98246,7 @@ function transformGenerators(context) { leadingElement = void 0; expressions2 = []; } - expressions2.push(visitNode(element, visitor, isExpression)); + expressions2.push(Debug.checkDefined(visitNode(element, visitor, isExpression))); return expressions2; } } @@ -95027,8 +98285,8 @@ function transformGenerators(context) { if (containsYield(node.argumentExpression)) { return factory2.updateElementAccessExpression( node, - cacheExpression(visitNode(node.expression, visitor, isLeftHandSideExpression)), - visitNode(node.argumentExpression, visitor, isExpression) + cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression))), + Debug.checkDefined(visitNode(node.argumentExpression, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -95045,7 +98303,7 @@ function transformGenerators(context) { return setOriginalNode( setTextRange( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isLeftHandSideExpression))), thisArg, visitElements(node.arguments) ), @@ -95063,7 +98321,7 @@ function transformGenerators(context) { setTextRange( factory2.createNewExpression( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isExpression))), thisArg, visitElements( node.arguments, @@ -95179,7 +98437,7 @@ function transformGenerators(context) { return setSourceMapRange( factory2.createAssignment( setSourceMapRange(factory2.cloneNode(node.name), node.name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), node ); @@ -95191,7 +98449,7 @@ function transformGenerators(context) { const elseLabel = node.elseStatement ? defineLabel() : void 0; emitBreakWhenFalse( node.elseStatement ? elseLabel : endLabel, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*location*/ node.expression ); @@ -95220,7 +98478,7 @@ function transformGenerators(context) { markLabel(loopLabel); transformAndEmitEmbeddedStatement(node.statement); markLabel(conditionLabel); - emitBreakWhenTrue(loopLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenTrue(loopLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); endLoopBlock(); } else { emitStatement(visitNode(node, visitor, isStatement)); @@ -95241,7 +98499,7 @@ function transformGenerators(context) { const loopLabel = defineLabel(); const endLabel = beginLoopBlock(loopLabel); markLabel(loopLabel); - emitBreakWhenFalse(endLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); transformAndEmitEmbeddedStatement(node.statement); emitBreak(loopLabel); endLoopBlock(); @@ -95272,7 +98530,7 @@ function transformGenerators(context) { emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ), initializer ) @@ -95281,7 +98539,7 @@ function transformGenerators(context) { } markLabel(conditionLabel); if (node.condition) { - emitBreakWhenFalse(endLabel, visitNode(node.condition, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))); } transformAndEmitEmbeddedStatement(node.statement); markLabel(incrementLabel); @@ -95289,7 +98547,7 @@ function transformGenerators(context) { emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(node.incrementor, visitor, isExpression) + Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression)) ), node.incrementor ) @@ -95334,7 +98592,7 @@ function transformGenerators(context) { const keysIndex = factory2.createLoopVariable(); const initializer = node.initializer; hoistVariableDeclaration(keysIndex); - emitAssignment(obj, visitNode(node.expression, visitor, isExpression)); + emitAssignment(obj, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); emitAssignment(keysArray, factory2.createArrayLiteralExpression()); emitStatement( factory2.createForInStatement( @@ -95365,7 +98623,7 @@ function transformGenerators(context) { } variable = factory2.cloneNode(initializer.declarations[0].name); } else { - variable = visitNode(initializer, visitor, isExpression); + variable = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); Debug.assert(isLeftHandSideExpression(variable)); } emitAssignment(variable, key); @@ -95390,8 +98648,8 @@ function transformGenerators(context) { node = factory2.updateForInStatement( node, initializer.declarations[0].name, - visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } else { node = visitEachChild(node, visitor, context); @@ -95467,7 +98725,7 @@ function transformGenerators(context) { } function transformAndEmitWithStatement(node) { if (containsYield(node)) { - beginWithBlock(cacheExpression(visitNode(node.expression, visitor, isExpression))); + beginWithBlock(cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression)))); transformAndEmitEmbeddedStatement(node.statement); endWithBlock(); } else { @@ -95479,7 +98737,7 @@ function transformGenerators(context) { const caseBlock = node.caseBlock; const numClauses = caseBlock.clauses.length; const endLabel = beginSwitchBlock(); - const expression = cacheExpression(visitNode(node.expression, visitor, isExpression)); + const expression = cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); const clauseLabels = []; let defaultClauseIndex = -1; for (let i = 0; i < numClauses; i++) { @@ -95501,7 +98759,7 @@ function transformGenerators(context) { } pendingClauses.push( factory2.createCaseClause( - visitNode(clause.expression, visitor, isExpression), + Debug.checkDefined(visitNode(clause.expression, visitor, isExpression)), [ createInlineBreak( clauseLabels[i], @@ -95571,7 +98829,7 @@ function transformGenerators(context) { function transformAndEmitThrowStatement(node) { var _a2; emitThrow( - visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression), + Debug.checkDefined(visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression)), /*location*/ node ); @@ -96855,7 +100113,7 @@ function transformModule(context) { } function addExportEqualsIfNeeded(statements, emitAsReturn) { if (currentModuleInfo.exportEquals) { - const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor); + const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor, isExpression); if (expressionResult) { if (emitAsReturn) { const statement = factory2.createReturnStatement(expressionResult); @@ -96895,9 +100153,9 @@ function transformModule(context) { return visitFunctionDeclaration(node); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -96914,7 +100172,7 @@ function transformModule(context) { return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 210 /* CallExpression */: if (isImportCall(node) && currentSourceFile.impliedNodeFormat === void 0) { @@ -97050,7 +100308,7 @@ function transformModule(context) { } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; const containsLexicalThis = !!(node.transformFlags & 16384 /* ContainsLexicalThis */); switch (compilerOptions.module) { @@ -97259,7 +100517,7 @@ function transformModule(context) { return downleveledImport; } function getHelperExpressionForExport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getExportNeedsImportStarHelper(node)) { @@ -97268,7 +100526,7 @@ function transformModule(context) { return innerExpr; } function getHelperExpressionForImport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getImportNeedsImportStarHelper(node)) { @@ -97513,7 +100771,7 @@ function transformModule(context) { ) ); } else { - const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; + const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; const exportedValue = factory2.createPropertyAccessExpression( exportNeedsImportDefault ? emitHelpers().createImportDefaultHelper(generatedName) : generatedName, specifier.propertyName || specifier.name @@ -97579,7 +100837,7 @@ function transformModule(context) { deferredExports[id] = appendExportStatement( deferredExports[id], factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -97589,7 +100847,7 @@ function transformModule(context) { statements = appendExportStatement( statements, factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -97617,7 +100875,7 @@ function transformModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitEachChild(node.body, visitor, context) @@ -97658,8 +100916,8 @@ function transformModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.heritageClauses, visitor), - visitNodes2(node.members, visitor) + visitNodes2(node.heritageClauses, visitor, isHeritageClause), + visitNodes2(node.members, visitor, isClassElement) ), node ), @@ -97689,7 +100947,23 @@ function transformModule(context) { if (!modifiers) { modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); } - variables = append(variables, variable); + if (variable.initializer) { + const updatedVariable = factory2.updateVariableDeclaration( + variable, + variable.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + createExportExpression( + variable.name, + visitNode(variable.initializer, visitor, isExpression) + ) + ); + variables = append(variables, updatedVariable); + } else { + variables = append(variables, variable); + } } else if (variable.initializer) { if (!isBindingPattern(variable.name) && (isArrowFunction(variable.initializer) || isFunctionExpression(variable.initializer) || isClassExpression(variable.initializer))) { const expression = factory2.createAssignment( @@ -97707,7 +100981,7 @@ function transformModule(context) { variable.name, variable.exclamationToken, variable.type, - visitNode(variable.initializer, visitor) + visitNode(variable.initializer, visitor, isExpression) ); variables = append(variables, updatedVariable); expressions = append(expressions, expression); @@ -97758,9 +101032,8 @@ function transformModule(context) { function transformInitializedVariable(node) { if (isBindingPattern(node.name)) { return flattenDestructuringAssignment( - visitNode(node, visitor), - /*visitor*/ - void 0, + visitNode(node, visitor, isInitializedVariable), + visitor, context, 0 /* All */, /*needsValue*/ @@ -97777,7 +101050,7 @@ function transformModule(context) { /*location*/ node.name ), - node.initializer ? visitNode(node.initializer, visitor) : factory2.createVoidZero() + node.initializer ? visitNode(node.initializer, visitor, isExpression) : factory2.createVoidZero() ); } } @@ -98047,7 +101320,7 @@ function transformModule(context) { const expression = substituteExpressionIdentifier(node.expression); noSubstitution[getNodeId(expression)] = true; if (!isIdentifier(expression) && !(getEmitFlags(node.expression) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateCallExpression( node, expression, @@ -98055,7 +101328,7 @@ function transformModule(context) { void 0, node.arguments ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -98066,7 +101339,7 @@ function transformModule(context) { const tag = substituteExpressionIdentifier(node.tag); noSubstitution[getNodeId(tag)] = true; if (!isIdentifier(tag) && !(getEmitFlags(node.tag) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateTaggedTemplateExpression( node, tag, @@ -98074,7 +101347,7 @@ function transformModule(context) { void 0, node.template ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -98088,7 +101361,7 @@ function transformModule(context) { return factory2.createPropertyAccessExpression(externalHelpersModuleName, node); } return node; - } else if (!(isGeneratedIdentifier(node) && !(node.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { + } else if (!(isGeneratedIdentifier(node) && !(node.emitNode.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); if (exportContainer && exportContainer.kind === 308 /* SourceFile */) { return setTextRange( @@ -98720,7 +101993,7 @@ function transformSystemModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -99030,9 +102303,9 @@ function transformSystemModule(context) { return visitCatchClause(node); case 238 /* Block */: return visitBlock(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -99094,7 +102367,7 @@ function transformSystemModule(context) { } return expressions ? factory2.inlineExpressions(expressions) : factory2.createOmittedExpression(); } else { - return visitNode(node, discardedValueVisitor, isExpression); + return visitNode(node, discardedValueVisitor, isForInitializer); } } function visitDoStatement(node) { @@ -99115,21 +102388,21 @@ function transformSystemModule(context) { return factory2.updateLabeledStatement( node, node.label, - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitWithStatement(node) { return factory2.updateWithStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitSwitchStatement(node) { return factory2.updateSwitchStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock) + Debug.checkDefined(visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock)) ); } function visitCaseBlock(node) { @@ -99161,7 +102434,7 @@ function transformSystemModule(context) { node = factory2.updateCatchClause( node, node.variableDeclaration, - visitNode(node.block, topLevelNestedVisitor, isBlock) + Debug.checkDefined(visitNode(node.block, topLevelNestedVisitor, isBlock)) ); enclosingBlockScopedContainer = savedEnclosingBlockScopedContainer; return node; @@ -99188,7 +102461,7 @@ function transformSystemModule(context) { return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 223 /* BinaryExpression */: if (isDestructuringAssignment(node)) { @@ -99231,7 +102504,7 @@ function transformSystemModule(context) { } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; return factory2.createCallExpression( factory2.createPropertyAccessExpression( @@ -100352,7 +103625,7 @@ function transformDeclarations(context) { sourceFile, /*bundled*/ true - )) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + )) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); const newFile = factory2.updateSourceFile( sourceFile, [factory2.createModuleDeclaration( @@ -100374,7 +103647,7 @@ function transformDeclarations(context) { return newFile; } needsDeclare = true; - const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); return factory2.updateSourceFile( sourceFile, transformAndReplaceLatePaintedStatements(updated2), @@ -100443,7 +103716,7 @@ function transformDeclarations(context) { refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); } else { - const statements = visitNodes2(node.statements, visitDeclarationStatements); + const statements = visitNodes2(node.statements, visitDeclarationStatements, isStatement); combinedStatements = setTextRange(factory2.createNodeArray(transformAndReplaceLatePaintedStatements(statements)), node.statements); refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); @@ -100560,9 +103833,9 @@ function transformDeclarations(context) { return name; } else { if (name.kind === 204 /* ArrayBindingPattern */) { - return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isArrayBindingElement)); } else { - return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isBindingElement)); } } function visitBindingElement(elem) { @@ -100632,10 +103905,10 @@ function transformDeclarations(context) { } const shouldUseResolverType = node.kind === 166 /* Parameter */ && (resolver.isRequiredInitializedParameter(node) || resolver.isOptionalUninitializedParameterProperty(node)); if (type && !shouldUseResolverType) { - return visitNode(type, visitDeclarationSubtree); + return visitNode(type, visitDeclarationSubtree, isTypeNode); } if (!getParseTreeNode(node)) { - return type ? visitNode(type, visitDeclarationSubtree) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); + return type ? visitNode(type, visitDeclarationSubtree, isTypeNode) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); } if (node.kind === 175 /* SetAccessor */) { return factory2.createKeywordTypeNode(131 /* AnyKeyword */); @@ -100705,11 +103978,11 @@ function transformDeclarations(context) { } function updateParamsList(node, params, modifierMask) { if (hasEffectiveModifier(node, 8 /* Private */)) { - return void 0; + return factory2.createNodeArray(); } const newParams = map(params, (p) => ensureParameter(p, modifierMask)); if (!newParams) { - return void 0; + return factory2.createNodeArray(); } return factory2.createNodeArray(newParams, params.hasTrailingComma); } @@ -100749,7 +104022,7 @@ function transformDeclarations(context) { return factory2.createNodeArray(newParams || emptyArray); } function ensureTypeParams(node, params) { - return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree); + return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree, isTypeParameterDeclaration); } function isEnclosingDeclaration(node) { return isSourceFile(node) || isTypeAliasDeclaration(node) || isModuleDeclaration(node) || isClassDeclaration(node) || isInterfaceDeclaration(node) || isFunctionLike(node) || isIndexSignatureDeclaration(node) || isMappedTypeNode(node); @@ -100884,7 +104157,7 @@ function transformDeclarations(context) { needsDeclare = priorNeedsDeclare; lateStatementReplacementMap.set(getOriginalNodeId(i), result); } - return visitNodes2(statements, visitLateVisibilityMarkedStatements); + return visitNodes2(statements, visitLateVisibilityMarkedStatements, isStatement); function visitLateVisibilityMarkedStatements(statement) { if (isLateVisibilityPaintedStatement(statement)) { const key = getOriginalNodeId(statement); @@ -101098,7 +104371,7 @@ function transformDeclarations(context) { input, ensureModifiers(input), updateParamsList(input, input.parameters), - visitNode(input.type, visitDeclarationSubtree) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(input.type, visitDeclarationSubtree, isTypeNode) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) )); } case 257 /* VariableDeclaration */: { @@ -101131,20 +104404,24 @@ function transformDeclarations(context) { return cleanup(visitEachChild(input, visitDeclarationSubtree, context)); } case 191 /* ConditionalType */: { - const checkType = visitNode(input.checkType, visitDeclarationSubtree); - const extendsType = visitNode(input.extendsType, visitDeclarationSubtree); + const checkType = visitNode(input.checkType, visitDeclarationSubtree, isTypeNode); + const extendsType = visitNode(input.extendsType, visitDeclarationSubtree, isTypeNode); const oldEnclosingDecl = enclosingDeclaration; enclosingDeclaration = input.trueType; - const trueType = visitNode(input.trueType, visitDeclarationSubtree); + const trueType = visitNode(input.trueType, visitDeclarationSubtree, isTypeNode); enclosingDeclaration = oldEnclosingDecl; - const falseType = visitNode(input.falseType, visitDeclarationSubtree); + const falseType = visitNode(input.falseType, visitDeclarationSubtree, isTypeNode); + Debug.assert(checkType); + Debug.assert(extendsType); + Debug.assert(trueType); + Debug.assert(falseType); return cleanup(factory2.updateConditionalTypeNode(input, checkType, extendsType, trueType, falseType)); } case 181 /* FunctionType */: { - return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 182 /* ConstructorType */: { - return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 202 /* ImportType */: { if (!isLiteralImportTypeNode(input)) @@ -101288,7 +104565,7 @@ function transformDeclarations(context) { ensureModifiers(input), input.name, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), - visitNode(input.type, visitDeclarationSubtree, isTypeNode) + Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)) )); needsDeclare = previousNeedsDeclare; return clean2; @@ -101300,7 +104577,7 @@ function transformDeclarations(context) { input.name, ensureTypeParams(input, input.typeParameters), transformHeritageClauses(input.heritageClauses), - visitNodes2(input.members, visitDeclarationSubtree) + visitNodes2(input.members, visitDeclarationSubtree, isTypeElement) )); } case 259 /* FunctionDeclaration */: { @@ -101417,7 +104694,7 @@ function transformDeclarations(context) { const oldHasScopeFix = resultHasScopeMarker; resultHasScopeMarker = false; needsScopeFixMarker = false; - const statements = visitNodes2(inner.statements, visitDeclarationStatements); + const statements = visitNodes2(inner.statements, visitDeclarationStatements, isStatement); let lateStatements = transformAndReplaceLatePaintedStatements(statements); if (input.flags & 16777216 /* Ambient */) { needsScopeFixMarker = false; @@ -101426,7 +104703,7 @@ function transformDeclarations(context) { if (needsScopeFixMarker) { lateStatements = factory2.createNodeArray([...lateStatements, createEmptyExports(factory2)]); } else { - lateStatements = visitNodes2(lateStatements, stripExportModifiers); + lateStatements = visitNodes2(lateStatements, stripExportModifiers, isStatement); } } const body = factory2.updateModuleBlock(inner, lateStatements); @@ -101522,7 +104799,7 @@ function transformDeclarations(context) { void 0 ) ] : void 0; - const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree)); + const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); const members = factory2.createNodeArray(memberNodes); const extendsClause = getEffectiveBaseTypeNode(input); if (extendsClause && !isEntityNameExpression(extendsClause.expression) && extendsClause.expression.kind !== 104 /* NullKeyword */) { @@ -101546,11 +104823,11 @@ function transformDeclarations(context) { if (clause.token === 94 /* ExtendsKeyword */) { const oldDiag2 = getSymbolAccessibilityDiagnostic; getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(clause.types[0]); - const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree)))); + const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree, isTypeNode)))); getSymbolAccessibilityDiagnostic = oldDiag2; return newClause; } - return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree)); + return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree, isExpressionWithTypeArguments)); })); return [statement, cleanup(factory2.updateClassDeclaration( input, @@ -101606,7 +104883,7 @@ function transformDeclarations(context) { function transformVariableStatement(input) { if (!forEach(input.declarationList.declarations, getBindingNameVisible)) return; - const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree); + const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree, isVariableDeclaration); if (!length(nodes)) return; return factory2.updateVariableStatement(input, factory2.createNodeArray(ensureModifiers(input)), factory2.updateVariableDeclarationList(input.declarationList, nodes)); @@ -101697,7 +104974,7 @@ function transformDeclarations(context) { function transformHeritageClauses(nodes) { return factory2.createNodeArray(filter(map(nodes, (clause) => factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => { return isEntityNameExpression(t.expression) || clause.token === 94 /* ExtendsKeyword */ && t.expression.kind === 104 /* NullKeyword */; - })), visitDeclarationSubtree))), (clause) => clause.types && !!clause.types.length)); + })), visitDeclarationSubtree, isExpressionWithTypeArguments))), (clause) => clause.types && !!clause.types.length)); } } function isAlwaysType(node) { @@ -101806,10 +105083,15 @@ function getScriptTransformers(compilerOptions, customTransformers, emitOnly) { return emptyArray; const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const transformers = []; addRange(transformers, customTransformers && map(customTransformers.before, wrapScriptTransformerFactory)); transformers.push(transformTypeScript); - transformers.push(transformLegacyDecorators); + if (compilerOptions.experimentalDecorators) { + transformers.push(transformLegacyDecorators); + } else if (languageVersion < 99 /* ESNext */ || !useDefineForClassFields) { + transformers.push(transformESDecorators); + } transformers.push(transformClassFields); if (getJSXTransformEnabled(compilerOptions)) { transformers.push(transformJsx); @@ -101875,7 +105157,7 @@ function noEmitNotification(hint, node, callback) { } function transformNodes(resolver, host, factory2, options, nodes, transformers, allowDtsFiles) { var _a2, _b; - const enabledSyntaxKindFeatures = new Array(360 /* Count */); + const enabledSyntaxKindFeatures = new Array(361 /* Count */); let lexicalEnvironmentVariableDeclarations; let lexicalEnvironmentFunctionDeclarations; let lexicalEnvironmentStatements; @@ -102426,7 +105708,7 @@ function emitFiles(resolver, host, targetSourceFile, { scriptTransformers, decla const sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions) ? [] : void 0; const emittedFilesList = compilerOptions.listEmittedFiles ? [] : void 0; const emitterDiagnostics = createDiagnosticCollection(); - const newLine = getNewLineCharacter(compilerOptions, () => host.getNewLine()); + const newLine = getNewLineCharacter(compilerOptions); const writer = createTextWriter(newLine); const { enter, exit } = createTimer("printTime", "beforePrint", "afterPrint"); let bundleBuildInfo; @@ -102926,7 +106208,6 @@ function emitUsingBuildInfoWorker(config, host, getCommandLine, customTransforme getCommonSourceDirectory: () => getNormalizedAbsolutePath(buildInfo.bundle.commonSourceDirectory, buildInfoDirectory), getCompilerOptions: () => config.options, getCurrentDirectory: () => host.getCurrentDirectory(), - getNewLine: () => host.getNewLine(), getSourceFile: returnUndefined, getSourceFileByPath: returnUndefined, getSourceFiles: () => sourceFilesForJsEmit, @@ -103012,6 +106293,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { const bundledHelpers = /* @__PURE__ */ new Map(); let currentSourceFile; let nodeIdToGeneratedName; + let nodeIdToGeneratedPrivateName; let autoGeneratedIdToGeneratedName; let generatedNames; let formattedNameTempFlagsStack; @@ -103308,6 +106590,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function reset() { nodeIdToGeneratedName = []; + nodeIdToGeneratedPrivateName = []; autoGeneratedIdToGeneratedName = []; generatedNames = /* @__PURE__ */ new Set(); formattedNameTempFlagsStack = []; @@ -103359,7 +106642,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { pipelineEmit(isStringLiteral(node) ? 6 /* JsxAttributeValue */ : 4 /* Unspecified */, node); } function beforeEmitNode(node) { - if (preserveSourceNewlines && getEmitFlags(node) & 268435456 /* IgnoreSourceNewlines */) { + if (preserveSourceNewlines && getInternalEmitFlags(node) & 4 /* IgnoreSourceNewlines */) { preserveSourceNewlines = false; } } @@ -103749,6 +107032,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { case 346 /* JSDocThisTag */: case 347 /* JSDocTypeTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return emitJSDocSimpleTypedTag(node); case 348 /* JSDocTemplateTag */: return emitJSDocTemplateTag(node); @@ -103756,9 +107040,9 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitJSDocTypedefTag(node); case 350 /* JSDocSeeTag */: return emitJSDocSeeTag(node); - case 354 /* NotEmittedStatement */: - case 358 /* EndOfDeclarationMarker */: - case 357 /* MergeDeclarationMarker */: + case 355 /* NotEmittedStatement */: + case 359 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return; } if (isExpression(node)) { @@ -103851,24 +107135,26 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitMetaProperty(node); case 234 /* SyntheticExpression */: return Debug.fail("SyntheticExpression should never be printed."); + case 279 /* MissingDeclaration */: + return; case 281 /* JsxElement */: return emitJsxElement(node); case 282 /* JsxSelfClosingElement */: return emitJsxSelfClosingElement(node); case 285 /* JsxFragment */: return emitJsxFragment(node); - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return Debug.fail("SyntaxList should not be printed"); - case 354 /* NotEmittedStatement */: + case 355 /* NotEmittedStatement */: return; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return emitPartiallyEmittedExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return emitCommaList(node); - case 357 /* MergeDeclarationMarker */: - case 358 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return; - case 359 /* SyntheticReferenceExpression */: + case 360 /* SyntheticReferenceExpression */: return Debug.fail("SyntheticReferenceExpression should not be printed"); } } @@ -104041,7 +107327,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*includeTrivia*/ false ), node.symbol); - emitList(node, node.typeArguments, 53776 /* TypeParameters */); + emitList(node, getIdentifierTypeArguments(node), 53776 /* TypeParameters */); } function emitPrivateIdentifier(node) { write(getTextOfNode2( @@ -104072,7 +107358,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { pushPrivateNameGenerationScope(savedPrivateNameTempFlags, savedReservedMemberNames); } function emitTypeParameter(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); if (node.constraint) { writeSpace(); @@ -104088,7 +107374,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function emitParameter(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.dotDotDotToken); emitNodeWithWriter(node.name, writeParameter); emit(node.questionToken); @@ -104104,14 +107395,19 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitExpression(decorator.expression, parenthesizer.parenthesizeLeftSideOfAccess); } function emitPropertySignature(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitNodeWithWriter(node.name, writeProperty); emit(node.questionToken); emitTypeAnnotation(node.type); writeTrailingSemicolon(); } function emitPropertyDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.name); emit(node.questionToken); emit(node.exclamationToken); @@ -104121,7 +107417,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function emitMethodSignature(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); emit(node.questionToken); emitTypeParameters(node, node.typeParameters); @@ -104131,7 +107427,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popNameGenerationScope(node); } function emitMethodDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.asteriskToken); emit(node.name); emit(node.questionToken); @@ -104142,13 +107443,24 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitBlockFunctionBody(node.body); } function emitConstructor(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("constructor"); emitSignatureAndBody(node, emitSignatureHead); } function emitAccessorDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword(node.kind === 174 /* GetAccessor */ ? "get" : "set"); + const pos = emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + const token = node.kind === 174 /* GetAccessor */ ? 137 /* GetKeyword */ : 151 /* SetKeyword */; + emitTokenWithComment(token, pos, writeKeyword, node); writeSpace(); emit(node.name); emitSignatureAndBody(node, emitSignatureHead); @@ -104172,7 +107484,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popNameGenerationScope(node); } function emitIndexSignature(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitParametersForIndexSignature(node, node.parameters); emitTypeAnnotation(node.type); writeTrailingSemicolon(); @@ -104231,7 +107548,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function emitConstructorType(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); writeKeyword("new"); writeSpace(); emitTypeParameters(node, node.typeParameters); @@ -104507,7 +107824,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitTokenWithComment(23 /* CloseBracketToken */, node.argumentExpression.end, writePunctuation, node); } function emitCallExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -104530,7 +107847,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitExpressionList(node, node.arguments, 18960 /* NewExpressionArguments */, parenthesizer.parenthesizeExpressionForDisallowedComma); } function emitTaggedTemplateExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -104568,7 +107885,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitFunctionDeclarationOrExpression(node); } function emitArrowFunction(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitSignatureAndBody(node, emitArrowFunctionHead); } function emitArrowFunctionHead(node) { @@ -104834,7 +108151,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { ); } function emitVariableStatement(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emit(node.declarationList); writeTrailingSemicolon(); } @@ -105092,7 +108414,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitFunctionDeclarationOrExpression(node); } function emitFunctionDeclarationOrExpression(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("function"); emit(node.asteriskToken); writeSpace(); @@ -105200,8 +108527,13 @@ function createPrinter(printerOptions = {}, handlers = {}) { void 0 ); forEach(node.members, generateMemberNames); - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword("class"); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + emitTokenWithComment(84 /* ClassKeyword */, moveRangePastModifiers(node).pos, writeKeyword, node); if (node.name) { writeSpace(); emitIdentifierName(node.name); @@ -105227,7 +108559,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*newReservedMemberNames*/ void 0 ); - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("interface"); writeSpace(); emit(node.name); @@ -105240,7 +108577,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popPrivateNameGenerationScope(); } function emitTypeAliasDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("type"); writeSpace(); emit(node.name); @@ -105252,7 +108594,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeTrailingSemicolon(); } function emitEnumDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("enum"); writeSpace(); emit(node.name); @@ -105262,7 +108609,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writePunctuation("}"); } function emitModuleDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); if (~node.flags & 1024 /* GlobalAugmentation */) { writeKeyword(node.flags & 16 /* Namespace */ ? "namespace" : "module"); writeSpace(); @@ -105302,7 +108654,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { ); } function emitImportEqualsDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -105324,7 +108681,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function emitImportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.importClause) { @@ -105377,7 +108739,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeTrailingSemicolon(); } function emitExportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); let nextPos = emitTokenWithComment(93 /* ExportKeyword */, node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -106000,23 +109367,27 @@ function createPrinter(printerOptions = {}, handlers = {}) { emit(node); write = savedWrite; } - function emitDecoratorsAndModifiers(node, modifiers) { + function emitDecoratorsAndModifiers(node, modifiers, allowDecorators) { if (modifiers == null ? void 0 : modifiers.length) { if (every(modifiers, isModifier)) { - return emitModifiers(node, modifiers); + return emitModifierList(node, modifiers); } if (every(modifiers, isDecorator)) { - return emitDecorators(node, modifiers); + if (allowDecorators) { + return emitDecoratorList(node, modifiers); + } + return node.pos; } onBeforeEmitNodeArray == null ? void 0 : onBeforeEmitNodeArray(modifiers); let lastMode; let mode; let start = 0; let pos = 0; + let lastModifier; while (start < modifiers.length) { while (pos < modifiers.length) { - const modifier = modifiers[pos]; - mode = isDecorator(modifier) ? "decorators" : "modifiers"; + lastModifier = modifiers[pos]; + mode = isDecorator(lastModifier) ? "decorators" : "modifiers"; if (lastMode === void 0) { lastMode = mode; } else if (mode !== lastMode) { @@ -106029,28 +109400,36 @@ function createPrinter(printerOptions = {}, handlers = {}) { textRange.pos = modifiers.pos; if (pos === modifiers.length - 1) textRange.end = modifiers.end; - emitNodeListItems( - emit, - node, - modifiers, - lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, - /*parenthesizerRule*/ - void 0, - start, - pos - start, - /*hasTrailingComma*/ - false, - textRange - ); + if (lastMode === "modifiers" || allowDecorators) { + emitNodeListItems( + emit, + node, + modifiers, + lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, + /*parenthesizerRule*/ + void 0, + start, + pos - start, + /*hasTrailingComma*/ + false, + textRange + ); + } start = pos; lastMode = mode; pos++; } onAfterEmitNodeArray == null ? void 0 : onAfterEmitNodeArray(modifiers); + if (lastModifier && !positionIsSynthesized(lastModifier.end)) { + return lastModifier.end; + } } + return node.pos; } - function emitModifiers(node, modifiers) { + function emitModifierList(node, modifiers) { emitList(node, modifiers, 2359808 /* Modifiers */); + const lastModifier = lastOrUndefined(modifiers); + return lastModifier && !positionIsSynthesized(lastModifier.end) ? lastModifier.end : node.pos; } function emitTypeAnnotation(node) { if (node) { @@ -106106,8 +109485,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { decreaseIndent(); } } - function emitDecorators(parentNode, decorators) { + function emitDecoratorList(parentNode, decorators) { emitList(parentNode, decorators, 2146305 /* Decorators */); + const lastDecorator = lastOrUndefined(decorators); + return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? lastDecorator.end : parentNode.pos; } function emitTypeArguments(parentNode, typeArguments) { emitList(parentNode, typeArguments, 53776 /* TypeArguments */, typeArgumentParenthesizerRuleSelector); @@ -106234,7 +109615,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeDelimiter(format); } else if (previousSibling) { if (format & 60 /* DelimitersMask */ && previousSibling.end !== (parentNode ? parentNode.end : -1)) { - emitLeadingCommentsOfPosition(previousSibling.end); + const previousSiblingEmitFlags = getEmitFlags(previousSibling); + if (!(previousSiblingEmitFlags & 2048 /* NoTrailingComments */)) { + emitLeadingCommentsOfPosition(previousSibling.end); + } } writeDelimiter(format); recordBundleFileInternalSectionEnd(previousSourceFileTextKind); @@ -106759,16 +110143,18 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function generateName(name) { - if ((name.autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { - return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), name.autoGenerate.flags, name.autoGenerate.prefix, name.autoGenerate.suffix); + const autoGenerate = name.emitNode.autoGenerate; + if ((autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { + return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), autoGenerate.flags, autoGenerate.prefix, autoGenerate.suffix); } else { - const autoGenerateId = name.autoGenerate.id; + const autoGenerateId = autoGenerate.id; return autoGeneratedIdToGeneratedName[autoGenerateId] || (autoGeneratedIdToGeneratedName[autoGenerateId] = makeName(name)); } } function generateNameCached(node, privateName, flags, prefix, suffix) { const nodeId = getNodeId(node); - return nodeIdToGeneratedName[nodeId] || (nodeIdToGeneratedName[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); + const cache = privateName ? nodeIdToGeneratedPrivateName : nodeIdToGeneratedName; + return cache[nodeId] || (cache[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); } function isUniqueName(name, privateName) { return isFileLevelUniqueName2(name, privateName) && !isReservedName(name, privateName) && !generatedNames.has(name); @@ -107010,7 +110396,21 @@ function createPrinter(printerOptions = {}, handlers = {}) { Debug.assert(!prefix && !suffix && !privateName); return generateNameForImportOrExportDeclaration(node); case 259 /* FunctionDeclaration */: - case 260 /* ClassDeclaration */: + case 260 /* ClassDeclaration */: { + Debug.assert(!prefix && !suffix && !privateName); + const name = node.name; + if (name && !isGeneratedIdentifier(name)) { + return generateNameForNode( + name, + /*privateName*/ + false, + flags, + prefix, + suffix + ); + } + return generateNameForExportDefault(); + } case 274 /* ExportAssignment */: Debug.assert(!prefix && !suffix && !privateName); return generateNameForExportDefault(); @@ -107042,16 +110442,17 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function makeName(name) { - const prefix = formatGeneratedNamePart(name.autoGenerate.prefix, generateName); - const suffix = formatGeneratedNamePart(name.autoGenerate.suffix); - switch (name.autoGenerate.flags & 7 /* KindMask */) { + const autoGenerate = name.emitNode.autoGenerate; + const prefix = formatGeneratedNamePart(autoGenerate.prefix, generateName); + const suffix = formatGeneratedNamePart(autoGenerate.suffix); + switch (autoGenerate.flags & 7 /* KindMask */) { case 1 /* Auto */: - return makeTempVariableName(TempFlags.Auto, !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); + return makeTempVariableName(TempFlags.Auto, !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); case 2 /* Loop */: Debug.assertNode(name, isIdentifier); return makeTempVariableName( TempFlags._i, - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), /*privateName*/ false, prefix, @@ -107060,16 +110461,16 @@ function createPrinter(printerOptions = {}, handlers = {}) { case 3 /* Unique */: return makeUniqueName( idText(name), - name.autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, - !!(name.autoGenerate.flags & 16 /* Optimistic */), - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, + !!(autoGenerate.flags & 16 /* Optimistic */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix ); } return Debug.fail(`Unsupported GeneratedIdentifierKind: ${Debug.formatEnum( - name.autoGenerate.flags & 7 /* KindMask */, + autoGenerate.flags & 7 /* KindMask */, GeneratedIdentifierFlags, /*isFlags*/ true @@ -107114,7 +110515,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitLeadingComments( pos, /*isEmittedNode*/ - node.kind !== 354 /* NotEmittedStatement */ + node.kind !== 355 /* NotEmittedStatement */ ); } if (!skipLeadingComments || pos >= 0 && (emitFlags & 1024 /* NoLeadingComments */) !== 0) { @@ -107138,7 +110539,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { containerPos = savedContainerPos; containerEnd = savedContainerEnd; declarationListContainerEnd = savedDeclarationListContainerEnd; - if (!skipTrailingComments && node.kind !== 354 /* NotEmittedStatement */) { + if (!skipTrailingComments && node.kind !== 355 /* NotEmittedStatement */) { emitTrailingComments(end); } } @@ -107410,7 +110811,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } else { const source = sourceMapRange.source || sourceMapSource; - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, skipSourceTrivia(source, sourceMapRange.pos)); } if (emitFlags & 128 /* NoNestedSourceMaps */) { @@ -107425,7 +110826,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { if (emitFlags & 128 /* NoNestedSourceMaps */) { sourceMapsDisabled = false; } - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, sourceMapRange.end); } } @@ -108112,7 +111513,7 @@ function createCompilerHostWorker(options, setParentNodes, system = sys) { function getDefaultLibLocation() { return getDirectoryPath(normalizePath(system.getExecutingFilePath())); } - const newLine = getNewLineCharacter(options, () => system.newLine); + const newLine = getNewLineCharacter(options); const realpath = system.realpath && ((path) => system.realpath(path)); const compilerHost = { getSourceFile: createGetSourceFile((fileName) => compilerHost.readFile(fileName), () => options, setParentNodes), @@ -109605,7 +113006,6 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config getCommonSourceDirectory: program.getCommonSourceDirectory, getCompilerOptions: program.getCompilerOptions, getCurrentDirectory: () => currentDirectory, - getNewLine: () => host.getNewLine(), getSourceFile: program.getSourceFile, getSourceFileByPath: program.getSourceFileByPath, getSourceFiles: program.getSourceFiles, @@ -109984,8 +113384,26 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } function walkArray(nodes, parent) { - if (canHaveModifiers(parent) && parent.modifiers === nodes && some(nodes, isDecorator) && !options.experimentalDecorators) { - diagnostics.push(createDiagnosticForNode2(parent, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)); + if (canHaveIllegalDecorators(parent)) { + const decorator = find(parent.modifiers, isDecorator); + if (decorator) { + diagnostics.push(createDiagnosticForNode2(decorator, Diagnostics.Decorators_are_not_valid_here)); + } + } else if (canHaveDecorators(parent) && parent.modifiers) { + const decoratorIndex = findIndex(parent.modifiers, isDecorator); + if (decoratorIndex >= 0) { + if (isParameter(parent) && !options.experimentalDecorators) { + diagnostics.push(createDiagnosticForNode2(parent.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } else if (isClassDeclaration(parent)) { + const exportIndex = findIndex(parent.modifiers, isExportModifier); + const defaultIndex = findIndex(parent.modifiers, isDefaultModifier); + if (exportIndex >= 0 && decoratorIndex < exportIndex) { + diagnostics.push(createDiagnosticForNode2(parent.modifiers[decoratorIndex], Diagnostics.Decorators_must_come_after_export_or_export_default_in_JavaScript_files)); + } else if (defaultIndex >= 0 && decoratorIndex < defaultIndex) { + diagnostics.push(createDiagnosticForNode2(parent.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } + } + } } switch (parent.kind) { case 260 /* ClassDeclaration */: @@ -110144,7 +113562,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config /*assertClause*/ void 0 ); - addEmitFlags(importDecl, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(importDecl, 2 /* NeverApplyImportHelper */); setParent(externalHelpersModuleReference, importDecl); setParent(importDecl, file); externalHelpersModuleReference.flags &= ~8 /* Synthesized */; @@ -110411,7 +113829,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config if (filesByName.has(path)) { const file2 = filesByName.get(path); addFileIncludeReason(file2 || void 0, reason); - if (file2 && options.forceConsistentCasingInFileNames) { + if (file2 && !(options.forceConsistentCasingInFileNames === false)) { const checkedName = file2.fileName; const isRedirect = toPath3(checkedName) !== toPath3(fileName); if (isRedirect) { @@ -111010,24 +114428,12 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } const languageVersion = getEmitScriptTarget(options); const firstNonAmbientExternalModuleSourceFile = find(files, (f) => isExternalModule(f) && !f.isDeclarationFile); - if (options.isolatedModules) { - if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */) { + if (options.isolatedModules || options.verbatimModuleSyntax) { + if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */ && options.isolatedModules) { createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); } if (options.preserveConstEnums === false) { - createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); - } - for (const file of files) { - if (!isExternalModule(file) && !isSourceFileJS(file) && !file.isDeclarationFile && file.scriptKind !== 6 /* JSON */) { - const span = getErrorSpanForNode(file, file); - programDiagnostics.add(createFileDiagnostic( - file, - span.start, - span.length, - Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, - getBaseFileName(file.fileName) - )); - } + createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled, options.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules", "preserveConstEnums"); } } else if (firstNonAmbientExternalModuleSourceFile && languageVersion < 2 /* ES2015 */ && options.module === 0 /* None */) { const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, typeof firstNonAmbientExternalModuleSourceFile.externalModuleIndicator === "boolean" ? firstNonAmbientExternalModuleSourceFile : firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); @@ -111109,10 +114515,25 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } if (options.preserveValueImports && getEmitModuleKind(options) < 5 /* ES2015 */) { - createOptionValueDiagnostic("importsNotUsedAsValues", Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later); + createDiagnosticForOptionName(Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later, "preserveValueImports"); + } + if (options.verbatimModuleSyntax) { + const moduleKind = getEmitModuleKind(options); + if (moduleKind === 2 /* AMD */ || moduleKind === 3 /* UMD */ || moduleKind === 4 /* System */) { + createDiagnosticForOptionName(Diagnostics.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System, "verbatimModuleSyntax"); + } + if (options.isolatedModules) { + createRedundantOptionDiagnostic("isolatedModules", "verbatimModuleSyntax"); + } + if (options.preserveValueImports) { + createRedundantOptionDiagnostic("preserveValueImports", "verbatimModuleSyntax"); + } + if (options.importsNotUsedAsValues) { + createRedundantOptionDiagnostic("importsNotUsedAsValues", "verbatimModuleSyntax"); + } } if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly)) { - createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set); + createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set); } const moduleResolution = getEmitModuleResolutionKind(options); if (options.resolvePackageJsonExports && !moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { @@ -111158,16 +114579,25 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } } - function verifyDeprecatedCompilerOptions() { + function getVersionForDeprecationDiagnostics(reportInvalidIgnoreDeprecations) { const version2 = typeScriptVersion2 || versionMajorMinor; const ignoreDeprecations = options.ignoreDeprecations; if (ignoreDeprecations) { if (ignoreDeprecations === "5.0" /* v5_0 */ && (version2 === "5.0" /* v5_0 */ || version2 === "5.5" /* v5_5 */)) { return; - } else { + } else if (reportInvalidIgnoreDeprecations) { createOptionValueDiagnostic("ignoreDeprecations", Diagnostics.Invalid_value_for_ignoreDeprecations); } } + return version2; + } + function verifyDeprecatedCompilerOptions() { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + true + ); + if (!version2) + return; if (options.target === 0 /* ES3 */) { createDeprecatedDiagnosticForOption(version2, "target", "ES3"); } @@ -111192,30 +114622,83 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config if (options.out) { createDeprecatedDiagnosticForOption(version2, "out"); } + if (options.importsNotUsedAsValues) { + createDeprecatedDiagnosticForOption( + version2, + "importsNotUsedAsValues", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } + if (options.preserveValueImports) { + createDeprecatedDiagnosticForOption( + version2, + "preserveValueImports", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } } - function createDeprecatedDiagnosticForOption(version2, name, value) { + function verifyDeprecatedProjectReference(ref, parentFile, index) { + if (ref.prepend) { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + false + ); + if (version2) { + createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => createDiagnosticForReference(parentFile, index, message, arg0, arg1, arg2), + "prepend" + ); + } + } + } + function createDeprecatedDiagnosticForOption(version2, name, value, useInstead) { + return createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => { + if (useInstead) { + const details = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Use_0_instead, + useInstead + ); + const chain = chainDiagnosticMessages(details, message, arg0, arg1, arg2); + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + chain + ); + } else { + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + message, + arg0, + arg1, + arg2 + ); + } + }, + name, + value + ); + } + function createDeprecatedOptionForVersionDiagnostic(version2, createDiagnostic, name, value) { if (version2 === "6.0" /* v6_0 */) { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, - value || name - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, value || name); } else { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, - value || name, - "5.5" /* v5_5 */, - "5.0" /* v5_0 */ - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, value || name, "5.5" /* v5_5 */, "5.0" /* v5_0 */); } } function createDiagnosticExplainingFile(file, fileProcessingReason, diagnostic, args) { @@ -111361,6 +114844,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent, index) => { const ref = (parent ? parent.commandLine.projectReferences : projectReferences)[index]; const parentFile = parent && parent.sourceFile; + verifyDeprecatedProjectReference(ref, parentFile, index); if (!resolvedRef) { createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); return; @@ -111468,22 +114952,26 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config arg1 ); } - function createDiagnosticForReference(sourceFile, index, message, arg0, arg1) { + function createDiagnosticForReference(sourceFile, index, message, arg0, arg1, arg2) { const referencesSyntax = firstDefined( getTsConfigPropArray(sourceFile || options.configFile, "references"), (property) => isArrayLiteralExpression(property.initializer) ? property.initializer : void 0 ); if (referencesSyntax && referencesSyntax.elements.length > index) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1)); + programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1, arg2)); } else { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1)); + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); } } function createDiagnosticForOption(onKey, option1, option2, message, arg0, arg1, arg2) { const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); const needCompilerDiagnostic = !compilerOptionsObjectLiteralSyntax || !createOptionDiagnosticInObjectLiteralSyntax(compilerOptionsObjectLiteralSyntax, onKey, option1, option2, message, arg0, arg1, arg2); if (needCompilerDiagnostic) { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createCompilerDiagnosticFromMessageChain(message)); + } else { + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + } } } function getCompilerOptionsObjectLiteralSyntax() { @@ -111504,10 +114992,32 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config function createOptionDiagnosticInObjectLiteralSyntax(objectLiteral, onKey, key1, key2, message, arg0, arg1, arg2) { const props = getPropertyAssignment(objectLiteral, key1, key2); for (const prop of props) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createDiagnosticForNodeFromMessageChain(options.configFile, onKey ? prop.name : prop.initializer, message)); + } else { + programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + } } return !!props.length; } + function createRedundantOptionDiagnostic(errorOnOption, redundantWithOption) { + const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); + if (compilerOptionsObjectLiteralSyntax) { + createOptionDiagnosticInObjectLiteralSyntax( + compilerOptionsObjectLiteralSyntax, + /*onKey*/ + true, + errorOnOption, + /*key2*/ + void 0, + Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, + errorOnOption, + redundantWithOption + ); + } else { + createDiagnosticForOptionName(Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, errorOnOption, redundantWithOption); + } + } function blockEmittingOfFile(emitFileName, diag2) { hasEmitBlockingDiagnostics.set(toPath3(emitFileName), true); programDiagnostics.add(diag2); @@ -111759,9 +115269,8 @@ function createPrependNodes(projectReferences, getCommandLine, readFile, host) { } return nodes || emptyArray; } -function resolveProjectReferencePath(hostOrRef, ref) { - const passedInRef = ref ? ref : hostOrRef; - return resolveConfigFileProjectName(passedInRef.path); +function resolveProjectReferencePath(ref) { + return resolveConfigFileProjectName(ref.path); } function getResolutionDiagnostic(options, { extension }, { isDeclarationFile }) { switch (extension) { @@ -114341,6 +117850,9 @@ function getFilesInErrorForSummary(diagnostics) { } ); return filesInError.map((fileName) => { + if (fileName === void 0) { + return void 0; + } const diagnosticForFileName = find( diagnostics, (diagnostic) => diagnostic.file !== void 0 && diagnostic.file.fileName === fileName @@ -114734,7 +118246,6 @@ function createWatchFactory(host, options) { } function createCompilerHostFromProgramHost(host, getCompilerOptions, directoryStructureHost = host) { const useCaseSensitiveFileNames = host.useCaseSensitiveFileNames(); - const hostGetNewLine = memoize(() => host.getNewLine()); const compilerHost = { getSourceFile: createGetSourceFile( (fileName, encoding) => !encoding ? compilerHost.readFile(fileName) : host.readFile(fileName, encoding), @@ -114752,7 +118263,7 @@ function createCompilerHostFromProgramHost(host, getCompilerOptions, directorySt getCurrentDirectory: memoize(() => host.getCurrentDirectory()), useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getCanonicalFileName: createGetCanonicalFileName(useCaseSensitiveFileNames), - getNewLine: () => getNewLineCharacter(getCompilerOptions(), hostGetNewLine), + getNewLine: () => getNewLineCharacter(getCompilerOptions()), fileExists: (f) => host.fileExists(f), readFile: (f) => host.readFile(f), trace: maybeBind(host, host.trace), @@ -114838,7 +118349,7 @@ function createWatchCompilerHost(system = sys, createProgram2, reportDiagnostic, copyProperties(result, createWatchHost(system, reportWatchStatus2)); result.afterProgramCreate = (builderProgram) => { const compilerOptions = builderProgram.getCompilerOptions(); - const newLine = getNewLineCharacter(compilerOptions, () => system.newLine); + const newLine = getNewLineCharacter(compilerOptions); emitFilesAndReportErrors( builderProgram, reportDiagnostic, @@ -114984,11 +118495,13 @@ function createWatchProgram(host) { } reportWatchDiagnostic(Diagnostics.Starting_compilation_in_watch_mode); if (configFileName && !host.configFileParsingResult) { - newLine = getNewLineCharacter(optionsToExtendForConfigFile, () => host.getNewLine()); + newLine = getNewLineCharacter(optionsToExtendForConfigFile); Debug.assert(!rootFileNames); parseConfigFile2(); newLine = updateNewLine(); } + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); const { watchFile: watchFile2, watchDirectory, writeLog } = createWatchFactory(host, compilerOptions); const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames); writeLog(`Current directory: ${currentDirectory} CaseSensitiveFileNames: ${useCaseSensitiveFileNames}`); @@ -115091,6 +118604,8 @@ function createWatchProgram(host) { } function synchronizeProgram() { writeLog(`Synchronizing program`); + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); clearInvalidateResolutionsOfFailedLookupLocations(); const program = getCurrentBuilderProgram(); if (hasChangedCompilerOptions) { @@ -115176,7 +118691,7 @@ function createWatchProgram(host) { scheduleProgramUpdate(); } function updateNewLine() { - return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile, () => host.getNewLine()); + return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile); } function toPath3(fileName) { return toPath(fileName, currentDirectory, getCanonicalFileName); @@ -115330,6 +118845,8 @@ function createWatchProgram(host) { } function reloadFileNamesFromConfigFile() { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); + Debug.assert(configFileName); reloadLevel = 0 /* None */; rootFileNames = getFileNamesFromConfigSpecs(compilerOptions.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName), currentDirectory), compilerOptions, parseConfigFileHost, extraFileExtensions); if (updateErrorForNoInputFiles(rootFileNames, getNormalizedAbsolutePath(configFileName, currentDirectory), compilerOptions.configFile.configFileSpecs, configFileParsingDiagnostics, canConfigFileJsonReportNoInputFiles)) { @@ -115338,6 +118855,7 @@ function createWatchProgram(host) { synchronizeProgram(); } function reloadConfigFile() { + Debug.assert(configFileName); writeLog(`Reloading config file: ${configFileName}`); reloadLevel = 0 /* None */; if (cachedDirectoryStructureHost) { @@ -115350,6 +118868,7 @@ function createWatchProgram(host) { updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); } function parseConfigFile2() { + Debug.assert(configFileName); setConfigFileParsingResult(getParsedCommandLineOfConfigFile( configFileName, optionsToExtendForConfigFile, @@ -115377,6 +118896,7 @@ function createWatchProgram(host) { return config.parsedCommandLine; if (config.parsedCommandLine && config.reloadLevel === 1 /* Partial */ && !host.getParsedCommandLine) { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); const fileNames = getFileNamesFromConfigSpecs( config.parsedCommandLine.options.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName2), currentDirectory), @@ -115468,7 +118988,8 @@ function createWatchProgram(host) { return watchDirectory( directory, (fileOrDirectory) => { - Debug.assert(!!configFileName); + Debug.assert(configFileName); + Debug.assert(compilerOptions); const fileOrDirectoryPath = toPath3(fileOrDirectory); if (cachedDirectoryStructureHost) { cachedDirectoryStructureHost.addOrDeleteFileOrDirectory(fileOrDirectory, fileOrDirectoryPath); @@ -115499,6 +119020,7 @@ function createWatchProgram(host) { ); } function updateExtendedConfigFilesWatches(forProjectPath, options, watchOptions2, watchType) { + Debug.assert(configFileName); updateSharedExtendedConfigFileWatcher( forProjectPath, options, diff --git a/lib/tsserver.js b/lib/tsserver.js index f96b6f32fd0..ec5cf96a875 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -97,6 +97,7 @@ __export(server_exports, { InferencePriority: () => InferencePriority, InlayHintKind: () => InlayHintKind, InlayHints: () => ts_InlayHints_exports, + InternalEmitFlags: () => InternalEmitFlags, InternalSymbolName: () => InternalSymbolName, InvalidatedProjectKind: () => InvalidatedProjectKind, JsDoc: () => ts_JsDoc_exports, @@ -140,7 +141,7 @@ __export(server_exports, { PollingInterval: () => PollingInterval, PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, - PrivateIdentifierKind: () => PrivateIdentifierKind2, + PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, QuotePreference: () => QuotePreference, RelationComparisonResult: () => RelationComparisonResult, @@ -190,10 +191,13 @@ __export(server_exports, { WatchFileKind: () => WatchFileKind, WatchLogLevel: () => WatchLogLevel, WatchType: () => WatchType, + accessPrivateIdentifier: () => accessPrivateIdentifier, addEmitFlags: () => addEmitFlags, addEmitHelper: () => addEmitHelper, addEmitHelpers: () => addEmitHelpers, + addInternalEmitFlags: () => addInternalEmitFlags, addNodeFactoryPatcher: () => addNodeFactoryPatcher, + addObjectAllocatorPatcher: () => addObjectAllocatorPatcher, addRange: () => addRange, addRelatedInfo: () => addRelatedInfo, addSyntheticLeadingComment: () => addSyntheticLeadingComment, @@ -264,6 +268,7 @@ __export(server_exports, { changesAffectModuleResolution: () => changesAffectModuleResolution, changesAffectingProgramStructure: () => changesAffectingProgramStructure, childIsDecorated: () => childIsDecorated, + classElementOrClassElementParameterIsDecorated: () => classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated: () => classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper: () => classPrivateFieldGetHelper, classPrivateFieldInHelper: () => classPrivateFieldInHelper, @@ -312,6 +317,7 @@ __export(server_exports, { compilerOptionsAffectSemanticDiagnostics: () => compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics: () => compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules: () => compilerOptionsIndicateEsModules, + compose: () => compose, computeCommonSourceDirectoryOfFilenames: () => computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition: () => computeLineAndCharacterOfPosition, computeLineOfPosition: () => computeLineOfPosition, @@ -329,7 +335,6 @@ __export(server_exports, { containsPath: () => containsPath, convertCompilerOptionsForTelemetry: () => convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson: () => convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable: () => convertEnableAutoDiscoveryToEnable, convertJsonOption: () => convertJsonOption, convertToBase64: () => convertToBase64, convertToObject: () => convertToObject, @@ -350,41 +355,17 @@ __export(server_exports, { createAccessorPropertyBackingField: () => createAccessorPropertyBackingField, createAccessorPropertyGetRedirector: () => createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector: () => createAccessorPropertySetRedirector, - createAdd: () => createAdd, - createArrayBindingPattern: () => createArrayBindingPattern, - createArrayLiteral: () => createArrayLiteral, - createArrayTypeNode: () => createArrayTypeNode, - createArrowFunction: () => createArrowFunction, - createAsExpression: () => createAsExpression, - createAssignment: () => createAssignment, - createAwait: () => createAwait, createBaseNodeFactory: () => createBaseNodeFactory, - createBigIntLiteral: () => createBigIntLiteral, - createBinary: () => createBinary, createBinaryExpressionTrampoline: () => createBinaryExpressionTrampoline, - createBindingElement: () => createBindingElement, createBindingHelper: () => createBindingHelper, - createBlock: () => createBlock, - createBreak: () => createBreak, createBuildInfo: () => createBuildInfo, createBuilderProgram: () => createBuilderProgram, createBuilderProgramUsingProgramBuildInfo: () => createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter: () => createBuilderStatusReporter, - createBundle: () => createBundle, createCacheWithRedirects: () => createCacheWithRedirects, createCacheableExportInfoMap: () => createCacheableExportInfoMap, createCachedDirectoryStructureHost: () => createCachedDirectoryStructureHost, - createCall: () => createCall, - createCallChain: () => createCallChain, - createCallSignature: () => createCallSignature, - createCaseBlock: () => createCaseBlock, - createCaseClause: () => createCaseClause, - createCatchClause: () => createCatchClause, - createClassDeclaration: () => createClassDeclaration, - createClassExpression: () => createClassExpression, createClassifier: () => createClassifier, - createComma: () => createComma, - createCommaList: () => createCommaList, createCommentDirectivesMap: () => createCommentDirectivesMap, createCompilerDiagnostic: () => createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType: () => createCompilerDiagnosticForInvalidCustomType, @@ -392,212 +373,73 @@ __export(server_exports, { createCompilerHost: () => createCompilerHost, createCompilerHostFromProgramHost: () => createCompilerHostFromProgramHost, createCompilerHostWorker: () => createCompilerHostWorker, - createComputedPropertyName: () => createComputedPropertyName, - createConditional: () => createConditional, - createConditionalTypeNode: () => createConditionalTypeNode, - createConstructSignature: () => createConstructSignature, - createConstructor: () => createConstructor, - createConstructorTypeNode: () => createConstructorTypeNode, - createContinue: () => createContinue, - createDebuggerStatement: () => createDebuggerStatement, - createDecorator: () => createDecorator, - createDefaultClause: () => createDefaultClause, - createDelete: () => createDelete, createDetachedDiagnostic: () => createDetachedDiagnostic, createDiagnosticCollection: () => createDiagnosticCollection, createDiagnosticForFileFromMessageChain: () => createDiagnosticForFileFromMessageChain, createDiagnosticForNode: () => createDiagnosticForNode, createDiagnosticForNodeArray: () => createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain: () => createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain: () => createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile: () => createDiagnosticForNodeInSourceFile, createDiagnosticForRange: () => createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic: () => createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter: () => createDiagnosticReporter, - createDo: () => createDo, createDocumentPositionMapper: () => createDocumentPositionMapper, createDocumentRegistry: () => createDocumentRegistry, createDocumentRegistryInternal: () => createDocumentRegistryInternal, - createElementAccess: () => createElementAccess, - createElementAccessChain: () => createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram: () => createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory: () => createEmitHelperFactory, createEmptyExports: () => createEmptyExports, - createEmptyStatement: () => createEmptyStatement, - createEnumDeclaration: () => createEnumDeclaration, - createEnumMember: () => createEnumMember, - createExportAssignment: () => createExportAssignment2, - createExportDeclaration: () => createExportDeclaration, - createExportDefault: () => createExportDefault, - createExportSpecifier: () => createExportSpecifier, createExpressionForJsxElement: () => createExpressionForJsxElement, createExpressionForJsxFragment: () => createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike: () => createExpressionForObjectLiteralElementLike, createExpressionForPropertyName: () => createExpressionForPropertyName, createExpressionFromEntityName: () => createExpressionFromEntityName, - createExpressionStatement: () => createExpressionStatement, - createExpressionWithTypeArguments: () => createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded: () => createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport: () => createExternalModuleExport, - createExternalModuleReference: () => createExternalModuleReference, - createFalse: () => createFalse, createFileDiagnostic: () => createFileDiagnostic, createFileDiagnosticFromMessageChain: () => createFileDiagnosticFromMessageChain, - createFileLevelUniqueName: () => createFileLevelUniqueName, - createFor: () => createFor, - createForIn: () => createForIn, - createForOf: () => createForOf, createForOfBindingStatement: () => createForOfBindingStatement, - createFunctionDeclaration: () => createFunctionDeclaration, - createFunctionExpression: () => createFunctionExpression, - createFunctionTypeNode: () => createFunctionTypeNode, - createGetAccessor: () => createGetAccessor, createGetCanonicalFileName: () => createGetCanonicalFileName, createGetSourceFile: () => createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode: () => createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName: () => createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker: () => createGetSymbolWalker, - createHeritageClause: () => createHeritageClause, - createIdentifier: () => createIdentifier, - createIf: () => createIf, - createImmediatelyInvokedArrowFunction: () => createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression: () => createImmediatelyInvokedFunctionExpression, - createImportClause: () => createImportClause, - createImportDeclaration: () => createImportDeclaration, - createImportEqualsDeclaration: () => createImportEqualsDeclaration, - createImportSpecifier: () => createImportSpecifier, - createImportTypeNode: () => createImportTypeNode, createIncrementalCompilerHost: () => createIncrementalCompilerHost, createIncrementalProgram: () => createIncrementalProgram, - createIndexSignature: () => createIndexSignature, - createIndexedAccessTypeNode: () => createIndexedAccessTypeNode, - createInferTypeNode: () => createInferTypeNode, createInputFiles: () => createInputFiles, createInputFilesWithFilePaths: () => createInputFilesWithFilePaths, createInputFilesWithFileTexts: () => createInputFilesWithFileTexts, - createInterfaceDeclaration: () => createInterfaceDeclaration, - createIntersectionTypeNode: () => createIntersectionTypeNode, - createJSDocAugmentsTag: () => createJSDocAugmentsTag, - createJSDocAuthorTag: () => createJSDocAuthorTag, - createJSDocCallbackTag: () => createJSDocCallbackTag, - createJSDocClassTag: () => createJSDocClassTag, - createJSDocComment: () => createJSDocComment, - createJSDocEnumTag: () => createJSDocEnumTag, - createJSDocImplementsTag: () => createJSDocImplementsTag, - createJSDocParamTag: () => createJSDocParamTag, - createJSDocParameterTag: () => createJSDocParameterTag, - createJSDocPrivateTag: () => createJSDocPrivateTag, - createJSDocPropertyTag: () => createJSDocPropertyTag, - createJSDocProtectedTag: () => createJSDocProtectedTag, - createJSDocPublicTag: () => createJSDocPublicTag, - createJSDocReadonlyTag: () => createJSDocReadonlyTag, - createJSDocReturnTag: () => createJSDocReturnTag, - createJSDocSignature: () => createJSDocSignature, - createJSDocTag: () => createJSDocTag, - createJSDocTemplateTag: () => createJSDocTemplateTag, - createJSDocThisTag: () => createJSDocThisTag, - createJSDocTypeExpression: () => createJSDocTypeExpression, - createJSDocTypeLiteral: () => createJSDocTypeLiteral, - createJSDocTypeTag: () => createJSDocTypeTag, - createJSDocTypedefTag: () => createJSDocTypedefTag, - createJsxAttribute: () => createJsxAttribute, - createJsxAttributes: () => createJsxAttributes, - createJsxClosingElement: () => createJsxClosingElement, - createJsxElement: () => createJsxElement, - createJsxExpression: () => createJsxExpression, createJsxFactoryExpression: () => createJsxFactoryExpression, - createJsxFragment: () => createJsxFragment, - createJsxJsxClosingFragment: () => createJsxJsxClosingFragment, - createJsxOpeningElement: () => createJsxOpeningElement, - createJsxOpeningFragment: () => createJsxOpeningFragment, - createJsxSelfClosingElement: () => createJsxSelfClosingElement, - createJsxSpreadAttribute: () => createJsxSpreadAttribute, - createJsxText: () => createJsxText, - createKeywordTypeNode: () => createKeywordTypeNode, - createLabel: () => createLabel, createLanguageService: () => createLanguageService, createLanguageServiceSourceFile: () => createLanguageServiceSourceFile, - createLessThan: () => createLessThan, - createLiteral: () => createLiteral, - createLiteralTypeNode: () => createLiteralTypeNode, - createLogicalAnd: () => createLogicalAnd, - createLogicalNot: () => createLogicalNot, - createLogicalOr: () => createLogicalOr, - createLoopVariable: () => createLoopVariable, - createMappedTypeNode: () => createMappedTypeNode, createMemberAccessForPropertyName: () => createMemberAccessForPropertyName, - createMetaProperty: () => createMetaProperty, - createMethod: () => createMethod, - createMethodSignature: () => createMethodSignature, createModeAwareCache: () => createModeAwareCache, createModeAwareCacheKey: () => createModeAwareCacheKey, - createModifier: () => createModifier, - createModifiersFromModifierFlags: () => createModifiersFromModifierFlags, - createModuleBlock: () => createModuleBlock, - createModuleDeclaration: () => createModuleDeclaration, createModuleResolutionCache: () => createModuleResolutionCache, createModuleResolutionLoader: () => createModuleResolutionLoader, createModuleSpecifierResolutionHost: () => createModuleSpecifierResolutionHost, createMultiMap: () => createMultiMap, - createNamedExports: () => createNamedExports, - createNamedImports: () => createNamedImports, - createNamespaceExport: () => createNamespaceExport, - createNamespaceExportDeclaration: () => createNamespaceExportDeclaration, - createNamespaceImport: () => createNamespaceImport, - createNew: () => createNew, - createNoSubstitutionTemplateLiteral: () => createNoSubstitutionTemplateLiteral, - createNode: () => createNode2, - createNodeArray: () => createNodeArray, createNodeConverters: () => createNodeConverters, createNodeFactory: () => createNodeFactory, - createNonNullChain: () => createNonNullChain, - createNonNullExpression: () => createNonNullExpression, - createNotEmittedStatement: () => createNotEmittedStatement, - createNull: () => createNull, - createNumericLiteral: () => createNumericLiteral, - createObjectBindingPattern: () => createObjectBindingPattern, - createObjectLiteral: () => createObjectLiteral, - createOmittedExpression: () => createOmittedExpression, - createOptimisticUniqueName: () => createOptimisticUniqueName, createOptionNameMap: () => createOptionNameMap, - createOptionalTypeNode: () => createOptionalTypeNode, createOverload: () => createOverload, createPackageJsonImportFilter: () => createPackageJsonImportFilter, createPackageJsonInfo: () => createPackageJsonInfo, - createParameter: () => createParameter, - createParen: () => createParen, - createParenthesizedType: () => createParenthesizedType, createParenthesizerRules: () => createParenthesizerRules, - createPartiallyEmittedExpression: () => createPartiallyEmittedExpression, createPatternMatcher: () => createPatternMatcher, - createPostfix: () => createPostfix, - createPostfixIncrement: () => createPostfixIncrement, - createPrefix: () => createPrefix, createPrependNodes: () => createPrependNodes, createPrinter: () => createPrinter, - createPrivateIdentifier: () => createPrivateIdentifier, createProgram: () => createProgram, createProgramHost: () => createProgramHost, - createProperty: () => createProperty, - createPropertyAccess: () => createPropertyAccess, - createPropertyAccessChain: () => createPropertyAccessChain, - createPropertyAssignment: () => createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral: () => createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature: () => createPropertySignature, - createQualifiedName: () => createQualifiedName, createQueue: () => createQueue, createRange: () => createRange, createRedirectedBuilderProgram: () => createRedirectedBuilderProgram, - createRegularExpressionLiteral: () => createRegularExpressionLiteral, createResolutionCache: () => createResolutionCache, - createRestTypeNode: () => createRestTypeNode, - createReturn: () => createReturn, createRuntimeTypeSerializer: () => createRuntimeTypeSerializer, createScanner: () => createScanner, createSemanticDiagnosticsBuilderProgram: () => createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement: () => createSemicolonClassElement, createSet: () => createSet, - createSetAccessor: () => createSetAccessor, - createShorthandPropertyAssignment: () => createShorthandPropertyAssignment, createSolutionBuilder: () => createSolutionBuilder, createSolutionBuilderHost: () => createSolutionBuilderHost, createSolutionBuilderWithWatch: () => createSolutionBuilderWithWatch, @@ -606,27 +448,10 @@ __export(server_exports, { createSourceFile: () => createSourceFile, createSourceMapGenerator: () => createSourceMapGenerator, createSourceMapSource: () => createSourceMapSource, - createSpread: () => createSpread, - createSpreadAssignment: () => createSpreadAssignment, - createStatement: () => createStatement, - createStrictEquality: () => createStrictEquality, - createStrictInequality: () => createStrictInequality, - createStringLiteral: () => createStringLiteral, - createStringLiteralFromNode: () => createStringLiteralFromNode, - createSubtract: () => createSubtract, - createSuper: () => createSuper, createSuperAccessVariableStatement: () => createSuperAccessVariableStatement, - createSwitch: () => createSwitch, createSymbolTable: () => createSymbolTable, createSymlinkCache: () => createSymlinkCache, createSystemWatchFunctions: () => createSystemWatchFunctions, - createTaggedTemplate: () => createTaggedTemplate, - createTempVariable: () => createTempVariable, - createTemplateExpression: () => createTemplateExpression, - createTemplateHead: () => createTemplateHead, - createTemplateMiddle: () => createTemplateMiddle, - createTemplateSpan: () => createTemplateSpan, - createTemplateTail: () => createTemplateTail, createTextChange: () => createTextChange, createTextChangeFromStartLength: () => createTextChangeFromStartLength, createTextChangeRange: () => createTextChangeRange, @@ -638,36 +463,12 @@ __export(server_exports, { createTextSpanFromRange: () => createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent: () => createTextSpanFromStringLiteralLikeContent, createTextWriter: () => createTextWriter, - createThis: () => createThis, - createThisTypeNode: () => createThisTypeNode, - createThrow: () => createThrow, - createToken: () => createToken, createTokenRange: () => createTokenRange, - createTrue: () => createTrue, - createTry: () => createTry, - createTupleTypeNode: () => createTupleTypeNode, - createTypeAliasDeclaration: () => createTypeAliasDeclaration, - createTypeAssertion: () => createTypeAssertion, createTypeChecker: () => createTypeChecker, - createTypeLiteralNode: () => createTypeLiteralNode, - createTypeOf: () => createTypeOf, - createTypeOperatorNode: () => createTypeOperatorNode, - createTypeParameterDeclaration: () => createTypeParameterDeclaration, - createTypePredicateNode: () => createTypePredicateNode, - createTypePredicateNodeWithModifier: () => createTypePredicateNodeWithModifier, - createTypeQueryNode: () => createTypeQueryNode, createTypeReferenceDirectiveResolutionCache: () => createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode: () => createTypeReferenceNode, createTypeReferenceResolutionLoader: () => createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap: () => createUnderscoreEscapedMultiMap, - createUnionTypeNode: () => createUnionTypeNode, - createUniqueName: () => createUniqueName, createUnparsedSourceFile: () => createUnparsedSourceFile, - createVariableDeclaration: () => createVariableDeclaration, - createVariableDeclarationList: () => createVariableDeclarationList, - createVariableStatement: () => createVariableStatement, - createVoid: () => createVoid, - createVoidZero: () => createVoidZero, createWatchCompilerHost: () => createWatchCompilerHost2, createWatchCompilerHostOfConfigFile: () => createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions: () => createWatchCompilerHostOfFilesAndCompilerOptions, @@ -675,10 +476,7 @@ __export(server_exports, { createWatchHost: () => createWatchHost, createWatchProgram: () => createWatchProgram, createWatchStatusReporter: () => createWatchStatusReporter, - createWhile: () => createWhile, - createWith: () => createWith, createWriteFileMeasuringIO: () => createWriteFileMeasuringIO, - createYield: () => createYield, declarationNameToString: () => declarationNameToString, decodeMappings: () => decodeMappings, decodedTextSpanIntersectsWith: () => decodedTextSpanIntersectsWith, @@ -725,6 +523,7 @@ __export(server_exports, { equateStringsCaseInsensitive: () => equateStringsCaseInsensitive, equateStringsCaseSensitive: () => equateStringsCaseSensitive, equateValues: () => equateValues, + esDecorateHelper: () => esDecorateHelper, escapeJsxAttributeString: () => escapeJsxAttributeString, escapeLeadingUnderscores: () => escapeLeadingUnderscores, escapeNonAsciiString: () => escapeNonAsciiString, @@ -753,6 +552,7 @@ __export(server_exports, { findAncestor: () => findAncestor, findBestPatternMatch: () => findBestPatternMatch, findChildOfKind: () => findChildOfKind, + findComputedPropertyNameCacheAssignment: () => findComputedPropertyNameCacheAssignment, findConfigFile: () => findConfigFile, findContainingList: () => findContainingList, findDiagnosticForNode: () => findDiagnosticForNode, @@ -783,6 +583,7 @@ __export(server_exports, { flatMapIterator: () => flatMapIterator, flatMapToMutable: () => flatMapToMutable, flatten: () => flatten, + flattenCommaList: () => flattenCommaList, flattenDestructuringAssignment: () => flattenDestructuringAssignment, flattenDestructuringBinding: () => flattenDestructuringBinding, flattenDiagnosticMessageText: () => flattenDiagnosticMessageText, @@ -888,6 +689,7 @@ __export(server_exports, { getDeclaredExpandoInitializer: () => getDeclaredExpandoInitializer, getDecorators: () => getDecorators, getDefaultCompilerOptions: () => getDefaultCompilerOptions2, + getDefaultExportInfoWorker: () => getDefaultExportInfoWorker, getDefaultFormatCodeSettings: () => getDefaultFormatCodeSettings, getDefaultLibFileName: () => getDefaultLibFileName, getDefaultLibFilePath: () => getDefaultLibFilePath, @@ -959,9 +761,11 @@ __export(server_exports, { getFormatCodeSettingsForWriting: () => getFormatCodeSettingsForWriting, getFullWidth: () => getFullWidth, getFunctionFlags: () => getFunctionFlags, - getGeneratedNameForNode: () => getGeneratedNameForNode, getHeritageClause: () => getHeritageClause, getHostSignatureFromJSDoc: () => getHostSignatureFromJSDoc, + getIdentifierAutoGenerate: () => getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference: () => getIdentifierGeneratedImportReference, + getIdentifierTypeArguments: () => getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression: () => getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile: () => getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker: () => getImpliedNodeFormatForFileWorker, @@ -973,7 +777,9 @@ __export(server_exports, { getInitializerOfBinaryExpression: () => getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement: () => getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes: () => getInterfaceBaseTypeNodes, + getInternalEmitFlags: () => getInternalEmitFlags, getInvokedExpression: () => getInvokedExpression, + getIsolatedModules: () => getIsolatedModules, getJSDocAugmentsTag: () => getJSDocAugmentsTag, getJSDocClassTag: () => getJSDocClassTag, getJSDocCommentRanges: () => getJSDocCommentRanges, @@ -997,6 +803,8 @@ __export(server_exports, { getJSDocReturnTag: () => getJSDocReturnTag, getJSDocReturnType: () => getJSDocReturnType, getJSDocRoot: () => getJSDocRoot, + getJSDocSatisfiesExpressionType: () => getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag: () => getJSDocSatisfiesTag, getJSDocTags: () => getJSDocTags, getJSDocTagsNoCache: () => getJSDocTagsNoCache, getJSDocTemplateTag: () => getJSDocTemplateTag, @@ -1051,7 +859,6 @@ __export(server_exports, { getModuleNameStringLiteralAt: () => getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference: () => getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost: () => getModuleSpecifierResolverHost, - getMutableClone: () => getMutableClone, getNameForExportedSymbol: () => getNameForExportedSymbol, getNameFromIndexInfo: () => getNameFromIndexInfo, getNameFromPropertyName: () => getNameFromPropertyName, @@ -1125,6 +932,7 @@ __export(server_exports, { getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier: () => getPrivateIdentifier, getProperties: () => getProperties, getProperty: () => getProperty, getPropertyArrayElementValue: () => getPropertyArrayElementValue, @@ -1250,6 +1058,7 @@ __export(server_exports, { getWatchErrorSummaryDiagnosticMessage: () => getWatchErrorSummaryDiagnosticMessage, getWatchFactory: () => getWatchFactory, group: () => group, + groupBy: () => groupBy, guessIndentation: () => guessIndentation, handleNoEmitOptions: () => handleNoEmitOptions, hasAbstractModifier: () => hasAbstractModifier, @@ -1295,12 +1104,14 @@ __export(server_exports, { hostUsesCaseSensitiveFileNames: () => hostUsesCaseSensitiveFileNames, idText: () => idText, identifierIsThisKeyword: () => identifierIsThisKeyword, + identifierToKeywordKind: () => identifierToKeywordKind, identity: () => identity, identitySourceMapConsumer: () => identitySourceMapConsumer, ignoreSourceNewlines: () => ignoreSourceNewlines, ignoredPaths: () => ignoredPaths, importDefaultHelper: () => importDefaultHelper, importFromModuleSpecifier: () => importFromModuleSpecifier, + importNameElisionDisabled: () => importNameElisionDisabled, importStarHelper: () => importStarHelper, indexOfAnyCharCode: () => indexOfAnyCharCode, indexOfNode: () => indexOfNode, @@ -1326,6 +1137,7 @@ __export(server_exports, { isAliasableExpression: () => isAliasableExpression, isAmbientModule: () => isAmbientModule, isAmbientPropertyDeclaration: () => isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition: () => isAnonymousFunctionDefinition, isAnyDirectorySeparator: () => isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire: () => isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport: () => isAnyImportOrReExport, @@ -1335,6 +1147,7 @@ __export(server_exports, { isArgumentExpressionOfElementAccess: () => isArgumentExpressionOfElementAccess, isArray: () => isArray, isArrayBindingElement: () => isArrayBindingElement, + isArrayBindingOrAssignmentElement: () => isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, isArrayBindingPattern: () => isArrayBindingPattern, isArrayLiteralExpression: () => isArrayLiteralExpression, @@ -1366,7 +1179,9 @@ __export(server_exports, { isBindableStaticElementAccessExpression: () => isBindableStaticElementAccessExpression, isBindableStaticNameExpression: () => isBindableStaticNameExpression, isBindingElement: () => isBindingElement, + isBindingElementOfBareOrAccessedRequire: () => isBindingElementOfBareOrAccessedRequire, isBindingName: () => isBindingName, + isBindingOrAssignmentElement: () => isBindingOrAssignmentElement, isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, isBindingPattern: () => isBindingPattern, isBlock: () => isBlock, @@ -1407,6 +1222,7 @@ __export(server_exports, { isClassStaticBlockDeclaration: () => isClassStaticBlockDeclaration, isCollapsedRange: () => isCollapsedRange, isColonToken: () => isColonToken, + isCommaExpression: () => isCommaExpression, isCommaListExpression: () => isCommaListExpression, isCommaSequence: () => isCommaSequence, isCommaToken: () => isCommaToken, @@ -1440,6 +1256,7 @@ __export(server_exports, { isDecoratorTarget: () => isDecoratorTarget, isDefaultClause: () => isDefaultClause, isDefaultImport: () => isDefaultImport, + isDefaultModifier: () => isDefaultModifier, isDefaultedExpandoInitializer: () => isDefaultedExpandoInitializer, isDeleteExpression: () => isDeleteExpression, isDeleteTarget: () => isDeleteTarget, @@ -1463,6 +1280,7 @@ __export(server_exports, { isEmptyBindingPattern: () => isEmptyBindingPattern, isEmptyObjectLiteral: () => isEmptyObjectLiteral, isEmptyStatement: () => isEmptyStatement, + isEmptyStringLiteral: () => isEmptyStringLiteral, isEndOfDeclarationMarker: () => isEndOfDeclarationMarker, isEntityName: () => isEntityName, isEntityNameExpression: () => isEntityNameExpression, @@ -1479,6 +1297,7 @@ __export(server_exports, { isExportModifier: () => isExportModifier, isExportName: () => isExportName, isExportNamespaceAsDefaultDeclaration: () => isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier: () => isExportOrDefaultModifier, isExportSpecifier: () => isExportSpecifier, isExportsIdentifier: () => isExportsIdentifier, isExportsOrModuleExportsOrAlias: () => isExportsOrModuleExportsOrAlias, @@ -1533,7 +1352,6 @@ __export(server_exports, { isIdentifier: () => isIdentifier, isIdentifierANonContextualKeyword: () => isIdentifierANonContextualKeyword, isIdentifierName: () => isIdentifierName, - isIdentifierOrPrivateIdentifier: () => isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode: () => isIdentifierOrThisTypeNode, isIdentifierPart: () => isIdentifierPart, isIdentifierStart: () => isIdentifierStart, @@ -1573,6 +1391,7 @@ __export(server_exports, { isInferTypeNode: () => isInferTypeNode, isInfinityOrNaNString: () => isInfinityOrNaNString, isInitializedProperty: () => isInitializedProperty, + isInitializedVariable: () => isInitializedVariable, isInsideJsxElement: () => isInsideJsxElement, isInsideJsxElementOrAttribute: () => isInsideJsxElementOrAttribute, isInsideNodeModules: () => isInsideNodeModules, @@ -1622,6 +1441,8 @@ __export(server_exports, { isJSDocPublicTag: () => isJSDocPublicTag, isJSDocReadonlyTag: () => isJSDocReadonlyTag, isJSDocReturnTag: () => isJSDocReturnTag, + isJSDocSatisfiesExpression: () => isJSDocSatisfiesExpression, + isJSDocSatisfiesTag: () => isJSDocSatisfiesTag, isJSDocSeeTag: () => isJSDocSeeTag, isJSDocSignature: () => isJSDocSignature, isJSDocTag: () => isJSDocTag, @@ -1677,11 +1498,14 @@ __export(server_exports, { isLiteralLikeElementAccess: () => isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess: () => isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression: () => isLiteralTypeLikeExpression, + isLiteralTypeLiteral: () => isLiteralTypeLiteral, isLiteralTypeNode: () => isLiteralTypeNode, isLocalName: () => isLocalName, isLogicalOperator: () => isLogicalOperator, isLogicalOrCoalescingAssignmentExpression: () => isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator: () => isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression: () => isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator: () => isLogicalOrCoalescingBinaryOperator, isMappedTypeNode: () => isMappedTypeNode, isMemberName: () => isMemberName, isMergeDeclarationMarker: () => isMergeDeclarationMarker, @@ -1709,6 +1533,8 @@ __export(server_exports, { isNameOfModuleDeclaration: () => isNameOfModuleDeclaration, isNamedClassElement: () => isNamedClassElement, isNamedDeclaration: () => isNamedDeclaration, + isNamedEvaluation: () => isNamedEvaluation, + isNamedEvaluationSource: () => isNamedEvaluationSource, isNamedExportBindings: () => isNamedExportBindings, isNamedExports: () => isNamedExports, isNamedImportBindings: () => isNamedImportBindings, @@ -1733,6 +1559,7 @@ __export(server_exports, { isNodeModulesDirectory: () => isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration: () => isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword: () => isNonContextualKeyword, + isNonExportDefaultModifier: () => isNonExportDefaultModifier, isNonGlobalAmbientModule: () => isNonGlobalAmbientModule, isNonGlobalDeclaration: () => isNonGlobalDeclaration, isNonNullAccess: () => isNonNullAccess, @@ -1801,6 +1628,7 @@ __export(server_exports, { isPropertyName: () => isPropertyName, isPropertyNameLiteral: () => isPropertyNameLiteral, isPropertySignature: () => isPropertySignature, + isProtoSetter: () => isProtoSetter, isPrototypeAccess: () => isPrototypeAccess, isPrototypePropertyAssignment: () => isPrototypePropertyAssignment, isPunctuation: () => isPunctuation, @@ -1912,7 +1740,6 @@ __export(server_exports, { isTupleTypeNode: () => isTupleTypeNode, isTypeAlias: () => isTypeAlias, isTypeAliasDeclaration: () => isTypeAliasDeclaration, - isTypeAssertion: () => isTypeAssertion, isTypeAssertionExpression: () => isTypeAssertionExpression, isTypeDeclaration: () => isTypeDeclaration, isTypeElement: () => isTypeElement, @@ -1922,8 +1749,9 @@ __export(server_exports, { isTypeLiteralNode: () => isTypeLiteralNode, isTypeNode: () => isTypeNode, isTypeNodeKind: () => isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration: () => isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression: () => isTypeOfExpression, + isTypeOnlyExportDeclaration: () => isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration: () => isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration: () => isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode: () => isTypeOperatorNode, isTypeParameterDeclaration: () => isTypeParameterDeclaration, @@ -1998,6 +1826,7 @@ __export(server_exports, { maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, memoize: () => memoize, + memoizeCached: () => memoizeCached, memoizeOne: () => memoizeOne, memoizeWeak: () => memoizeWeak, metadataHelper: () => metadataHelper, @@ -2023,6 +1852,7 @@ __export(server_exports, { mutateMapSkippingNewValues: () => mutateMapSkippingNewValues, needsParentheses: () => needsParentheses, needsScopeMarker: () => needsScopeMarker, + newPrivateEnvironment: () => newPrivateEnvironment, noEmitNotification: () => noEmitNotification, noEmitSubstitution: () => noEmitSubstitution, noTransformers: () => noTransformers, @@ -2116,6 +1946,7 @@ __export(server_exports, { programContainsEsModules: () => programContainsEsModules, programContainsModules: () => programContainsModules, projectReferenceIsEqualTo: () => projectReferenceIsEqualTo, + propKeyHelper: () => propKeyHelper, propertyNamePart: () => propertyNamePart, pseudoBigIntToString: () => pseudoBigIntToString, punctuationPart: () => punctuationPart, @@ -2180,10 +2011,12 @@ __export(server_exports, { returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + runInitializersHelper: () => runInitializersHelper, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, scanShebangTrivia: () => scanShebangTrivia, + scanTokenAtPosition: () => scanTokenAtPosition, scanner: () => scanner, screenStartingMessageCodes: () => screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations: () => semanticDiagnosticsOptionDeclarations, @@ -2195,7 +2028,12 @@ __export(server_exports, { setConstantValue: () => setConstantValue, setEachParent: () => setEachParent, setEmitFlags: () => setEmitFlags, + setFunctionNameHelper: () => setFunctionNameHelper, setGetSourceFileAsHashVersioned: () => setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate: () => setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference: () => setIdentifierGeneratedImportReference, + setIdentifierTypeArguments: () => setIdentifierTypeArguments, + setInternalEmitFlags: () => setInternalEmitFlags, setLocalizedDiagnosticMessages: () => setLocalizedDiagnosticMessages, setModuleDefaultHelper: () => setModuleDefaultHelper, setNodeFlags: () => setNodeFlags, @@ -2203,6 +2041,7 @@ __export(server_exports, { setOriginalNode: () => setOriginalNode, setParent: () => setParent, setParentRecursive: () => setParentRecursive, + setPrivateIdentifier: () => setPrivateIdentifier, setResolvedModule: () => setResolvedModule, setResolvedTypeReferenceDirective: () => setResolvedTypeReferenceDirective, setSnippetElement: () => setSnippetElement, @@ -2243,6 +2082,7 @@ __export(server_exports, { skipTrivia: () => skipTrivia, skipTypeChecking: () => skipTypeChecking, skipTypeParentheses: () => skipTypeParentheses, + skipWhile: () => skipWhile, sliceAfter: () => sliceAfter, some: () => some, sort: () => sort, @@ -2337,6 +2177,7 @@ __export(server_exports, { transformES2020: () => transformES2020, transformES2021: () => transformES2021, transformES5: () => transformES5, + transformESDecorators: () => transformESDecorators, transformESNext: () => transformESNext, transformGenerators: () => transformGenerators, transformJsx: () => transformJsx, @@ -2363,6 +2204,7 @@ __export(server_exports, { tryGetDirectories: () => tryGetDirectories, tryGetExtensionFromPath: () => tryGetExtensionFromPath2, tryGetImportFromModuleSpecifier: () => tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode: () => tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile: () => tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration: () => tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks: () => tryGetNativePerformanceHooks, @@ -2397,148 +2239,14 @@ __export(server_exports, { unreachableCodeIsError: () => unreachableCodeIsError, unusedLabelIsError: () => unusedLabelIsError, unwrapInnermostStatementOfLabel: () => unwrapInnermostStatementOfLabel, - updateArrayBindingPattern: () => updateArrayBindingPattern, - updateArrayLiteral: () => updateArrayLiteral, - updateArrayTypeNode: () => updateArrayTypeNode, - updateArrowFunction: () => updateArrowFunction, - updateAsExpression: () => updateAsExpression, - updateAwait: () => updateAwait, - updateBinary: () => updateBinary, - updateBindingElement: () => updateBindingElement, - updateBlock: () => updateBlock, - updateBreak: () => updateBreak, - updateBundle: () => updateBundle, - updateCall: () => updateCall, - updateCallChain: () => updateCallChain, - updateCallSignature: () => updateCallSignature, - updateCaseBlock: () => updateCaseBlock, - updateCaseClause: () => updateCaseClause, - updateCatchClause: () => updateCatchClause, - updateClassDeclaration: () => updateClassDeclaration, - updateClassExpression: () => updateClassExpression, - updateCommaList: () => updateCommaList, - updateComputedPropertyName: () => updateComputedPropertyName, - updateConditional: () => updateConditional, - updateConditionalTypeNode: () => updateConditionalTypeNode, - updateConstructSignature: () => updateConstructSignature, - updateConstructor: () => updateConstructor, - updateConstructorTypeNode: () => updateConstructorTypeNode, - updateContinue: () => updateContinue, - updateDecorator: () => updateDecorator, - updateDefaultClause: () => updateDefaultClause, - updateDelete: () => updateDelete, - updateDo: () => updateDo, - updateElementAccess: () => updateElementAccess, - updateElementAccessChain: () => updateElementAccessChain, - updateEnumDeclaration: () => updateEnumDeclaration, - updateEnumMember: () => updateEnumMember, updateErrorForNoInputFiles: () => updateErrorForNoInputFiles, - updateExportAssignment: () => updateExportAssignment, - updateExportDeclaration: () => updateExportDeclaration, - updateExportSpecifier: () => updateExportSpecifier, - updateExpressionStatement: () => updateExpressionStatement, - updateExpressionWithTypeArguments: () => updateExpressionWithTypeArguments, - updateExternalModuleReference: () => updateExternalModuleReference, - updateFor: () => updateFor, - updateForIn: () => updateForIn, - updateForOf: () => updateForOf, - updateFunctionDeclaration: () => updateFunctionDeclaration, - updateFunctionExpression: () => updateFunctionExpression, - updateFunctionTypeNode: () => updateFunctionTypeNode, - updateGetAccessor: () => updateGetAccessor, - updateHeritageClause: () => updateHeritageClause, - updateIf: () => updateIf, - updateImportClause: () => updateImportClause, - updateImportDeclaration: () => updateImportDeclaration, - updateImportEqualsDeclaration: () => updateImportEqualsDeclaration, - updateImportSpecifier: () => updateImportSpecifier, - updateImportTypeNode: () => updateImportTypeNode, - updateIndexSignature: () => updateIndexSignature, - updateIndexedAccessTypeNode: () => updateIndexedAccessTypeNode, - updateInferTypeNode: () => updateInferTypeNode, - updateInterfaceDeclaration: () => updateInterfaceDeclaration, - updateIntersectionTypeNode: () => updateIntersectionTypeNode, - updateJsxAttribute: () => updateJsxAttribute, - updateJsxAttributes: () => updateJsxAttributes, - updateJsxClosingElement: () => updateJsxClosingElement, - updateJsxElement: () => updateJsxElement, - updateJsxExpression: () => updateJsxExpression, - updateJsxFragment: () => updateJsxFragment, - updateJsxOpeningElement: () => updateJsxOpeningElement, - updateJsxSelfClosingElement: () => updateJsxSelfClosingElement, - updateJsxSpreadAttribute: () => updateJsxSpreadAttribute, - updateJsxText: () => updateJsxText, - updateLabel: () => updateLabel, updateLanguageServiceSourceFile: () => updateLanguageServiceSourceFile, - updateLiteralTypeNode: () => updateLiteralTypeNode, - updateMappedTypeNode: () => updateMappedTypeNode, - updateMetaProperty: () => updateMetaProperty, - updateMethod: () => updateMethod, - updateMethodSignature: () => updateMethodSignature, updateMissingFilePathsWatch: () => updateMissingFilePathsWatch, - updateModuleBlock: () => updateModuleBlock, - updateModuleDeclaration: () => updateModuleDeclaration, - updateNamedExports: () => updateNamedExports, - updateNamedImports: () => updateNamedImports, - updateNamespaceExport: () => updateNamespaceExport, - updateNamespaceExportDeclaration: () => updateNamespaceExportDeclaration, - updateNamespaceImport: () => updateNamespaceImport, - updateNew: () => updateNew, - updateNonNullChain: () => updateNonNullChain, - updateNonNullExpression: () => updateNonNullExpression, - updateObjectBindingPattern: () => updateObjectBindingPattern, - updateObjectLiteral: () => updateObjectLiteral, - updateOptionalTypeNode: () => updateOptionalTypeNode, updatePackageJsonWatch: () => updatePackageJsonWatch, - updateParameter: () => updateParameter, - updateParen: () => updateParen, - updateParenthesizedType: () => updateParenthesizedType, - updatePartiallyEmittedExpression: () => updatePartiallyEmittedExpression, - updatePostfix: () => updatePostfix, - updatePrefix: () => updatePrefix, - updateProperty: () => updateProperty, - updatePropertyAccess: () => updatePropertyAccess, - updatePropertyAccessChain: () => updatePropertyAccessChain, - updatePropertyAssignment: () => updatePropertyAssignment, - updatePropertySignature: () => updatePropertySignature, - updateQualifiedName: () => updateQualifiedName, updateResolutionField: () => updateResolutionField, - updateRestTypeNode: () => updateRestTypeNode, - updateReturn: () => updateReturn, - updateSetAccessor: () => updateSetAccessor, updateSharedExtendedConfigFileWatcher: () => updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment: () => updateShorthandPropertyAssignment, updateSourceFile: () => updateSourceFile, - updateSourceFileNode: () => updateSourceFileNode, - updateSpread: () => updateSpread, - updateSpreadAssignment: () => updateSpreadAssignment, - updateStatement: () => updateStatement, - updateSwitch: () => updateSwitch, - updateTaggedTemplate: () => updateTaggedTemplate, - updateTemplateExpression: () => updateTemplateExpression, - updateTemplateSpan: () => updateTemplateSpan, - updateThrow: () => updateThrow, - updateTry: () => updateTry, - updateTupleTypeNode: () => updateTupleTypeNode, - updateTypeAliasDeclaration: () => updateTypeAliasDeclaration, - updateTypeAssertion: () => updateTypeAssertion, - updateTypeLiteralNode: () => updateTypeLiteralNode, - updateTypeOf: () => updateTypeOf, - updateTypeOperatorNode: () => updateTypeOperatorNode, - updateTypeParameterDeclaration: () => updateTypeParameterDeclaration, - updateTypePredicateNode: () => updateTypePredicateNode, - updateTypePredicateNodeWithModifier: () => updateTypePredicateNodeWithModifier, - updateTypeQueryNode: () => updateTypeQueryNode, - updateTypeReferenceNode: () => updateTypeReferenceNode, - updateUnionTypeNode: () => updateUnionTypeNode, - updateVariableDeclaration: () => updateVariableDeclaration, - updateVariableDeclarationList: () => updateVariableDeclarationList, - updateVariableStatement: () => updateVariableStatement, - updateVoid: () => updateVoid, updateWatchingWildcardDirectories: () => updateWatchingWildcardDirectories, - updateWhile: () => updateWhile, - updateWith: () => updateWith, - updateYield: () => updateYield, usesExtensionsOnImports: () => usesExtensionsOnImports, usingSingleLineStringWriter: () => usingSingleLineStringWriter, utf16EncodeAsString: () => utf16EncodeAsString, @@ -2547,6 +2255,7 @@ __export(server_exports, { version: () => version, versionMajorMinor: () => versionMajorMinor, visitArray: () => visitArray, + visitCommaListElements: () => visitCommaListElements, visitEachChild: () => visitEachChild, visitFunctionBody: () => visitFunctionBody, visitIterationBody: () => visitIterationBody, @@ -2555,6 +2264,8 @@ __export(server_exports, { visitNodes: () => visitNodes2, visitParameterList: () => visitParameterList, walkUpBindingElementsAndPatterns: () => walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments: () => walkUpLexicalEnvironments, + walkUpOuterExpressions: () => walkUpOuterExpressions, walkUpParenthesizedExpressions: () => walkUpParenthesizedExpressions, walkUpParenthesizedTypes: () => walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild: () => walkUpParenthesizedTypesAndGetParentAndChild, @@ -2662,7 +2373,7 @@ __export(ts_server_exports3, { // src/compiler/corePublic.ts var versionMajorMinor = "5.0"; -var version = `${versionMajorMinor}.0-dev.20230112`; +var version = `${versionMajorMinor}.0-beta`; var Comparison = /* @__PURE__ */ ((Comparison3) => { Comparison3[Comparison3["LessThan"] = -1] = "LessThan"; Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo"; @@ -3218,25 +2929,20 @@ var SortKind = /* @__PURE__ */ ((SortKind2) => { SortKind2[SortKind2["Both"] = 3] = "Both"; return SortKind2; })(SortKind || {}); -function detectSortCaseSensitivity(array, useEslintOrdering, getString) { +function detectSortCaseSensitivity(array, getString, compareStringsCaseSensitive2, compareStringsCaseInsensitive2) { let kind = 3 /* Both */; if (array.length < 2) return kind; - const caseSensitiveComparer = getString ? (a, b) => compareStringsCaseSensitive(getString(a), getString(b)) : compareStringsCaseSensitive; - const compareCaseInsensitive = useEslintOrdering ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseInsensitive; - const caseInsensitiveComparer = getString ? (a, b) => compareCaseInsensitive(getString(a), getString(b)) : compareCaseInsensitive; - for (let i = 1, len = array.length; i < len; i++) { - const prevElement = array[i - 1]; - const element = array[i]; - if (kind & 1 /* CaseSensitive */ && caseSensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + let prevElement = getString(array[0]); + for (let i = 1, len = array.length; i < len && kind !== 0 /* None */; i++) { + const element = getString(array[i]); + if (kind & 1 /* CaseSensitive */ && compareStringsCaseSensitive2(prevElement, element) > 0) { kind &= ~1 /* CaseSensitive */; } - if (kind & 2 /* CaseInsensitive */ && caseInsensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + if (kind & 2 /* CaseInsensitive */ && compareStringsCaseInsensitive2(prevElement, element) > 0) { kind &= ~2 /* CaseInsensitive */; } - if (kind === 0 /* None */) { - return kind; - } + prevElement = element; } return kind; } @@ -3581,6 +3287,18 @@ function arrayToMultiMap(values, makeKey, makeValue = identity) { function group(values, getGroupId, resultSelector = identity) { return arrayFrom(arrayToMultiMap(values, getGroupId).values(), resultSelector); } +function groupBy(values, keySelector) { + var _a2; + const result = {}; + if (values) { + for (const value of values) { + const key = `${keySelector(value)}`; + const array = (_a2 = result[key]) != null ? _a2 : result[key] = []; + array.push(value); + } + } + return result; +} function clone(object) { const result = {}; for (const id in object) { @@ -3872,6 +3590,35 @@ function memoizeWeak(callback) { return value; }; } +function memoizeCached(callback, cache) { + return (...args) => { + let value = cache.get(args); + if (value === void 0 && !cache.has(args)) { + value = callback(...args); + cache.set(args, value); + } + return value; + }; +} +function compose(a, b, c, d, e) { + if (!!e) { + const args = []; + for (let i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return (t) => reduceLeft(args, (u, f) => f(u), t); + } else if (d) { + return (t) => d(c(b(a(t)))); + } else if (c) { + return (t) => c(b(a(t))); + } else if (b) { + return (t) => b(a(t)); + } else if (a) { + return (t) => a(t); + } else { + return (t) => t; + } +} var AssertionLevel = /* @__PURE__ */ ((AssertionLevel2) => { AssertionLevel2[AssertionLevel2["None"] = 0] = "None"; AssertionLevel2[AssertionLevel2["Normal"] = 1] = "Normal"; @@ -4272,12 +4019,24 @@ function padRight(s, length2, padString = " ") { return length2 <= s.length ? s : s + padString.repeat(length2 - s.length); } function takeWhile(array, predicate) { - const len = array.length; - let index = 0; - while (index < len && predicate(array[index])) { - index++; + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(0, index); + } +} +function skipWhile(array, predicate) { + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(index); } - return array.slice(0, index); } var trimString = !!String.prototype.trim ? (s) => s.trim() : (s) => trimStringEnd(trimStringStart(s)); var trimStringEnd = !!String.prototype.trimEnd ? (s) => s.trimEnd() : trimEndImpl; @@ -6462,14 +6221,15 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind5) => { SyntaxKind5[SyntaxKind5["JSDocSeeTag"] = 350] = "JSDocSeeTag"; SyntaxKind5[SyntaxKind5["JSDocPropertyTag"] = 351] = "JSDocPropertyTag"; SyntaxKind5[SyntaxKind5["JSDocThrowsTag"] = 352] = "JSDocThrowsTag"; - SyntaxKind5[SyntaxKind5["SyntaxList"] = 353] = "SyntaxList"; - SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 354] = "NotEmittedStatement"; - SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; - SyntaxKind5[SyntaxKind5["CommaListExpression"] = 356] = "CommaListExpression"; - SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 357] = "MergeDeclarationMarker"; - SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 358] = "EndOfDeclarationMarker"; - SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 359] = "SyntheticReferenceExpression"; - SyntaxKind5[SyntaxKind5["Count"] = 360] = "Count"; + SyntaxKind5[SyntaxKind5["JSDocSatisfiesTag"] = 353] = "JSDocSatisfiesTag"; + SyntaxKind5[SyntaxKind5["SyntaxList"] = 354] = "SyntaxList"; + SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 355] = "NotEmittedStatement"; + SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 356] = "PartiallyEmittedExpression"; + SyntaxKind5[SyntaxKind5["CommaListExpression"] = 357] = "CommaListExpression"; + SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 358] = "MergeDeclarationMarker"; + SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 359] = "EndOfDeclarationMarker"; + SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 360] = "SyntheticReferenceExpression"; + SyntaxKind5[SyntaxKind5["Count"] = 361] = "Count"; SyntaxKind5[SyntaxKind5["FirstAssignment"] = 63 /* EqualsToken */] = "FirstAssignment"; SyntaxKind5[SyntaxKind5["LastAssignment"] = 78 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind5[SyntaxKind5["FirstCompoundAssignment"] = 64 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -6498,51 +6258,53 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind5) => { SyntaxKind5[SyntaxKind5["LastStatement"] = 256 /* DebuggerStatement */] = "LastStatement"; SyntaxKind5[SyntaxKind5["FirstNode"] = 163 /* QualifiedName */] = "FirstNode"; SyntaxKind5[SyntaxKind5["FirstJSDocNode"] = 312 /* JSDocTypeExpression */] = "FirstJSDocNode"; - SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocNode"; + SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocNode"; SyntaxKind5[SyntaxKind5["FirstJSDocTagNode"] = 330 /* JSDocTag */] = "FirstJSDocTagNode"; - SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocTagNode"; + SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocTagNode"; SyntaxKind5[SyntaxKind5["FirstContextualKeyword"] = 126 /* AbstractKeyword */] = "FirstContextualKeyword"; SyntaxKind5[SyntaxKind5["LastContextualKeyword"] = 162 /* OfKeyword */] = "LastContextualKeyword"; return SyntaxKind5; })(SyntaxKind || {}); -var NodeFlags = /* @__PURE__ */ ((NodeFlags4) => { - NodeFlags4[NodeFlags4["None"] = 0] = "None"; - NodeFlags4[NodeFlags4["Let"] = 1] = "Let"; - NodeFlags4[NodeFlags4["Const"] = 2] = "Const"; - NodeFlags4[NodeFlags4["NestedNamespace"] = 4] = "NestedNamespace"; - NodeFlags4[NodeFlags4["Synthesized"] = 8] = "Synthesized"; - NodeFlags4[NodeFlags4["Namespace"] = 16] = "Namespace"; - NodeFlags4[NodeFlags4["OptionalChain"] = 32] = "OptionalChain"; - NodeFlags4[NodeFlags4["ExportContext"] = 64] = "ExportContext"; - NodeFlags4[NodeFlags4["ContainsThis"] = 128] = "ContainsThis"; - NodeFlags4[NodeFlags4["HasImplicitReturn"] = 256] = "HasImplicitReturn"; - NodeFlags4[NodeFlags4["HasExplicitReturn"] = 512] = "HasExplicitReturn"; - NodeFlags4[NodeFlags4["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; - NodeFlags4[NodeFlags4["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; - NodeFlags4[NodeFlags4["DisallowInContext"] = 4096] = "DisallowInContext"; - NodeFlags4[NodeFlags4["YieldContext"] = 8192] = "YieldContext"; - NodeFlags4[NodeFlags4["DecoratorContext"] = 16384] = "DecoratorContext"; - NodeFlags4[NodeFlags4["AwaitContext"] = 32768] = "AwaitContext"; - NodeFlags4[NodeFlags4["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; - NodeFlags4[NodeFlags4["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; - NodeFlags4[NodeFlags4["JavaScriptFile"] = 262144] = "JavaScriptFile"; - NodeFlags4[NodeFlags4["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; - NodeFlags4[NodeFlags4["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; - NodeFlags4[NodeFlags4["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; - NodeFlags4[NodeFlags4["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; - NodeFlags4[NodeFlags4["JSDoc"] = 8388608] = "JSDoc"; - NodeFlags4[NodeFlags4["Ambient"] = 16777216] = "Ambient"; - NodeFlags4[NodeFlags4["InWithStatement"] = 33554432] = "InWithStatement"; - NodeFlags4[NodeFlags4["JsonFile"] = 67108864] = "JsonFile"; - NodeFlags4[NodeFlags4["TypeCached"] = 134217728] = "TypeCached"; - NodeFlags4[NodeFlags4["Deprecated"] = 268435456] = "Deprecated"; - NodeFlags4[NodeFlags4["BlockScoped"] = 3] = "BlockScoped"; - NodeFlags4[NodeFlags4["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; - NodeFlags4[NodeFlags4["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; - NodeFlags4[NodeFlags4["ContextFlags"] = 50720768] = "ContextFlags"; - NodeFlags4[NodeFlags4["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; - NodeFlags4[NodeFlags4["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; - return NodeFlags4; +var NodeFlags = /* @__PURE__ */ ((NodeFlags3) => { + NodeFlags3[NodeFlags3["None"] = 0] = "None"; + NodeFlags3[NodeFlags3["Let"] = 1] = "Let"; + NodeFlags3[NodeFlags3["Const"] = 2] = "Const"; + NodeFlags3[NodeFlags3["NestedNamespace"] = 4] = "NestedNamespace"; + NodeFlags3[NodeFlags3["Synthesized"] = 8] = "Synthesized"; + NodeFlags3[NodeFlags3["Namespace"] = 16] = "Namespace"; + NodeFlags3[NodeFlags3["OptionalChain"] = 32] = "OptionalChain"; + NodeFlags3[NodeFlags3["ExportContext"] = 64] = "ExportContext"; + NodeFlags3[NodeFlags3["ContainsThis"] = 128] = "ContainsThis"; + NodeFlags3[NodeFlags3["HasImplicitReturn"] = 256] = "HasImplicitReturn"; + NodeFlags3[NodeFlags3["HasExplicitReturn"] = 512] = "HasExplicitReturn"; + NodeFlags3[NodeFlags3["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; + NodeFlags3[NodeFlags3["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; + NodeFlags3[NodeFlags3["DisallowInContext"] = 4096] = "DisallowInContext"; + NodeFlags3[NodeFlags3["YieldContext"] = 8192] = "YieldContext"; + NodeFlags3[NodeFlags3["DecoratorContext"] = 16384] = "DecoratorContext"; + NodeFlags3[NodeFlags3["AwaitContext"] = 32768] = "AwaitContext"; + NodeFlags3[NodeFlags3["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; + NodeFlags3[NodeFlags3["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; + NodeFlags3[NodeFlags3["JavaScriptFile"] = 262144] = "JavaScriptFile"; + NodeFlags3[NodeFlags3["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; + NodeFlags3[NodeFlags3["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; + NodeFlags3[NodeFlags3["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; + NodeFlags3[NodeFlags3["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; + NodeFlags3[NodeFlags3["JSDoc"] = 8388608] = "JSDoc"; + NodeFlags3[NodeFlags3["Ambient"] = 16777216] = "Ambient"; + NodeFlags3[NodeFlags3["InWithStatement"] = 33554432] = "InWithStatement"; + NodeFlags3[NodeFlags3["JsonFile"] = 67108864] = "JsonFile"; + NodeFlags3[NodeFlags3["TypeCached"] = 134217728] = "TypeCached"; + NodeFlags3[NodeFlags3["Deprecated"] = 268435456] = "Deprecated"; + NodeFlags3[NodeFlags3["BlockScoped"] = 3] = "BlockScoped"; + NodeFlags3[NodeFlags3["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; + NodeFlags3[NodeFlags3["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; + NodeFlags3[NodeFlags3["ContextFlags"] = 50720768] = "ContextFlags"; + NodeFlags3[NodeFlags3["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; + NodeFlags3[NodeFlags3["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; + NodeFlags3[NodeFlags3["IdentifierHasExtendedUnicodeEscape"] = 128 /* ContainsThis */] = "IdentifierHasExtendedUnicodeEscape"; + NodeFlags3[NodeFlags3["IdentifierIsInJSDocNamespace"] = 2048 /* HasAsyncFunctions */] = "IdentifierIsInJSDocNamespace"; + return NodeFlags3; })(NodeFlags || {}); var ModifierFlags = /* @__PURE__ */ ((ModifierFlags3) => { ModifierFlags3[ModifierFlags3["None"] = 0] = "None"; @@ -6682,7 +6444,6 @@ var ExitStatus = /* @__PURE__ */ ((ExitStatus2) => { ExitStatus2[ExitStatus2["DiagnosticsPresent_OutputsGenerated"] = 2] = "DiagnosticsPresent_OutputsGenerated"; ExitStatus2[ExitStatus2["InvalidProject_OutputsSkipped"] = 3] = "InvalidProject_OutputsSkipped"; ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkipped"] = 4] = "ProjectReferenceCycle_OutputsSkipped"; - ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkupped"] = 4] = "ProjectReferenceCycle_OutputsSkupped"; return ExitStatus2; })(ExitStatus || {}); var MemberOverrideStatus = /* @__PURE__ */ ((MemberOverrideStatus2) => { @@ -6727,7 +6488,6 @@ var NodeBuilderFlags = /* @__PURE__ */ ((NodeBuilderFlags2) => { NodeBuilderFlags2[NodeBuilderFlags2["OmitThisParameter"] = 33554432] = "OmitThisParameter"; NodeBuilderFlags2[NodeBuilderFlags2["AllowThisInObjectLiteral"] = 32768] = "AllowThisInObjectLiteral"; NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifiedNameInPlaceOfIdentifier"] = 65536] = "AllowQualifiedNameInPlaceOfIdentifier"; - NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifedNameInPlaceOfIdentifier"] = 65536 /* AllowQualifiedNameInPlaceOfIdentifier */] = "AllowQualifedNameInPlaceOfIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowAnonymousIdentifier"] = 131072] = "AllowAnonymousIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyUnionOrIntersection"] = 262144] = "AllowEmptyUnionOrIntersection"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyTuple"] = 524288] = "AllowEmptyTuple"; @@ -6765,7 +6525,6 @@ var TypeFormatFlags = /* @__PURE__ */ ((TypeFormatFlags2) => { TypeFormatFlags2[TypeFormatFlags2["InElementType"] = 2097152] = "InElementType"; TypeFormatFlags2[TypeFormatFlags2["InFirstTypeArgument"] = 4194304] = "InFirstTypeArgument"; TypeFormatFlags2[TypeFormatFlags2["InTypeAlias"] = 8388608] = "InTypeAlias"; - TypeFormatFlags2[TypeFormatFlags2["WriteOwnNameForAnyLike"] = 0] = "WriteOwnNameForAnyLike"; TypeFormatFlags2[TypeFormatFlags2["NodeBuilderFlagsMask"] = 848330091] = "NodeBuilderFlagsMask"; return TypeFormatFlags2; })(TypeFormatFlags || {}); @@ -7561,18 +7320,24 @@ var EmitFlags = /* @__PURE__ */ ((EmitFlags3) => { EmitFlags3[EmitFlags3["HasEndOfDeclarationMarker"] = 8388608] = "HasEndOfDeclarationMarker"; EmitFlags3[EmitFlags3["Iterator"] = 16777216] = "Iterator"; EmitFlags3[EmitFlags3["NoAsciiEscaping"] = 33554432] = "NoAsciiEscaping"; - EmitFlags3[EmitFlags3["TypeScriptClassWrapper"] = 67108864] = "TypeScriptClassWrapper"; - EmitFlags3[EmitFlags3["NeverApplyImportHelper"] = 134217728] = "NeverApplyImportHelper"; - EmitFlags3[EmitFlags3["IgnoreSourceNewlines"] = 268435456] = "IgnoreSourceNewlines"; - EmitFlags3[EmitFlags3["Immutable"] = 536870912] = "Immutable"; - EmitFlags3[EmitFlags3["IndirectCall"] = 1073741824] = "IndirectCall"; return EmitFlags3; })(EmitFlags || {}); +var InternalEmitFlags = /* @__PURE__ */ ((InternalEmitFlags3) => { + InternalEmitFlags3[InternalEmitFlags3["None"] = 0] = "None"; + InternalEmitFlags3[InternalEmitFlags3["TypeScriptClassWrapper"] = 1] = "TypeScriptClassWrapper"; + InternalEmitFlags3[InternalEmitFlags3["NeverApplyImportHelper"] = 2] = "NeverApplyImportHelper"; + InternalEmitFlags3[InternalEmitFlags3["IgnoreSourceNewlines"] = 4] = "IgnoreSourceNewlines"; + InternalEmitFlags3[InternalEmitFlags3["Immutable"] = 8] = "Immutable"; + InternalEmitFlags3[InternalEmitFlags3["IndirectCall"] = 16] = "IndirectCall"; + InternalEmitFlags3[InternalEmitFlags3["TransformPrivateStaticElements"] = 32] = "TransformPrivateStaticElements"; + return InternalEmitFlags3; +})(InternalEmitFlags || {}); var ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["Extends"] = 1] = "Extends"; ExternalEmitHelpers2[ExternalEmitHelpers2["Assign"] = 2] = "Assign"; ExternalEmitHelpers2[ExternalEmitHelpers2["Rest"] = 4] = "Rest"; ExternalEmitHelpers2[ExternalEmitHelpers2["Decorate"] = 8] = "Decorate"; + ExternalEmitHelpers2[ExternalEmitHelpers2["ESDecorateAndRunInitializers"] = 8 /* Decorate */] = "ESDecorateAndRunInitializers"; ExternalEmitHelpers2[ExternalEmitHelpers2["Metadata"] = 16] = "Metadata"; ExternalEmitHelpers2[ExternalEmitHelpers2["Param"] = 32] = "Param"; ExternalEmitHelpers2[ExternalEmitHelpers2["Awaiter"] = 64] = "Awaiter"; @@ -7592,8 +7357,10 @@ var ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldSet"] = 1048576] = "ClassPrivateFieldSet"; ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldIn"] = 2097152] = "ClassPrivateFieldIn"; ExternalEmitHelpers2[ExternalEmitHelpers2["CreateBinding"] = 4194304] = "CreateBinding"; + ExternalEmitHelpers2[ExternalEmitHelpers2["SetFunctionName"] = 8388608] = "SetFunctionName"; + ExternalEmitHelpers2[ExternalEmitHelpers2["PropKey"] = 16777216] = "PropKey"; ExternalEmitHelpers2[ExternalEmitHelpers2["FirstEmitHelper"] = 1 /* Extends */] = "FirstEmitHelper"; - ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 4194304 /* CreateBinding */] = "LastEmitHelper"; + ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 16777216 /* PropKey */] = "LastEmitHelper"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForOfIncludes"] = 256 /* Values */] = "ForOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForAwaitOfIncludes"] = 16384 /* AsyncValues */] = "ForAwaitOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["AsyncGeneratorIncludes"] = 6144] = "AsyncGeneratorIncludes"; @@ -9721,10 +9488,9 @@ var Diagnostics = { Line_terminator_not_permitted_before_arrow: diag(1200, 1 /* Error */, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(1202, 1 /* Error */, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: diag(1203, 1 /* Error */, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), - Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), + Re_exporting_a_type_when_0_is_enabled_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205", "Re-exporting a type when '{0}' is enabled requires using 'export type'."), Decorators_are_not_valid_here: diag(1206, 1 /* Error */, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: diag(1207, 1 /* Error */, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), - _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: diag(1208, 1 /* Error */, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0: diag(1209, 1 /* Error */, "Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209", "Invalid optional chain from new expression. Did you mean to call '{0}()'?"), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: diag(1210, 1 /* Error */, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: diag(1211, 1 /* Error */, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), @@ -9734,7 +9500,6 @@ var Diagnostics = { Invalid_use_of_0_Modules_are_automatically_in_strict_mode: diag(1215, 1 /* Error */, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: diag(1216, 1 /* Error */, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: diag(1218, 1 /* Error */, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: diag(1219, 1 /* Error */, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: diag(1221, 1 /* Error */, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: diag(1222, 1 /* Error */, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: diag(1223, 1 /* Error */, "_0_tag_already_specified_1223", "'{0}' tag already specified."), @@ -9781,7 +9546,7 @@ var Diagnostics = { An_optional_element_cannot_follow_a_rest_element: diag(1266, 1 /* Error */, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: diag(1267, 1 /* Error */, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: diag(1268, 1 /* Error */, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), - Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), + Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269", "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled."), Decorator_function_return_type_0_is_not_assignable_to_type_1: diag(1270, 1 /* Error */, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: diag(1271, 1 /* Error */, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: diag(1272, 1 /* Error */, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), @@ -9790,6 +9555,17 @@ var Diagnostics = { accessor_modifier_can_only_appear_on_a_property_declaration: diag(1275, 1 /* Error */, "accessor_modifier_can_only_appear_on_a_property_declaration_1275", "'accessor' modifier can only appear on a property declaration."), An_accessor_property_cannot_be_declared_optional: diag(1276, 1 /* Error */, "An_accessor_property_cannot_be_declared_optional_1276", "An 'accessor' property cannot be declared optional."), _0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class: diag(1277, 1 /* Error */, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277", "'{0}' modifier can only appear on a type parameter of a function, method or class"), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0: diag(1278, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278", "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}."), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0: diag(1279, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279", "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}."), + Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement: diag(1280, 1 /* Error */, "Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280", "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement."), + Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead: diag(1281, 1 /* Error */, "Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281", "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead."), + An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1282, 1 /* Error */, "An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282", "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1283, 1 /* Error */, "An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283", "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1284, 1 /* Error */, "An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284", "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1285, 1 /* Error */, "An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285", "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1286, 1 /* Error */, "ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286", "ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1287, 1 /* Error */, "A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287", "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled: diag(1288, 1 /* Error */, "An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288", "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled."), with_statements_are_not_allowed_in_an_async_function_block: diag(1300, 1 /* Error */, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: diag(1308, 1 /* Error */, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: diag(1309, 1 /* Error */, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), @@ -9861,7 +9637,6 @@ var Diagnostics = { An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: diag(1380, 1 /* Error */, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: diag(1381, 1 /* Error */, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: diag(1382, 1 /* Error */, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), - Only_named_exports_may_use_export_type: diag(1383, 1 /* Error */, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1385, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1386, 1 /* Error */, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: diag(1387, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), @@ -9909,7 +9684,7 @@ var Diagnostics = { The_file_is_in_the_program_because_Colon: diag(1430, 3 /* Message */, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1431, 1 /* Error */, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: diag(1432, 1 /* Error */, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), - Decorators_may_not_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), + Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433", "Neither decorators nor modifiers may be applied to 'this' parameters."), Unexpected_keyword_or_identifier: diag(1434, 1 /* Error */, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: diag(1435, 1 /* Error */, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: diag(1436, 1 /* Error */, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), @@ -9922,7 +9697,7 @@ var Diagnostics = { Module_declaration_names_may_only_use_or_quoted_strings: diag(1443, 1 /* Error */, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1444, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1446, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), - _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: diag(1449, 3 /* Message */, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: diag(1450, 3 /* Message */, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: diag(1451, 1 /* Error */, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), @@ -9950,6 +9725,8 @@ var Diagnostics = { To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1: diag(1481, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481", `To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \`"type": "module"\` to '{1}'.`), To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0: diag(1482, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482", 'To convert this file to an ECMAScript module, add the field `"type": "module"` to \'{0}\'.'), To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module: diag(1483, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483", 'To convert this file to an ECMAScript module, create a local package.json file with `{ "type": "module" }`.'), + _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1484, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484", "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1485, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -10407,7 +10184,7 @@ var Diagnostics = { This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: diag(2745, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: diag(2746, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: diag(2747, 1 /* Error */, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), - Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), + Cannot_access_ambient_const_enums_when_0_is_enabled: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_0_is_enabled_2748", "Cannot access ambient const enums when '{0}' is enabled."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: diag(2749, 1 /* Error */, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: diag(2750, 1 /* Error */, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: diag(2751, 1 /* Error */, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), @@ -10655,12 +10432,12 @@ var Diagnostics = { The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: diag(5088, 1 /* Error */, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: diag(5089, 1 /* Error */, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: diag(5090, 1 /* Error */, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), - Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), + Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled."), The_root_value_of_a_0_file_must_be_an_object: diag(5092, 1 /* Error */, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: diag(5093, 1 /* Error */, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: diag(5094, 1 /* Error */, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: diag(5095, 1 /* Error */, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), - Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_eithe_5096", "Option 'allowImportingTsExtensions' can only be used when 'moduleResolution' is set to 'bundler' and either 'noEmit' or 'emitDeclarationOnly' is set."), + Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096", "Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set."), An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled: diag(5097, 1 /* Error */, "An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097", "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled."), Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler: diag(5098, 1 /* Error */, "Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098", "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'."), Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(5099, 1 /* Error */, "Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Aster_5099", `Import assignment is not allowed when 'moduleResolution' is set to 'bundler'. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), @@ -10668,6 +10445,9 @@ var Diagnostics = { Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error: diag(5101, 1 /* Error */, "Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_5101", `Flag '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify 'ignoreDeprecations: "{2}"' to silence this error.`), Flag_0_is_deprecated_Please_remove_it_from_your_configuration: diag(5102, 1 /* Error */, "Flag_0_is_deprecated_Please_remove_it_from_your_configuration_5102", "Flag '{0}' is deprecated. Please remove it from your configuration."), Invalid_value_for_ignoreDeprecations: diag(5103, 1 /* Error */, "Invalid_value_for_ignoreDeprecations_5103", "Invalid value for '--ignoreDeprecations'."), + Option_0_is_redundant_and_cannot_be_specified_with_option_1: diag(5104, 1 /* Error */, "Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104", "Option '{0}' is redundant and cannot be specified with option '{1}'."), + Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System: diag(5105, 1 /* Error */, "Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105", "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'."), + Use_0_instead: diag(5106, 3 /* Message */, "Use_0_instead_5106", "Use '{0}' instead."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -10950,6 +10730,8 @@ var Diagnostics = { package_json_scope_0_explicitly_maps_specifier_1_to_null: diag(6274, 3 /* Message */, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: diag(6275, 3 /* Message */, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: diag(6276, 3 /* Message */, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), + Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update: diag(6277, 3 /* Message */, "Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277", "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update."), + There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings: diag(6278, 3 /* Message */, "There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278", `There are types at '{0}', but this result could not be resolved when respecting package.json "exports". The '{1}' library may need to update its package.json or typings.`), Enable_project_compilation: diag(6302, 3 /* Message */, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: diag(6304, 1 /* Error */, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: diag(6305, 1 /* Error */, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), @@ -11074,7 +10856,7 @@ var Diagnostics = { Filters_results_from_the_include_option: diag(6627, 3 /* Message */, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: diag(6628, 3 /* Message */, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: diag(6629, 3 /* Message */, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), - Enable_experimental_support_for_TC39_stage_2_draft_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), + Enable_experimental_support_for_legacy_experimental_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_legacy_experimental_decorators_6630", "Enable experimental support for legacy experimental decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: diag(6631, 3 /* Message */, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: diag(6632, 3 /* Message */, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: diag(6633, 3 /* Message */, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), @@ -11160,6 +10942,7 @@ var Diagnostics = { Require_undeclared_properties_from_index_signatures_to_use_element_accesses: diag(6717, 3 /* Message */, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: diag(6718, 3 /* Message */, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: diag(6803, 3 /* Message */, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), + Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting: diag(6804, 3 /* Message */, "Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804", "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting."), one_of_Colon: diag(6900, 3 /* Message */, "one_of_Colon_6900", "one of:"), one_or_more_Colon: diag(6901, 3 /* Message */, "one_or_more_Colon_6901", "one or more:"), type_Colon: diag(6902, 3 /* Message */, "type_Colon_6902", "type:"), @@ -11295,6 +11078,7 @@ var Diagnostics = { You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder: diag(8035, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035", "You cannot rename elements that are defined in a 'node_modules' folder."), You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder: diag(8036, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036", "You cannot rename elements that are defined in another 'node_modules' folder."), Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files: diag(8037, 1 /* Error */, "Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037", "Type satisfaction expressions can only be used in TypeScript files."), + Decorators_must_come_after_export_or_export_default_in_JavaScript_files: diag(8038, 1 /* Error */, "Decorators_must_come_after_export_or_export_default_in_JavaScript_files_8038", "Decorators must come after 'export' or 'export default' in JavaScript files."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9005, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: diag(17e3, 1 /* Error */, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), @@ -11580,7 +11364,8 @@ var Diagnostics = { _0_is_possibly_null: diag(18047, 1 /* Error */, "_0_is_possibly_null_18047", "'{0}' is possibly 'null'."), _0_is_possibly_undefined: diag(18048, 1 /* Error */, "_0_is_possibly_undefined_18048", "'{0}' is possibly 'undefined'."), _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."), - The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here.") + The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."), + Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string.") }; // src/compiler/scanner.ts @@ -12191,10 +11976,7 @@ function reduceEachTrailingCommentRange(text, pos, cb, state, initial) { initial ); } -function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments) { - if (!comments) { - comments = []; - } +function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) { comments.push({ kind, pos, end, hasTrailingNewLine }); return comments; } @@ -13872,7 +13654,7 @@ function getTypeParameterOwner(d) { } } function isParameterPropertyDeclaration(node, parent2) { - return hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; + return isParameter(node) && hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; } function isEmptyBindingPattern(node) { if (isBindingPattern(node)) { @@ -13977,7 +13759,10 @@ function getOriginalNode(node, nodeTest) { node = node.original; } } - return !nodeTest || nodeTest(node) ? node : void 0; + if (!node || !nodeTest) { + return node; + } + return nodeTest(node) ? node : void 0; } function findAncestor(node, callback) { while (node) { @@ -14016,6 +13801,10 @@ function unescapeLeadingUnderscores(identifier) { function idText(identifierOrPrivateName) { return unescapeLeadingUnderscores(identifierOrPrivateName.escapedText); } +function identifierToKeywordKind(node) { + const token = stringToToken(node.escapedText); + return token ? tryCast(token, isKeyword) : void 0; +} function symbolName(symbol) { if (symbol.valueDeclaration && isPrivateIdentifierClassElementDeclaration(symbol.valueDeclaration)) { return idText(symbol.valueDeclaration.name); @@ -14291,6 +14080,9 @@ function getJSDocReturnTag(node) { function getJSDocTemplateTag(node) { return getFirstJSDocTag(node, isJSDocTemplateTag); } +function getJSDocSatisfiesTag(node) { + return getFirstJSDocTag(node, isJSDocSatisfiesTag); +} function getJSDocTypeTag(node) { const tag = getFirstJSDocTag(node, isJSDocTypeTag); if (tag && tag.typeExpression && tag.typeExpression.type) { @@ -14323,15 +14115,17 @@ function getJSDocReturnType(node) { } } function getJSDocTagsWorker(node, noCache) { + var _a2, _b; if (!canHaveJSDoc(node)) return emptyArray; - let tags = node.jsDocCache; + let tags = (_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache; if (tags === void 0 || noCache) { const comments = getJSDocCommentsAndTags(node, noCache); Debug.assert(comments.length < 2 || comments[0] !== comments[1]); tags = flatMap(comments, (j) => isJSDoc(j) ? j.tags : j); if (!noCache) { - node.jsDocCache = tags; + (_b = node.jsDoc) != null ? _b : node.jsDoc = []; + node.jsDoc.jsDocCache = tags; } } return tags; @@ -14509,19 +14303,31 @@ function isTemplateMiddleOrTemplateTail(node) { function isImportOrExportSpecifier(node) { return isImportSpecifier(node) || isExportSpecifier(node); } -function isTypeOnlyImportOrExportDeclaration(node) { +function isTypeOnlyImportDeclaration(node) { switch (node.kind) { case 273 /* ImportSpecifier */: - case 278 /* ExportSpecifier */: return node.isTypeOnly || node.parent.parent.isTypeOnly; case 271 /* NamespaceImport */: return node.parent.isTypeOnly; case 270 /* ImportClause */: case 268 /* ImportEqualsDeclaration */: return node.isTypeOnly; - default: - return false; } + return false; +} +function isTypeOnlyExportDeclaration(node) { + switch (node.kind) { + case 278 /* ExportSpecifier */: + return node.isTypeOnly || node.parent.parent.isTypeOnly; + case 275 /* ExportDeclaration */: + return node.isTypeOnly && !!node.moduleSpecifier && !node.exportClause; + case 277 /* NamespaceExport */: + return node.parent.isTypeOnly; + } + return false; +} +function isTypeOnlyImportOrExportDeclaration(node) { + return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node); } function isAssertionKey(node) { return isStringLiteral(node) || isIdentifier(node); @@ -14530,10 +14336,12 @@ function isStringTextContainingNode(node) { return node.kind === 10 /* StringLiteral */ || isTemplateLiteralKind(node.kind); } function isGeneratedIdentifier(node) { - return isIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isGeneratedPrivateIdentifier(node) { - return isPrivateIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isPrivateIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isPrivateIdentifierClassElementDeclaration(node) { return (isPropertyDeclaration(node) || isMethodOrAccessor(node)) && isPrivateIdentifier(node.name); @@ -14710,6 +14518,9 @@ function isDeclarationBindingElement(bindingElement) { } return false; } +function isBindingOrAssignmentElement(node) { + return isVariableDeclaration(node) || isParameter(node) || isObjectBindingOrAssignmentElement(node) || isArrayBindingOrAssignmentElement(node); +} function isBindingOrAssignmentPattern(node) { return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node); } @@ -14739,6 +14550,24 @@ function isArrayBindingOrAssignmentPattern(node) { } return false; } +function isArrayBindingOrAssignmentElement(node) { + switch (node.kind) { + case 205 /* BindingElement */: + case 229 /* OmittedExpression */: + case 227 /* SpreadElement */: + case 206 /* ArrayLiteralExpression */: + case 207 /* ObjectLiteralExpression */: + case 79 /* Identifier */: + case 208 /* PropertyAccessExpression */: + case 209 /* ElementAccessExpression */: + return true; + } + return isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ); +} function isPropertyAccessOrQualifiedNameOrImportTypeNode(node) { const kind = node.kind; return kind === 208 /* PropertyAccessExpression */ || kind === 163 /* QualifiedName */ || kind === 202 /* ImportType */; @@ -14802,6 +14631,7 @@ function isLeftHandSideExpressionKind(kind) { case 230 /* ExpressionWithTypeArguments */: case 233 /* MetaProperty */: case 100 /* ImportKeyword */: + case 279 /* MissingDeclaration */: return true; default: return false; @@ -14834,6 +14664,17 @@ function isUnaryExpressionWithWrite(expr) { return false; } } +function isLiteralTypeLiteral(node) { + switch (node.kind) { + case 104 /* NullKeyword */: + case 110 /* TrueKeyword */: + case 95 /* FalseKeyword */: + case 221 /* PrefixUnaryExpression */: + return true; + default: + return isLiteralExpression(node); + } +} function isExpression(node) { return isExpressionKind(skipPartiallyEmittedExpressions(node).kind); } @@ -14846,8 +14687,8 @@ function isExpressionKind(kind) { case 227 /* SpreadElement */: case 231 /* AsExpression */: case 229 /* OmittedExpression */: - case 356 /* CommaListExpression */: - case 355 /* PartiallyEmittedExpression */: + case 357 /* CommaListExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: return true; default: @@ -15032,7 +14873,7 @@ function isDeclarationStatementKind(kind) { return kind === 259 /* FunctionDeclaration */ || kind === 279 /* MissingDeclaration */ || kind === 260 /* ClassDeclaration */ || kind === 261 /* InterfaceDeclaration */ || kind === 262 /* TypeAliasDeclaration */ || kind === 263 /* EnumDeclaration */ || kind === 264 /* ModuleDeclaration */ || kind === 269 /* ImportDeclaration */ || kind === 268 /* ImportEqualsDeclaration */ || kind === 275 /* ExportDeclaration */ || kind === 274 /* ExportAssignment */ || kind === 267 /* NamespaceExportDeclaration */; } function isStatementKindButNotDeclarationKind(kind) { - return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 354 /* NotEmittedStatement */ || kind === 358 /* EndOfDeclarationMarker */ || kind === 357 /* MergeDeclarationMarker */; + return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 355 /* NotEmittedStatement */ || kind === 359 /* EndOfDeclarationMarker */ || kind === 358 /* MergeDeclarationMarker */; } function isDeclaration(node) { if (node.kind === 165 /* TypeParameter */) { @@ -15093,13 +14934,13 @@ function isCaseOrDefaultClause(node) { return kind === 292 /* CaseClause */ || kind === 293 /* DefaultClause */; } function isJSDocNode(node) { - return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 352 /* LastJSDocNode */; + return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 353 /* LastJSDocNode */; } function isJSDocCommentContainingNode(node) { return node.kind === 323 /* JSDoc */ || node.kind === 322 /* JSDocNamepathType */ || node.kind === 324 /* JSDocText */ || isJSDocLinkLike(node) || isJSDocTag(node) || isJSDocTypeLiteral(node) || isJSDocSignature(node); } function isJSDocTag(node) { - return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 352 /* LastJSDocTagNode */; + return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 353 /* LastJSDocTagNode */; } function isSetAccessor(node) { return node.kind === 175 /* SetAccessor */; @@ -15515,7 +15356,7 @@ function getTokenPosOfNode(node, sourceFile, includeJsDoc) { if (includeJsDoc && hasJSDocNodes(node)) { return getTokenPosOfNode(node.jsDoc[0], sourceFile); } - if (node.kind === 353 /* SyntaxList */ && node._children.length > 0) { + if (node.kind === 354 /* SyntaxList */ && node._children.length > 0) { return getTokenPosOfNode(node._children[0], sourceFile, includeJsDoc); } return skipTrivia( @@ -15567,6 +15408,10 @@ function getEmitFlags(node) { const emitNode = node.emitNode; return emitNode && emitNode.flags || 0; } +function getInternalEmitFlags(node) { + const emitNode = node.emitNode; + return emitNode && emitNode.internalFlags || 0; +} function getScriptTargetFeatures() { return { es2015: { @@ -15824,6 +15669,7 @@ function isBlockScope(node, parentNode) { return false; } function isDeclarationWithTypeParameters(node) { + Debug.type(node); switch (node.kind) { case 341 /* JSDocCallbackTag */: case 349 /* JSDocTypedefTag */: @@ -15835,6 +15681,7 @@ function isDeclarationWithTypeParameters(node) { } } function isDeclarationWithTypeParameterChildren(node) { + Debug.type(node); switch (node.kind) { case 176 /* CallSignature */: case 177 /* ConstructSignature */: @@ -15915,10 +15762,11 @@ function isComputedNonLiteralName(name) { return name.kind === 164 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression); } function tryGetTextOfPropertyName(name) { + var _a2; switch (name.kind) { case 79 /* Identifier */: case 80 /* PrivateIdentifier */: - return name.autoGenerate ? void 0 : name.escapedText; + return ((_a2 = name.emitNode) == null ? void 0 : _a2.autoGenerate) ? void 0 : name.escapedText; case 10 /* StringLiteral */: case 8 /* NumericLiteral */: case 14 /* NoSubstitutionTemplateLiteral */: @@ -15967,11 +15815,14 @@ function createDiagnosticForNodeInSourceFile(sourceFile, node, message, arg0, ar const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2, arg3); } -function createDiagnosticForNodeFromMessageChain(node, messageChain, relatedInformation) { - const sourceFile = getSourceFileOfNode(node); +function createDiagnosticForNodeFromMessageChain(sourceFile, node, messageChain, relatedInformation) { const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnosticFromMessageChain(sourceFile, span.start, span.length, messageChain, relatedInformation); } +function createDiagnosticForNodeArrayFromMessageChain(sourceFile, nodes, messageChain, relatedInformation) { + const start2 = skipTrivia(sourceFile.text, nodes.pos); + return createFileDiagnosticFromMessageChain(sourceFile, start2, nodes.end - start2, messageChain, relatedInformation); +} function assertDiagnosticLocation(file, start2, length2) { Debug.assertGreaterThanOrEqual(start2, 0); Debug.assertGreaterThanOrEqual(length2, 0); @@ -16036,6 +15887,20 @@ function getSpanOfTokenAtPosition(sourceFile, pos) { const start2 = scanner2.getTokenPos(); return createTextSpanFromBounds(start2, scanner2.getTextPos()); } +function scanTokenAtPosition(sourceFile, pos) { + const scanner2 = createScanner( + sourceFile.languageVersion, + /*skipTrivia*/ + true, + sourceFile.languageVariant, + sourceFile.text, + /*onError:*/ + void 0, + pos + ); + scanner2.scan(); + return scanner2.getToken(); +} function getErrorSpanForArrowFunction(sourceFile, node) { const pos = skipTrivia(sourceFile.text, node.pos); if (node.body && node.body.kind === 238 /* Block */) { @@ -16628,47 +16493,90 @@ function getInvokedExpression(node) { return node.expression; } } -function nodeCanBeDecorated(node, parent2, grandparent) { - if (isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { +function nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent) { + if (useLegacyDecorators && isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { return false; } switch (node.kind) { case 260 /* ClassDeclaration */: return true; + case 228 /* ClassExpression */: + return !useLegacyDecorators; case 169 /* PropertyDeclaration */: - return parent2.kind === 260 /* ClassDeclaration */; + return parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2) && !hasAbstractModifier(node) && !hasAmbientModifier(node)); case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: - return node.body !== void 0 && parent2.kind === 260 /* ClassDeclaration */; + return node.body !== void 0 && parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2)); case 166 /* Parameter */: - return parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && grandparent.kind === 260 /* ClassDeclaration */; + if (!useLegacyDecorators) + return false; + return parent2 !== void 0 && parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && getThisParameter(parent2) !== node && grandparent !== void 0 && grandparent.kind === 260 /* ClassDeclaration */; } return false; } -function nodeIsDecorated(node, parent2, grandparent) { - return hasDecorators(node) && nodeCanBeDecorated(node, parent2, grandparent); +function nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return hasDecorators(node) && nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent); } -function nodeOrChildIsDecorated(node, parent2, grandparent) { - return nodeIsDecorated(node, parent2, grandparent) || childIsDecorated(node, parent2); +function nodeOrChildIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) || childIsDecorated(useLegacyDecorators, node, parent2); } -function childIsDecorated(node, parent2) { +function childIsDecorated(useLegacyDecorators, node, parent2) { switch (node.kind) { case 260 /* ClassDeclaration */: - return some(node.members, (m) => nodeOrChildIsDecorated(m, node, parent2)); + return some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); + case 228 /* ClassExpression */: + return !useLegacyDecorators && some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); case 171 /* MethodDeclaration */: case 175 /* SetAccessor */: case 173 /* Constructor */: - return some(node.parameters, (p) => nodeIsDecorated(p, node, parent2)); + return some(node.parameters, (p) => nodeIsDecorated(useLegacyDecorators, p, node, parent2)); default: return false; } } -function classOrConstructorParameterIsDecorated(node) { - if (nodeIsDecorated(node)) +function classOrConstructorParameterIsDecorated(useLegacyDecorators, node) { + if (nodeIsDecorated(useLegacyDecorators, node)) return true; const constructor = getFirstConstructorWithBody(node); - return !!constructor && childIsDecorated(constructor, node); + return !!constructor && childIsDecorated(useLegacyDecorators, constructor, node); +} +function classElementOrClassElementParameterIsDecorated(useLegacyDecorators, node, parent2) { + let parameters; + if (isAccessor(node)) { + const { firstAccessor, secondAccessor, setAccessor } = getAllAccessorDeclarations(parent2.members, node); + const firstAccessorWithDecorators = hasDecorators(firstAccessor) ? firstAccessor : secondAccessor && hasDecorators(secondAccessor) ? secondAccessor : void 0; + if (!firstAccessorWithDecorators || node !== firstAccessorWithDecorators) { + return false; + } + parameters = setAccessor == null ? void 0 : setAccessor.parameters; + } else if (isMethodDeclaration(node)) { + parameters = node.parameters; + } + if (nodeIsDecorated(useLegacyDecorators, node, parent2)) { + return true; + } + if (parameters) { + for (const parameter of parameters) { + if (parameterIsThisKeyword(parameter)) + continue; + if (nodeIsDecorated(useLegacyDecorators, parameter, node, parent2)) + return true; + } + } + return false; +} +function isEmptyStringLiteral(node) { + if (node.textSourceNode) { + switch (node.textSourceNode.kind) { + case 10 /* StringLiteral */: + return isEmptyStringLiteral(node.textSourceNode); + case 14 /* NoSubstitutionTemplateLiteral */: + return node.text === ""; + } + return false; + } + return node.text === ""; } function isJSXTagName(node) { const { parent: parent2 } = node; @@ -16865,6 +16773,9 @@ function isVariableDeclarationInitializedToBareOrAccessedRequire(node) { true ); } +function isBindingElementOfBareOrAccessedRequire(node) { + return isBindingElement(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node.parent.parent); +} function isVariableDeclarationInitializedWithRequireHelper(node, allowAccessedRequire) { return isVariableDeclaration(node) && !!node.initializer && isRequireCall( allowAccessedRequire ? getLeftmostAccessExpression(node.initializer) : node.initializer, @@ -17109,7 +17020,7 @@ function isSpecialPropertyDeclaration(expr) { } function setValueDeclaration(symbol, node) { const { valueDeclaration } = symbol; - if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { + if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !isInJSFile(node) && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { symbol.valueDeclaration = node; } } @@ -17124,6 +17035,7 @@ function tryGetModuleSpecifierFromDeclaration(node) { var _a2, _b; switch (node.kind) { case 257 /* VariableDeclaration */: + case 205 /* BindingElement */: return (_a2 = findAncestor(node.initializer, (node2) => isRequireCall( node2, /*requireStringLiteralLikeArgument*/ @@ -17133,6 +17045,14 @@ function tryGetModuleSpecifierFromDeclaration(node) { return tryCast(node.moduleSpecifier, isStringLiteralLike); case 268 /* ImportEqualsDeclaration */: return tryCast((_b = tryCast(node.moduleReference, isExternalModuleReference)) == null ? void 0 : _b.expression, isStringLiteralLike); + case 270 /* ImportClause */: + case 277 /* NamespaceExport */: + return tryCast(node.parent.moduleSpecifier, isStringLiteralLike); + case 271 /* NamespaceImport */: + case 278 /* ExportSpecifier */: + return tryCast(node.parent.parent.moduleSpecifier, isStringLiteralLike); + case 273 /* ImportSpecifier */: + return tryCast(node.parent.parent.parent.moduleSpecifier, isStringLiteralLike); default: Debug.assertNever(node); } @@ -17378,7 +17298,7 @@ function filterOwnedJSDocTags(hostNode, jsDoc) { return ownsJSDocTag(hostNode, jsDoc) ? [jsDoc] : void 0; } function ownsJSDocTag(hostNode, tag) { - return !isJSDocTypeTag(tag) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; + return !(isJSDocTypeTag(tag) || isJSDocSatisfiesTag(tag)) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; } function getNextJSDocCommentLocation(node) { const parent2 = node.parent; @@ -17728,7 +17648,8 @@ function isStringAKeyword(name) { const token = stringToToken(name); return token !== void 0 && isKeyword(token); } -function isIdentifierANonContextualKeyword({ originalKeywordKind }) { +function isIdentifierANonContextualKeyword(node) { + const originalKeywordKind = identifierToKeywordKind(node); return !!originalKeywordKind && !isContextualKeyword(originalKeywordKind); } function isTrivia(token) { @@ -17847,6 +17768,72 @@ function isPrivateIdentifierSymbol(symbol) { function isESSymbolIdentifier(node) { return node.kind === 79 /* Identifier */ && node.escapedText === "Symbol"; } +function isProtoSetter(node) { + return isIdentifier(node) ? idText(node) === "__proto__" : isStringLiteral(node) && node.text === "__proto__"; +} +function isAnonymousFunctionDefinition(node, cb) { + node = skipOuterExpressions(node); + switch (node.kind) { + case 228 /* ClassExpression */: + case 215 /* FunctionExpression */: + if (node.name) { + return false; + } + break; + case 216 /* ArrowFunction */: + break; + default: + return false; + } + return typeof cb === "function" ? cb(node) : true; +} +function isNamedEvaluationSource(node) { + switch (node.kind) { + case 299 /* PropertyAssignment */: + return !isProtoSetter(node.name); + case 300 /* ShorthandPropertyAssignment */: + return !!node.objectAssignmentInitializer; + case 257 /* VariableDeclaration */: + return isIdentifier(node.name) && !!node.initializer; + case 166 /* Parameter */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 205 /* BindingElement */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 169 /* PropertyDeclaration */: + return !!node.initializer; + case 223 /* BinaryExpression */: + switch (node.operatorToken.kind) { + case 63 /* EqualsToken */: + case 76 /* AmpersandAmpersandEqualsToken */: + case 75 /* BarBarEqualsToken */: + case 77 /* QuestionQuestionEqualsToken */: + return isIdentifier(node.left); + } + break; + case 274 /* ExportAssignment */: + return true; + } + return false; +} +function isNamedEvaluation(node, cb) { + if (!isNamedEvaluationSource(node)) + return false; + switch (node.kind) { + case 299 /* PropertyAssignment */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 300 /* ShorthandPropertyAssignment */: + return isAnonymousFunctionDefinition(node.objectAssignmentInitializer, cb); + case 257 /* VariableDeclaration */: + case 166 /* Parameter */: + case 205 /* BindingElement */: + case 169 /* PropertyDeclaration */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 223 /* BinaryExpression */: + return isAnonymousFunctionDefinition(node.right, cb); + case 274 /* ExportAssignment */: + return isAnonymousFunctionDefinition(node.expression, cb); + } +} function isPushOrUnshiftIdentifier(node) { return node.escapedText === "push" || node.escapedText === "unshift"; } @@ -17960,7 +17947,7 @@ var OperatorPrecedence = /* @__PURE__ */ ((OperatorPrecedence2) => { })(OperatorPrecedence || {}); function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return 0 /* Comma */; case 227 /* SpreadElement */: return 1 /* Spread */; @@ -18600,7 +18587,7 @@ function isThisInTypeQuery(node) { return node.parent.kind === 183 /* TypeQuery */; } function identifierIsThisKeyword(id) { - return id.originalKeywordKind === 108 /* ThisKeyword */; + return id.escapedText === "this"; } function getAllAccessorDeclarations(declarations, accessor) { let firstAccessor; @@ -18911,7 +18898,7 @@ function getEffectiveModifierFlagsNoCache(node) { } function getSyntacticModifierFlagsNoCache(node) { let flags = canHaveModifiers(node) ? modifiersToFlags(node.modifiers) : 0 /* None */; - if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.isInJSDocNamespace) { + if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { flags |= 1 /* Export */; } return flags; @@ -18962,14 +18949,23 @@ function modifierToFlag(token) { } return 0 /* None */; } +function isBinaryLogicalOperator(token) { + return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */; +} function isLogicalOperator(token) { - return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */ || token === 53 /* ExclamationToken */; + return isBinaryLogicalOperator(token) || token === 53 /* ExclamationToken */; } function isLogicalOrCoalescingAssignmentOperator(token) { return token === 75 /* BarBarEqualsToken */ || token === 76 /* AmpersandAmpersandEqualsToken */ || token === 77 /* QuestionQuestionEqualsToken */; } function isLogicalOrCoalescingAssignmentExpression(expr) { - return isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + return isBinaryExpression(expr) && isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); +} +function isLogicalOrCoalescingBinaryOperator(token) { + return isBinaryLogicalOperator(token) || token === 60 /* QuestionQuestionToken */; +} +function isLogicalOrCoalescingBinaryExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingBinaryOperator(expr.operatorToken.kind); } function isAssignmentOperator(token) { return token >= 63 /* FirstAssignment */ && token <= 78 /* LastAssignment */; @@ -19209,14 +19205,14 @@ function directoryProbablyExists(directoryName, host) { } var carriageReturnLineFeed = "\r\n"; var lineFeed = "\n"; -function getNewLineCharacter(options, getNewLine) { +function getNewLineCharacter(options) { switch (options.newLine) { case 0 /* CarriageReturnLineFeed */: return carriageReturnLineFeed; case 1 /* LineFeed */: + case void 0: return lineFeed; } - return getNewLine ? getNewLine() : sys ? sys.newLine : carriageReturnLineFeed; } function createRange(pos, end = pos) { Debug.assert(end >= pos || end === -1); @@ -19233,6 +19229,9 @@ function moveRangePastDecorators(node) { return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? moveRangePos(node, lastDecorator.end) : node; } function moveRangePastModifiers(node) { + if (isPropertyDeclaration(node) || isMethodDeclaration(node)) { + return moveRangePos(node, node.name.pos); + } const lastModifier = canHaveModifiers(node) ? lastOrUndefined(node.modifiers) : void 0; return lastModifier && !positionIsSynthesized(lastModifier.end) ? moveRangePos(node, lastModifier.end) : moveRangePastDecorators(node); } @@ -19346,7 +19345,7 @@ function getInitializedVariables(node) { return filter(node.declarations, isInitializedVariable); } function isInitializedVariable(node) { - return node.initializer !== void 0; + return isVariableDeclaration(node) && node.initializer !== void 0; } function isWatchSet(options) { return options.watch && hasProperty(options, "watch"); @@ -19533,7 +19532,7 @@ function isObjectTypeDeclaration(node) { return isClassLike(node) || isInterfaceDeclaration(node) || isTypeLiteralNode(node); } function isTypeNodeKind(kind) { - return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; + return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 139 /* IntrinsicKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; } function isAccessExpression(node) { return node.kind === 208 /* PropertyAccessExpression */ || node.kind === 209 /* ElementAccessExpression */; @@ -19615,7 +19614,7 @@ function getLeftmostExpression(node, stopAtCallExpressions) { case 209 /* ElementAccessExpression */: case 208 /* PropertyAccessExpression */: case 232 /* NonNullExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: node = node.expression; continue; @@ -19683,7 +19682,6 @@ function Identifier2(kind, pos, end) { this.parent = void 0; this.original = void 0; this.emitNode = void 0; - this.flowNode = void 0; } function SourceMapSource(fileName, text, skipTrivia2) { this.fileName = fileName; @@ -19701,8 +19699,14 @@ var objectAllocator = { getSignatureConstructor: () => Signature2, getSourceMapSourceConstructor: () => SourceMapSource }; +var objectAllocatorPatchers = []; +function addObjectAllocatorPatcher(fn) { + objectAllocatorPatchers.push(fn); + fn(objectAllocator); +} function setObjectAllocator(alloc) { Object.assign(objectAllocator, alloc); + forEach(objectAllocatorPatchers, (fn) => fn(objectAllocator)); } function formatStringFromArgs(text, args, baseIndex = 0) { return text.replace(/{(\d+)}/g, (_match, index) => "" + Debug.checkDefined(args[+index + baseIndex])); @@ -19989,6 +19993,12 @@ function hasJsonModuleEmitEnabled(options) { return false; } } +function getIsolatedModules(options) { + return !!(options.isolatedModules || options.verbatimModuleSyntax); +} +function importNameElisionDisabled(options) { + return options.verbatimModuleSyntax || options.isolatedModules && options.preserveValueImports; +} function unreachableCodeIsError(options) { return options.allowUnreachableCode === false; } @@ -20906,7 +20916,7 @@ function getContainingNodeArray(node) { return node.parent.templateSpans; case 167 /* Decorator */: { const { parent: parent4 } = node; - return canHaveDecorators(parent4) ? parent4.modifiers : canHaveIllegalDecorators(parent4) ? parent4.illegalDecorators : void 0; + return canHaveDecorators(parent4) ? parent4.modifiers : void 0; } case 294 /* HeritageClause */: return node.parent.heritageClauses; @@ -20924,7 +20934,7 @@ function getContainingNodeArray(node) { return parent2.types; case 186 /* TupleType */: case 206 /* ArrayLiteralExpression */: - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: case 272 /* NamedImports */: case 276 /* NamedExports */: return parent2.elements; @@ -21109,6 +21119,16 @@ function isNonNullAccess(node) { const kind = node.kind; return (kind === 208 /* PropertyAccessExpression */ || kind === 209 /* ElementAccessExpression */) && isNonNullExpression(node.expression); } +function isJSDocSatisfiesExpression(node) { + return isInJSFile(node) && isParenthesizedExpression(node) && hasJSDocNodes(node) && !!getJSDocSatisfiesTag(node); +} +function getJSDocSatisfiesExpressionType(node) { + return Debug.checkDefined(tryGetJSDocSatisfiesTypeNode(node)); +} +function tryGetJSDocSatisfiesTypeNode(node) { + const tag = getJSDocSatisfiesTag(node); + return tag && tag.typeExpression && tag.typeExpression.type; +} // src/compiler/factory/baseNodeFactory.ts function createBaseNodeFactory() { @@ -21574,7 +21594,7 @@ function createNodeConverters(factory2) { if (!node.body) return Debug.fail(`Cannot convert a FunctionDeclaration without a body`); const updated = factory2.createFunctionExpression( - node.modifiers, + getModifiers(node), node.asteriskToken, node.name, node.typeParameters, @@ -21716,46 +21736,45 @@ function createNodeFactory(flags, baseFactory2) { }, baseFactory: baseFactory2, flags, - createNodeArray: createNodeArray2, - createNumericLiteral: createNumericLiteral2, - createBigIntLiteral: createBigIntLiteral2, - createStringLiteral: createStringLiteral2, - createStringLiteralFromNode: createStringLiteralFromNode2, - createRegularExpressionLiteral: createRegularExpressionLiteral2, + createNodeArray, + createNumericLiteral, + createBigIntLiteral, + createStringLiteral, + createStringLiteralFromNode, + createRegularExpressionLiteral, createLiteralLikeNode, - createIdentifier: createIdentifier3, - updateIdentifier, - createTempVariable: createTempVariable3, - createLoopVariable: createLoopVariable2, - createUniqueName: createUniqueName2, - getGeneratedNameForNode: getGeneratedNameForNode3, - createPrivateIdentifier: createPrivateIdentifier2, + createIdentifier, + createTempVariable, + createLoopVariable, + createUniqueName, + getGeneratedNameForNode, + createPrivateIdentifier, createUniquePrivateName, getGeneratedPrivateNameForNode, - createToken: createToken3, - createSuper: createSuper2, - createThis: createThis2, - createNull: createNull2, - createTrue: createTrue2, - createFalse: createFalse2, - createModifier: createModifier2, - createModifiersFromModifierFlags: createModifiersFromModifierFlags2, - createQualifiedName: createQualifiedName2, - updateQualifiedName: updateQualifiedName2, - createComputedPropertyName: createComputedPropertyName2, - updateComputedPropertyName: updateComputedPropertyName2, - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2, + createToken, + createSuper, + createThis, + createNull, + createTrue, + createFalse, + createModifier, + createModifiersFromModifierFlags, + createQualifiedName, + updateQualifiedName, + createComputedPropertyName, + updateComputedPropertyName, + createTypeParameterDeclaration, + updateTypeParameterDeclaration, createParameterDeclaration, updateParameterDeclaration, - createDecorator: createDecorator2, - updateDecorator: updateDecorator2, - createPropertySignature: createPropertySignature3, - updatePropertySignature: updatePropertySignature3, + createDecorator, + updateDecorator, + createPropertySignature, + updatePropertySignature, createPropertyDeclaration, updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodSignature: createMethodSignature3, - updateMethodSignature: updateMethodSignature3, + createMethodSignature, + updateMethodSignature, createMethodDeclaration, updateMethodDeclaration, createConstructorDeclaration, @@ -21764,96 +21783,96 @@ function createNodeFactory(flags, baseFactory2) { updateGetAccessorDeclaration, createSetAccessorDeclaration, updateSetAccessorDeclaration, - createCallSignature: createCallSignature2, - updateCallSignature: updateCallSignature2, - createConstructSignature: createConstructSignature2, - updateConstructSignature: updateConstructSignature2, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, + createCallSignature, + updateCallSignature, + createConstructSignature, + updateConstructSignature, + createIndexSignature, + updateIndexSignature, createClassStaticBlockDeclaration, updateClassStaticBlockDeclaration, createTemplateLiteralTypeSpan, updateTemplateLiteralTypeSpan, - createKeywordTypeNode: createKeywordTypeNode2, - createTypePredicateNode: createTypePredicateNode3, - updateTypePredicateNode: updateTypePredicateNode3, - createTypeReferenceNode: createTypeReferenceNode2, - updateTypeReferenceNode: updateTypeReferenceNode2, - createFunctionTypeNode: createFunctionTypeNode2, - updateFunctionTypeNode: updateFunctionTypeNode2, - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2, - createTypeQueryNode: createTypeQueryNode2, - updateTypeQueryNode: updateTypeQueryNode2, - createTypeLiteralNode: createTypeLiteralNode2, - updateTypeLiteralNode: updateTypeLiteralNode2, - createArrayTypeNode: createArrayTypeNode2, - updateArrayTypeNode: updateArrayTypeNode2, - createTupleTypeNode: createTupleTypeNode2, - updateTupleTypeNode: updateTupleTypeNode2, + createKeywordTypeNode, + createTypePredicateNode, + updateTypePredicateNode, + createTypeReferenceNode, + updateTypeReferenceNode, + createFunctionTypeNode, + updateFunctionTypeNode, + createConstructorTypeNode, + updateConstructorTypeNode, + createTypeQueryNode, + updateTypeQueryNode, + createTypeLiteralNode, + updateTypeLiteralNode, + createArrayTypeNode, + updateArrayTypeNode, + createTupleTypeNode, + updateTupleTypeNode, createNamedTupleMember, updateNamedTupleMember, - createOptionalTypeNode: createOptionalTypeNode2, - updateOptionalTypeNode: updateOptionalTypeNode2, - createRestTypeNode: createRestTypeNode2, - updateRestTypeNode: updateRestTypeNode2, - createUnionTypeNode: createUnionTypeNode2, - updateUnionTypeNode: updateUnionTypeNode2, - createIntersectionTypeNode: createIntersectionTypeNode2, - updateIntersectionTypeNode: updateIntersectionTypeNode2, - createConditionalTypeNode: createConditionalTypeNode2, - updateConditionalTypeNode: updateConditionalTypeNode2, - createInferTypeNode: createInferTypeNode2, - updateInferTypeNode: updateInferTypeNode2, - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2, - createParenthesizedType: createParenthesizedType2, - updateParenthesizedType: updateParenthesizedType2, - createThisTypeNode: createThisTypeNode2, - createTypeOperatorNode: createTypeOperatorNode3, - updateTypeOperatorNode: updateTypeOperatorNode2, - createIndexedAccessTypeNode: createIndexedAccessTypeNode2, - updateIndexedAccessTypeNode: updateIndexedAccessTypeNode2, - createMappedTypeNode: createMappedTypeNode2, - updateMappedTypeNode: updateMappedTypeNode2, - createLiteralTypeNode: createLiteralTypeNode2, - updateLiteralTypeNode: updateLiteralTypeNode2, + createOptionalTypeNode, + updateOptionalTypeNode, + createRestTypeNode, + updateRestTypeNode, + createUnionTypeNode, + updateUnionTypeNode, + createIntersectionTypeNode, + updateIntersectionTypeNode, + createConditionalTypeNode, + updateConditionalTypeNode, + createInferTypeNode, + updateInferTypeNode, + createImportTypeNode, + updateImportTypeNode, + createParenthesizedType, + updateParenthesizedType, + createThisTypeNode, + createTypeOperatorNode, + updateTypeOperatorNode, + createIndexedAccessTypeNode, + updateIndexedAccessTypeNode, + createMappedTypeNode, + updateMappedTypeNode, + createLiteralTypeNode, + updateLiteralTypeNode, createTemplateLiteralType, updateTemplateLiteralType, - createObjectBindingPattern: createObjectBindingPattern2, - updateObjectBindingPattern: updateObjectBindingPattern2, - createArrayBindingPattern: createArrayBindingPattern2, - updateArrayBindingPattern: updateArrayBindingPattern2, - createBindingElement: createBindingElement2, - updateBindingElement: updateBindingElement2, + createObjectBindingPattern, + updateObjectBindingPattern, + createArrayBindingPattern, + updateArrayBindingPattern, + createBindingElement, + updateBindingElement, createArrayLiteralExpression, updateArrayLiteralExpression, createObjectLiteralExpression, updateObjectLiteralExpression, createPropertyAccessExpression: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, name) => setEmitFlags(createPropertyAccessExpression(expression, name), 262144 /* NoIndentation */) : createPropertyAccessExpression, updatePropertyAccessExpression, - createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain2(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain2, - updatePropertyAccessChain: updatePropertyAccessChain2, + createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain, + updatePropertyAccessChain, createElementAccessExpression, updateElementAccessExpression, - createElementAccessChain: createElementAccessChain2, - updateElementAccessChain: updateElementAccessChain2, + createElementAccessChain, + updateElementAccessChain, createCallExpression, updateCallExpression, - createCallChain: createCallChain2, - updateCallChain: updateCallChain2, + createCallChain, + updateCallChain, createNewExpression, updateNewExpression, createTaggedTemplateExpression, updateTaggedTemplateExpression, - createTypeAssertion: createTypeAssertion2, - updateTypeAssertion: updateTypeAssertion2, + createTypeAssertion, + updateTypeAssertion, createParenthesizedExpression, updateParenthesizedExpression, - createFunctionExpression: createFunctionExpression2, - updateFunctionExpression: updateFunctionExpression2, - createArrowFunction: createArrowFunction3, - updateArrowFunction: updateArrowFunction3, + createFunctionExpression, + updateFunctionExpression, + createArrowFunction, + updateArrowFunction, createDeleteExpression, updateDeleteExpression, createTypeOfExpression, @@ -21870,42 +21889,42 @@ function createNodeFactory(flags, baseFactory2) { updateBinaryExpression, createConditionalExpression, updateConditionalExpression, - createTemplateExpression: createTemplateExpression2, - updateTemplateExpression: updateTemplateExpression2, - createTemplateHead: createTemplateHead2, - createTemplateMiddle: createTemplateMiddle2, - createTemplateTail: createTemplateTail2, - createNoSubstitutionTemplateLiteral: createNoSubstitutionTemplateLiteral2, + createTemplateExpression, + updateTemplateExpression, + createTemplateHead, + createTemplateMiddle, + createTemplateTail, + createNoSubstitutionTemplateLiteral, createTemplateLiteralLikeNode, createYieldExpression, updateYieldExpression, createSpreadElement, updateSpreadElement, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createOmittedExpression: createOmittedExpression2, - createExpressionWithTypeArguments: createExpressionWithTypeArguments3, - updateExpressionWithTypeArguments: updateExpressionWithTypeArguments3, - createAsExpression: createAsExpression2, - updateAsExpression: updateAsExpression2, - createNonNullExpression: createNonNullExpression2, - updateNonNullExpression: updateNonNullExpression2, + createClassExpression, + updateClassExpression, + createOmittedExpression, + createExpressionWithTypeArguments, + updateExpressionWithTypeArguments, + createAsExpression, + updateAsExpression, + createNonNullExpression, + updateNonNullExpression, createSatisfiesExpression, updateSatisfiesExpression, - createNonNullChain: createNonNullChain2, - updateNonNullChain: updateNonNullChain2, - createMetaProperty: createMetaProperty2, - updateMetaProperty: updateMetaProperty2, - createTemplateSpan: createTemplateSpan2, - updateTemplateSpan: updateTemplateSpan2, - createSemicolonClassElement: createSemicolonClassElement2, - createBlock: createBlock2, - updateBlock: updateBlock2, - createVariableStatement: createVariableStatement2, - updateVariableStatement: updateVariableStatement2, - createEmptyStatement: createEmptyStatement2, - createExpressionStatement: createExpressionStatement2, - updateExpressionStatement: updateExpressionStatement2, + createNonNullChain, + updateNonNullChain, + createMetaProperty, + updateMetaProperty, + createTemplateSpan, + updateTemplateSpan, + createSemicolonClassElement, + createBlock, + updateBlock, + createVariableStatement, + updateVariableStatement, + createEmptyStatement, + createExpressionStatement, + updateExpressionStatement, createIfStatement, updateIfStatement, createDoStatement, @@ -21934,60 +21953,60 @@ function createNodeFactory(flags, baseFactory2) { updateThrowStatement, createTryStatement, updateTryStatement, - createDebuggerStatement: createDebuggerStatement2, - createVariableDeclaration: createVariableDeclaration3, - updateVariableDeclaration: updateVariableDeclaration3, - createVariableDeclarationList: createVariableDeclarationList2, - updateVariableDeclarationList: updateVariableDeclarationList2, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createModuleBlock: createModuleBlock2, - updateModuleBlock: updateModuleBlock2, - createCaseBlock: createCaseBlock2, - updateCaseBlock: updateCaseBlock2, - createNamespaceExportDeclaration: createNamespaceExportDeclaration2, - updateNamespaceExportDeclaration: updateNamespaceExportDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createImportClause: createImportClause3, - updateImportClause: updateImportClause3, + createDebuggerStatement, + createVariableDeclaration, + updateVariableDeclaration, + createVariableDeclarationList, + updateVariableDeclarationList, + createFunctionDeclaration, + updateFunctionDeclaration, + createClassDeclaration, + updateClassDeclaration, + createInterfaceDeclaration, + updateInterfaceDeclaration, + createTypeAliasDeclaration, + updateTypeAliasDeclaration, + createEnumDeclaration, + updateEnumDeclaration, + createModuleDeclaration, + updateModuleDeclaration, + createModuleBlock, + updateModuleBlock, + createCaseBlock, + updateCaseBlock, + createNamespaceExportDeclaration, + updateNamespaceExportDeclaration, + createImportEqualsDeclaration, + updateImportEqualsDeclaration, + createImportDeclaration, + updateImportDeclaration, + createImportClause, + updateImportClause, createAssertClause, updateAssertClause, createAssertEntry, updateAssertEntry, createImportTypeAssertionContainer, updateImportTypeAssertionContainer, - createNamespaceImport: createNamespaceImport2, - updateNamespaceImport: updateNamespaceImport2, - createNamespaceExport: createNamespaceExport2, - updateNamespaceExport: updateNamespaceExport2, - createNamedImports: createNamedImports2, - updateNamedImports: updateNamedImports2, - createImportSpecifier: createImportSpecifier2, - updateImportSpecifier: updateImportSpecifier2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3, - createNamedExports: createNamedExports2, - updateNamedExports: updateNamedExports2, - createExportSpecifier: createExportSpecifier2, - updateExportSpecifier: updateExportSpecifier2, + createNamespaceImport, + updateNamespaceImport, + createNamespaceExport, + updateNamespaceExport, + createNamedImports, + updateNamedImports, + createImportSpecifier, + updateImportSpecifier, + createExportAssignment: createExportAssignment2, + updateExportAssignment, + createExportDeclaration, + updateExportDeclaration, + createNamedExports, + updateNamedExports, + createExportSpecifier, + updateExportSpecifier, createMissingDeclaration, - createExternalModuleReference: createExternalModuleReference2, - updateExternalModuleReference: updateExternalModuleReference2, + createExternalModuleReference, + updateExternalModuleReference, // lazily load factory members for JSDoc types with similar structure get createJSDocAllType() { return getJSDocPrimaryTypeCreateFunction(315 /* JSDocAllType */); @@ -22027,27 +22046,27 @@ function createNodeFactory(flags, baseFactory2) { }, createJSDocFunctionType, updateJSDocFunctionType, - createJSDocTypeLiteral: createJSDocTypeLiteral2, + createJSDocTypeLiteral, updateJSDocTypeLiteral, - createJSDocTypeExpression: createJSDocTypeExpression2, + createJSDocTypeExpression, updateJSDocTypeExpression, - createJSDocSignature: createJSDocSignature2, + createJSDocSignature, updateJSDocSignature, - createJSDocTemplateTag: createJSDocTemplateTag2, + createJSDocTemplateTag, updateJSDocTemplateTag, - createJSDocTypedefTag: createJSDocTypedefTag2, + createJSDocTypedefTag, updateJSDocTypedefTag, - createJSDocParameterTag: createJSDocParameterTag2, + createJSDocParameterTag, updateJSDocParameterTag, - createJSDocPropertyTag: createJSDocPropertyTag2, + createJSDocPropertyTag, updateJSDocPropertyTag, - createJSDocCallbackTag: createJSDocCallbackTag2, + createJSDocCallbackTag, updateJSDocCallbackTag, createJSDocOverloadTag, updateJSDocOverloadTag, - createJSDocAugmentsTag: createJSDocAugmentsTag2, + createJSDocAugmentsTag, updateJSDocAugmentsTag, - createJSDocImplementsTag: createJSDocImplementsTag2, + createJSDocImplementsTag, updateJSDocImplementsTag, createJSDocSeeTag, updateJSDocSeeTag, @@ -22134,57 +22153,63 @@ function createNodeFactory(flags, baseFactory2) { get updateJSDocThrowsTag() { return getJSDocTypeLikeTagUpdateFunction(352 /* JSDocThrowsTag */); }, - createJSDocEnumTag: createJSDocEnumTag2, + get createJSDocSatisfiesTag() { + return getJSDocTypeLikeTagCreateFunction(353 /* JSDocSatisfiesTag */); + }, + get updateJSDocSatisfiesTag() { + return getJSDocTypeLikeTagUpdateFunction(353 /* JSDocSatisfiesTag */); + }, + createJSDocEnumTag, updateJSDocEnumTag, createJSDocUnknownTag, updateJSDocUnknownTag, createJSDocText, updateJSDocText, - createJSDocComment: createJSDocComment2, + createJSDocComment, updateJSDocComment, - createJsxElement: createJsxElement2, - updateJsxElement: updateJsxElement2, - createJsxSelfClosingElement: createJsxSelfClosingElement2, - updateJsxSelfClosingElement: updateJsxSelfClosingElement2, - createJsxOpeningElement: createJsxOpeningElement2, - updateJsxOpeningElement: updateJsxOpeningElement2, - createJsxClosingElement: createJsxClosingElement2, - updateJsxClosingElement: updateJsxClosingElement2, - createJsxFragment: createJsxFragment2, - createJsxText: createJsxText2, - updateJsxText: updateJsxText2, - createJsxOpeningFragment: createJsxOpeningFragment2, - createJsxJsxClosingFragment: createJsxJsxClosingFragment2, - updateJsxFragment: updateJsxFragment2, - createJsxAttribute: createJsxAttribute2, - updateJsxAttribute: updateJsxAttribute2, - createJsxAttributes: createJsxAttributes2, - updateJsxAttributes: updateJsxAttributes2, - createJsxSpreadAttribute: createJsxSpreadAttribute2, - updateJsxSpreadAttribute: updateJsxSpreadAttribute2, - createJsxExpression: createJsxExpression2, - updateJsxExpression: updateJsxExpression2, - createCaseClause: createCaseClause2, - updateCaseClause: updateCaseClause2, - createDefaultClause: createDefaultClause2, - updateDefaultClause: updateDefaultClause2, - createHeritageClause: createHeritageClause2, - updateHeritageClause: updateHeritageClause2, - createCatchClause: createCatchClause2, - updateCatchClause: updateCatchClause2, - createPropertyAssignment: createPropertyAssignment2, - updatePropertyAssignment: updatePropertyAssignment2, - createShorthandPropertyAssignment: createShorthandPropertyAssignment2, - updateShorthandPropertyAssignment: updateShorthandPropertyAssignment2, - createSpreadAssignment: createSpreadAssignment2, - updateSpreadAssignment: updateSpreadAssignment2, - createEnumMember: createEnumMember2, - updateEnumMember: updateEnumMember2, + createJsxElement, + updateJsxElement, + createJsxSelfClosingElement, + updateJsxSelfClosingElement, + createJsxOpeningElement, + updateJsxOpeningElement, + createJsxClosingElement, + updateJsxClosingElement, + createJsxFragment, + createJsxText, + updateJsxText, + createJsxOpeningFragment, + createJsxJsxClosingFragment, + updateJsxFragment, + createJsxAttribute, + updateJsxAttribute, + createJsxAttributes, + updateJsxAttributes, + createJsxSpreadAttribute, + updateJsxSpreadAttribute, + createJsxExpression, + updateJsxExpression, + createCaseClause, + updateCaseClause, + createDefaultClause, + updateDefaultClause, + createHeritageClause, + updateHeritageClause, + createCatchClause, + updateCatchClause, + createPropertyAssignment, + updatePropertyAssignment, + createShorthandPropertyAssignment, + updateShorthandPropertyAssignment, + createSpreadAssignment, + updateSpreadAssignment, + createEnumMember, + updateEnumMember, createSourceFile: createSourceFile2, updateSourceFile: updateSourceFile2, createRedirectedSourceFile, - createBundle: createBundle2, - updateBundle: updateBundle2, + createBundle, + updateBundle, createUnparsedSource, createUnparsedPrologue, createUnparsedPrepend, @@ -22193,9 +22218,9 @@ function createNodeFactory(flags, baseFactory2) { createInputFiles: createInputFiles2, createSyntheticExpression, createSyntaxList: createSyntaxList3, - createNotEmittedStatement: createNotEmittedStatement2, - createPartiallyEmittedExpression: createPartiallyEmittedExpression2, - updatePartiallyEmittedExpression: updatePartiallyEmittedExpression2, + createNotEmittedStatement, + createPartiallyEmittedExpression, + updatePartiallyEmittedExpression, createCommaListExpression, updateCommaListExpression, createEndOfDeclarationMarker, @@ -22301,11 +22326,11 @@ function createNodeFactory(flags, baseFactory2) { return getPostfixUnaryCreateFunction(46 /* MinusMinusToken */); }, // Compound nodes - createImmediatelyInvokedFunctionExpression: createImmediatelyInvokedFunctionExpression2, - createImmediatelyInvokedArrowFunction: createImmediatelyInvokedArrowFunction2, - createVoidZero: createVoidZero2, - createExportDefault: createExportDefault2, - createExternalModuleExport: createExternalModuleExport2, + createImmediatelyInvokedFunctionExpression, + createImmediatelyInvokedArrowFunction, + createVoidZero, + createExportDefault, + createExternalModuleExport, createTypeCheck, createMethodCall, createGlobalMethodCall, @@ -22315,6 +22340,7 @@ function createNodeFactory(flags, baseFactory2) { createArraySliceCall, createArrayConcatCall, createObjectDefinePropertyCall, + createObjectGetOwnPropertyDescriptorCall, createReflectGetCall, createReflectSetCall, createPropertyDescriptor, @@ -22341,7 +22367,7 @@ function createNodeFactory(flags, baseFactory2) { }; forEach(nodeFactoryPatchers, (fn) => fn(factory2)); return factory2; - function createNodeArray2(elements, hasTrailingComma) { + function createNodeArray(elements, hasTrailingComma) { if (elements === void 0 || elements === emptyArray) { elements = []; } else if (isNodeArray(elements)) { @@ -22385,7 +22411,7 @@ function createNodeFactory(flags, baseFactory2) { } return update(updated, original); } - function createNumericLiteral2(value, numericLiteralFlags = 0 /* None */) { + function createNumericLiteral(value, numericLiteralFlags = 0 /* None */) { const node = createBaseDeclaration(8 /* NumericLiteral */); node.text = typeof value === "number" ? value + "" : value; node.numericLiteralFlags = numericLiteralFlags; @@ -22393,7 +22419,7 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBigIntLiteral2(value) { + function createBigIntLiteral(value) { const node = createBaseToken(9 /* BigIntLiteral */); node.text = typeof value === "string" ? value : pseudoBigIntToString(value) + "n"; node.transformFlags |= 4 /* ContainsESNext */; @@ -22405,14 +22431,14 @@ function createNodeFactory(flags, baseFactory2) { node.singleQuote = isSingleQuote; return node; } - function createStringLiteral2(text, isSingleQuote, hasExtendedUnicodeEscape) { + function createStringLiteral(text, isSingleQuote, hasExtendedUnicodeEscape) { const node = createBaseStringLiteral(text, isSingleQuote); node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; if (hasExtendedUnicodeEscape) node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createStringLiteralFromNode2(sourceNode) { + function createStringLiteralFromNode(sourceNode) { const node = createBaseStringLiteral( getTextOfIdentifierOrLiteral(sourceNode), /*isSingleQuote*/ @@ -22421,7 +22447,7 @@ function createNodeFactory(flags, baseFactory2) { node.textSourceNode = sourceNode; return node; } - function createRegularExpressionLiteral2(text) { + function createRegularExpressionLiteral(text) { const node = createBaseToken(13 /* RegularExpressionLiteral */); node.text = text; return node; @@ -22429,33 +22455,33 @@ function createNodeFactory(flags, baseFactory2) { function createLiteralLikeNode(kind, text) { switch (kind) { case 8 /* NumericLiteral */: - return createNumericLiteral2( + return createNumericLiteral( text, /*numericLiteralFlags*/ 0 ); case 9 /* BigIntLiteral */: - return createBigIntLiteral2(text); + return createBigIntLiteral(text); case 10 /* StringLiteral */: - return createStringLiteral2( + return createStringLiteral( text, /*isSingleQuote*/ void 0 ); case 11 /* JsxText */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ false ); case 12 /* JsxTextAllWhiteSpaces */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ true ); case 13 /* RegularExpressionLiteral */: - return createRegularExpressionLiteral2(text); + return createRegularExpressionLiteral(text); case 14 /* NoSubstitutionTemplateLiteral */: return createTemplateLiteralLikeNode( kind, @@ -22467,56 +22493,44 @@ function createNodeFactory(flags, baseFactory2) { ); } } - function createBaseIdentifier(escapedText, originalKeywordKind) { + function createBaseIdentifier(escapedText) { const node = baseFactory2.createBaseIdentifierNode(79 /* Identifier */); - node.originalKeywordKind = originalKeywordKind; node.escapedText = escapedText; - node.autoGenerate = void 0; - node.typeArguments = void 0; - node.hasExtendedUnicodeEscape = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.symbol = void 0; return node; } function createBaseGeneratedIdentifier(text, autoGenerateFlags, prefix, suffix) { - const node = createBaseIdentifier( - escapeLeadingUnderscores(text), - /*originalKeywordKind*/ - void 0 - ); - node.autoGenerate = { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } - function createIdentifier3(text, typeArguments, originalKeywordKind, hasExtendedUnicodeEscape) { + function createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape) { if (originalKeywordKind === void 0 && text) { originalKeywordKind = stringToToken(text); } if (originalKeywordKind === 79 /* Identifier */) { originalKeywordKind = void 0; } - const node = createBaseIdentifier(escapeLeadingUnderscores(text), originalKeywordKind); - node.typeArguments = asNodeArray(typeArguments); - node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; - if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + if (hasExtendedUnicodeEscape) + node.flags |= 128 /* IdentifierHasExtendedUnicodeEscape */; + if (node.escapedText === "await") { node.transformFlags |= 67108864 /* ContainsPossibleTopLevelAwait */; } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { node.transformFlags |= 1024 /* ContainsES2015 */; } return node; } - function updateIdentifier(node, typeArguments) { - return node.typeArguments !== typeArguments ? update(createIdentifier3(idText(node), typeArguments), node) : node; - } - function createTempVariable3(recordTempVariable, reservedInNestedScopes, prefix, suffix) { + function createTempVariable(recordTempVariable, reservedInNestedScopes, prefix, suffix) { let flags2 = 1 /* Auto */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -22526,7 +22540,7 @@ function createNodeFactory(flags, baseFactory2) { } return name; } - function createLoopVariable2(reservedInNestedScopes) { + function createLoopVariable(reservedInNestedScopes) { let flags2 = 2 /* Loop */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -22539,12 +22553,12 @@ function createNodeFactory(flags, baseFactory2) { void 0 ); } - function createUniqueName2(text, flags2 = 0 /* None */, prefix, suffix) { + function createUniqueName(text, flags2 = 0 /* None */, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); Debug.assert((flags2 & (16 /* Optimistic */ | 32 /* FileLevel */)) !== 32 /* FileLevel */, "GeneratedIdentifierFlags.FileLevel cannot be set without also setting GeneratedIdentifierFlags.Optimistic"); return createBaseGeneratedIdentifier(text, 3 /* Unique */ | flags2, prefix, suffix); } - function getGeneratedNameForNode3(node, flags2 = 0, prefix, suffix) { + function getGeneratedNameForNode(node, flags2 = 0, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); const text = !node ? "" : isMemberName(node) ? formatGeneratedName( /*privateName*/ @@ -22563,23 +22577,22 @@ function createNodeFactory(flags, baseFactory2) { function createBasePrivateIdentifier(escapedText) { const node = baseFactory2.createBasePrivateIdentifierNode(80 /* PrivateIdentifier */); node.escapedText = escapedText; - node.autoGenerate = void 0; node.transformFlags |= 16777216 /* ContainsClassFields */; return node; } - function createPrivateIdentifier2(text) { + function createPrivateIdentifier(text) { if (!startsWith(text, "#")) Debug.fail("First character of private identifier must be #: " + text); return createBasePrivateIdentifier(escapeLeadingUnderscores(text)); } function createBaseGeneratedPrivateIdentifier(text, autoGenerateFlags, prefix, suffix) { const node = createBasePrivateIdentifier(escapeLeadingUnderscores(text)); - node.autoGenerate = { + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } @@ -22606,7 +22619,7 @@ function createNodeFactory(flags, baseFactory2) { function createBaseToken(kind) { return baseFactory2.createBaseTokenNode(kind); } - function createToken3(token) { + function createToken(token) { Debug.assert(token >= 0 /* FirstToken */ && token <= 162 /* LastToken */, "Invalid token"); Debug.assert(token <= 14 /* FirstTemplateToken */ || token >= 17 /* LastTemplateToken */, "Invalid token. Use 'createTemplateLiteralLikeNode' to create template literals."); Debug.assert(token <= 8 /* FirstLiteralToken */ || token >= 14 /* LastLiteralToken */, "Invalid token. Use 'createLiteralLikeNode' to create literals."); @@ -22660,59 +22673,59 @@ function createNodeFactory(flags, baseFactory2) { } return node; } - function createSuper2() { - return createToken3(106 /* SuperKeyword */); + function createSuper() { + return createToken(106 /* SuperKeyword */); } - function createThis2() { - return createToken3(108 /* ThisKeyword */); + function createThis() { + return createToken(108 /* ThisKeyword */); } - function createNull2() { - return createToken3(104 /* NullKeyword */); + function createNull() { + return createToken(104 /* NullKeyword */); } - function createTrue2() { - return createToken3(110 /* TrueKeyword */); + function createTrue() { + return createToken(110 /* TrueKeyword */); } - function createFalse2() { - return createToken3(95 /* FalseKeyword */); + function createFalse() { + return createToken(95 /* FalseKeyword */); } - function createModifier2(kind) { - return createToken3(kind); + function createModifier(kind) { + return createToken(kind); } - function createModifiersFromModifierFlags2(flags2) { + function createModifiersFromModifierFlags(flags2) { const result = []; if (flags2 & 1 /* Export */) - result.push(createModifier2(93 /* ExportKeyword */)); + result.push(createModifier(93 /* ExportKeyword */)); if (flags2 & 2 /* Ambient */) - result.push(createModifier2(136 /* DeclareKeyword */)); + result.push(createModifier(136 /* DeclareKeyword */)); if (flags2 & 1024 /* Default */) - result.push(createModifier2(88 /* DefaultKeyword */)); + result.push(createModifier(88 /* DefaultKeyword */)); if (flags2 & 2048 /* Const */) - result.push(createModifier2(85 /* ConstKeyword */)); + result.push(createModifier(85 /* ConstKeyword */)); if (flags2 & 4 /* Public */) - result.push(createModifier2(123 /* PublicKeyword */)); + result.push(createModifier(123 /* PublicKeyword */)); if (flags2 & 8 /* Private */) - result.push(createModifier2(121 /* PrivateKeyword */)); + result.push(createModifier(121 /* PrivateKeyword */)); if (flags2 & 16 /* Protected */) - result.push(createModifier2(122 /* ProtectedKeyword */)); + result.push(createModifier(122 /* ProtectedKeyword */)); if (flags2 & 256 /* Abstract */) - result.push(createModifier2(126 /* AbstractKeyword */)); + result.push(createModifier(126 /* AbstractKeyword */)); if (flags2 & 32 /* Static */) - result.push(createModifier2(124 /* StaticKeyword */)); + result.push(createModifier(124 /* StaticKeyword */)); if (flags2 & 16384 /* Override */) - result.push(createModifier2(161 /* OverrideKeyword */)); + result.push(createModifier(161 /* OverrideKeyword */)); if (flags2 & 64 /* Readonly */) - result.push(createModifier2(146 /* ReadonlyKeyword */)); + result.push(createModifier(146 /* ReadonlyKeyword */)); if (flags2 & 128 /* Accessor */) - result.push(createModifier2(127 /* AccessorKeyword */)); + result.push(createModifier(127 /* AccessorKeyword */)); if (flags2 & 512 /* Async */) - result.push(createModifier2(132 /* AsyncKeyword */)); + result.push(createModifier(132 /* AsyncKeyword */)); if (flags2 & 32768 /* In */) - result.push(createModifier2(101 /* InKeyword */)); + result.push(createModifier(101 /* InKeyword */)); if (flags2 & 65536 /* Out */) - result.push(createModifier2(145 /* OutKeyword */)); + result.push(createModifier(145 /* OutKeyword */)); return result.length ? result : void 0; } - function createQualifiedName2(left, right) { + function createQualifiedName(left, right) { const node = createBaseNode(163 /* QualifiedName */); node.left = left; node.right = asName(right); @@ -22720,19 +22733,19 @@ function createNodeFactory(flags, baseFactory2) { node.flowNode = void 0; return node; } - function updateQualifiedName2(node, left, right) { - return node.left !== left || node.right !== right ? update(createQualifiedName2(left, right), node) : node; + function updateQualifiedName(node, left, right) { + return node.left !== left || node.right !== right ? update(createQualifiedName(left, right), node) : node; } - function createComputedPropertyName2(expression) { + function createComputedPropertyName(expression) { const node = createBaseNode(164 /* ComputedPropertyName */); node.expression = parenthesizerRules().parenthesizeExpressionOfComputedPropertyName(expression); node.transformFlags |= propagateChildFlags(node.expression) | 1024 /* ContainsES2015 */ | 131072 /* ContainsComputedPropertyName */; return node; } - function updateComputedPropertyName2(node, expression) { - return node.expression !== expression ? update(createComputedPropertyName2(expression), node) : node; + function updateComputedPropertyName(node, expression) { + return node.expression !== expression ? update(createComputedPropertyName(expression), node) : node; } - function createTypeParameterDeclaration2(modifiers, name, constraint, defaultType) { + function createTypeParameterDeclaration(modifiers, name, constraint, defaultType) { const node = createBaseDeclaration(165 /* TypeParameter */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -22741,11 +22754,10 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.expression = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType) { - return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration2(modifiers, name, constraint, defaultType), node) : node; + function updateTypeParameterDeclaration(node, modifiers, name, constraint, defaultType) { + return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration(modifiers, name, constraint, defaultType), node) : node; } function createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) { var _a2, _b; @@ -22762,13 +22774,12 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.dotDotDotToken) | propagateNameFlags(node.name) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.initializer) | (((_a2 = node.questionToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */) | (((_b = node.dotDotDotToken) != null ? _b : node.initializer) ? 1024 /* ContainsES2015 */ : 0 /* None */) | (modifiersToFlags(node.modifiers) & 16476 /* ParameterPropertyModifier */ ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */); } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { return node.modifiers !== modifiers || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type || node.initializer !== initializer ? update(createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer), node) : node; } - function createDecorator2(expression) { + function createDecorator(expression) { const node = createBaseNode(167 /* Decorator */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -22778,10 +22789,10 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */ | 8192 /* ContainsTypeScriptClassSyntax */ | 33554432 /* ContainsDecorators */; return node; } - function updateDecorator2(node, expression) { - return node.expression !== expression ? update(createDecorator2(expression), node) : node; + function updateDecorator(node, expression) { + return node.expression !== expression ? update(createDecorator(expression), node) : node; } - function createPropertySignature3(modifiers, name, questionToken, type) { + function createPropertySignature(modifiers, name, questionToken, type) { const node = createBaseDeclaration(168 /* PropertySignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -22790,11 +22801,10 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.initializer = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertySignature3(node, modifiers, name, questionToken, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature3(modifiers, name, questionToken, type), node) : node; + function updatePropertySignature(node, modifiers, name, questionToken, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature(modifiers, name, questionToken, type), node) : node; } function finishUpdatePropertySignature(updated, original) { if (updated !== original) { @@ -22813,13 +22823,12 @@ function createNodeFactory(flags, baseFactory2) { const isAmbient = node.flags & 16777216 /* Ambient */ || modifiersToFlags(node.modifiers) & 2 /* Ambient */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (isAmbient || node.questionToken || node.exclamationToken || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isComputedPropertyName(node.name) || modifiersToFlags(node.modifiers) & 32 /* Static */ && node.initializer ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */) | 16777216 /* ContainsClassFields */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer) { return node.modifiers !== modifiers || node.name !== name || node.questionToken !== (questionOrExclamationToken !== void 0 && isQuestionToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.exclamationToken !== (questionOrExclamationToken !== void 0 && isExclamationToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.type !== type || node.initializer !== initializer ? update(createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer), node) : node; } - function createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type) { + function createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type) { const node = createBaseDeclaration(170 /* MethodSignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -22829,14 +22838,13 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateMethodSignature3(node, modifiers, name, questionToken, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; + function updateMethodSignature(node, modifiers, name, questionToken, typeParameters, parameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; } function createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { const node = createBaseDeclaration(171 /* MethodDeclaration */); @@ -22846,7 +22854,7 @@ function createNodeFactory(flags, baseFactory2) { node.questionToken = questionToken; node.exclamationToken = void 0; node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -22859,7 +22867,6 @@ function createNodeFactory(flags, baseFactory2) { } node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -22880,10 +22887,8 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(172 /* ClassStaticBlockDeclaration */); node.body = body; node.transformFlags = propagateChildFlags(body) | 16777216 /* ContainsClassFields */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -22895,7 +22900,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateClassStaticBlockDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -22903,15 +22907,13 @@ function createNodeFactory(flags, baseFactory2) { function createConstructorDeclaration(modifiers, parameters, body) { const node = createBaseDeclaration(173 /* Constructor */); node.modifiers = asNodeArray(modifiers); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | 1024 /* ContainsES2015 */; - node.illegalDecorators = void 0; node.typeParameters = void 0; node.type = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -22923,7 +22925,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateConstructorDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.typeParameters = original.typeParameters; updated.type = original.type; } @@ -22933,7 +22934,7 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(174 /* GetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -22944,7 +22945,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeArguments = void 0; node.typeParameters = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -22965,7 +22965,7 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(175 /* SetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; if (!node.body) { node.transformFlags = 1 /* ContainsTypeScript */; @@ -22976,7 +22976,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeParameters = void 0; node.type = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -22994,54 +22993,50 @@ function createNodeFactory(flags, baseFactory2) { } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createCallSignature2(typeParameters, parameters, type) { + function createCallSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(176 /* CallSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateCallSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature2(typeParameters, parameters, type), node) : node; + function updateCallSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature(typeParameters, parameters, type), node) : node; } - function createConstructSignature2(typeParameters, parameters, type) { + function createConstructSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(177 /* ConstructSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateConstructSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature2(typeParameters, parameters, type), node) : node; + function updateConstructSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature(typeParameters, parameters, type), node) : node; } - function createIndexSignature3(modifiers, parameters, type) { + function createIndexSignature(modifiers, parameters, type) { const node = createBaseDeclaration(178 /* IndexSignature */); node.modifiers = asNodeArray(modifiers); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateIndexSignature2(node, modifiers, parameters, type) { - return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature3(modifiers, parameters, type), node) : node; + function updateIndexSignature(node, modifiers, parameters, type) { + return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature(modifiers, parameters, type), node) : node; } function createTemplateLiteralTypeSpan(type, literal) { const node = createBaseNode(201 /* TemplateLiteralTypeSpan */); @@ -23053,10 +23048,10 @@ function createNodeFactory(flags, baseFactory2) { function updateTemplateLiteralTypeSpan(node, type, literal) { return node.type !== type || node.literal !== literal ? update(createTemplateLiteralTypeSpan(type, literal), node) : node; } - function createKeywordTypeNode2(kind) { - return createToken3(kind); + function createKeywordTypeNode(kind) { + return createToken(kind); } - function createTypePredicateNode3(assertsModifier, parameterName, type) { + function createTypePredicateNode(assertsModifier, parameterName, type) { const node = createBaseNode(179 /* TypePredicate */); node.assertsModifier = assertsModifier; node.parameterName = asName(parameterName); @@ -23064,20 +23059,20 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypePredicateNode3(node, assertsModifier, parameterName, type) { - return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode3(assertsModifier, parameterName, type), node) : node; + function updateTypePredicateNode(node, assertsModifier, parameterName, type) { + return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode(assertsModifier, parameterName, type), node) : node; } - function createTypeReferenceNode2(typeName, typeArguments) { + function createTypeReferenceNode(typeName, typeArguments) { const node = createBaseNode(180 /* TypeReference */); node.typeName = asName(typeName); - node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray2(typeArguments)); + node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray(typeArguments)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeReferenceNode2(node, typeName, typeArguments) { - return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode2(typeName, typeArguments), node) : node; + function updateTypeReferenceNode(node, typeName, typeArguments) { + return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode(typeName, typeArguments), node) : node; } - function createFunctionTypeNode2(typeParameters, parameters, type) { + function createFunctionTypeNode(typeParameters, parameters, type) { const node = createBaseDeclaration(181 /* FunctionType */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); @@ -23085,14 +23080,13 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateFunctionTypeNode2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode2(typeParameters, parameters, type), node) : node; + function updateFunctionTypeNode(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode(typeParameters, parameters, type), node) : node; } function finishUpdateFunctionTypeNode(updated, original) { if (updated !== original) { @@ -23100,8 +23094,8 @@ function createNodeFactory(flags, baseFactory2) { } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createConstructorTypeNode2(...args) { - return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function createConstructorTypeNode(...args) { + return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function createConstructorTypeNode1(modifiers, typeParameters, parameters, type) { const node = createBaseDeclaration(182 /* ConstructorType */); @@ -23111,13 +23105,12 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function createConstructorTypeNode22(typeParameters, parameters, type) { + function createConstructorTypeNode2(typeParameters, parameters, type) { return createConstructorTypeNode1( /*modifiers*/ void 0, @@ -23126,51 +23119,51 @@ function createNodeFactory(flags, baseFactory2) { type ); } - function updateConstructorTypeNode2(...args) { - return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function updateConstructorTypeNode(...args) { + return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function updateConstructorTypeNode1(node, modifiers, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode2(modifiers, typeParameters, parameters, type), node) : node; + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode(modifiers, typeParameters, parameters, type), node) : node; } - function updateConstructorTypeNode22(node, typeParameters, parameters, type) { + function updateConstructorTypeNode2(node, typeParameters, parameters, type) { return updateConstructorTypeNode1(node, node.modifiers, typeParameters, parameters, type); } - function createTypeQueryNode2(exprName, typeArguments) { + function createTypeQueryNode(exprName, typeArguments) { const node = createBaseNode(183 /* TypeQuery */); node.exprName = exprName; node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(typeArguments); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeQueryNode2(node, exprName, typeArguments) { - return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode2(exprName, typeArguments), node) : node; + function updateTypeQueryNode(node, exprName, typeArguments) { + return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode(exprName, typeArguments), node) : node; } - function createTypeLiteralNode2(members) { + function createTypeLiteralNode(members) { const node = createBaseDeclaration(184 /* TypeLiteral */); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeLiteralNode2(node, members) { - return node.members !== members ? update(createTypeLiteralNode2(members), node) : node; + function updateTypeLiteralNode(node, members) { + return node.members !== members ? update(createTypeLiteralNode(members), node) : node; } - function createArrayTypeNode2(elementType) { + function createArrayTypeNode(elementType) { const node = createBaseNode(185 /* ArrayType */); node.elementType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(elementType); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateArrayTypeNode2(node, elementType) { - return node.elementType !== elementType ? update(createArrayTypeNode2(elementType), node) : node; + function updateArrayTypeNode(node, elementType) { + return node.elementType !== elementType ? update(createArrayTypeNode(elementType), node) : node; } - function createTupleTypeNode2(elements) { + function createTupleTypeNode(elements) { const node = createBaseNode(186 /* TupleType */); - node.elements = createNodeArray2(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); + node.elements = createNodeArray(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTupleTypeNode2(node, elements) { - return node.elements !== elements ? update(createTupleTypeNode2(elements), node) : node; + function updateTupleTypeNode(node, elements) { + return node.elements !== elements ? update(createTupleTypeNode(elements), node) : node; } function createNamedTupleMember(dotDotDotToken, name, questionToken, type) { const node = createBaseDeclaration(199 /* NamedTupleMember */); @@ -23180,29 +23173,28 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) { return node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type ? update(createNamedTupleMember(dotDotDotToken, name, questionToken, type), node) : node; } - function createOptionalTypeNode2(type) { + function createOptionalTypeNode(type) { const node = createBaseNode(187 /* OptionalType */); node.type = parenthesizerRules().parenthesizeTypeOfOptionalType(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateOptionalTypeNode2(node, type) { - return node.type !== type ? update(createOptionalTypeNode2(type), node) : node; + function updateOptionalTypeNode(node, type) { + return node.type !== type ? update(createOptionalTypeNode(type), node) : node; } - function createRestTypeNode2(type) { + function createRestTypeNode(type) { const node = createBaseNode(188 /* RestType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateRestTypeNode2(node, type) { - return node.type !== type ? update(createRestTypeNode2(type), node) : node; + function updateRestTypeNode(node, type) { + return node.type !== type ? update(createRestTypeNode(type), node) : node; } function createUnionOrIntersectionTypeNode(kind, types, parenthesize) { const node = createBaseNode(kind); @@ -23213,19 +23205,19 @@ function createNodeFactory(flags, baseFactory2) { function updateUnionOrIntersectionTypeNode(node, types, parenthesize) { return node.types !== types ? update(createUnionOrIntersectionTypeNode(node.kind, types, parenthesize), node) : node; } - function createUnionTypeNode2(types) { + function createUnionTypeNode(types) { return createUnionOrIntersectionTypeNode(189 /* UnionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function updateUnionTypeNode2(node, types) { + function updateUnionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function createIntersectionTypeNode2(types) { + function createIntersectionTypeNode(types) { return createUnionOrIntersectionTypeNode(190 /* IntersectionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function updateIntersectionTypeNode2(node, types) { + function updateIntersectionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function createConditionalTypeNode2(checkType, extendsType, trueType, falseType) { + function createConditionalTypeNode(checkType, extendsType, trueType, falseType) { const node = createBaseNode(191 /* ConditionalType */); node.checkType = parenthesizerRules().parenthesizeCheckTypeOfConditionalType(checkType); node.extendsType = parenthesizerRules().parenthesizeExtendsTypeOfConditionalType(extendsType); @@ -23236,29 +23228,29 @@ function createNodeFactory(flags, baseFactory2) { node.nextContainer = void 0; return node; } - function updateConditionalTypeNode2(node, checkType, extendsType, trueType, falseType) { - return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode2(checkType, extendsType, trueType, falseType), node) : node; + function updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType) { + return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode(checkType, extendsType, trueType, falseType), node) : node; } - function createInferTypeNode2(typeParameter) { + function createInferTypeNode(typeParameter) { const node = createBaseNode(192 /* InferType */); node.typeParameter = typeParameter; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateInferTypeNode2(node, typeParameter) { - return node.typeParameter !== typeParameter ? update(createInferTypeNode2(typeParameter), node) : node; + function updateInferTypeNode(node, typeParameter) { + return node.typeParameter !== typeParameter ? update(createInferTypeNode(typeParameter), node) : node; } function createTemplateLiteralType(head, templateSpans) { const node = createBaseNode(200 /* TemplateLiteralType */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags = 1 /* ContainsTypeScript */; return node; } function updateTemplateLiteralType(node, head, templateSpans) { return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateLiteralType(head, templateSpans), node) : node; } - function createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf = false) { + function createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf = false) { const node = createBaseNode(202 /* ImportType */); node.argument = argument; node.assertions = assertions; @@ -23268,90 +23260,90 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { - return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; + function updateImportTypeNode(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { + return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; } - function createParenthesizedType2(type) { + function createParenthesizedType(type) { const node = createBaseNode(193 /* ParenthesizedType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateParenthesizedType2(node, type) { - return node.type !== type ? update(createParenthesizedType2(type), node) : node; + function updateParenthesizedType(node, type) { + return node.type !== type ? update(createParenthesizedType(type), node) : node; } - function createThisTypeNode2() { + function createThisTypeNode() { const node = createBaseNode(194 /* ThisType */); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function createTypeOperatorNode3(operator, type) { + function createTypeOperatorNode(operator, type) { const node = createBaseNode(195 /* TypeOperator */); node.operator = operator; node.type = operator === 146 /* ReadonlyKeyword */ ? parenthesizerRules().parenthesizeOperandOfReadonlyTypeOperator(type) : parenthesizerRules().parenthesizeOperandOfTypeOperator(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeOperatorNode2(node, type) { - return node.type !== type ? update(createTypeOperatorNode3(node.operator, type), node) : node; + function updateTypeOperatorNode(node, type) { + return node.type !== type ? update(createTypeOperatorNode(node.operator, type), node) : node; } - function createIndexedAccessTypeNode2(objectType, indexType) { + function createIndexedAccessTypeNode(objectType, indexType) { const node = createBaseNode(196 /* IndexedAccessType */); node.objectType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(objectType); node.indexType = indexType; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateIndexedAccessTypeNode2(node, objectType, indexType) { - return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode2(objectType, indexType), node) : node; + function updateIndexedAccessTypeNode(node, objectType, indexType) { + return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode(objectType, indexType), node) : node; } - function createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members) { + function createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) { const node = createBaseDeclaration(197 /* MappedType */); node.readonlyToken = readonlyToken; node.typeParameter = typeParameter; node.nameType = nameType; node.questionToken = questionToken; node.type = type; - node.members = members && createNodeArray2(members); + node.members = members && createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateMappedTypeNode2(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { - return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; + function updateMappedTypeNode(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { + return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; } - function createLiteralTypeNode2(literal) { + function createLiteralTypeNode(literal) { const node = createBaseNode(198 /* LiteralType */); node.literal = literal; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateLiteralTypeNode2(node, literal) { - return node.literal !== literal ? update(createLiteralTypeNode2(literal), node) : node; + function updateLiteralTypeNode(node, literal) { + return node.literal !== literal ? update(createLiteralTypeNode(literal), node) : node; } - function createObjectBindingPattern2(elements) { + function createObjectBindingPattern(elements) { const node = createBaseNode(203 /* ObjectBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { node.transformFlags |= 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; } return node; } - function updateObjectBindingPattern2(node, elements) { - return node.elements !== elements ? update(createObjectBindingPattern2(elements), node) : node; + function updateObjectBindingPattern(node, elements) { + return node.elements !== elements ? update(createObjectBindingPattern(elements), node) : node; } - function createArrayBindingPattern2(elements) { + function createArrayBindingPattern(elements) { const node = createBaseNode(204 /* ArrayBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; return node; } - function updateArrayBindingPattern2(node, elements) { - return node.elements !== elements ? update(createArrayBindingPattern2(elements), node) : node; + function updateArrayBindingPattern(node, elements) { + return node.elements !== elements ? update(createArrayBindingPattern(elements), node) : node; } - function createBindingElement2(dotDotDotToken, propertyName, name, initializer) { + function createBindingElement(dotDotDotToken, propertyName, name, initializer) { const node = createBaseDeclaration(205 /* BindingElement */); node.dotDotDotToken = dotDotDotToken; node.propertyName = asName(propertyName); @@ -23361,13 +23353,13 @@ function createNodeFactory(flags, baseFactory2) { node.flowNode = void 0; return node; } - function updateBindingElement2(node, dotDotDotToken, propertyName, name, initializer) { - return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement2(dotDotDotToken, propertyName, name, initializer), node) : node; + function updateBindingElement(node, dotDotDotToken, propertyName, name, initializer) { + return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement(dotDotDotToken, propertyName, name, initializer), node) : node; } function createArrayLiteralExpression(elements, multiLine) { const node = createBaseNode(206 /* ArrayLiteralExpression */); const lastElement = elements && lastOrUndefined(elements); - const elementsArray = createNodeArray2(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); + const elementsArray = createNodeArray(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); node.elements = parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(elementsArray); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.elements); @@ -23378,11 +23370,10 @@ function createNodeFactory(flags, baseFactory2) { } function createObjectLiteralExpression(properties, multiLine) { const node = createBaseDeclaration(207 /* ObjectLiteralExpression */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.properties); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateObjectLiteralExpression(node, properties) { @@ -23395,7 +23386,6 @@ function createNodeFactory(flags, baseFactory2) { node.name = name; node.transformFlags = propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | (isIdentifier(node.name) ? propagateIdentifierNameFlags(node.name) : propagateChildFlags(node.name) | 536870912 /* ContainsPrivateIdentifierInExpression */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -23417,11 +23407,11 @@ function createNodeFactory(flags, baseFactory2) { } function updatePropertyAccessExpression(node, expression, name) { if (isPropertyAccessChain(node)) { - return updatePropertyAccessChain2(node, expression, node.questionDotToken, cast(name, isIdentifier)); + return updatePropertyAccessChain(node, expression, node.questionDotToken, cast(name, isIdentifier)); } return node.expression !== expression || node.name !== name ? update(createPropertyAccessExpression(expression, name), node) : node; } - function createPropertyAccessChain2(expression, questionDotToken, name) { + function createPropertyAccessChain(expression, questionDotToken, name) { const node = createBasePropertyAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -23435,9 +23425,9 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updatePropertyAccessChain2(node, expression, questionDotToken, name) { + function updatePropertyAccessChain(node, expression, questionDotToken, name) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain2(expression, questionDotToken, name), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain(expression, questionDotToken, name), node) : node; } function createBaseElementAccessExpression(expression, questionDotToken, argumentExpression) { const node = createBaseDeclaration(209 /* ElementAccessExpression */); @@ -23446,7 +23436,6 @@ function createNodeFactory(flags, baseFactory2) { node.argumentExpression = argumentExpression; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | propagateChildFlags(node.argumentExpression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -23468,11 +23457,11 @@ function createNodeFactory(flags, baseFactory2) { } function updateElementAccessExpression(node, expression, argumentExpression) { if (isElementAccessChain(node)) { - return updateElementAccessChain2(node, expression, node.questionDotToken, argumentExpression); + return updateElementAccessChain(node, expression, node.questionDotToken, argumentExpression); } return node.expression !== expression || node.argumentExpression !== argumentExpression ? update(createElementAccessExpression(expression, argumentExpression), node) : node; } - function createElementAccessChain2(expression, questionDotToken, index) { + function createElementAccessChain(expression, questionDotToken, index) { const node = createBaseElementAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -23486,9 +23475,9 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateElementAccessChain2(node, expression, questionDotToken, argumentExpression) { + function updateElementAccessChain(node, expression, questionDotToken, argumentExpression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain2(expression, questionDotToken, argumentExpression), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain(expression, questionDotToken, argumentExpression), node) : node; } function createBaseCallExpression(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseDeclaration(210 /* CallExpression */); @@ -23515,7 +23504,7 @@ function createNodeFactory(flags, baseFactory2) { /*questionDotToken*/ void 0, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); if (isImportKeyword(node.expression)) { node.transformFlags |= 8388608 /* ContainsDynamicImport */; @@ -23524,11 +23513,11 @@ function createNodeFactory(flags, baseFactory2) { } function updateCallExpression(node, expression, typeArguments, argumentsArray) { if (isCallChain(node)) { - return updateCallChain2(node, expression, node.questionDotToken, typeArguments, argumentsArray); + return updateCallChain(node, expression, node.questionDotToken, typeArguments, argumentsArray); } return node.expression !== expression || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallExpression(expression, typeArguments, argumentsArray), node) : node; } - function createCallChain2(expression, questionDotToken, typeArguments, argumentsArray) { + function createCallChain(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseCallExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -23537,15 +23526,15 @@ function createNodeFactory(flags, baseFactory2) { ), questionDotToken, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); node.flags |= 32 /* OptionalChain */; node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateCallChain2(node, expression, questionDotToken, typeArguments, argumentsArray) { + function updateCallChain(node, expression, questionDotToken, typeArguments, argumentsArray) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a CallExpression using updateCallChain. Use updateCall instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain2(expression, questionDotToken, typeArguments, argumentsArray), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain(expression, questionDotToken, typeArguments, argumentsArray), node) : node; } function createNewExpression(expression, typeArguments, argumentsArray) { const node = createBaseDeclaration(211 /* NewExpression */); @@ -23582,34 +23571,33 @@ function createNodeFactory(flags, baseFactory2) { function updateTaggedTemplateExpression(node, tag, typeArguments, template) { return node.tag !== tag || node.typeArguments !== typeArguments || node.template !== template ? update(createTaggedTemplateExpression(tag, typeArguments, template), node) : node; } - function createTypeAssertion2(type, expression) { + function createTypeAssertion(type, expression) { const node = createBaseNode(213 /* TypeAssertionExpression */); node.expression = parenthesizerRules().parenthesizeOperandOfPrefixUnary(expression); node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateTypeAssertion2(node, type, expression) { - return node.type !== type || node.expression !== expression ? update(createTypeAssertion2(type, expression), node) : node; + function updateTypeAssertion(node, type, expression) { + return node.type !== type || node.expression !== expression ? update(createTypeAssertion(type, expression), node) : node; } function createParenthesizedExpression(expression) { const node = createBaseNode(214 /* ParenthesizedExpression */); node.expression = expression; node.transformFlags = propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParenthesizedExpression(node, expression) { return node.expression !== expression ? update(createParenthesizedExpression(expression), node) : node; } - function createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(215 /* FunctionExpression */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; @@ -23618,7 +23606,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -23626,22 +23613,21 @@ function createNodeFactory(flags, baseFactory2) { node.returnFlowNode = void 0; return node; } - function updateFunctionExpression2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionExpression(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } - function createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + function createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { const node = createBaseDeclaration(216 /* ArrowFunction */); node.modifiers = asNodeArray(modifiers); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; - node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken3(38 /* EqualsGreaterThanToken */); + node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken(38 /* EqualsGreaterThanToken */); node.body = parenthesizerRules().parenthesizeConciseBodyOfArrowFunction(body); const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.equalsGreaterThanToken) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isAsync ? 256 /* ContainsES2017 */ | 16384 /* ContainsLexicalThis */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -23649,8 +23635,8 @@ function createNodeFactory(flags, baseFactory2) { node.returnFlowNode = void 0; return node; } - function updateArrowFunction3(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; + function updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; } function createDeleteExpression(expression) { const node = createBaseNode(217 /* DeleteExpression */); @@ -23739,7 +23725,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 536870912 /* ContainsPrivateIdentifierInExpression */; } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function propagateAssignmentPatternFlags(node) { @@ -23768,9 +23753,9 @@ function createNodeFactory(flags, baseFactory2) { function createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) { const node = createBaseNode(224 /* ConditionalExpression */); node.condition = parenthesizerRules().parenthesizeConditionOfConditionalExpression(condition); - node.questionToken = questionToken != null ? questionToken : createToken3(57 /* QuestionToken */); + node.questionToken = questionToken != null ? questionToken : createToken(57 /* QuestionToken */); node.whenTrue = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenTrue); - node.colonToken = colonToken != null ? colonToken : createToken3(58 /* ColonToken */); + node.colonToken = colonToken != null ? colonToken : createToken(58 /* ColonToken */); node.whenFalse = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenFalse); node.transformFlags |= propagateChildFlags(node.condition) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.whenTrue) | propagateChildFlags(node.colonToken) | propagateChildFlags(node.whenFalse); return node; @@ -23778,15 +23763,15 @@ function createNodeFactory(flags, baseFactory2) { function updateConditionalExpression(node, condition, questionToken, whenTrue, colonToken, whenFalse) { return node.condition !== condition || node.questionToken !== questionToken || node.whenTrue !== whenTrue || node.colonToken !== colonToken || node.whenFalse !== whenFalse ? update(createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse), node) : node; } - function createTemplateExpression2(head, templateSpans) { + function createTemplateExpression(head, templateSpans) { const node = createBaseNode(225 /* TemplateExpression */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags |= propagateChildFlags(node.head) | propagateChildrenFlags(node.templateSpans) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateExpression2(node, head, templateSpans) { - return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression2(head, templateSpans), node) : node; + function updateTemplateExpression(node, head, templateSpans) { + return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression(head, templateSpans), node) : node; } function checkTemplateLiteralLikeNode(kind, text, rawText, templateFlags = 0 /* None */) { Debug.assert(!(templateFlags & ~2048 /* TemplateLiteralLikeFlags */), "Unsupported template flags."); @@ -23836,19 +23821,19 @@ function createNodeFactory(flags, baseFactory2) { } return createTemplateLiteralLikeToken(kind, text, rawText, templateFlags); } - function createTemplateHead2(text, rawText, templateFlags) { + function createTemplateHead(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); } - function createTemplateMiddle2(text, rawText, templateFlags) { + function createTemplateMiddle(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(16 /* TemplateMiddle */, text, rawText, templateFlags); } - function createTemplateTail2(text, rawText, templateFlags) { + function createTemplateTail(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(17 /* TemplateTail */, text, rawText, templateFlags); } - function createNoSubstitutionTemplateLiteral2(text, rawText, templateFlags) { + function createNoSubstitutionTemplateLiteral(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeDeclaration(14 /* NoSubstitutionTemplateLiteral */, text, rawText, templateFlags); } @@ -23872,25 +23857,24 @@ function createNodeFactory(flags, baseFactory2) { function updateSpreadElement(node, expression) { return node.expression !== expression ? update(createSpreadElement(expression), node) : node; } - function createClassExpression3(modifiers, name, typeParameters, heritageClauses, members) { + function createClassExpression(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(228 /* ClassExpression */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.heritageClauses) | propagateChildrenFlags(node.members) | (node.typeParameters ? 1 /* ContainsTypeScript */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression3(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createOmittedExpression2() { + function createOmittedExpression() { return createBaseNode(229 /* OmittedExpression */); } - function createExpressionWithTypeArguments3(expression, typeArguments) { + function createExpressionWithTypeArguments(expression, typeArguments) { const node = createBaseNode(230 /* ExpressionWithTypeArguments */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -23901,20 +23885,20 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.typeArguments) | 1024 /* ContainsES2015 */; return node; } - function updateExpressionWithTypeArguments3(node, expression, typeArguments) { - return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments3(expression, typeArguments), node) : node; + function updateExpressionWithTypeArguments(node, expression, typeArguments) { + return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments(expression, typeArguments), node) : node; } - function createAsExpression2(expression, type) { + function createAsExpression(expression, type) { const node = createBaseNode(231 /* AsExpression */); node.expression = expression; node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateAsExpression2(node, expression, type) { - return node.expression !== expression || node.type !== type ? update(createAsExpression2(expression, type), node) : node; + function updateAsExpression(node, expression, type) { + return node.expression !== expression || node.type !== type ? update(createAsExpression(expression, type), node) : node; } - function createNonNullExpression2(expression) { + function createNonNullExpression(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -23924,11 +23908,11 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullExpression2(node, expression) { + function updateNonNullExpression(node, expression) { if (isNonNullChain(node)) { - return updateNonNullChain2(node, expression); + return updateNonNullChain(node, expression); } - return node.expression !== expression ? update(createNonNullExpression2(expression), node) : node; + return node.expression !== expression ? update(createNonNullExpression(expression), node) : node; } function createSatisfiesExpression(expression, type) { const node = createBaseNode(235 /* SatisfiesExpression */); @@ -23940,7 +23924,7 @@ function createNodeFactory(flags, baseFactory2) { function updateSatisfiesExpression(node, expression, type) { return node.expression !== expression || node.type !== type ? update(createSatisfiesExpression(expression, type), node) : node; } - function createNonNullChain2(expression) { + function createNonNullChain(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.flags |= 32 /* OptionalChain */; node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( @@ -23951,11 +23935,11 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullChain2(node, expression) { + function updateNonNullChain(node, expression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a NonNullExpression using updateNonNullChain. Use updateNonNullExpression instead."); - return node.expression !== expression ? update(createNonNullChain2(expression), node) : node; + return node.expression !== expression ? update(createNonNullChain(expression), node) : node; } - function createMetaProperty2(keywordToken, name) { + function createMetaProperty(keywordToken, name) { const node = createBaseNode(233 /* MetaProperty */); node.keywordToken = keywordToken; node.name = name; @@ -23973,72 +23957,67 @@ function createNodeFactory(flags, baseFactory2) { node.flowNode = void 0; return node; } - function updateMetaProperty2(node, name) { - return node.name !== name ? update(createMetaProperty2(node.keywordToken, name), node) : node; + function updateMetaProperty(node, name) { + return node.name !== name ? update(createMetaProperty(node.keywordToken, name), node) : node; } - function createTemplateSpan2(expression, literal) { + function createTemplateSpan(expression, literal) { const node = createBaseNode(236 /* TemplateSpan */); node.expression = expression; node.literal = literal; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.literal) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateSpan2(node, expression, literal) { - return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan2(expression, literal), node) : node; + function updateTemplateSpan(node, expression, literal) { + return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan(expression, literal), node) : node; } - function createSemicolonClassElement2() { + function createSemicolonClassElement() { const node = createBaseNode(237 /* SemicolonClassElement */); node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBlock2(statements, multiLine) { + function createBlock(statements, multiLine) { const node = createBaseNode(238 /* Block */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateBlock2(node, statements) { - return node.statements !== statements ? update(createBlock2(statements, node.multiLine), node) : node; + function updateBlock(node, statements) { + return node.statements !== statements ? update(createBlock(statements, node.multiLine), node) : node; } - function createVariableStatement2(modifiers, declarationList) { + function createVariableStatement(modifiers, declarationList) { const node = createBaseNode(240 /* VariableStatement */); node.modifiers = asNodeArray(modifiers); - node.declarationList = isArray(declarationList) ? createVariableDeclarationList2(declarationList) : declarationList; + node.declarationList = isArray(declarationList) ? createVariableDeclarationList(declarationList) : declarationList; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.declarationList); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateVariableStatement2(node, modifiers, declarationList) { - return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement2(modifiers, declarationList), node) : node; + function updateVariableStatement(node, modifiers, declarationList) { + return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement(modifiers, declarationList), node) : node; } - function createEmptyStatement2() { + function createEmptyStatement() { const node = createBaseNode(239 /* EmptyStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExpressionStatement2(expression) { + function createExpressionStatement(expression) { const node = createBaseNode(241 /* ExpressionStatement */); node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression); node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateExpressionStatement2(node, expression) { - return node.expression !== expression ? update(createExpressionStatement2(expression), node) : node; + function updateExpressionStatement(node, expression) { + return node.expression !== expression ? update(createExpressionStatement(expression), node) : node; } function createIfStatement(expression, thenStatement, elseStatement) { const node = createBaseNode(242 /* IfStatement */); @@ -24047,7 +24026,6 @@ function createNodeFactory(flags, baseFactory2) { node.elseStatement = asEmbeddedStatement(elseStatement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thenStatement) | propagateChildFlags(node.elseStatement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24060,7 +24038,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.statement) | propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24073,7 +24050,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24088,7 +24064,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.condition) | propagateChildFlags(node.incrementor) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -24104,7 +24079,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -24123,7 +24097,6 @@ function createNodeFactory(flags, baseFactory2) { if (awaitModifier) node.transformFlags |= 128 /* ContainsES2018 */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -24137,7 +24110,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24149,7 +24121,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24161,7 +24132,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24174,7 +24144,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24187,7 +24156,6 @@ function createNodeFactory(flags, baseFactory2) { node.caseBlock = caseBlock; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.caseBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.possiblyExhaustive = false; return node; @@ -24201,7 +24169,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.label) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24213,7 +24180,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -24227,21 +24193,19 @@ function createNodeFactory(flags, baseFactory2) { node.finallyBlock = finallyBlock; node.transformFlags |= propagateChildFlags(node.tryBlock) | propagateChildFlags(node.catchClause) | propagateChildFlags(node.finallyBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } function updateTryStatement(node, tryBlock, catchClause, finallyBlock) { return node.tryBlock !== tryBlock || node.catchClause !== catchClause || node.finallyBlock !== finallyBlock ? update(createTryStatement(tryBlock, catchClause, finallyBlock), node) : node; } - function createDebuggerStatement2() { + function createDebuggerStatement() { const node = createBaseNode(256 /* DebuggerStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function createVariableDeclaration3(name, exclamationToken, type, initializer) { + function createVariableDeclaration(name, exclamationToken, type, initializer) { var _a2; const node = createBaseDeclaration(257 /* VariableDeclaration */); node.name = asName(name); @@ -24250,32 +24214,31 @@ function createNodeFactory(flags, baseFactory2) { node.initializer = asInitializer(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (((_a2 = node.exclamationToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateVariableDeclaration3(node, name, exclamationToken, type, initializer) { - return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration3(name, exclamationToken, type, initializer), node) : node; + function updateVariableDeclaration(node, name, exclamationToken, type, initializer) { + return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration(name, exclamationToken, type, initializer), node) : node; } - function createVariableDeclarationList2(declarations, flags2 = 0 /* None */) { + function createVariableDeclarationList(declarations, flags2 = 0 /* None */) { const node = createBaseNode(258 /* VariableDeclarationList */); node.flags |= flags2 & 3 /* BlockScoped */; - node.declarations = createNodeArray2(declarations); + node.declarations = createNodeArray(declarations); node.transformFlags |= propagateChildrenFlags(node.declarations) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; if (flags2 & 3 /* BlockScoped */) { node.transformFlags |= 1024 /* ContainsES2015 */ | 262144 /* ContainsBlockScopedBinding */; } return node; } - function updateVariableDeclarationList2(node, declarations) { - return node.declarations !== declarations ? update(createVariableDeclarationList2(declarations, node.flags), node) : node; + function updateVariableDeclarationList(node, declarations) { + return node.declarations !== declarations ? update(createVariableDeclarationList(declarations, node.flags), node) : node; } - function createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(259 /* FunctionDeclaration */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body || modifiersToFlags(node.modifiers) & 2 /* Ambient */) { @@ -24286,32 +24249,32 @@ function createNodeFactory(flags, baseFactory2) { const isAsyncGenerator = isAsync && isGenerator; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; } - node.illegalDecorators = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; node.returnFlowNode = void 0; return node; } - function updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionDeclaration(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } function finishUpdateFunctionDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(260 /* ClassDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } else { @@ -24321,79 +24284,54 @@ function createNodeFactory(flags, baseFactory2) { } } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(261 /* InterfaceDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? finishUpdateInterfaceDeclaration(createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function finishUpdateInterfaceDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createTypeAliasDeclaration2(modifiers, name, typeParameters, type) { + function createTypeAliasDeclaration(modifiers, name, typeParameters, type) { const node = createBaseDeclaration(262 /* TypeAliasDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? finishUpdateTypeAliasDeclaration(createTypeAliasDeclaration2(modifiers, name, typeParameters, type), node) : node; + function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? update(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; } - function finishUpdateTypeAliasDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createEnumDeclaration2(modifiers, name, members) { + function createEnumDeclaration(modifiers, name, members) { const node = createBaseDeclaration(263 /* EnumDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildrenFlags(node.members) | 1 /* ContainsTypeScript */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumDeclaration2(node, modifiers, name, members) { - return node.modifiers !== modifiers || node.name !== name || node.members !== members ? finishUpdateEnumDeclaration(createEnumDeclaration2(modifiers, name, members), node) : node; + function updateEnumDeclaration(node, modifiers, name, members) { + return node.modifiers !== modifiers || node.name !== name || node.members !== members ? update(createEnumDeclaration(modifiers, name, members), node) : node; } - function finishUpdateEnumDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleDeclaration2(modifiers, name, body, flags2 = 0 /* None */) { + function createModuleDeclaration(modifiers, name, body, flags2 = 0 /* None */) { const node = createBaseDeclaration(264 /* ModuleDeclaration */); node.modifiers = asNodeArray(modifiers); node.flags |= flags2 & (16 /* Namespace */ | 4 /* NestedNamespace */ | 1024 /* GlobalAugmentation */); @@ -24405,65 +24343,53 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildFlags(node.body) | 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateModuleDeclaration2(node, modifiers, name, body) { - return node.modifiers !== modifiers || node.name !== name || node.body !== body ? finishUpdateModuleDeclaration(createModuleDeclaration2(modifiers, name, body, node.flags), node) : node; + function updateModuleDeclaration(node, modifiers, name, body) { + return node.modifiers !== modifiers || node.name !== name || node.body !== body ? update(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; } - function finishUpdateModuleDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleBlock2(statements) { + function createModuleBlock(statements) { const node = createBaseNode(265 /* ModuleBlock */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateModuleBlock2(node, statements) { - return node.statements !== statements ? update(createModuleBlock2(statements), node) : node; + function updateModuleBlock(node, statements) { + return node.statements !== statements ? update(createModuleBlock(statements), node) : node; } - function createCaseBlock2(clauses) { + function createCaseBlock(clauses) { const node = createBaseNode(266 /* CaseBlock */); - node.clauses = createNodeArray2(clauses); + node.clauses = createNodeArray(clauses); node.transformFlags |= propagateChildrenFlags(node.clauses); node.locals = void 0; node.nextContainer = void 0; return node; } - function updateCaseBlock2(node, clauses) { - return node.clauses !== clauses ? update(createCaseBlock2(clauses), node) : node; + function updateCaseBlock(node, clauses) { + return node.clauses !== clauses ? update(createCaseBlock(clauses), node) : node; } - function createNamespaceExportDeclaration2(name) { + function createNamespaceExportDeclaration(name) { const node = createBaseDeclaration(267 /* NamespaceExportDeclaration */); node.name = asName(name); node.transformFlags |= propagateIdentifierNameFlags(node.name) | 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateNamespaceExportDeclaration2(node, name) { - return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration2(name), node) : node; + function updateNamespaceExportDeclaration(node, name) { + return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration(name), node) : node; } function finishUpdateNamespaceExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); } - function createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference) { + function createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference) { const node = createBaseDeclaration(268 /* ImportEqualsDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -24474,21 +24400,13 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? finishUpdateImportEqualsDeclaration(createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference), node) : node; + function updateImportEqualsDeclaration(node, modifiers, isTypeOnly, name, moduleReference) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? update(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; } - function finishUpdateImportEqualsDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause) { + function createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause) { const node = createBaseNode(269 /* ImportDeclaration */); node.modifiers = asNodeArray(modifiers); node.importClause = importClause; @@ -24496,21 +24414,13 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildFlags(node.importClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateImportDeclaration(createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause), node) : node; + function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? update(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; } - function finishUpdateImportDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportClause3(isTypeOnly, name, namedBindings) { + function createImportClause(isTypeOnly, name, namedBindings) { const node = createBaseDeclaration(270 /* ImportClause */); node.isTypeOnly = isTypeOnly; node.name = name; @@ -24522,12 +24432,12 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportClause3(node, isTypeOnly, name, namedBindings) { - return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause3(isTypeOnly, name, namedBindings), node) : node; + function updateImportClause(node, isTypeOnly, name, namedBindings) { + return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause(isTypeOnly, name, namedBindings), node) : node; } function createAssertClause(elements, multiLine) { const node = createBaseNode(296 /* AssertClause */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.multiLine = multiLine; node.transformFlags |= 4 /* ContainsESNext */; return node; @@ -24554,37 +24464,37 @@ function createNodeFactory(flags, baseFactory2) { function updateImportTypeAssertionContainer(node, clause, multiLine) { return node.assertClause !== clause || node.multiLine !== multiLine ? update(createImportTypeAssertionContainer(clause, multiLine), node) : node; } - function createNamespaceImport2(name) { + function createNamespaceImport(name) { const node = createBaseDeclaration(271 /* NamespaceImport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceImport2(node, name) { - return node.name !== name ? update(createNamespaceImport2(name), node) : node; + function updateNamespaceImport(node, name) { + return node.name !== name ? update(createNamespaceImport(name), node) : node; } - function createNamespaceExport2(name) { + function createNamespaceExport(name) { const node = createBaseDeclaration(277 /* NamespaceExport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name) | 4 /* ContainsESNext */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceExport2(node, name) { - return node.name !== name ? update(createNamespaceExport2(name), node) : node; + function updateNamespaceExport(node, name) { + return node.name !== name ? update(createNamespaceExport(name), node) : node; } - function createNamedImports2(elements) { + function createNamedImports(elements) { const node = createBaseNode(272 /* NamedImports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedImports2(node, elements) { - return node.elements !== elements ? update(createNamedImports2(elements), node) : node; + function updateNamedImports(node, elements) { + return node.elements !== elements ? update(createNamedImports(elements), node) : node; } - function createImportSpecifier2(isTypeOnly, propertyName, name) { + function createImportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseDeclaration(273 /* ImportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = propertyName; @@ -24593,10 +24503,10 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateImportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier(isTypeOnly, propertyName, name), node) : node; } - function createExportAssignment3(modifiers, isExportEquals, expression) { + function createExportAssignment2(modifiers, isExportEquals, expression) { const node = createBaseDeclaration(274 /* ExportAssignment */); node.modifiers = asNodeArray(modifiers); node.isExportEquals = isExportEquals; @@ -24608,21 +24518,13 @@ function createNodeFactory(flags, baseFactory2) { ) : parenthesizerRules().parenthesizeExpressionOfExportDefault(expression); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportAssignment2(node, modifiers, expression) { - return node.modifiers !== modifiers || node.expression !== expression ? finishUpdateExportAssignment(createExportAssignment3(modifiers, node.isExportEquals, expression), node) : node; + function updateExportAssignment(node, modifiers, expression) { + return node.modifiers !== modifiers || node.expression !== expression ? update(createExportAssignment2(modifiers, node.isExportEquals, expression), node) : node; } - function finishUpdateExportAssignment(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { const node = createBaseDeclaration(275 /* ExportDeclaration */); node.modifiers = asNodeArray(modifiers); node.isTypeOnly = isTypeOnly; @@ -24631,31 +24533,31 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.exportClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; + function updateExportDeclaration(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; } function finishUpdateExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return update(updated, original); } - function createNamedExports2(elements) { + function createNamedExports(elements) { const node = createBaseNode(276 /* NamedExports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedExports2(node, elements) { - return node.elements !== elements ? update(createNamedExports2(elements), node) : node; + function updateNamedExports(node, elements) { + return node.elements !== elements ? update(createNamedExports(elements), node) : node; } - function createExportSpecifier2(isTypeOnly, propertyName, name) { + function createExportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseNode(278 /* ExportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = asName(propertyName); @@ -24663,27 +24565,25 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.propertyName) | propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateExportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier(isTypeOnly, propertyName, name), node) : node; } function createMissingDeclaration() { const node = createBaseDeclaration(279 /* MissingDeclaration */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExternalModuleReference2(expression) { + function createExternalModuleReference(expression) { const node = createBaseNode(280 /* ExternalModuleReference */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateExternalModuleReference2(node, expression) { - return node.expression !== expression ? update(createExternalModuleReference2(expression), node) : node; + function updateExternalModuleReference(node, expression) { + return node.expression !== expression ? update(createExternalModuleReference(expression), node) : node; } function createJSDocPrimaryTypeWorker(kind) { return createBaseNode(kind); @@ -24713,7 +24613,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = propagateChildrenFlags(node.parameters) | (node.type ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -24722,40 +24621,39 @@ function createNodeFactory(flags, baseFactory2) { function updateJSDocFunctionType(node, parameters, type) { return node.parameters !== parameters || node.type !== type ? update(createJSDocFunctionType(parameters, type), node) : node; } - function createJSDocTypeLiteral2(propertyTags, isArrayType = false) { + function createJSDocTypeLiteral(propertyTags, isArrayType = false) { const node = createBaseDeclaration(325 /* JSDocTypeLiteral */); node.jsDocPropertyTags = asNodeArray(propertyTags); node.isArrayType = isArrayType; return node; } function updateJSDocTypeLiteral(node, propertyTags, isArrayType) { - return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral2(propertyTags, isArrayType), node) : node; + return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral(propertyTags, isArrayType), node) : node; } - function createJSDocTypeExpression2(type) { + function createJSDocTypeExpression(type) { const node = createBaseNode(312 /* JSDocTypeExpression */); node.type = type; return node; } function updateJSDocTypeExpression(node, type) { - return node.type !== type ? update(createJSDocTypeExpression2(type), node) : node; + return node.type !== type ? update(createJSDocTypeExpression(type), node) : node; } - function createJSDocSignature2(typeParameters, parameters, type) { + function createJSDocSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(326 /* JSDocSignature */); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocSignature(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature2(typeParameters, parameters, type), node) : node; + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature(typeParameters, parameters, type), node) : node; } function getDefaultTagName(node) { const defaultTagName = getDefaultTagNameForKind(node.kind); - return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier3(defaultTagName); + return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier(defaultTagName); } function createBaseJSDocTag(kind, tagName, comment) { const node = createBaseNode(kind); @@ -24769,17 +24667,17 @@ function createNodeFactory(flags, baseFactory2) { node.comment = comment; return node; } - function createJSDocTemplateTag2(tagName, constraint, typeParameters, comment) { - const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier3("template"), comment); + function createJSDocTemplateTag(tagName, constraint, typeParameters, comment) { + const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier("template"), comment); node.constraint = constraint; - node.typeParameters = createNodeArray2(typeParameters); + node.typeParameters = createNodeArray(typeParameters); return node; } function updateJSDocTemplateTag(node, tagName = getDefaultTagName(node), constraint, typeParameters, comment) { - return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag2(tagName, constraint, typeParameters, comment), node) : node; + return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag(tagName, constraint, typeParameters, comment), node) : node; } - function createJSDocTypedefTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier3("typedef"), comment); + function createJSDocTypedefTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier("typedef"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -24788,10 +24686,10 @@ function createNodeFactory(flags, baseFactory2) { return node; } function updateJSDocTypedefTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag(tagName, typeExpression, fullName, comment), node) : node; } - function createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier3("param"), comment); + function createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier("param"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -24799,10 +24697,10 @@ function createNodeFactory(flags, baseFactory2) { return node; } function updateJSDocParameterTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier3("prop"), comment); + function createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier("prop"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -24810,10 +24708,10 @@ function createNodeFactory(flags, baseFactory2) { return node; } function updateJSDocPropertyTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocCallbackTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier3("callback"), comment); + function createJSDocCallbackTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier("callback"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -24822,31 +24720,31 @@ function createNodeFactory(flags, baseFactory2) { return node; } function updateJSDocCallbackTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag(tagName, typeExpression, fullName, comment), node) : node; } function createJSDocOverloadTag(tagName, typeExpression, comment) { - const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier3("overload"), comment); + const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier("overload"), comment); node.typeExpression = typeExpression; return node; } function updateJSDocOverloadTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocOverloadTag(tagName, typeExpression, comment), node) : node; } - function createJSDocAugmentsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier3("augments"), comment); + function createJSDocAugmentsTag(tagName, className, comment) { + const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier("augments"), comment); node.class = className; return node; } function updateJSDocAugmentsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag(tagName, className, comment), node) : node; } - function createJSDocImplementsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier3("implements"), comment); + function createJSDocImplementsTag(tagName, className, comment) { + const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier("implements"), comment); node.class = className; return node; } function createJSDocSeeTag(tagName, name, comment) { - const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier3("see"), comment); + const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier("see"), comment); node.name = name; return node; } @@ -24899,17 +24797,17 @@ function createNodeFactory(flags, baseFactory2) { return node.name !== name ? update(createJSDocLinkPlain(name, text), node) : node; } function updateJSDocImplementsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag(tagName, className, comment), node) : node; } function createJSDocSimpleTagWorker(kind, tagName, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); return node; } function updateJSDocSimpleTagWorker(kind, node, tagName = getDefaultTagName(node), comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocSimpleTagWorker(kind, tagName, comment), node) : node; } function createJSDocTypeLikeTagWorker(kind, tagName, typeExpression, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); node.typeExpression = typeExpression; return node; } @@ -24923,15 +24821,15 @@ function createNodeFactory(flags, baseFactory2) { function updateJSDocUnknownTag(node, tagName, comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocUnknownTag(tagName, comment), node) : node; } - function createJSDocEnumTag2(tagName, typeExpression, comment) { - const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); + function createJSDocEnumTag(tagName, typeExpression, comment) { + const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); node.typeExpression = typeExpression; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocEnumTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag2(tagName, typeExpression, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag(tagName, typeExpression, comment), node) : node; } function createJSDocText(text) { const node = createBaseNode(324 /* JSDocText */); @@ -24941,27 +24839,27 @@ function createNodeFactory(flags, baseFactory2) { function updateJSDocText(node, text) { return node.text !== text ? update(createJSDocText(text), node) : node; } - function createJSDocComment2(comment, tags) { + function createJSDocComment(comment, tags) { const node = createBaseNode(323 /* JSDoc */); node.comment = comment; node.tags = asNodeArray(tags); return node; } function updateJSDocComment(node, comment, tags) { - return node.comment !== comment || node.tags !== tags ? update(createJSDocComment2(comment, tags), node) : node; + return node.comment !== comment || node.tags !== tags ? update(createJSDocComment(comment, tags), node) : node; } - function createJsxElement2(openingElement, children, closingElement) { + function createJsxElement(openingElement, children, closingElement) { const node = createBaseNode(281 /* JsxElement */); node.openingElement = openingElement; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingElement = closingElement; node.transformFlags |= propagateChildFlags(node.openingElement) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingElement) | 2 /* ContainsJsx */; return node; } - function updateJsxElement2(node, openingElement, children, closingElement) { - return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement2(openingElement, children, closingElement), node) : node; + function updateJsxElement(node, openingElement, children, closingElement) { + return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement(openingElement, children, closingElement), node) : node; } - function createJsxSelfClosingElement2(tagName, typeArguments, attributes) { + function createJsxSelfClosingElement(tagName, typeArguments, attributes) { const node = createBaseNode(282 /* JsxSelfClosingElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -24972,10 +24870,10 @@ function createNodeFactory(flags, baseFactory2) { } return node; } - function updateJsxSelfClosingElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxSelfClosingElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement(tagName, typeArguments, attributes), node) : node; } - function createJsxOpeningElement2(tagName, typeArguments, attributes) { + function createJsxOpeningElement(tagName, typeArguments, attributes) { const node = createBaseNode(283 /* JsxOpeningElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -24986,112 +24884,111 @@ function createNodeFactory(flags, baseFactory2) { } return node; } - function updateJsxOpeningElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxOpeningElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement(tagName, typeArguments, attributes), node) : node; } - function createJsxClosingElement2(tagName) { + function createJsxClosingElement(tagName) { const node = createBaseNode(284 /* JsxClosingElement */); node.tagName = tagName; node.transformFlags |= propagateChildFlags(node.tagName) | 2 /* ContainsJsx */; return node; } - function updateJsxClosingElement2(node, tagName) { - return node.tagName !== tagName ? update(createJsxClosingElement2(tagName), node) : node; + function updateJsxClosingElement(node, tagName) { + return node.tagName !== tagName ? update(createJsxClosingElement(tagName), node) : node; } - function createJsxFragment2(openingFragment, children, closingFragment) { + function createJsxFragment(openingFragment, children, closingFragment) { const node = createBaseNode(285 /* JsxFragment */); node.openingFragment = openingFragment; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingFragment = closingFragment; node.transformFlags |= propagateChildFlags(node.openingFragment) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingFragment) | 2 /* ContainsJsx */; return node; } - function updateJsxFragment2(node, openingFragment, children, closingFragment) { - return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment2(openingFragment, children, closingFragment), node) : node; + function updateJsxFragment(node, openingFragment, children, closingFragment) { + return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment(openingFragment, children, closingFragment), node) : node; } - function createJsxText2(text, containsOnlyTriviaWhiteSpaces) { + function createJsxText(text, containsOnlyTriviaWhiteSpaces) { const node = createBaseNode(11 /* JsxText */); node.text = text; node.containsOnlyTriviaWhiteSpaces = !!containsOnlyTriviaWhiteSpaces; node.transformFlags |= 2 /* ContainsJsx */; return node; } - function updateJsxText2(node, text, containsOnlyTriviaWhiteSpaces) { - return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText2(text, containsOnlyTriviaWhiteSpaces), node) : node; + function updateJsxText(node, text, containsOnlyTriviaWhiteSpaces) { + return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText(text, containsOnlyTriviaWhiteSpaces), node) : node; } - function createJsxOpeningFragment2() { + function createJsxOpeningFragment() { const node = createBaseNode(286 /* JsxOpeningFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxJsxClosingFragment2() { + function createJsxJsxClosingFragment() { const node = createBaseNode(287 /* JsxClosingFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxAttribute2(name, initializer) { + function createJsxAttribute(name, initializer) { const node = createBaseDeclaration(288 /* JsxAttribute */); node.name = name; node.initializer = initializer; node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 2 /* ContainsJsx */; return node; } - function updateJsxAttribute2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute2(name, initializer), node) : node; + function updateJsxAttribute(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute(name, initializer), node) : node; } - function createJsxAttributes2(properties) { + function createJsxAttributes(properties) { const node = createBaseDeclaration(289 /* JsxAttributes */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.transformFlags |= propagateChildrenFlags(node.properties) | 2 /* ContainsJsx */; return node; } - function updateJsxAttributes2(node, properties) { - return node.properties !== properties ? update(createJsxAttributes2(properties), node) : node; + function updateJsxAttributes(node, properties) { + return node.properties !== properties ? update(createJsxAttributes(properties), node) : node; } - function createJsxSpreadAttribute2(expression) { + function createJsxSpreadAttribute(expression) { const node = createBaseNode(290 /* JsxSpreadAttribute */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxSpreadAttribute2(node, expression) { - return node.expression !== expression ? update(createJsxSpreadAttribute2(expression), node) : node; + function updateJsxSpreadAttribute(node, expression) { + return node.expression !== expression ? update(createJsxSpreadAttribute(expression), node) : node; } - function createJsxExpression2(dotDotDotToken, expression) { + function createJsxExpression(dotDotDotToken, expression) { const node = createBaseNode(291 /* JsxExpression */); node.dotDotDotToken = dotDotDotToken; node.expression = expression; node.transformFlags |= propagateChildFlags(node.dotDotDotToken) | propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxExpression2(node, expression) { - return node.expression !== expression ? update(createJsxExpression2(node.dotDotDotToken, expression), node) : node; + function updateJsxExpression(node, expression) { + return node.expression !== expression ? update(createJsxExpression(node.dotDotDotToken, expression), node) : node; } - function createCaseClause2(expression, statements) { + function createCaseClause(expression, statements) { const node = createBaseNode(292 /* CaseClause */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateCaseClause2(node, expression, statements) { - return node.expression !== expression || node.statements !== statements ? update(createCaseClause2(expression, statements), node) : node; + function updateCaseClause(node, expression, statements) { + return node.expression !== expression || node.statements !== statements ? update(createCaseClause(expression, statements), node) : node; } - function createDefaultClause2(statements) { + function createDefaultClause(statements) { const node = createBaseNode(293 /* DefaultClause */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags = propagateChildrenFlags(node.statements); return node; } - function updateDefaultClause2(node, statements) { - return node.statements !== statements ? update(createDefaultClause2(statements), node) : node; + function updateDefaultClause(node, statements) { + return node.statements !== statements ? update(createDefaultClause(statements), node) : node; } - function createHeritageClause2(token, types) { + function createHeritageClause(token, types) { const node = createBaseNode(294 /* HeritageClause */); node.token = token; - node.types = createNodeArray2(types); + node.types = createNodeArray(types); node.transformFlags |= propagateChildrenFlags(node.types); switch (token) { case 94 /* ExtendsKeyword */: @@ -25105,10 +25002,10 @@ function createNodeFactory(flags, baseFactory2) { } return node; } - function updateHeritageClause2(node, types) { - return node.types !== types ? update(createHeritageClause2(node.token, types), node) : node; + function updateHeritageClause(node, types) { + return node.types !== types ? update(createHeritageClause(node.token, types), node) : node; } - function createCatchClause2(variableDeclaration, block) { + function createCatchClause(variableDeclaration, block) { const node = createBaseNode(295 /* CatchClause */); node.variableDeclaration = asVariableDeclaration(variableDeclaration); node.block = block; @@ -25117,87 +25014,79 @@ function createNodeFactory(flags, baseFactory2) { node.nextContainer = void 0; return node; } - function updateCatchClause2(node, variableDeclaration, block) { - return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause2(variableDeclaration, block), node) : node; + function updateCatchClause(node, variableDeclaration, block) { + return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause(variableDeclaration, block), node) : node; } - function createPropertyAssignment2(name, initializer) { + function createPropertyAssignment(name, initializer) { const node = createBaseDeclaration(299 /* PropertyAssignment */); node.name = asName(name); node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer); - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertyAssignment2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment2(name, initializer), node) : node; + function updatePropertyAssignment(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment(name, initializer), node) : node; } function finishUpdatePropertyAssignment(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; } return update(updated, original); } - function createShorthandPropertyAssignment2(name, objectAssignmentInitializer) { + function createShorthandPropertyAssignment(name, objectAssignmentInitializer) { const node = createBaseDeclaration(300 /* ShorthandPropertyAssignment */); node.name = asName(name); node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer); node.transformFlags |= propagateIdentifierNameFlags(node.name) | propagateChildFlags(node.objectAssignmentInitializer) | 1024 /* ContainsES2015 */; node.equalsToken = void 0; - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateShorthandPropertyAssignment2(node, name, objectAssignmentInitializer) { - return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment2(name, objectAssignmentInitializer), node) : node; + function updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer) { + return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment(name, objectAssignmentInitializer), node) : node; } function finishUpdateShorthandPropertyAssignment(updated, original) { if (updated !== original) { - updated.equalsToken = original.equalsToken; - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; + updated.equalsToken = original.equalsToken; } return update(updated, original); } - function createSpreadAssignment2(expression) { + function createSpreadAssignment(expression) { const node = createBaseDeclaration(301 /* SpreadAssignment */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateSpreadAssignment2(node, expression) { - return node.expression !== expression ? update(createSpreadAssignment2(expression), node) : node; + function updateSpreadAssignment(node, expression) { + return node.expression !== expression ? update(createSpreadAssignment(expression), node) : node; } - function createEnumMember2(name, initializer) { + function createEnumMember(name, initializer) { const node = createBaseDeclaration(302 /* EnumMember */); node.name = asName(name); node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumMember2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createEnumMember2(name, initializer), node) : node; + function updateEnumMember(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createEnumMember(name, initializer), node) : node; } function createSourceFile2(statements, endOfFileToken, flags2) { const node = baseFactory2.createBaseSourceFileNode(308 /* SourceFile */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.endOfFileToken = endOfFileToken; node.flags |= flags2; node.text = ""; @@ -25298,7 +25187,7 @@ function createNodeFactory(flags, baseFactory2) { } function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) { const node = cloneSourceFile(source); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.isDeclarationFile = isDeclarationFile; node.referencedFiles = referencedFiles; node.typeReferenceDirectives = typeReferences; @@ -25310,7 +25199,7 @@ function createNodeFactory(flags, baseFactory2) { function updateSourceFile2(node, statements, isDeclarationFile = node.isDeclarationFile, referencedFiles = node.referencedFiles, typeReferenceDirectives = node.typeReferenceDirectives, hasNoDefaultLib = node.hasNoDefaultLib, libReferenceDirectives = node.libReferenceDirectives) { return node.statements !== statements || node.isDeclarationFile !== isDeclarationFile || node.referencedFiles !== referencedFiles || node.typeReferenceDirectives !== typeReferenceDirectives || node.hasNoDefaultLib !== hasNoDefaultLib || node.libReferenceDirectives !== libReferenceDirectives ? update(cloneSourceFileWithChanges(node, statements, isDeclarationFile, referencedFiles, typeReferenceDirectives, hasNoDefaultLib, libReferenceDirectives), node) : node; } - function createBundle2(sourceFiles, prepends = emptyArray) { + function createBundle(sourceFiles, prepends = emptyArray) { const node = createBaseNode(309 /* Bundle */); node.prepends = prepends; node.sourceFiles = sourceFiles; @@ -25320,8 +25209,8 @@ function createNodeFactory(flags, baseFactory2) { node.hasNoDefaultLib = void 0; return node; } - function updateBundle2(node, sourceFiles, prepends = emptyArray) { - return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle2(sourceFiles, prepends), node) : node; + function updateBundle(node, sourceFiles, prepends = emptyArray) { + return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle(sourceFiles, prepends), node) : node; } function createUnparsedSource(prologues, syntheticReferences, texts) { const node = createBaseNode(310 /* UnparsedSource */); @@ -25371,26 +25260,26 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createSyntaxList3(children) { - const node = createBaseNode(353 /* SyntaxList */); + const node = createBaseNode(354 /* SyntaxList */); node._children = children; return node; } - function createNotEmittedStatement2(original) { - const node = createBaseNode(354 /* NotEmittedStatement */); + function createNotEmittedStatement(original) { + const node = createBaseNode(355 /* NotEmittedStatement */); node.original = original; setTextRange(node, original); return node; } - function createPartiallyEmittedExpression2(expression, original) { - const node = createBaseNode(355 /* PartiallyEmittedExpression */); + function createPartiallyEmittedExpression(expression, original) { + const node = createBaseNode(356 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; setTextRange(node, original); return node; } - function updatePartiallyEmittedExpression2(node, expression) { - return node.expression !== expression ? update(createPartiallyEmittedExpression2(expression, node.original), node) : node; + function updatePartiallyEmittedExpression(node, expression) { + return node.expression !== expression ? update(createPartiallyEmittedExpression(expression, node.original), node) : node; } function flattenCommaElements(node) { if (nodeIsSynthesized(node) && !isParseTreeNode(node) && !node.original && !node.emitNode && !node.id) { @@ -25404,8 +25293,8 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createCommaListExpression(elements) { - const node = createBaseNode(356 /* CommaListExpression */); - node.elements = createNodeArray2(sameFlatMap(elements, flattenCommaElements)); + const node = createBaseNode(357 /* CommaListExpression */); + node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; } @@ -25413,19 +25302,19 @@ function createNodeFactory(flags, baseFactory2) { return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createEndOfDeclarationMarker(original) { - const node = createBaseNode(358 /* EndOfDeclarationMarker */); + const node = createBaseNode(359 /* EndOfDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createMergeDeclarationMarker(original) { - const node = createBaseNode(357 /* MergeDeclarationMarker */); + const node = createBaseNode(358 /* MergeDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(359 /* SyntheticReferenceExpression */); + const node = createBaseNode(360 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -25435,36 +25324,32 @@ function createNodeFactory(flags, baseFactory2) { return node.expression !== expression || node.thisArg !== thisArg ? update(createSyntheticReferenceExpression(expression, thisArg), node) : node; } function cloneGeneratedIdentifier(node) { - const clone2 = createBaseIdentifier( - node.escapedText, - /*originalKeywordKind*/ - void 0 - ); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function cloneIdentifier(node) { - const clone2 = createBaseIdentifier(node.escapedText, node.originalKeywordKind); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.typeArguments = node.typeArguments; - clone2.hasExtendedUnicodeEscape = node.hasExtendedUnicodeEscape; clone2.jsDoc = node.jsDoc; - clone2.jsDocCache = node.jsDocCache; clone2.flowNode = node.flowNode; clone2.symbol = node.symbol; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + const typeArguments = getIdentifierTypeArguments(node); + if (typeArguments) + setIdentifierTypeArguments(clone2, typeArguments); return clone2; } function cloneGeneratedPrivateIdentifier(node) { const clone2 = createBasePrivateIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function clonePrivateIdentifier(node) { @@ -25505,9 +25390,9 @@ function createNodeFactory(flags, baseFactory2) { } return clone2; } - function createImmediatelyInvokedFunctionExpression2(statements, param, paramValue) { + function createImmediatelyInvokedFunctionExpression(statements, param, paramValue) { return createCallExpression( - createFunctionExpression2( + createFunctionExpression( /*modifiers*/ void 0, /*asteriskToken*/ @@ -25520,7 +25405,7 @@ function createNodeFactory(flags, baseFactory2) { param ? [param] : [], /*type*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -25532,9 +25417,9 @@ function createNodeFactory(flags, baseFactory2) { paramValue ? [paramValue] : [] ); } - function createImmediatelyInvokedArrowFunction2(statements, param, paramValue) { + function createImmediatelyInvokedArrowFunction(statements, param, paramValue) { return createCallExpression( - createArrowFunction3( + createArrowFunction( /*modifiers*/ void 0, /*typeParameters*/ @@ -25545,7 +25430,7 @@ function createNodeFactory(flags, baseFactory2) { void 0, /*equalsGreaterThanToken*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -25557,11 +25442,11 @@ function createNodeFactory(flags, baseFactory2) { paramValue ? [paramValue] : [] ); } - function createVoidZero2() { - return createVoidExpression(createNumericLiteral2("0")); + function createVoidZero() { + return createVoidExpression(createNumericLiteral("0")); } - function createExportDefault2(expression) { - return createExportAssignment3( + function createExportDefault(expression) { + return createExportAssignment2( /*modifiers*/ void 0, /*isExportEquals*/ @@ -25569,14 +25454,14 @@ function createNodeFactory(flags, baseFactory2) { expression ); } - function createExternalModuleExport2(exportName) { - return createExportDeclaration3( + function createExternalModuleExport(exportName) { + return createExportDeclaration( /*modifiers*/ void 0, /*isTypeOnly*/ false, - createNamedExports2([ - createExportSpecifier2( + createNamedExports([ + createExportSpecifier( /*isTypeOnly*/ false, /*propertyName*/ @@ -25587,12 +25472,12 @@ function createNodeFactory(flags, baseFactory2) { ); } function createTypeCheck(value, tag) { - return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero2()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral2(tag)); + return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral(tag)); } function createMethodCall(object, methodName, argumentsList) { if (isCallChain(object)) { - return createCallChain2( - createPropertyAccessChain2( + return createCallChain( + createPropertyAccessChain( object, /*questionDotToken*/ void 0, @@ -25622,7 +25507,7 @@ function createNodeFactory(flags, baseFactory2) { return createMethodCall(target, "apply", [thisArg, argumentsExpression]); } function createGlobalMethodCall(globalObjectName, methodName, argumentsList) { - return createMethodCall(createIdentifier3(globalObjectName), methodName, argumentsList); + return createMethodCall(createIdentifier(globalObjectName), methodName, argumentsList); } function createArraySliceCall(array, start2) { return createMethodCall(array, "slice", start2 === void 0 ? [] : [asExpression(start2)]); @@ -25633,6 +25518,9 @@ function createNodeFactory(flags, baseFactory2) { function createObjectDefinePropertyCall(target, propertyName, attributes) { return createGlobalMethodCall("Object", "defineProperty", [target, asExpression(propertyName), attributes]); } + function createObjectGetOwnPropertyDescriptorCall(target, propertyName) { + return createGlobalMethodCall("Object", "getOwnPropertyDescriptor", [target, asExpression(propertyName)]); + } function createReflectGetCall(target, propertyKey, receiver) { return createGlobalMethodCall("Reflect", "get", receiver ? [target, propertyKey, receiver] : [target, propertyKey]); } @@ -25641,7 +25529,7 @@ function createNodeFactory(flags, baseFactory2) { } function tryAddPropertyAssignment(properties, propertyName, expression) { if (expression) { - properties.push(createPropertyAssignment2(propertyName, expression)); + properties.push(createPropertyAssignment(propertyName, expression)); return true; } return false; @@ -25662,15 +25550,15 @@ function createNodeFactory(flags, baseFactory2) { case 214 /* ParenthesizedExpression */: return updateParenthesizedExpression(outerExpression, expression); case 213 /* TypeAssertionExpression */: - return updateTypeAssertion2(outerExpression, outerExpression.type, expression); + return updateTypeAssertion(outerExpression, outerExpression.type, expression); case 231 /* AsExpression */: - return updateAsExpression2(outerExpression, expression, outerExpression.type); + return updateAsExpression(outerExpression, expression, outerExpression.type); case 235 /* SatisfiesExpression */: return updateSatisfiesExpression(outerExpression, expression, outerExpression.type); case 232 /* NonNullExpression */: - return updateNonNullExpression2(outerExpression, expression); - case 355 /* PartiallyEmittedExpression */: - return updatePartiallyEmittedExpression2(outerExpression, expression); + return updateNonNullExpression(outerExpression, expression); + case 356 /* PartiallyEmittedExpression */: + return updatePartiallyEmittedExpression(outerExpression, expression); } } function isIgnorableParen(node) { @@ -25726,13 +25614,13 @@ function createNodeFactory(flags, baseFactory2) { let thisArg; let target; if (isSuperProperty(callee)) { - thisArg = createThis2(); + thisArg = createThis(); target = callee; } else if (isSuperKeyword(callee)) { - thisArg = createThis2(); - target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier3("_super"), callee) : callee; + thisArg = createThis(); + target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier("_super"), callee) : callee; } else if (getEmitFlags(callee) & 8192 /* HelperName */) { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( callee, /*optionalChain*/ @@ -25740,7 +25628,7 @@ function createNodeFactory(flags, baseFactory2) { ); } else if (isPropertyAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createPropertyAccessExpression( setTextRange( factory2.createAssignment( @@ -25758,7 +25646,7 @@ function createNodeFactory(flags, baseFactory2) { } } else if (isElementAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createElementAccessExpression( setTextRange( factory2.createAssignment( @@ -25775,7 +25663,7 @@ function createNodeFactory(flags, baseFactory2) { target = callee; } } else { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, /*optionalChain*/ @@ -25806,8 +25694,8 @@ function createNodeFactory(flags, baseFactory2) { /*initializer*/ void 0 )], - createBlock2([ - createExpressionStatement2(expression) + createBlock([ + createExpressionStatement(expression) ]) ) ]) @@ -25831,7 +25719,7 @@ function createNodeFactory(flags, baseFactory2) { setEmitFlags(name, emitFlags); return name; } - return getGeneratedNameForNode3(node); + return getGeneratedNameForNode(node); } function getInternalName(node, allowComments, allowSourceMaps) { return getName(node, allowComments, allowSourceMaps, 32768 /* LocalName */ | 65536 /* InternalName */); @@ -25871,7 +25759,7 @@ function createNodeFactory(flags, baseFactory2) { return isStringLiteral(node.expression) && node.expression.text === "use strict"; } function createUseStrictPrologue() { - return startOnNewLine(createExpressionStatement2(createStringLiteral2("use strict"))); + return startOnNewLine(createExpressionStatement(createStringLiteral("use strict"))); } function copyStandardPrologue(source, target, statementOffset = 0, ensureUseStrict2) { Debug.assert(target.length === 0, "Prologue directives should be at the first statement in the target statements array"); @@ -25910,13 +25798,13 @@ function createNodeFactory(flags, baseFactory2) { function ensureUseStrict(statements) { const foundUseStrict = findUseStrictPrologue(statements); if (!foundUseStrict) { - return setTextRange(createNodeArray2([createUseStrictPrologue(), ...statements]), statements); + return setTextRange(createNodeArray([createUseStrictPrologue(), ...statements]), statements); } return statements; } function liftToBlock(nodes) { Debug.assert(every(nodes, isStatementOrBlock), "Cannot lift nodes to a Block."); - return singleOrUndefined(nodes) || createBlock2(nodes); + return singleOrUndefined(nodes) || createBlock(nodes); } function findSpanEnd(array, test, start2) { let i = start2; @@ -25965,7 +25853,7 @@ function createNodeFactory(flags, baseFactory2) { } } if (isNodeArray(statements)) { - return setTextRange(createNodeArray2(left, statements.hasTrailingComma), statements); + return setTextRange(createNodeArray(left, statements.hasTrailingComma), statements); } return statements; } @@ -25973,33 +25861,33 @@ function createNodeFactory(flags, baseFactory2) { var _a2; let modifierArray; if (typeof modifiers === "number") { - modifierArray = createModifiersFromModifierFlags2(modifiers); + modifierArray = createModifiersFromModifierFlags(modifiers); } else { modifierArray = modifiers; } - return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration2(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature3(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature3(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature2(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction3(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression3(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement2(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration2(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration2(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration2(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration2(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration2(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment2(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration3(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); + return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); } function asNodeArray(array) { - return array ? createNodeArray2(array) : void 0; + return array ? createNodeArray(array) : void 0; } function asName(name) { - return typeof name === "string" ? createIdentifier3(name) : name; + return typeof name === "string" ? createIdentifier(name) : name; } function asExpression(value) { - return typeof value === "string" ? createStringLiteral2(value) : typeof value === "number" ? createNumericLiteral2(value) : typeof value === "boolean" ? value ? createTrue2() : createFalse2() : value; + return typeof value === "string" ? createStringLiteral(value) : typeof value === "number" ? createNumericLiteral(value) : typeof value === "boolean" ? value ? createTrue() : createFalse() : value; } function asInitializer(node) { return node && parenthesizerRules().parenthesizeExpressionForDisallowedComma(node); } function asToken(value) { - return typeof value === "number" ? createToken3(value) : value; + return typeof value === "number" ? createToken(value) : value; } function asEmbeddedStatement(statement) { - return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement2(), statement), statement) : statement; + return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement; } function asVariableDeclaration(variableDeclaration) { if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) { - return createVariableDeclaration3( + return createVariableDeclaration( variableDeclaration, /*exclamationToken*/ void 0, @@ -26205,7 +26093,7 @@ function getTransformFlagsSubtreeExclusions(kind) { case 213 /* TypeAssertionExpression */: case 235 /* SatisfiesExpression */: case 231 /* AsExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 214 /* ParenthesizedExpression */: case 106 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -26488,6 +26376,7 @@ function setOriginalNode(node, original) { function mergeEmitNode(sourceEmitNode, destEmitNode) { const { flags, + internalFlags, leadingComments, trailingComments, commentRange, @@ -26505,7 +26394,9 @@ function mergeEmitNode(sourceEmitNode, destEmitNode) { if (trailingComments) destEmitNode.trailingComments = addRange(trailingComments.slice(), destEmitNode.trailingComments); if (flags) - destEmitNode.flags = flags & ~536870912 /* Immutable */; + destEmitNode.flags = flags; + if (internalFlags) + destEmitNode.internalFlags = internalFlags & ~8 /* Immutable */; if (commentRange) destEmitNode.commentRange = commentRange; if (sourceMapRange) @@ -26547,7 +26438,7 @@ function getOrCreateEmitNode(node) { } node.emitNode = {}; } else { - Debug.assert(!(node.emitNode.flags & 536870912 /* Immutable */), "Invalid attempt to mutate an immutable node."); + Debug.assert(!(node.emitNode.internalFlags & 8 /* Immutable */), "Invalid attempt to mutate an immutable node."); } return node.emitNode; } @@ -26576,6 +26467,15 @@ function addEmitFlags(node, emitFlags) { emitNode.flags = emitNode.flags | emitFlags; return node; } +function setInternalEmitFlags(node, emitFlags) { + getOrCreateEmitNode(node).internalFlags = emitFlags; + return node; +} +function addInternalEmitFlags(node, emitFlags) { + const emitNode = getOrCreateEmitNode(node); + emitNode.internalFlags = emitNode.internalFlags | emitFlags; + return node; +} function getSourceMapRange(node) { var _a2, _b; return (_b = (_a2 = node.emitNode) == null ? void 0 : _a2.sourceMapRange) != null ? _b : node; @@ -26706,7 +26606,7 @@ function setSnippetElement(node, snippet) { return node; } function ignoreSourceNewlines(node) { - getOrCreateEmitNode(node).flags |= 268435456 /* IgnoreSourceNewlines */; + getOrCreateEmitNode(node).internalFlags |= 4 /* IgnoreSourceNewlines */; return node; } function setTypeNode(node, type) { @@ -26718,18 +26618,51 @@ function getTypeNode(node) { var _a2; return (_a2 = node.emitNode) == null ? void 0 : _a2.typeNode; } +function setIdentifierTypeArguments(node, typeArguments) { + getOrCreateEmitNode(node).identifierTypeArguments = typeArguments; + return node; +} +function getIdentifierTypeArguments(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.identifierTypeArguments; +} +function setIdentifierAutoGenerate(node, autoGenerate) { + getOrCreateEmitNode(node).autoGenerate = autoGenerate; + return node; +} +function getIdentifierAutoGenerate(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; +} +function setIdentifierGeneratedImportReference(node, value) { + getOrCreateEmitNode(node).generatedImportReference = value; + return node; +} +function getIdentifierGeneratedImportReference(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.generatedImportReference; +} // src/compiler/factory/emitHelpers.ts +var PrivateIdentifierKind = /* @__PURE__ */ ((PrivateIdentifierKind2) => { + PrivateIdentifierKind2["Field"] = "f"; + PrivateIdentifierKind2["Method"] = "m"; + PrivateIdentifierKind2["Accessor"] = "a"; + return PrivateIdentifierKind2; +})(PrivateIdentifierKind || {}); function createEmitHelperFactory(context) { const factory2 = context.factory; - const immutableTrue = memoize(() => setEmitFlags(factory2.createTrue(), 536870912 /* Immutable */)); - const immutableFalse = memoize(() => setEmitFlags(factory2.createFalse(), 536870912 /* Immutable */)); + const immutableTrue = memoize(() => setInternalEmitFlags(factory2.createTrue(), 8 /* Immutable */)); + const immutableFalse = memoize(() => setInternalEmitFlags(factory2.createFalse(), 8 /* Immutable */)); return { getUnscopedHelperName, // TypeScript Helpers createDecorateHelper, createMetadataHelper, createParamHelper, + // ES Decorators Helpers + createESDecorateHelper, + createRunInitializersHelper, // ES2018 Helpers createAssignHelper, createAwaitHelper, @@ -26744,6 +26677,8 @@ function createEmitHelperFactory(context) { createExtendsHelper, createTemplateObjectHelper, createSpreadArrayHelper, + createPropKeyHelper, + createSetFunctionNameHelper, // ES2015 Destructuring Helpers createValuesHelper, createReadHelper, @@ -26812,6 +26747,50 @@ function createEmitHelperFactory(context) { location ); } + function createESDecorateClassContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral("class")), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name) + ]); + } + function createESDecorateClassElementContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral(contextIn.kind)), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name.computed ? contextIn.name.name : factory2.createStringLiteralFromNode(contextIn.name.name)), + factory2.createPropertyAssignment(factory2.createIdentifier("static"), contextIn.static ? factory2.createTrue() : factory2.createFalse()), + factory2.createPropertyAssignment(factory2.createIdentifier("private"), contextIn.private ? factory2.createTrue() : factory2.createFalse()) + // Disabled, pending resolution of https://github.com/tc39/proposal-decorators/issues/494 + // factory.createPropertyAssignment(factory.createIdentifier("access"), createESDecorateClassElementAccessObject(contextIn.name, contextIn.access)) + ]); + } + function createESDecorateContextObject(contextIn) { + return contextIn.kind === "class" ? createESDecorateClassContextObject(contextIn) : createESDecorateClassElementContextObject(contextIn); + } + function createESDecorateHelper(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + context.requestEmitHelper(esDecorateHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__esDecorate"), + /*typeArguments*/ + void 0, + [ + ctor != null ? ctor : factory2.createNull(), + descriptorIn != null ? descriptorIn : factory2.createNull(), + decorators, + createESDecorateContextObject(contextIn), + initializers, + extraInitializers + ] + ); + } + function createRunInitializersHelper(thisArg, initializers, value) { + context.requestEmitHelper(runInitializersHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__runInitializers"), + /*typeArguments*/ + void 0, + value ? [thisArg, initializers, value] : [thisArg, initializers] + ); + } function createAssignHelper(attributesSegments) { if (getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { return factory2.createCallExpression( @@ -26968,6 +26947,24 @@ function createEmitHelperFactory(context) { [to, from, packFrom ? immutableTrue() : immutableFalse()] ); } + function createPropKeyHelper(expr) { + context.requestEmitHelper(propKeyHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__propKey"), + /*typeArguments*/ + void 0, + [expr] + ); + } + function createSetFunctionNameHelper(f, name, prefix) { + context.requestEmitHelper(setFunctionNameHelper); + return context.factory.createCallExpression( + getUnscopedHelperName("__setFunctionName"), + /*typeArguments*/ + void 0, + prefix ? [f, name, context.factory.createStringLiteral(prefix)] : [f, name] + ); + } function createValuesHelper(expression) { context.requestEmitHelper(valuesHelper); return factory2.createCallExpression( @@ -27131,6 +27128,54 @@ var paramHelper = { return function (target, key) { decorator(target, key, paramIndex); } };` }; +var esDecorateHelper = { + name: "typescript:esDecorate", + importName: "__esDecorate", + scoped: false, + priority: 2, + text: ` + var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + };` +}; +var runInitializersHelper = { + name: "typescript:runInitializers", + importName: "__runInitializers", + scoped: false, + priority: 2, + text: ` + var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + };` +}; var assignHelper = { name: "typescript:assign", importName: "__assign", @@ -27303,6 +27348,25 @@ var spreadArrayHelper = { return to.concat(ar || Array.prototype.slice.call(from)); };` }; +var propKeyHelper = { + name: "typescript:propKey", + importName: "__propKey", + scoped: false, + text: ` + var __propKey = (this && this.__propKey) || function (x) { + return typeof x === "symbol" ? x : "".concat(x); + };` +}; +var setFunctionNameHelper = { + name: "typescript:setFunctionName", + importName: "__setFunctionName", + scoped: false, + text: ` + var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + };` +}; var valuesHelper = { name: "typescript:values", importName: "__values", @@ -27458,6 +27522,8 @@ function getAllUnscopedEmitHelpers() { decorateHelper, metadataHelper, paramHelper, + esDecorateHelper, + runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, @@ -27470,6 +27536,8 @@ function getAllUnscopedEmitHelpers() { spreadArrayHelper, valuesHelper, readHelper, + propKeyHelper, + setFunctionNameHelper, generatorHelper, importStarHelper, importDefaultHelper, @@ -27567,6 +27635,9 @@ function isPrivateIdentifier(node) { function isExportModifier(node) { return node.kind === 93 /* ExportKeyword */; } +function isDefaultModifier(node) { + return node.kind === 88 /* DefaultKeyword */; +} function isAsyncModifier(node) { return node.kind === 132 /* AsyncKeyword */; } @@ -27820,10 +27891,10 @@ function isSyntheticExpression(node) { return node.kind === 234 /* SyntheticExpression */; } function isPartiallyEmittedExpression(node) { - return node.kind === 355 /* PartiallyEmittedExpression */; + return node.kind === 356 /* PartiallyEmittedExpression */; } function isCommaListExpression(node) { - return node.kind === 356 /* CommaListExpression */; + return node.kind === 357 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 236 /* TemplateSpan */; @@ -27967,16 +28038,16 @@ function isMissingDeclaration(node) { return node.kind === 279 /* MissingDeclaration */; } function isNotEmittedStatement(node) { - return node.kind === 354 /* NotEmittedStatement */; + return node.kind === 355 /* NotEmittedStatement */; } function isSyntheticReference(node) { - return node.kind === 359 /* SyntheticReferenceExpression */; + return node.kind === 360 /* SyntheticReferenceExpression */; } function isMergeDeclarationMarker(node) { - return node.kind === 357 /* MergeDeclarationMarker */; + return node.kind === 358 /* MergeDeclarationMarker */; } function isEndOfDeclarationMarker(node) { - return node.kind === 358 /* EndOfDeclarationMarker */; + return node.kind === 359 /* EndOfDeclarationMarker */; } function isExternalModuleReference(node) { return node.kind === 280 /* ExternalModuleReference */; @@ -28167,11 +28238,14 @@ function isJSDocPropertyTag(node) { function isJSDocImplementsTag(node) { return node.kind === 332 /* JSDocImplementsTag */; } +function isJSDocSatisfiesTag(node) { + return node.kind === 353 /* JSDocSatisfiesTag */; +} function isJSDocThrowsTag(node) { return node.kind === 352 /* JSDocThrowsTag */; } function isSyntaxList(n) { - return n.kind === 353 /* SyntaxList */; + return n.kind === 354 /* SyntaxList */; } // src/compiler/factory/utilities.ts @@ -28194,7 +28268,7 @@ function createMemberAccessForPropertyName(factory2, target, memberName, locatio isMemberName(memberName) ? factory2.createPropertyAccessExpression(target, memberName) : factory2.createElementAccessExpression(target, memberName), memberName ); - getOrCreateEmitNode(expression).flags |= 128 /* NoNestedSourceMaps */; + addEmitFlags(expression, 128 /* NoNestedSourceMaps */); return expression; } } @@ -28538,8 +28612,11 @@ function startsWithUseStrict(statements) { const firstStatement = firstOrUndefined(statements); return firstStatement !== void 0 && isPrologueDirective(firstStatement) && isUseStrictPrologue(firstStatement); } +function isCommaExpression(node) { + return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */; +} function isCommaSequence(node) { - return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */ || node.kind === 356 /* CommaListExpression */; + return isCommaExpression(node) || isCommaListExpression(node); } function isJSDocTypeAssertion(node) { return isParenthesizedExpression(node) && isInJSFile(node) && !!getJSDocTypeTag(node); @@ -28558,11 +28635,12 @@ function isOuterExpression(node, kinds = 15 /* All */) { return (kinds & 1 /* Parentheses */) !== 0; case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: + case 230 /* ExpressionWithTypeArguments */: case 235 /* SatisfiesExpression */: return (kinds & 2 /* TypeAssertions */) !== 0; case 232 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -28573,6 +28651,14 @@ function skipOuterExpressions(node, kinds = 15 /* All */) { } return node; } +function walkUpOuterExpressions(node, kinds = 15 /* All */) { + let parent2 = node.parent; + while (isOuterExpression(parent2, kinds)) { + parent2 = parent2.parent; + Debug.assert(parent2); + } + return parent2; +} function skipAssertions(node) { return skipOuterExpressions(node, 6 /* Assertions */); } @@ -28654,7 +28740,7 @@ function createExternalHelpersImportDeclarationIfNeeded(nodeFactory, helperFacto /*assertClause*/ void 0 ); - addEmitFlags(externalHelpersImportDeclaration, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); return externalHelpersImportDeclaration; } } @@ -28866,12 +28952,21 @@ function canHaveIllegalModifiers(node) { const kind = node.kind; return kind === 172 /* ClassStaticBlockDeclaration */ || kind === 299 /* PropertyAssignment */ || kind === 300 /* ShorthandPropertyAssignment */ || kind === 181 /* FunctionType */ || kind === 279 /* MissingDeclaration */ || kind === 267 /* NamespaceExportDeclaration */; } -var isTypeNodeOrTypeParameterDeclaration = or(isTypeNode, isTypeParameterDeclaration); -var isQuestionOrExclamationToken = or(isQuestionToken, isExclamationToken); -var isIdentifierOrThisTypeNode = or(isIdentifier, isThisTypeNode); -var isReadonlyKeywordOrPlusOrMinusToken = or(isReadonlyKeyword, isPlusToken, isMinusToken); -var isQuestionOrPlusOrMinusToken = or(isQuestionToken, isPlusToken, isMinusToken); -var isModuleName = or(isIdentifier, isStringLiteral); +function isQuestionOrExclamationToken(node) { + return isQuestionToken(node) || isExclamationToken(node); +} +function isIdentifierOrThisTypeNode(node) { + return isIdentifier(node) || isThisTypeNode(node); +} +function isReadonlyKeywordOrPlusOrMinusToken(node) { + return isReadonlyKeyword(node) || isPlusToken(node) || isMinusToken(node); +} +function isQuestionOrPlusOrMinusToken(node) { + return isQuestionToken(node) || isPlusToken(node) || isMinusToken(node); +} +function isModuleName(node) { + return isIdentifier(node) || isStringLiteral(node); +} function isLiteralTypeLikeExpression(node) { const kind = node.kind; return kind === 104 /* NullKeyword */ || kind === 110 /* TrueKeyword */ || kind === 95 /* FalseKeyword */ || isLiteralExpression(node) || isPrefixUnaryExpression(node); @@ -29057,6 +29152,17 @@ function createBinaryExpressionTrampoline(onEnter, onLeft, onOperator, onRight, return resultHolder.value; } } +function isExportOrDefaultKeywordKind(kind) { + return kind === 93 /* ExportKeyword */ || kind === 88 /* DefaultKeyword */; +} +function isExportOrDefaultModifier(node) { + const kind = node.kind; + return isExportOrDefaultKeywordKind(kind); +} +function isNonExportDefaultModifier(node) { + const kind = node.kind; + return isModifierKind(kind) && !isExportOrDefaultKeywordKind(kind); +} function elideNodes(factory2, nodes) { if (nodes === void 0) return void 0; @@ -29065,13 +29171,16 @@ function elideNodes(factory2, nodes) { return setTextRange(factory2.createNodeArray([], nodes.hasTrailingComma), nodes); } function getNodeForGeneratedName(name) { - if (name.autoGenerate.flags & 4 /* Node */) { - const autoGenerateId = name.autoGenerate.id; + var _a2; + const autoGenerate = name.emitNode.autoGenerate; + if (autoGenerate.flags & 4 /* Node */) { + const autoGenerateId = autoGenerate.id; let node = name; let original = node.original; while (original) { node = original; - if (isMemberName(node) && (node.autoGenerate === void 0 || !!(node.autoGenerate.flags & 4 /* Node */) && node.autoGenerate.id !== autoGenerateId)) { + const autoGenerate2 = (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + if (isMemberName(node) && (autoGenerate2 === void 0 || !!(autoGenerate2.flags & 4 /* Node */) && autoGenerate2.id !== autoGenerateId)) { break; } original = node.original; @@ -29170,6 +29279,50 @@ function createAccessorPropertySetRedirector(factory2, node, modifiers, name) { ]) ); } +function findComputedPropertyNameCacheAssignment(name) { + let node = name.expression; + while (true) { + node = skipOuterExpressions(node); + if (isCommaListExpression(node)) { + node = last(node.elements); + continue; + } + if (isCommaExpression(node)) { + node = node.right; + continue; + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ) && isGeneratedIdentifier(node.left)) { + return node; + } + break; + } +} +function isSyntheticParenthesizedExpression(node) { + return isParenthesizedExpression(node) && nodeIsSynthesized(node) && !node.emitNode; +} +function flattenCommaListWorker(node, expressions) { + if (isSyntheticParenthesizedExpression(node)) { + flattenCommaListWorker(node.expression, expressions); + } else if (isCommaExpression(node)) { + flattenCommaListWorker(node.left, expressions); + flattenCommaListWorker(node.right, expressions); + } else if (isCommaListExpression(node)) { + for (const child of node.elements) { + flattenCommaListWorker(child, expressions); + } + } else { + expressions.push(node); + } +} +function flattenCommaList(node) { + const expressions = []; + flattenCommaListWorker(node, expressions); + return expressions; +} // src/compiler/factory/utilitiesPublic.ts function setTextRange(range, location) { @@ -29243,7 +29396,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.constraint) || visitNode2(cbNode, node.default) || visitNode2(cbNode, node.expression); }, [300 /* ShorthandPropertyAssignment */]: function forEachChildInShorthandPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); }, [301 /* SpreadAssignment */]: function forEachChildInSpreadAssignment(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.expression); @@ -29258,7 +29411,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); }, [299 /* PropertyAssignment */]: function forEachChildInPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); }, [257 /* VariableDeclaration */]: function forEachChildInVariableDeclaration(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); @@ -29267,7 +29420,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.dotDotDotToken) || visitNode2(cbNode, node.propertyName) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [178 /* IndexSignature */]: function forEachChildInIndexSignature(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [182 /* ConstructorType */]: function forEachChildInConstructorType(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -29284,7 +29437,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [173 /* Constructor */]: function forEachChildInConstructor(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [174 /* GetAccessor */]: function forEachChildInGetAccessor(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -29293,7 +29446,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [259 /* FunctionDeclaration */]: function forEachChildInFunctionDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [215 /* FunctionExpression */]: function forEachChildInFunctionExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -29302,7 +29455,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.equalsGreaterThanToken) || visitNode2(cbNode, node.body); }, [172 /* ClassStaticBlockDeclaration */]: function forEachChildInClassStaticBlockDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); }, [180 /* TypeReference */]: function forEachChildInTypeReference(node, cbNode, cbNodes) { return visitNode2(cbNode, node.typeName) || visitNodes(cbNode, cbNodes, node.typeArguments); @@ -29423,7 +29576,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.statements) || visitNode2(cbNode, node.endOfFileToken); }, [240 /* VariableStatement */]: function forEachChildInVariableStatement(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); }, [258 /* VariableDeclarationList */]: function forEachChildInVariableDeclarationList(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.declarations); @@ -29487,25 +29640,25 @@ var forEachChildTable = { [260 /* ClassDeclaration */]: forEachChildInClassDeclarationOrExpression, [228 /* ClassExpression */]: forEachChildInClassDeclarationOrExpression, [261 /* InterfaceDeclaration */]: function forEachChildInInterfaceDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); }, [262 /* TypeAliasDeclaration */]: function forEachChildInTypeAliasDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); }, [263 /* EnumDeclaration */]: function forEachChildInEnumDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); }, [302 /* EnumMember */]: function forEachChildInEnumMember(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [264 /* ModuleDeclaration */]: function forEachChildInModuleDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); }, [268 /* ImportEqualsDeclaration */]: function forEachChildInImportEqualsDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); }, [269 /* ImportDeclaration */]: function forEachChildInImportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [270 /* ImportClause */]: function forEachChildInImportClause(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.namedBindings); @@ -29517,7 +29670,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.value); }, [267 /* NamespaceExportDeclaration */]: function forEachChildInNamespaceExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNode2(cbNode, node.name); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name); }, [271 /* NamespaceImport */]: function forEachChildInNamespaceImport(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name); @@ -29528,12 +29681,12 @@ var forEachChildTable = { [272 /* NamedImports */]: forEachChildInNamedImportsOrExports, [276 /* NamedExports */]: forEachChildInNamedImportsOrExports, [275 /* ExportDeclaration */]: function forEachChildInExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [273 /* ImportSpecifier */]: forEachChildInImportOrExportSpecifier, [278 /* ExportSpecifier */]: forEachChildInImportOrExportSpecifier, [274 /* ExportAssignment */]: function forEachChildInExportAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); }, [225 /* TemplateExpression */]: function forEachChildInTemplateExpression(node, cbNode, cbNodes) { return visitNode2(cbNode, node.head) || visitNodes(cbNode, cbNodes, node.templateSpans); @@ -29560,9 +29713,9 @@ var forEachChildTable = { return visitNode2(cbNode, node.expression); }, [279 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers); + return visitNodes(cbNode, cbNodes, node.modifiers); }, - [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [357 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [281 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -29634,6 +29787,7 @@ var forEachChildTable = { [347 /* JSDocTypeTag */]: forEachChildInJSDocTypeLikeTag, [346 /* JSDocThisTag */]: forEachChildInJSDocTypeLikeTag, [343 /* JSDocEnumTag */]: forEachChildInJSDocTypeLikeTag, + [353 /* JSDocSatisfiesTag */]: forEachChildInJSDocTypeLikeTag, [352 /* JSDocThrowsTag */]: forEachChildInJSDocTypeLikeTag, [342 /* JSDocOverloadTag */]: forEachChildInJSDocTypeLikeTag, [326 /* JSDocSignature */]: function forEachChildInJSDocSignature(node, cbNode, _cbNodes) { @@ -29653,7 +29807,7 @@ var forEachChildTable = { [339 /* JSDocReadonlyTag */]: forEachChildInJSDocTag, [334 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [340 /* JSDocOverrideTag */]: forEachChildInJSDocTag, - [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [356 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; function forEachChildInCallOrConstructSignature(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -29966,7 +30120,7 @@ var Parser; const pos = getNodePos(); let statements, endOfFileToken; if (token() === 1 /* EndOfFileToken */) { - statements = createNodeArray2([], pos, pos); + statements = createNodeArray([], pos, pos); endOfFileToken = parseTokenNode(); } else { let expressions; @@ -30012,7 +30166,7 @@ var Parser; const expression = isArray(expressions) ? finishNode(factory2.createArrayLiteralExpression(expressions), pos) : Debug.checkDefined(expressions); const statement = factory2.createExpressionStatement(expression); finishNode(statement, pos); - statements = createNodeArray2([statement], pos); + statements = createNodeArray([statement], pos); endOfFileToken = parseExpectedToken(1 /* EndOfFileToken */, Diagnostics.Unexpected_token); } const sourceFile = createSourceFile2( @@ -30660,7 +30814,7 @@ var Parser; function parseSemicolon() { return tryParseSemicolon() || parseExpected(26 /* SemicolonToken */); } - function createNodeArray2(elements, pos, end, hasTrailingComma) { + function createNodeArray(elements, pos, end, hasTrailingComma) { const array = factory2.createNodeArray(elements, hasTrailingComma); setTextRangePosEnd(array, pos, end != null ? end : scanner2.getStartPos()); return array; @@ -30685,8 +30839,6 @@ var Parser; const pos = getNodePos(); const result = kind === 79 /* Identifier */ ? factory2.createIdentifier( "", - /*typeArguments*/ - void 0, /*originalKeywordKind*/ void 0 ) : isTemplateLiteralKind(kind) ? factory2.createTemplateLiteralLikeNode( @@ -30713,7 +30865,7 @@ var Parser; } return identifier; } - function createIdentifier3(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { + function createIdentifier(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { if (isIdentifier3) { identifierCount++; const pos = getNodePos(); @@ -30721,23 +30873,17 @@ var Parser; const text = internIdentifier(scanner2.getTokenValue()); const hasExtendedUnicodeEscape = scanner2.hasExtendedUnicodeEscape(); nextTokenWithoutCheck(); - return finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind, - hasExtendedUnicodeEscape - ), pos); + return finishNode(factory2.createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape), pos); } if (token() === 80 /* PrivateIdentifier */) { parseErrorAtCurrentToken(privateIdentifierDiagnosticMessage || Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); } if (token() === 0 /* Unknown */ && scanner2.tryScan(() => scanner2.reScanInvalidIdentifier() === 79 /* Identifier */)) { - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); @@ -30750,7 +30896,7 @@ var Parser; return createMissingNode(79 /* Identifier */, reportAtCurrentPosition, diagnosticMessage || defaultMessage, msgArg); } function parseBindingIdentifier(privateIdentifierDiagnosticMessage) { - return createIdentifier3( + return createIdentifier( isBindingIdentifier(), /*diagnosticMessage*/ void 0, @@ -30758,10 +30904,10 @@ var Parser; ); } function parseIdentifier(diagnosticMessage, privateIdentifierDiagnosticMessage) { - return createIdentifier3(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); + return createIdentifier(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); } function parseIdentifierName(diagnosticMessage) { - return createIdentifier3(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); + return createIdentifier(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); } function isLiteralPropertyName() { return tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */; @@ -30838,7 +30984,7 @@ var Parser; } } function canFollowExportModifier() { - return token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); + return token() === 59 /* AtToken */ || token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); } function nextTokenCanFollowExportModifier() { nextToken(); @@ -30852,7 +30998,7 @@ var Parser; } function nextTokenCanFollowDefaultKeyword() { nextToken(); - return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); + return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 59 /* AtToken */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); } function isListElement2(parsingContext2, inErrorRecovery) { const node = currentNode(parsingContext2); @@ -31059,7 +31205,7 @@ var Parser; } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseListElement(parsingContext2, parseElement) { const node = currentNode(parsingContext2); @@ -31069,6 +31215,7 @@ var Parser; return parseElement(); } function currentNode(parsingContext2, pos) { + var _a2; if (!syntaxCursor || !isReusableParsingContext(parsingContext2) || parseErrorBeforeNextFinishedNode) { return void 0; } @@ -31083,8 +31230,8 @@ var Parser; if (!canReuseNode(node, parsingContext2)) { return void 0; } - if (canHaveJSDoc(node) && node.jsDocCache) { - node.jsDocCache = void 0; + if (canHaveJSDoc(node) && ((_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache)) { + node.jsDoc.jsDocCache = void 0; } return node; } @@ -31143,7 +31290,7 @@ var Parser; return true; case 171 /* MethodDeclaration */: const methodDeclaration = node; - const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.originalKeywordKind === 135 /* ConstructorKeyword */; + const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.escapedText === "constructor"; return !nameIsConstructor; } } @@ -31335,7 +31482,7 @@ var Parser; } } parsingContext = saveParsingContext; - return createNodeArray2( + return createNodeArray( list, listPos, /*end*/ @@ -31347,7 +31494,7 @@ var Parser; return kind === ParsingContext.EnumMembers ? Diagnostics.An_enum_member_name_must_be_followed_by_a_or : void 0; } function createMissingList() { - const list = createNodeArray2([], getNodePos()); + const list = createNodeArray([], getNodePos()); list.isMissingList = true; return list; } @@ -31365,13 +31512,10 @@ var Parser; function parseEntityName(allowReservedWords, diagnosticMessage) { const pos = getNodePos(); let entity = allowReservedWords ? parseIdentifierName(diagnosticMessage) : parseIdentifier(diagnosticMessage); - let dotPos = getNodePos(); while (parseOptional(24 /* DotToken */)) { if (token() === 29 /* LessThanToken */) { - entity.jsdocDotPos = dotPos; break; } - dotPos = getNodePos(); entity = finishNode( factory2.createQualifiedName( entity, @@ -31386,7 +31530,7 @@ var Parser; } return entity; } - function createQualifiedName2(entity, name) { + function createQualifiedName(entity, name) { return finishNode(factory2.createQualifiedName(entity, name), entity.pos); } function parseRightSideOfDot(allowIdentifierNames, allowPrivateIdentifiers) { @@ -31420,7 +31564,7 @@ var Parser; node = parseTemplateSpan(isTaggedTemplate); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateExpression(isTaggedTemplate) { const pos = getNodePos(); @@ -31453,7 +31597,7 @@ var Parser; node = parseTemplateTypeSpan(); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateTypeSpan() { const pos = getNodePos(); @@ -31701,6 +31845,8 @@ var Parser; function parseTypeParameter() { const pos = getNodePos(); const modifiers = parseModifiers( + /*allowDecorators*/ + false, /*permitConstAsModifier*/ true ); @@ -31753,13 +31899,19 @@ var Parser; function parseParameterWorker(inOuterAwaitContext, allowAmbiguity = true) { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = inOuterAwaitContext ? doInAwaitContext(parseDecorators) : doOutsideOfAwaitContext(parseDecorators); + const modifiers = inOuterAwaitContext ? doInAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )) : doOutsideOfAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )); if (token() === 108 /* ThisKeyword */) { const node2 = factory2.createParameterDeclaration( - decorators, + modifiers, /*dotDotDotToken*/ void 0, - createIdentifier3( + createIdentifier( /*isIdentifier*/ true ), @@ -31769,14 +31921,14 @@ var Parser; /*initializer*/ void 0 ); - if (decorators) { - parseErrorAtRange(decorators[0], Diagnostics.Decorators_may_not_be_applied_to_this_parameters); + const modifier = firstOrUndefined(modifiers); + if (modifier) { + parseErrorAtRange(modifier, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); } return withJSDoc(finishNode(node2, pos), hasJSDoc); } const savedTopLevel = topLevel; topLevel = false; - const modifiers = combineDecoratorsAndModifiers(decorators, parseModifiers()); const dotDotDotToken = parseOptionalToken(25 /* DotDotDotToken */); if (!allowAmbiguity && !isParameterNameStart()) { return void 0; @@ -31888,7 +32040,7 @@ var Parser; nextToken(); return token() === 58 /* ColonToken */ || token() === 27 /* CommaToken */ || token() === 23 /* CloseBracketToken */; } - function parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers) { const parameters = parseBracketedList(ParsingContext.Parameters, () => parseParameter( /*inOuterAwaitContext*/ false @@ -31896,7 +32048,6 @@ var Parser; const type = parseTypeAnnotation(); parseTypeMemberSemicolon(); const node = factory2.createIndexSignature(modifiers, parameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers) { @@ -31951,37 +32102,18 @@ var Parser; } const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 174 /* GetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 4 /* Type */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 175 /* SetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 4 /* Type */); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers - ); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } return parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers); } @@ -32125,7 +32257,7 @@ var Parser; const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(126 /* AbstractKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -32436,7 +32568,7 @@ var Parser; while (parseOptional(operator)) { types.push(parseFunctionOrConstructorTypeToError(isUnionType) || parseConstituentType()); } - type = finishNode(createTypeNode(createNodeArray2(types, pos)), pos); + type = finishNode(createTypeNode(createNodeArray(types, pos)), pos); } return type; } @@ -32461,7 +32593,10 @@ var Parser; } function skipParameterStart() { if (isModifierKind(token())) { - parseModifiers(); + parseModifiers( + /*allowDecorators*/ + false + ); } if (isIdentifier2() || token() === 108 /* ThisKeyword */) { nextToken(); @@ -32589,6 +32724,7 @@ var Parser; case 133 /* AwaitKeyword */: case 125 /* YieldKeyword */: case 80 /* PrivateIdentifier */: + case 59 /* AtToken */: return true; default: if (isBinaryOperator2()) { @@ -32710,7 +32846,7 @@ var Parser; void 0 ); finishNode(parameter, identifier.pos); - const parameters = createNodeArray2([parameter], parameter.pos, parameter.end); + const parameters = createNodeArray([parameter], parameter.pos, parameter.end); const equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */); const body = parseArrowFunctionExpressionBody( /*isAsync*/ @@ -33197,7 +33333,7 @@ var Parser; lastChild.openingElement.pos, end ); - children = createNodeArray2([...children.slice(0, children.length - 1), newLast], children.pos, end); + children = createNodeArray([...children.slice(0, children.length - 1), newLast], children.pos, end); closingElement = lastChild.closingElement; } else { closingElement = parseJsxClosingElement(opening, inExpressionContext); @@ -33291,7 +33427,7 @@ var Parser; } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseJsxAttributes() { const pos = getNodePos(); @@ -33680,6 +33816,8 @@ var Parser; break; } return parseFunctionExpression(); + case 59 /* AtToken */: + return parseDecoratedExpression(); case 84 /* ClassKeyword */: return parseClassExpression(); case 98 /* FunctionKeyword */: @@ -33747,13 +33885,15 @@ var Parser; ); return withJSDoc(finishNode(factory2.createSpreadAssignment(expression), pos), hasJSDoc); } - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const tokenIsIdentifier = isIdentifier2(); @@ -33761,7 +33901,7 @@ var Parser; const questionToken = parseOptionalToken(57 /* QuestionToken */); const exclamationToken = parseOptionalToken(53 /* ExclamationToken */); if (asteriskToken || token() === 20 /* OpenParenToken */ || token() === 29 /* LessThanToken */) { - return parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken); + return parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken); } let node; const isShorthandPropertyAssignment2 = tokenIsIdentifier && token() !== 58 /* ColonToken */; @@ -33781,7 +33921,6 @@ var Parser; )); node = factory2.createPropertyAssignment(name, initializer); } - node.illegalDecorators = decorators; node.modifiers = modifiers; node.questionToken = questionToken; node.exclamationToken = exclamationToken; @@ -33809,7 +33948,10 @@ var Parser; ); const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); parseExpected(98 /* FunctionKeyword */); const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; @@ -34181,7 +34323,7 @@ var Parser; if (currentToken2 === 154 /* TypeKeyword */) { currentToken2 = lookAhead(nextToken); } - if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */) { + if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */ || currentToken2 === 59 /* AtToken */) { return true; } continue; @@ -34265,8 +34407,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -34275,8 +34415,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -34286,8 +34424,6 @@ var Parser; return parseFunctionDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -34295,8 +34431,6 @@ var Parser; return parseClassDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -34359,8 +34493,10 @@ var Parser; function parseDeclaration() { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); const isAmbient = some(modifiers, isDeclareModifier); if (isAmbient) { const node = tryReuseAmbientDeclaration(pos); @@ -34370,9 +34506,9 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, modifiers)); } else { - return parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers); + return parseDeclarationWorker(pos, hasJSDoc, modifiers); } } function tryReuseAmbientDeclaration(pos) { @@ -34383,41 +34519,41 @@ var Parser; } }); } - function parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers) { + function parseDeclarationWorker(pos, hasJSDoc, modifiersIn) { switch (token()) { case 113 /* VarKeyword */: case 119 /* LetKeyword */: case 85 /* ConstKeyword */: - return parseVariableStatement(pos, hasJSDoc, decorators, modifiers); + return parseVariableStatement(pos, hasJSDoc, modifiersIn); case 98 /* FunctionKeyword */: - return parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseFunctionDeclaration(pos, hasJSDoc, modifiersIn); case 84 /* ClassKeyword */: - return parseClassDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassDeclaration(pos, hasJSDoc, modifiersIn); case 118 /* InterfaceKeyword */: - return parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseInterfaceDeclaration(pos, hasJSDoc, modifiersIn); case 154 /* TypeKeyword */: - return parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseTypeAliasDeclaration(pos, hasJSDoc, modifiersIn); case 92 /* EnumKeyword */: - return parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseEnumDeclaration(pos, hasJSDoc, modifiersIn); case 159 /* GlobalKeyword */: case 142 /* ModuleKeyword */: case 143 /* NamespaceKeyword */: - return parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseModuleDeclaration(pos, hasJSDoc, modifiersIn); case 100 /* ImportKeyword */: - return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiersIn); case 93 /* ExportKeyword */: nextToken(); switch (token()) { case 88 /* DefaultKeyword */: case 63 /* EqualsToken */: - return parseExportAssignment(pos, hasJSDoc, decorators, modifiers); + return parseExportAssignment(pos, hasJSDoc, modifiersIn); case 128 /* AsKeyword */: - return parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseNamespaceExportDeclaration(pos, hasJSDoc, modifiersIn); default: - return parseExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseExportDeclaration(pos, hasJSDoc, modifiersIn); } default: - if (decorators || modifiers) { + if (modifiersIn) { const missing = createMissingNode( 279 /* MissingDeclaration */, /*reportAtCurrentPosition*/ @@ -34425,8 +34561,7 @@ var Parser; Diagnostics.Declaration_expected ); setTextRangePos(missing, pos); - missing.illegalDecorators = decorators; - missing.modifiers = modifiers; + missing.modifiers = modifiersIn; return missing; } return void 0; @@ -34559,17 +34694,16 @@ var Parser; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 21 /* CloseParenToken */; } - function parseVariableStatement(pos, hasJSDoc, decorators, modifiers) { + function parseVariableStatement(pos, hasJSDoc, modifiers) { const declarationList = parseVariableDeclarationList( /*inForStatementInitializer*/ false ); parseSemicolon(); const node = factory2.createVariableStatement(modifiers, declarationList); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseFunctionDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); const modifierFlags = modifiersToFlags(modifiers); parseExpected(98 /* FunctionKeyword */); @@ -34592,7 +34726,6 @@ var Parser; const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, Diagnostics.or_expected); setAwaitContext(savedAwaitContext); const node = factory2.createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseConstructorName() { @@ -34606,7 +34739,7 @@ var Parser; }); } } - function tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers) { + function tryParseConstructorDeclaration(pos, hasJSDoc, modifiers) { return tryParse(() => { if (parseConstructorName()) { const typeParameters = parseTypeParameters(); @@ -34618,14 +34751,13 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(0 /* None */, Diagnostics.or_expected); const node = factory2.createConstructorDeclaration(modifiers, parameters, body); - node.illegalDecorators = decorators; node.typeParameters = typeParameters; node.type = type; return withJSDoc(finishNode(node, pos), hasJSDoc); } }); } - function parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { + function parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; const isAsync = some(modifiers, isAsyncModifier) ? 2 /* Await */ : 0 /* None */; const typeParameters = parseTypeParameters(); @@ -34637,7 +34769,7 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage); const node = factory2.createMethodDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, asteriskToken, name, questionToken, @@ -34649,13 +34781,13 @@ var Parser; node.exclamationToken = exclamationToken; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken) { + function parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken) { const exclamationToken = !questionToken && !scanner2.hasPrecedingLineBreak() ? parseOptionalToken(53 /* ExclamationToken */) : void 0; const type = parseTypeAnnotation(); const initializer = doOutsideOfContext(8192 /* YieldContext */ | 32768 /* AwaitContext */ | 4096 /* DisallowInContext */, parseInitializer); parseSemicolonAfterPropertyName(name, type, initializer); const node = factory2.createPropertyDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, name, questionToken || exclamationToken, type, @@ -34663,7 +34795,7 @@ var Parser; ); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers) { const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const name = parsePropertyName(); const questionToken = parseOptionalToken(57 /* QuestionToken */); @@ -34671,7 +34803,6 @@ var Parser; return parseMethodDeclaration( pos, hasJSDoc, - decorators, modifiers, asteriskToken, name, @@ -34681,9 +34812,9 @@ var Parser; Diagnostics.or_expected ); } - return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken); + return parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken); } - function parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, kind, flags) { + function parseAccessorDeclaration(pos, hasJSDoc, modifiers, kind, flags) { const name = parsePropertyName(); const typeParameters = parseTypeParameters(); const parameters = parseParameters(0 /* None */); @@ -34693,7 +34824,7 @@ var Parser; false ); const body = parseFunctionBlockOrSemicolon(flags); - const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body) : factory2.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body); + const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(modifiers, name, parameters, type, body) : factory2.createSetAccessorDeclaration(modifiers, name, parameters, body); node.typeParameters = typeParameters; if (isSetAccessorDeclaration(node)) node.type = type; @@ -34739,11 +34870,10 @@ var Parser; } return false; } - function parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers) { parseExpectedToken(124 /* StaticKeyword */); const body = parseClassStaticBlockBody(); const node = withJSDoc(finishNode(factory2.createClassStaticBlockDeclaration(body), pos), hasJSDoc); - node.illegalDecorators = decorators; node.modifiers = modifiers; return node; } @@ -34783,15 +34913,7 @@ var Parser; const expression = doInDecoratorContext(parseDecoratorExpression); return finishNode(factory2.createDecorator(expression), pos); } - function parseDecorators() { - const pos = getNodePos(); - let list, decorator; - while (decorator = tryParseDecorator()) { - list = append(list, decorator); - } - return list && createNodeArray2(list, pos); - } - function tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + function tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); const kind = token(); if (token() === 85 /* ConstKeyword */ && permitConstAsModifier) { @@ -34809,24 +34931,27 @@ var Parser; } return finishNode(factory2.createToken(kind), pos); } - function combineDecoratorsAndModifiers(decorators, modifiers) { - if (!decorators) - return modifiers; - if (!modifiers) - return decorators; - const decoratorsAndModifiers = factory2.createNodeArray(concatenate(decorators, modifiers)); - setTextRangePosEnd(decoratorsAndModifiers, decorators.pos, modifiers.end); - return decoratorsAndModifiers; - } - function parseModifiers(permitConstAsModifier, stopOnStartOfClassStaticBlock) { + function parseModifiers(allowDecorators, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); - let list, modifier, hasSeenStatic = false; - while (modifier = tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) { + let list; + let modifier, hasSeenStaticModifier = false; + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { if (modifier.kind === 124 /* StaticKeyword */) - hasSeenStatic = true; + hasSeenStaticModifier = true; list = append(list, modifier); } - return list && createNodeArray2(list, pos); + if (allowDecorators && token() === 59 /* AtToken */) { + let decorator; + while (decorator = tryParseDecorator()) { + list = append(list, decorator); + } + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { + if (modifier.kind === 124 /* StaticKeyword */) + hasSeenStaticModifier = true; + list = append(list, modifier); + } + } + return list && createNodeArray(list, pos); } function parseModifiersForArrowFunction() { let modifiers; @@ -34834,7 +34959,7 @@ var Parser; const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(132 /* AsyncKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -34845,30 +34970,31 @@ var Parser; return finishNode(factory2.createSemicolonClassElement(), pos); } const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); const modifiers = parseModifiers( + /*allowDecorators*/ + true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true ); if (token() === 124 /* StaticKeyword */ && lookAhead(nextTokenIsOpenBrace)) { - return parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers); } if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } if (token() === 135 /* ConstructorKeyword */ || token() === 10 /* StringLiteral */) { - const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers); + const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, modifiers); if (constructorDeclaration) { return constructorDeclaration; } } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } if (tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */ || token() === 41 /* AsteriskToken */ || token() === 22 /* OpenBracketToken */) { const isAmbient = some(modifiers, isDeclareModifier); @@ -34876,12 +35002,12 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers)); } else { - return parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers); + return parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers); } } - if (decorators || modifiers) { + if (modifiers) { const name = createMissingNode( 79 /* Identifier */, /*reportAtCurrentPosition*/ @@ -34891,7 +35017,6 @@ var Parser; return parsePropertyDeclaration( pos, hasJSDoc, - decorators, modifiers, name, /*questionToken*/ @@ -34900,21 +35025,39 @@ var Parser; } return Debug.fail("Should not have attempted to parse class member declaration."); } + function parseDecoratedExpression() { + const pos = getNodePos(); + const hasJSDoc = hasPrecedingJSDocComment(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); + if (token() === 84 /* ClassKeyword */) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 228 /* ClassExpression */); + } + const missing = createMissingNode( + 279 /* MissingDeclaration */, + /*reportAtCurrentPosition*/ + true, + Diagnostics.Expression_expected + ); + setTextRangePos(missing, pos); + missing.modifiers = modifiers; + return missing; + } function parseClassExpression() { return parseClassDeclarationOrExpression( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0, 228 /* ClassExpression */ ); } - function parseClassDeclaration(pos, hasJSDoc, decorators, modifiers) { - return parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, 260 /* ClassDeclaration */); + function parseClassDeclaration(pos, hasJSDoc, modifiers) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 260 /* ClassDeclaration */); } - function parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, kind) { + function parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, kind) { const savedAwaitContext = inAwaitContext(); parseExpected(84 /* ClassKeyword */); const name = parseNameOfClassDeclarationOrExpression(); @@ -34933,11 +35076,11 @@ var Parser; members = createMissingList(); } setAwaitContext(savedAwaitContext); - const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members) : factory2.createClassExpression(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members); + const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : factory2.createClassExpression(modifiers, name, typeParameters, heritageClauses, members); return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseNameOfClassDeclarationOrExpression() { - return isBindingIdentifier() && !isImplementsClause() ? createIdentifier3(isBindingIdentifier()) : void 0; + return isBindingIdentifier() && !isImplementsClause() ? createIdentifier(isBindingIdentifier()) : void 0; } function isImplementsClause() { return token() === 117 /* ImplementsKeyword */ && lookAhead(nextTokenIsIdentifierOrKeyword); @@ -34974,17 +35117,16 @@ var Parser; function parseClassMembers() { return parseList(ParsingContext.ClassMembers, parseClassElement); } - function parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseInterfaceDeclaration(pos, hasJSDoc, modifiers) { parseExpected(118 /* InterfaceKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); const heritageClauses = parseHeritageClauses(); const members = parseObjectTypeMembers(); const node = factory2.createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) { parseExpected(154 /* TypeKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); @@ -34992,7 +35134,6 @@ var Parser; const type = token() === 139 /* IntrinsicKeyword */ && tryParse(parseKeywordAndNoDot) || parseType(); parseSemicolon(); const node = factory2.createTypeAliasDeclaration(modifiers, name, typeParameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseEnumMember() { @@ -35002,7 +35143,7 @@ var Parser; const initializer = allowInAnd(parseInitializer); return withJSDoc(finishNode(factory2.createEnumMember(name, initializer), pos), hasJSDoc); } - function parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseEnumDeclaration(pos, hasJSDoc, modifiers) { parseExpected(92 /* EnumKeyword */); const name = parseIdentifier(); let members; @@ -35013,7 +35154,6 @@ var Parser; members = createMissingList(); } const node = factory2.createEnumDeclaration(modifiers, name, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseModuleBlock() { @@ -35027,24 +35167,21 @@ var Parser; } return finishNode(factory2.createModuleBlock(statements), pos); } - function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags) { + function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiers, flags) { const namespaceFlag = flags & 16 /* Namespace */; const name = parseIdentifier(); const body = parseOptional(24 /* DotToken */) ? parseModuleOrNamespaceDeclaration( getNodePos(), /*hasJSDoc*/ false, - /*decorators*/ - void 0, /*modifiers*/ void 0, 4 /* NestedNamespace */ | namespaceFlag ) : parseModuleBlock(); const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; let name; if (token() === 159 /* GlobalKeyword */) { @@ -35060,23 +35197,22 @@ var Parser; } else { parseSemicolon(); } - const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; + const node = factory2.createModuleDeclaration(modifiersIn, name, body, flags); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; if (token() === 159 /* GlobalKeyword */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } else if (parseOptional(143 /* NamespaceKeyword */)) { flags |= 16 /* Namespace */; } else { parseExpected(142 /* ModuleKeyword */); if (token() === 10 /* StringLiteral */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } } - return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags); + return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiersIn, flags); } function isExternalModuleReference2() { return token() === 147 /* RequireKeyword */ && lookAhead(nextTokenIsOpenParen); @@ -35090,17 +35226,16 @@ var Parser; function nextTokenIsSlash() { return nextToken() === 43 /* SlashToken */; } - function parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseNamespaceExportDeclaration(pos, hasJSDoc, modifiers) { parseExpected(128 /* AsKeyword */); parseExpected(143 /* NamespaceKeyword */); const name = parseIdentifier(); parseSemicolon(); const node = factory2.createNamespaceExportDeclaration(name); - node.illegalDecorators = decorators; node.modifiers = modifiers; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiers) { parseExpected(100 /* ImportKeyword */); const afterImportPos = scanner2.getStartPos(); let identifier; @@ -35113,7 +35248,7 @@ var Parser; identifier = isIdentifier2() ? parseIdentifier() : void 0; } if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { - return parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly); + return parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly); } let importClause; if (identifier || // import id @@ -35129,7 +35264,6 @@ var Parser; } parseSemicolon(); const node = factory2.createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseAssertEntry() { @@ -35167,7 +35301,7 @@ var Parser; } return finishNode(factory2.createAssertClause(elements, multiLine), pos); } else { - const elements = createNodeArray2( + const elements = createNodeArray( [], getNodePos(), /*end*/ @@ -35188,12 +35322,11 @@ var Parser; function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { return token() === 27 /* CommaToken */ || token() === 158 /* FromKeyword */; } - function parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly) { + function parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly) { parseExpected(63 /* EqualsToken */); const moduleReference = parseModuleReference(); parseSemicolon(); const node = factory2.createImportEqualsDeclaration(modifiers, isTypeOnly, identifier, moduleReference); - node.illegalDecorators = decorators; const finished = withJSDoc(finishNode(node, pos), hasJSDoc); return finished; } @@ -35303,7 +35436,7 @@ var Parser; function parseNamespaceExport(pos) { return finishNode(factory2.createNamespaceExport(parseIdentifierName()), pos); } - function parseExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseExportDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -35333,10 +35466,9 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseExportAssignment(pos, hasJSDoc, decorators, modifiers) { + function parseExportAssignment(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -35355,7 +35487,6 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportAssignment(modifiers, isExportEquals, expression); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } let ParsingContext; @@ -35610,8 +35741,8 @@ var Parser; } if (parts.length && tags) Debug.assertIsDefined(commentsPos, "having parsed tags implies that the end of the comment span should be set"); - const tagsArray = tags && createNodeArray2(tags, tagsPos, tagsEnd); - return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray2(parts, start2, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start2, end); + const tagsArray = tags && createNodeArray(tags, tagsPos, tagsEnd); + return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray(parts, start2, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start2, end); }); function removeLeadingNewlines(comments2) { while (comments2.length && (comments2[0] === "\n" || comments2[0] === "\r")) { @@ -35739,6 +35870,9 @@ var Parser; case "overload": tag = parseOverloadTag(start3, tagName, margin, indentText); break; + case "satisfies": + tag = parseSatisfiesTag(start3, tagName, margin, indentText); + break; case "see": tag = parseSeeTag(start3, tagName, margin, indentText); break; @@ -35851,7 +35985,7 @@ var Parser; if (comments2.length) { parts2.push(finishNode(factory2.createJSDocText(comments2.join("")), linkEnd2 != null ? linkEnd2 : commentsPos2)); } - return createNodeArray2(parts2, commentsPos2, scanner2.getTextPos()); + return createNodeArray(parts2, commentsPos2, scanner2.getTextPos()); } else if (comments2.length) { return comments2.join(""); } @@ -36017,7 +36151,7 @@ var Parser; if (!comments2) { commentEnd = scanner2.getStartPos(); } - const allParts = typeof comments2 !== "string" ? createNodeArray2(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; + const allParts = typeof comments2 !== "string" ? createNodeArray(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; return finishNode(factory2.createJSDocAuthorTag(tagName, allParts), start3); } function parseAuthorNameAndEmail() { @@ -36047,6 +36181,14 @@ var Parser; const className = parseExpressionWithTypeArgumentsForAugments(); return finishNode(factory2.createJSDocAugmentsTag(tagName, className, parseTrailingTagComments(start3, getNodePos(), margin, indentText)), start3); } + function parseSatisfiesTag(start3, tagName, margin, indentText) { + const typeExpression = parseJSDocTypeExpression( + /*mayOmitBraces*/ + false + ); + const comments2 = margin !== void 0 && indentText !== void 0 ? parseTrailingTagComments(start3, getNodePos(), margin, indentText) : void 0; + return finishNode(factory2.createJSDocSatisfiesTag(tagName, typeExpression, comments2), start3); + } function parseExpressionWithTypeArgumentsForAugments() { const usedBrace = parseOptional(18 /* OpenBraceToken */); const pos = getNodePos(); @@ -36151,7 +36293,7 @@ var Parser; return finishNode(jsDocNamespaceNode, pos); } if (nested) { - typeNameOrNamespaceName.isInJSDocNamespace = true; + typeNameOrNamespaceName.flags |= 2048 /* IdentifierIsInJSDocNamespace */; } return typeNameOrNamespaceName; } @@ -36162,7 +36304,7 @@ var Parser; while (child = tryParse(() => parseChildParameterOrPropertyTag(4 /* CallbackParameter */, indent3))) { parameters = append(parameters, child); } - return createNodeArray2(parameters || [], pos); + return createNodeArray(parameters || [], pos); } function parseJSDocSignature(start3, indent3) { const parameters = parseCallbackTagParameters(indent3); @@ -36313,7 +36455,7 @@ var Parser; } skipWhitespaceOrAsterisk(); } while (parseOptionalJsdoc(27 /* CommaToken */)); - return createNodeArray2(typeParameters, pos); + return createNodeArray(typeParameters, pos); } function parseTemplateTag(start3, tagName, indent3, indentText) { const constraint = token() === 18 /* OpenBraceToken */ ? parseJSDocTypeExpression() : void 0; @@ -36337,7 +36479,7 @@ var Parser; if (parseOptional(22 /* OpenBracketToken */)) { parseExpected(23 /* CloseBracketToken */); } - entity = createQualifiedName2(entity, name); + entity = createQualifiedName(entity, name); } return entity; } @@ -36355,12 +36497,7 @@ var Parser; const end2 = scanner2.getTextPos(); const originalKeywordKind = token(); const text = internIdentifier(scanner2.getTokenValue()); - const result = finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind - ), pos, end2); + const result = finishNode(factory2.createIdentifier(text, originalKeywordKind), pos, end2); nextTokenJSDoc(); return result; } @@ -36982,6 +37119,7 @@ var libEntries = [ ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], + ["es2023", "lib.es2023.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -37035,14 +37173,17 @@ var libEntries = [ ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], - ["esnext.array", "lib.es2022.array.d.ts"], + ["es2023.array", "lib.es2023.array.d.ts"], + ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], - ["esnext.weakref", "lib.es2021.weakref.d.ts"] + ["esnext.weakref", "lib.es2021.weakref.d.ts"], + ["decorators", "lib.decorators.d.ts"], + ["decorators.legacy", "lib.decorators.legacy.d.ts"] ]; var libs = libEntries.map((entry) => entry[0]); var libMap = new Map(libEntries); @@ -37585,6 +37726,13 @@ var commandOptionsWithoutBuild = [ transpileOptionValue: true, defaultValueDescription: false }, + { + name: "verbatimModuleSyntax", + type: "boolean", + category: Diagnostics.Interop_Constraints, + description: Diagnostics.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting, + defaultValueDescription: false + }, // Strict Type Checks { name: "strict", @@ -37886,7 +38034,7 @@ var commandOptionsWithoutBuild = [ { name: "allowImportingTsExtensions", type: "boolean", - affectsModuleResolution: true, + affectsSemanticDiagnostics: true, category: Diagnostics.Modules, description: Diagnostics.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set, defaultValueDescription: false @@ -37950,10 +38098,11 @@ var commandOptionsWithoutBuild = [ { name: "experimentalDecorators", type: "boolean", + affectsEmit: true, affectsSemanticDiagnostics: true, affectsBuildInfo: true, category: Diagnostics.Language_and_Environment, - description: Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, + description: Diagnostics.Enable_experimental_support_for_legacy_experimental_decorators, defaultValueDescription: false }, { @@ -38067,7 +38216,7 @@ var commandOptionsWithoutBuild = [ paramType: Diagnostics.NEWLINE, category: Diagnostics.Emit, description: Diagnostics.Set_the_newline_character_for_emitting_files, - defaultValueDescription: Diagnostics.Platform_specific + defaultValueDescription: "lf" }, { name: "noErrorTruncation", @@ -38243,7 +38392,7 @@ var commandOptionsWithoutBuild = [ affectsModuleResolution: true, category: Diagnostics.Interop_Constraints, description: Diagnostics.Ensure_that_casing_is_correct_in_imports, - defaultValueDescription: false + defaultValueDescription: true }, { name: "maxNodeModuleJsDepth", @@ -38367,14 +38516,6 @@ var buildOpts = [ ...optionsForBuild ]; var typeAcquisitionDeclarations = [ - { - /* @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - name: "enableAutoDiscovery", - type: "boolean", - defaultValueDescription: false - }, { name: "enable", type: "boolean", @@ -38429,16 +38570,6 @@ var defaultInitCompilerOptions = { forceConsistentCasingInFileNames: true, skipLibCheck: true }; -function convertEnableAutoDiscoveryToEnable(typeAcquisition) { - if (typeAcquisition && typeAcquisition.enableAutoDiscovery !== void 0 && typeAcquisition.enable === void 0) { - return { - enable: typeAcquisition.enableAutoDiscovery, - include: typeAcquisition.include || [], - exclude: typeAcquisition.exclude || [] - }; - } - return typeAcquisition; -} function createCompilerDiagnosticForInvalidCustomType(opt) { return createDiagnosticForInvalidCustomType(opt, createCompilerDiagnostic); } @@ -38816,12 +38947,6 @@ function getTsconfigRootOptionsMap() { elementOptions: getCommandLineWatchOptionsMap(), extraKeyDiagnostics: watchOptionsDidYouMeanDiagnostics }, - { - name: "typingOptions", - type: "object", - elementOptions: getCommandLineTypeAcquisitionMap(), - extraKeyDiagnostics: typeAcquisitionDidYouMeanDiagnostics - }, { name: "typeAcquisition", type: "object", @@ -39669,11 +39794,11 @@ function parseOwnConfigOfJson(json, host, basePath, configFileName, errors) { errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); } const options = convertCompilerOptionsFromJsonWorker(json.compilerOptions, basePath, errors, configFileName); - const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition || json.typingOptions, basePath, errors, configFileName); + const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition, basePath, errors, configFileName); const watchOptions = convertWatchOptionsFromJsonWorker(json.watchOptions, basePath, errors); json.compileOnSave = convertCompileOnSaveOptionFromJson(json, basePath, errors); let extendedConfigPath; - if (json.extends) { + if (json.extends || json.extends === "") { if (!isCompilerOptionsValue(extendsOptionDeclaration, json.extends)) { errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "extends", getCompilerOptionValueTypeString(extendsOptionDeclaration))); } else { @@ -39696,7 +39821,7 @@ function parseOwnConfigOfJson(json, host, basePath, configFileName, errors) { } function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileName, errors) { const options = getDefaultCompilerOptions(configFileName); - let typeAcquisition, typingOptionstypeAcquisition; + let typeAcquisition; let watchOptions; let extendedConfigPath; let rootCompilerOptions; @@ -39713,9 +39838,6 @@ function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileNa case "typeAcquisition": currentOption = typeAcquisition || (typeAcquisition = getDefaultTypeAcquisition(configFileName)); break; - case "typingOptions": - currentOption = typingOptionstypeAcquisition || (typingOptionstypeAcquisition = getDefaultTypeAcquisition(configFileName)); - break; default: Debug.fail("Unknown option"); } @@ -39768,15 +39890,7 @@ function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileNa optionsIterator ); if (!typeAcquisition) { - if (typingOptionstypeAcquisition) { - typeAcquisition = typingOptionstypeAcquisition.enableAutoDiscovery !== void 0 ? { - enable: typingOptionstypeAcquisition.enableAutoDiscovery, - include: typingOptionstypeAcquisition.include, - exclude: typingOptionstypeAcquisition.exclude - } : typingOptionstypeAcquisition; - } else { - typeAcquisition = getDefaultTypeAcquisition(configFileName); - } + typeAcquisition = getDefaultTypeAcquisition(configFileName); } if (rootCompilerOptions && json && json.compilerOptions === void 0) { errors.push(createDiagnosticForNodeInSourceFile(sourceFile, rootCompilerOptions[0], Diagnostics._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file, getTextOfPropertyName(rootCompilerOptions[0]))); @@ -39800,7 +39914,11 @@ function getExtendsConfigPath(extendedConfig, host, basePath, errors, createDiag if (resolved.resolvedModule) { return resolved.resolvedModule.resolvedFileName; } - errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + if (extendedConfig === "") { + errors.push(createDiagnostic(Diagnostics.Compiler_option_0_cannot_be_given_an_empty_string, "extends")); + } else { + errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + } return void 0; } function getExtendedConfig(sourceFile, extendedConfigPath, host, resolutionStack, errors, extendedConfigCache, result) { @@ -39878,8 +39996,7 @@ function getDefaultTypeAcquisition(configFileName) { } function convertTypeAcquisitionFromJsonWorker(jsonOptions, basePath, errors, configFileName) { const options = getDefaultTypeAcquisition(configFileName); - const typeAcquisition = convertEnableAutoDiscoveryToEnable(jsonOptions); - convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), typeAcquisition, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); + convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), jsonOptions, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); return options; } function convertWatchOptionsFromJsonWorker(jsonOptions, basePath, errors) { @@ -40083,6 +40200,7 @@ function validateSpecs(specs, errors, disallowTrailingRecursion, jsonSourceFile, } } function specToDiagnostic(spec, disallowTrailingRecursion) { + Debug.assert(typeof spec === "string"); if (disallowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return [Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec]; } else if (invalidDotDotAfterRecursiveWildcard(spec)) { @@ -40288,7 +40406,7 @@ function resolvedTypeScriptOnly(resolved) { Debug.assert(extensionIsTS(resolved.extension)); return { fileName: resolved.path, packageId: resolved.packageId }; } -function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache) { +function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache, legacyResult) { if (resultFromCache) { resultFromCache.failedLookupLocations = updateResolutionField(resultFromCache.failedLookupLocations, failedLookupLocations); resultFromCache.affectingLocations = updateResolutionField(resultFromCache.affectingLocations, affectingLocations); @@ -40306,7 +40424,8 @@ function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibra }, failedLookupLocations: initializeResolutionField(failedLookupLocations), affectingLocations: initializeResolutionField(affectingLocations), - resolutionDiagnostics: initializeResolutionField(diagnostics) + resolutionDiagnostics: initializeResolutionField(diagnostics), + node10Result: legacyResult }; } function initializeResolutionField(value) { @@ -41361,7 +41480,7 @@ function nodeNextJsonConfigResolver(moduleName, containingFile, host) { ); } function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, compilerOptions, host, cache, extensions, isConfigLookup, redirectedReference) { - var _a2, _b; + var _a2, _b, _c, _d; const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations = []; const affectingLocations = []; @@ -41388,44 +41507,60 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, if (getEmitModuleResolutionKind(compilerOptions) === 2 /* Node10 */) { const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */); const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */); - result = priorityExtensions && tryResolve(priorityExtensions) || secondaryExtensions && tryResolve(secondaryExtensions) || void 0; + result = priorityExtensions && tryResolve(priorityExtensions, state) || secondaryExtensions && tryResolve(secondaryExtensions, state) || void 0; } else { - result = tryResolve(extensions); + result = tryResolve(extensions, state); + } + let legacyResult; + if (((_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.isExternalLibraryImport) && !isConfigLookup && extensions & (1 /* TypeScript */ | 4 /* Declaration */) && features & 8 /* Exports */ && !isExternalModuleNameRelative(moduleName) && !extensionIsOk(1 /* TypeScript */ | 4 /* Declaration */, result.value.resolved.extension) && conditions.indexOf("import") > -1) { + traceIfEnabled(state, Diagnostics.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update); + const diagnosticState = { + ...state, + features: state.features & ~8 /* Exports */, + failedLookupLocations: [], + affectingLocations: [], + reportDiagnostic: noop + }; + const diagnosticResult = tryResolve(extensions & (1 /* TypeScript */ | 4 /* Declaration */), diagnosticState); + if ((_b = diagnosticResult == null ? void 0 : diagnosticResult.value) == null ? void 0 : _b.isExternalLibraryImport) { + legacyResult = diagnosticResult.value.resolved.path; + } } return createResolvedModuleWithFailedLookupLocations( - (_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.resolved, - (_b = result == null ? void 0 : result.value) == null ? void 0 : _b.isExternalLibraryImport, + (_c = result == null ? void 0 : result.value) == null ? void 0 : _c.resolved, + (_d = result == null ? void 0 : result.value) == null ? void 0 : _d.isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, - state.resultFromCache + state.resultFromCache, + legacyResult ); - function tryResolve(extensions2) { - const loader = (extensions3, candidate, onlyRecordFailures, state2) => nodeLoadModuleByRelativeName( + function tryResolve(extensions2, state2) { + const loader = (extensions3, candidate, onlyRecordFailures, state3) => nodeLoadModuleByRelativeName( extensions3, candidate, onlyRecordFailures, - state2, + state3, /*considerPackageJson*/ true ); - const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state); + const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state2); if (resolved) { return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) { if (traceEnabled) { trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) return void 0; @@ -41444,7 +41579,7 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, candidate, /*onlyRecordFailures*/ false, - state, + state2, /*considerPackageJson*/ true ); @@ -42647,7 +42782,7 @@ function classicNameResolver(moduleName, containingFile, compilerOptions, host, } } function shouldAllowImportingTsExtension(compilerOptions, fromFileName) { - return getEmitModuleResolutionKind(compilerOptions) === 100 /* Bundler */ && (!!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName)); + return !!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName); } function loadModuleFromGlobalCache(moduleName, projectName, compilerOptions, host, globalCache, packageJsonInfoCache) { const traceEnabled = isTraceEnabled(compilerOptions, host); @@ -42784,7 +42919,7 @@ function getModuleInstanceStateWorker(node, visited) { case 264 /* ModuleDeclaration */: return getModuleInstanceState(node, visited); case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { return 0 /* NonInstantiated */; } } @@ -43221,6 +43356,7 @@ function createBinder() { } else if (containerFlags & 64 /* IsInterface */) { seenThisKeyword = false; bindChildren(node); + Debug.assertNotNode(node, isIdentifier); node.flags = seenThisKeyword ? node.flags | 128 /* ContainsThis */ : node.flags & ~128 /* ContainsThis */; } else { bindChildren(node); @@ -43521,13 +43657,12 @@ function createBinder() { } else if (node.kind === 221 /* PrefixUnaryExpression */ && node.operator === 53 /* ExclamationToken */) { node = node.operand; } else { - return node.kind === 223 /* BinaryExpression */ && (node.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || node.operatorToken.kind === 56 /* BarBarToken */ || node.operatorToken.kind === 60 /* QuestionQuestionToken */); + return isLogicalOrCoalescingBinaryExpression(node); } } } function isLogicalAssignmentExpression(node) { - node = skipParentheses(node); - return isBinaryExpression(node) && isLogicalOrCoalescingAssignmentOperator(node.operatorToken.kind); + return isLogicalOrCoalescingAssignmentExpression(skipParentheses(node)); } function isTopLevelLogicalExpression(node) { while (isParenthesizedExpression(node.parent) || isPrefixUnaryExpression(node.parent) && node.parent.operator === 53 /* ExclamationToken */) { @@ -43910,7 +44045,7 @@ function createBinder() { }; } const operator = node.operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */ || isLogicalOrCoalescingAssignmentOperator(operator)) { + if (isLogicalOrCoalescingBinaryOperator(operator) || isLogicalOrCoalescingAssignmentOperator(operator)) { if (isTopLevelLogicalExpression(node)) { const postExpressionLabel = createBranchLabel(); bindLogicalLikeExpression(node, postExpressionLabel, postExpressionLabel); @@ -44380,13 +44515,17 @@ function createBinder() { } function checkContextualIdentifier(node) { if (!file.parseDiagnostics.length && !(node.flags & 16777216 /* Ambient */) && !(node.flags & 8388608 /* JSDoc */) && !isIdentifierName(node)) { - if (inStrictMode && node.originalKeywordKind >= 117 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 125 /* LastFutureReservedWord */) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind === void 0) { + return; + } + if (inStrictMode && originalKeywordKind >= 117 /* FirstFutureReservedWord */ && originalKeywordKind <= 125 /* LastFutureReservedWord */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, getStrictModeIdentifierMessage(node), declarationNameToString(node) )); - } else if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + } else if (originalKeywordKind === 133 /* AwaitKeyword */) { if (isExternalModule(file) && isInTopLevelContext(node)) { file.bindDiagnostics.push(createDiagnosticForNode2( node, @@ -44400,7 +44539,7 @@ function createBinder() { declarationNameToString(node) )); } - } else if (node.originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { + } else if (originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, @@ -44612,7 +44751,7 @@ function createBinder() { function bindWorker(node) { switch (node.kind) { case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; while (parentNode && !isJSDocTypeAlias(parentNode)) { parentNode = parentNode.parent; @@ -46636,6 +46775,7 @@ function createTypeChecker(host) { deferredDiagnosticsCallbacks.push(arg); }; let cancellationToken; + const requestedExternalEmitHelperNames = /* @__PURE__ */ new Set(); let requestedExternalEmitHelpers; let externalHelpersModule; const Symbol46 = objectAllocator.getSymbolConstructor(); @@ -46654,6 +46794,7 @@ function createTypeChecker(host) { const compilerOptions = host.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const allowSyntheticDefaultImports = getAllowSyntheticDefaultImports(compilerOptions); const strictNullChecks = getStrictOptionValue(compilerOptions, "strictNullChecks"); @@ -46678,6 +46819,7 @@ function createTypeChecker(host) { globals.set(globalThisSymbol.escapedName, globalThisSymbol); const argumentsSymbol = createSymbol(4 /* Property */, "arguments"); const requireSymbol = createSymbol(4 /* Property */, "require"); + const isolatedModulesLikeFlagName = compilerOptions.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules"; let apparentArgumentCount; const checker = { getNodeCount: () => reduceLeft(host.getSourceFiles(), (n, s) => n + s.nodeCount, 0), @@ -47098,6 +47240,7 @@ function createTypeChecker(host) { const stringMappingTypes = /* @__PURE__ */ new Map(); const substitutionTypes = /* @__PURE__ */ new Map(); const subtypeReductionCache = /* @__PURE__ */ new Map(); + const decoratorContextOverrideTypeCache = /* @__PURE__ */ new Map(); const cachedTypes = /* @__PURE__ */ new Map(); const evolvingArrayTypes = []; const undefinedProperties = /* @__PURE__ */ new Map(); @@ -47337,6 +47480,14 @@ function createTypeChecker(host) { let deferredGlobalBigIntType; let deferredGlobalNaNSymbol; let deferredGlobalRecordSymbol; + let deferredGlobalClassDecoratorContextType; + let deferredGlobalClassMethodDecoratorContextType; + let deferredGlobalClassGetterDecoratorContextType; + let deferredGlobalClassSetterDecoratorContextType; + let deferredGlobalClassAccessorDecoratorContextType; + let deferredGlobalClassAccessorDecoratorTargetType; + let deferredGlobalClassAccessorDecoratorResultType; + let deferredGlobalClassFieldDecoratorContextType; const allPotentiallyUnusedIdentifiers = /* @__PURE__ */ new Map(); let flowLoopStart = 0; let flowLoopCount = 0; @@ -47423,7 +47574,7 @@ function createTypeChecker(host) { if (jsxFragmentPragma) { const chosenPragma = isArray(jsxFragmentPragma) ? jsxFragmentPragma[0] : jsxFragmentPragma; file.localJsxFragmentFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFragmentFactory, markAsSynthetic); + visitNode(file.localJsxFragmentFactory, markAsSynthetic, isEntityName); if (file.localJsxFragmentFactory) { return file.localJsxFragmentNamespace = getFirstIdentifier(file.localJsxFragmentFactory).escapedText; } @@ -47466,7 +47617,7 @@ function createTypeChecker(host) { if (jsxPragma) { const chosenPragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; file.localJsxFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFactory, markAsSynthetic); + visitNode(file.localJsxFactory, markAsSynthetic, isEntityName); if (file.localJsxFactory) { return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText; } @@ -47519,7 +47670,7 @@ function createTypeChecker(host) { addErrorOrSuggestion(isError, "message" in message ? createFileDiagnostic(file, 0, 0, message, arg0, arg1, arg2, arg3) : createDiagnosticForFileFromMessageChain(file, message)); return; } - addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(location, message)); + addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(location), location, message)); } function errorAndMaybeSuggestAwait(location, maybeMissingAwait, message, arg0, arg1, arg2, arg3) { const diagnostic = error(location, message, arg0, arg1, arg2, arg3); @@ -47564,6 +47715,16 @@ function createTypeChecker(host) { symbol.links.checkFlags = checkFlags || 0 /* None */; return symbol; } + function createParameter(name, type) { + const symbol = createSymbol(1 /* FunctionScopedVariable */, name); + symbol.links.type = type; + return symbol; + } + function createProperty(name, type) { + const symbol = createSymbol(4 /* Property */, name); + symbol.links.type = type; + return symbol; + } function getExcludedSymbolFlags(flags) { let result = 0; if (flags & 2 /* BlockScopedVariable */) @@ -48110,6 +48271,15 @@ function createTypeChecker(host) { break; case 263 /* EnumDeclaration */: if (result = lookup(((_c = getSymbolOfDeclaration(location)) == null ? void 0 : _c.exports) || emptySymbols, name, meaning & 8 /* EnumMember */)) { + if (nameNotFoundMessage && getIsolatedModules(compilerOptions) && !(location.flags & 16777216 /* Ambient */) && getSourceFileOfNode(location) !== getSourceFileOfNode(result.valueDeclaration)) { + error( + errorLocation, + Diagnostics.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead, + unescapeLeadingUnderscores(name), + isolatedModulesLikeFlagName, + `${unescapeLeadingUnderscores(getSymbolOfNode(location).escapedName)}.${unescapeLeadingUnderscores(name)}` + ); + } break loop; } break; @@ -48355,7 +48525,7 @@ function createTypeChecker(host) { if (result && errorLocation && meaning & 111551 /* Value */ && result.flags & 2097152 /* Alias */ && !(result.flags & 111551 /* Value */) && !isValidTypeOnlyAliasUseSite(errorLocation)) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(result, 111551 /* Value */); if (typeOnlyDeclaration) { - const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; + const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; const unescapedName = unescapeLeadingUnderscores(name); addTypeOnlyDeclarationRelatedInfo( error(errorLocation, message, unescapedName), @@ -48375,7 +48545,7 @@ function createTypeChecker(host) { diagnostic, createDiagnosticForNode( typeOnlyDeclaration, - typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, + typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, unescapedName ) ); @@ -48754,10 +48924,10 @@ function createTypeChecker(host) { false ) && !node.isTypeOnly) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(getSymbolOfDeclaration(node)); - const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */; + const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */; const message = isExport ? Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type : Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type; const relatedMessage = isExport ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here; - const name = unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); + const name = typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? "*" : unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); addRelatedInfo(error(node.moduleReference, message), createDiagnosticForNode(typeOnlyDeclaration, relatedMessage, name)); } } @@ -48977,6 +49147,7 @@ function createTypeChecker(host) { return valueSymbol; } const result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.escapedName); + Debug.assert(valueSymbol.declarations || typeSymbol.declarations); result.declarations = deduplicate(concatenate(valueSymbol.declarations, typeSymbol.declarations), equateValues); result.parent = valueSymbol.parent || typeSymbol.parent; if (valueSymbol.valueDeclaration) @@ -48988,15 +49159,19 @@ function createTypeChecker(host) { return result; } function getExportOfModule(symbol, name, specifier, dontResolveAlias) { + var _a2; if (symbol.flags & 1536 /* Module */) { const exportSymbol = getExportsOfSymbol(symbol).get(name.escapedText); const resolved = resolveSymbol(exportSymbol, dontResolveAlias); + const exportStarDeclaration = (_a2 = getSymbolLinks(symbol).typeOnlyExportStarMap) == null ? void 0 : _a2.get(name.escapedText); markSymbolOfAliasDeclarationIfTypeOnly( specifier, exportSymbol, resolved, /*overwriteEmpty*/ - false + false, + exportStarDeclaration, + name.escapedText ); return resolved; } @@ -49323,7 +49498,7 @@ function createTypeChecker(host) { } return flags; } - function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty) { + function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty, exportStarDeclaration, exportStarName) { if (!aliasDeclaration || isPropertyAccessExpression(aliasDeclaration)) return false; const sourceSymbol = getSymbolOfDeclaration(aliasDeclaration); @@ -49332,6 +49507,14 @@ function createTypeChecker(host) { links2.typeOnlyDeclaration = aliasDeclaration; return true; } + if (exportStarDeclaration) { + const links2 = getSymbolLinks(sourceSymbol); + links2.typeOnlyDeclaration = exportStarDeclaration; + if (sourceSymbol.escapedName !== exportStarName) { + links2.typeOnlyExportStarName = exportStarName; + } + return true; + } const links = getSymbolLinks(sourceSymbol); return markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, immediateTarget, overwriteEmpty) || markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, finalTarget, overwriteEmpty); } @@ -49353,11 +49536,15 @@ function createTypeChecker(host) { return links.typeOnlyDeclaration || void 0; } if (links.typeOnlyDeclaration) { - return getAllSymbolFlags(resolveAlias(links.typeOnlyDeclaration.symbol)) & include ? links.typeOnlyDeclaration : void 0; + const resolved = links.typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? resolveSymbol(getExportsOfModule(links.typeOnlyDeclaration.symbol.parent).get(links.typeOnlyExportStarName || symbol.escapedName)) : resolveAlias(links.typeOnlyDeclaration.symbol); + return getAllSymbolFlags(resolved) & include ? links.typeOnlyDeclaration : void 0; } return void 0; } function markExportAsReferenced(node) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } const symbol = getSymbolOfDeclaration(node); const target = resolveAlias(symbol); if (target) { @@ -49368,6 +49555,7 @@ function createTypeChecker(host) { } } function markAliasSymbolAsReferenced(symbol) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); const links = getSymbolLinks(symbol); if (!links.referenced) { links.referenced = true; @@ -49674,6 +49862,8 @@ function createTypeChecker(host) { /*isError*/ false, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -49725,7 +49915,7 @@ function createTypeChecker(host) { } } } - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chainDiagnosticMessages( + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chainDiagnosticMessages( diagnosticDetails, Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead, moduleReference @@ -49759,6 +49949,8 @@ function createTypeChecker(host) { /*isError*/ noImplicitAny && !!moduleNotFoundError, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -49813,26 +50005,37 @@ function createTypeChecker(host) { return importSourceWithoutExtension; } } - function errorOnImplicitAnyModule(isError, errorNode, { packageId, resolvedFileName }, moduleReference) { - const errorInfo = !isExternalModuleNameRelative(moduleReference) && packageId ? typesPackageExists(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, - packageId.name, - mangleScopedPackageName(packageId.name) - ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, - packageId.name, - moduleReference - ) : chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, - moduleReference, - mangleScopedPackageName(packageId.name) - ) : void 0; + function errorOnImplicitAnyModule(isError, errorNode, sourceFile, mode, { packageId, resolvedFileName }, moduleReference) { + var _a2, _b; + let errorInfo; + if (!isExternalModuleNameRelative(moduleReference) && packageId) { + const node10Result = (_b = (_a2 = sourceFile.resolvedModules) == null ? void 0 : _a2.get(moduleReference, mode)) == null ? void 0 : _b.node10Result; + errorInfo = node10Result ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings, + node10Result, + node10Result.indexOf(nodeModulesPathPart + "@types/") > -1 ? `@types/${mangleScopedPackageName(packageId.name)}` : packageId.name + ) : typesPackageExists(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, + packageId.name, + mangleScopedPackageName(packageId.name) + ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, + packageId.name, + moduleReference + ) : chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, + moduleReference, + mangleScopedPackageName(packageId.name) + ); + } errorOrSuggestion(isError, errorNode, chainDiagnosticMessages( errorInfo, Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, @@ -49992,7 +50195,12 @@ function createTypeChecker(host) { } function getExportsOfModule(moduleSymbol) { const links = getSymbolLinks(moduleSymbol); - return links.resolvedExports || (links.resolvedExports = getExportsOfModuleWorker(moduleSymbol)); + if (!links.resolvedExports) { + const { exports, typeOnlyExportStarMap } = getExportsOfModuleWorker(moduleSymbol); + links.resolvedExports = exports; + links.typeOnlyExportStarMap = typeOnlyExportStarMap; + } + return links.resolvedExports; } function extendExportSymbols(target, source, lookupTable, exportNode) { if (!source) @@ -50020,9 +50228,21 @@ function createTypeChecker(host) { } function getExportsOfModuleWorker(moduleSymbol) { const visitedSymbols = []; + let typeOnlyExportStarMap; + const nonTypeOnlyNames = /* @__PURE__ */ new Set(); moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); - return visit(moduleSymbol) || emptySymbols; - function visit(symbol) { + const exports = visit(moduleSymbol) || emptySymbols; + if (typeOnlyExportStarMap) { + nonTypeOnlyNames.forEach((name) => typeOnlyExportStarMap.delete(name)); + } + return { + exports, + typeOnlyExportStarMap + }; + function visit(symbol, exportStar, isTypeOnly) { + if (!isTypeOnly && (symbol == null ? void 0 : symbol.exports)) { + symbol.exports.forEach((_, name) => nonTypeOnlyNames.add(name)); + } if (!(symbol && symbol.exports && pushIfUnique(visitedSymbols, symbol))) { return; } @@ -50034,7 +50254,7 @@ function createTypeChecker(host) { if (exportStars.declarations) { for (const node of exportStars.declarations) { const resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); - const exportedSymbols = visit(resolvedModule); + const exportedSymbols = visit(resolvedModule, node, isTypeOnly || node.isTypeOnly); extendExportSymbols( nestedSymbols, exportedSymbols, @@ -50058,6 +50278,13 @@ function createTypeChecker(host) { }); extendExportSymbols(symbols, nestedSymbols); } + if (exportStar == null ? void 0 : exportStar.isTypeOnly) { + typeOnlyExportStarMap != null ? typeOnlyExportStarMap : typeOnlyExportStarMap = /* @__PURE__ */ new Map(); + symbols.forEach((_, escapedName) => typeOnlyExportStarMap.set( + escapedName, + exportStar + )); + } return symbols; } } @@ -51489,13 +51716,17 @@ function createTypeChecker(host) { let qualifier = root.qualifier; if (qualifier) { if (isIdentifier(qualifier)) { - qualifier = factory.updateIdentifier(qualifier, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(qualifier)) { + qualifier = setIdentifierTypeArguments(factory.cloneNode(qualifier), typeArguments); + } } else { - qualifier = factory.updateQualifiedName( - qualifier, - qualifier.left, - factory.updateIdentifier(qualifier.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(qualifier.right)) { + qualifier = factory.updateQualifiedName( + qualifier, + qualifier.left, + setIdentifierTypeArguments(factory.cloneNode(qualifier.right), typeArguments) + ); + } } } typeArguments = ref.typeArguments; @@ -51515,13 +51746,17 @@ function createTypeChecker(host) { let typeArguments = root.typeArguments; let typeName = root.typeName; if (isIdentifier(typeName)) { - typeName = factory.updateIdentifier(typeName, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(typeName)) { + typeName = setIdentifierTypeArguments(factory.cloneNode(typeName), typeArguments); + } } else { - typeName = factory.updateQualifiedName( - typeName, - typeName.left, - factory.updateIdentifier(typeName.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(typeName.right)) { + typeName = factory.updateQualifiedName( + typeName, + typeName.left, + setIdentifierTypeArguments(factory.cloneNode(typeName.right), typeArguments) + ); + } } typeArguments = ref.typeArguments; const ids = getAccessStack(ref); @@ -52235,7 +52470,11 @@ function createTypeChecker(host) { if (!nonRootParts || isEntityName(nonRootParts)) { if (nonRootParts) { const lastId = isIdentifier(nonRootParts) ? nonRootParts : nonRootParts.right; - lastId.typeArguments = void 0; + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); } return factory.createImportTypeNode(lit, assertion, nonRootParts, typeParameterNodes, isTypeOf); } else { @@ -52252,8 +52491,12 @@ function createTypeChecker(host) { return factory.createTypeQueryNode(entityName); } else { const lastId = isIdentifier(entityName) ? entityName : entityName.right; - const lastTypeArgs = lastId.typeArguments; - lastId.typeArguments = void 0; + const lastTypeArgs = getIdentifierTypeArguments(lastId); + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); return factory.createTypeReferenceNode(entityName, lastTypeArgs); } function createAccessFromSymbolChain(chain2, index, stopper) { @@ -52297,7 +52540,9 @@ function createTypeChecker(host) { return factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(LHS, typeParameterNodes), factory.createLiteralTypeNode(factory.createStringLiteral(symbolName2))); } } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; if (index > stopper) { const LHS = createAccessFromSymbolChain(chain2, index - 1, stopper); @@ -52355,7 +52600,9 @@ function createTypeChecker(host) { text = `${rawtext}_${i}`; } if (text !== rawtext) { - result = factory.createIdentifier(text, result.typeArguments); + const typeArguments = getIdentifierTypeArguments(result); + result = factory.createIdentifier(text); + setIdentifierTypeArguments(result, typeArguments); } (context.typeParameterNamesByTextNextNameCount || (context.typeParameterNamesByTextNextNameCount = /* @__PURE__ */ new Map())).set(rawtext, i); (context.typeParameterNames || (context.typeParameterNames = /* @__PURE__ */ new Map())).set(getTypeId(type), result); @@ -52379,7 +52626,9 @@ function createTypeChecker(host) { if (index === 0) { context.flags ^= 16777216 /* InInitialEntityName */; } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createQualifiedName(createEntityNameFromSymbolChain(chain2, index - 1), identifier) : identifier; } @@ -52402,7 +52651,9 @@ function createTypeChecker(host) { return factory.createStringLiteral(getSpecifierForModuleSymbol(symbol2, context)); } if (index === 0 || canUsePropertyAccess(symbolName2, languageVersion)) { - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createPropertyAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), identifier) : identifier; } else { @@ -52417,8 +52668,11 @@ function createTypeChecker(host) { expression = factory.createNumericLiteral(+symbolName2); } if (!expression) { - expression = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); - expression.symbol = symbol2; + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); + identifier.symbol = symbol2; + expression = identifier; } return factory.createElementAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), expression); } @@ -52574,7 +52828,7 @@ function createTypeChecker(host) { } let hadError = false; const file = getSourceFileOfNode(existing); - const transformed = visitNode(existing, visitExistingNodeTreeSymbols); + const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); if (hadError) { return void 0; } @@ -52587,16 +52841,16 @@ function createTypeChecker(host) { return factory.createKeywordTypeNode(157 /* UnknownKeyword */); } if (isJSDocNullableType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createLiteralTypeNode(factory.createNull())]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); } if (isJSDocOptionalType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); } if (isJSDocNonNullableType(node)) { return visitNode(node.type, visitExistingNodeTreeSymbols); } if (isJSDocVariadicType(node)) { - return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols)); + return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); } if (isJSDocTypeLiteral(node)) { return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { @@ -52608,7 +52862,7 @@ function createTypeChecker(host) { void 0, name, t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(57 /* QuestionToken */) : void 0, - overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); })); } @@ -52627,9 +52881,9 @@ function createTypeChecker(host) { "x", /*questionToken*/ void 0, - visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) )], - visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) )]); } if (isJSDocFunctionType(node)) { @@ -52638,33 +52892,33 @@ function createTypeChecker(host) { return factory.createConstructorTypeNode( /*modifiers*/ void 0, - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } else { return factory.createFunctionTypeNode( - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), map(node.parameters, (p, i) => factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } } @@ -53113,7 +53367,7 @@ function createTypeChecker(host) { /*modifiers*/ void 0, /*isTypeOnly*/ - false, + node.isTypeOnly, /*exportClause*/ void 0, factory.createStringLiteral(getSpecifierForModuleSymbol(resolvedModule, context)) @@ -53586,7 +53840,7 @@ function createTypeChecker(host) { break; } case 268 /* ImportEqualsDeclaration */: - if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, isJsonSourceFile)) { + if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, (d) => isSourceFile(d) && isJsonSourceFile(d))) { serializeMaybeAliasAssignment(symbol); break; } @@ -54681,6 +54935,12 @@ function createTypeChecker(host) { const isProperty = isPropertyDeclaration(declaration) && !hasAccessorModifier(declaration) || isPropertySignature(declaration) || isJSDocPropertyTag(declaration); const isOptional = includeOptionality && isOptionalDeclaration(declaration); const declaredType = tryGetTypeFromEffectiveTypeNode(declaration); + if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { + if (declaredType) { + return isTypeAny(declaredType) || declaredType === unknownType ? declaredType : errorType; + } + return useUnknownInCatchVariables ? unknownType : anyType; + } if (declaredType) { return addOptionality(declaredType, isProperty, isOptional); } @@ -55259,14 +55519,6 @@ function createTypeChecker(host) { } Debug.assertIsDefined(symbol.valueDeclaration); const declaration = symbol.valueDeclaration; - if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); - if (typeNode === void 0) { - return useUnknownInCatchVariables ? unknownType : anyType; - } - const type2 = getTypeOfNode(typeNode); - return isTypeAny(type2) || type2 === unknownType ? type2 : errorType; - } if (isSourceFile(declaration) && isJsonSourceFile(declaration)) { if (!declaration.statements.length) { return emptyObjectType; @@ -55858,7 +56110,7 @@ function createTypeChecker(host) { baseType ); const diagnostic = chainDiagnosticMessages(elaboration, Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members, typeToString(reducedBaseType)); - diagnostics.add(createDiagnosticForNodeFromMessageChain(baseTypeNode.expression, diagnostic)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(baseTypeNode.expression), baseTypeNode.expression, diagnostic)); return type.resolvedBaseTypes = emptyArray; } if (type === reducedBaseType || hasBaseType(reducedBaseType, type)) { @@ -56259,7 +56511,7 @@ function createTypeChecker(host) { const links = getSymbolLinks(symbol); if (!links[resolutionKind]) { const isStatic2 = resolutionKind === "resolvedExports" /* resolvedExports */; - const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol) : symbol.exports; + const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol).exports : symbol.exports; links[resolutionKind] = earlySymbols || emptySymbols; const lateSymbols = createSymbolTable(); for (const decl of symbol.declarations || emptyArray) { @@ -57248,7 +57500,7 @@ function createTypeChecker(host) { } function isConstTypeVariable(type) { var _a2; - return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); + return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || isGenericTupleType(type) && findIndex(getTypeArguments(type), (t, i) => !!(type.target.elementFlags[i] & 8 /* Variadic */) && isConstTypeVariable(t)) >= 0 || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); } function getConstraintOfIndexedAccess(type) { return hasNonCircularBaseConstraint(type) ? getConstraintFromIndexedAccess(type) : void 0; @@ -58472,6 +58724,12 @@ function createTypeChecker(host) { } return result & 458752 /* PropagatingFlags */; } + function tryCreateTypeReference(target, typeArguments) { + if (some(typeArguments) && target === emptyGenericType) { + return unknownType; + } + return createTypeReference(target, typeArguments); + } function createTypeReference(target, typeArguments) { const id = getTypeListId(typeArguments); let type = target.instantiations.get(id); @@ -59166,6 +59424,78 @@ function createTypeChecker(host) { false )) || emptyObjectType; } + function getGlobalClassDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassDecoratorContextType != null ? deferredGlobalClassDecoratorContextType : deferredGlobalClassDecoratorContextType = getGlobalType( + "ClassDecoratorContext", + /*arity*/ + 1, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassMethodDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassMethodDecoratorContextType != null ? deferredGlobalClassMethodDecoratorContextType : deferredGlobalClassMethodDecoratorContextType = getGlobalType( + "ClassMethodDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassGetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassGetterDecoratorContextType != null ? deferredGlobalClassGetterDecoratorContextType : deferredGlobalClassGetterDecoratorContextType = getGlobalType( + "ClassGetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassSetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassSetterDecoratorContextType != null ? deferredGlobalClassSetterDecoratorContextType : deferredGlobalClassSetterDecoratorContextType = getGlobalType( + "ClassSetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorContextType != null ? deferredGlobalClassAccessorDecoratorContextType : deferredGlobalClassAccessorDecoratorContextType = getGlobalType( + "ClassAccessorDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorTargetType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorTargetType != null ? deferredGlobalClassAccessorDecoratorTargetType : deferredGlobalClassAccessorDecoratorTargetType = getGlobalType( + "ClassAccessorDecoratorTarget", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorResultType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorResultType != null ? deferredGlobalClassAccessorDecoratorResultType : deferredGlobalClassAccessorDecoratorResultType = getGlobalType( + "ClassAccessorDecoratorResult", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassFieldDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassFieldDecoratorContextType != null ? deferredGlobalClassFieldDecoratorContextType : deferredGlobalClassFieldDecoratorContextType = getGlobalType( + "ClassFieldDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } function getGlobalNaNSymbol() { return deferredGlobalNaNSymbol || (deferredGlobalNaNSymbol = getGlobalValueSymbol( "NaN", @@ -60476,7 +60806,7 @@ function createTypeChecker(host) { typeToString(fullIndexType), typeToString(objectType) ); - diagnostics.add(createDiagnosticForNodeFromMessageChain(accessExpression, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(accessExpression), accessExpression, errorInfo)); } } } @@ -62890,7 +63220,7 @@ function createTypeChecker(host) { } } } - const diag2 = createDiagnosticForNodeFromMessageChain(errorNode, errorInfo, relatedInformation); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, errorInfo, relatedInformation); if (relatedInfo) { addRelatedInfo(diag2, ...relatedInfo); } @@ -65933,19 +66263,22 @@ function createTypeChecker(host) { break; case 166 /* Parameter */: const param = declaration; - if (isIdentifier(param.name) && (isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( - param, - param.name.escapedText, - 788968 /* Type */, - void 0, - param.name.escapedText, - /*isUse*/ - true - ) || param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) { - const newName = "arg" + param.parent.parameters.indexOf(param); - const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); - errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); - return; + if (isIdentifier(param.name)) { + const originalKeywordKind = identifierToKeywordKind(param.name); + if ((isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( + param, + param.name.escapedText, + 788968 /* Type */, + void 0, + param.name.escapedText, + /*isUse*/ + true + ) || originalKeywordKind && isTypeNodeKind(originalKeywordKind))) { + const newName = "arg" + param.parent.parameters.indexOf(param); + const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); + errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); + return; + } } diagnostic = declaration.dotDotDotToken ? noImplicitAny ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage : noImplicitAny ? Diagnostics.Parameter_0_implicitly_has_an_1_type : Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; break; @@ -66133,6 +66466,10 @@ function createTypeChecker(host) { function isTypeParameterAtTopLevel(type, typeParameter) { return !!(type === typeParameter || type.flags & 3145728 /* UnionOrIntersection */ && some(type.types, (t) => isTypeParameterAtTopLevel(t, typeParameter)) || type.flags & 16777216 /* Conditional */ && (getTrueTypeFromConditionalType(type) === typeParameter || getFalseTypeFromConditionalType(type) === typeParameter)); } + function isTypeParameterAtTopLevelInReturnType(signature, typeParameter) { + const typePredicate = getTypePredicateOfSignature(signature); + return typePredicate ? !!typePredicate.type && isTypeParameterAtTopLevel(typePredicate.type, typeParameter) : isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), typeParameter); + } function createEmptyObjectTypeFromStringLiteral(type) { const members = createSymbolTable(); forEachType(type, (t) => { @@ -66856,7 +67193,7 @@ function createTypeChecker(host) { } else { const middleLength = targetArity - startLength - endLength; if (middleLength === 2) { - if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */) { const targetInfo = getInferenceInfoForType(elementTypes[startLength]); if (targetInfo && targetInfo.impliedArity !== void 0) { inferFromTypes(sliceTupleType(source, startLength, endLength + sourceArity - targetInfo.impliedArity), elementTypes[startLength]); @@ -66870,7 +67207,7 @@ function createTypeChecker(host) { inferFromTypes(sliceTupleType(source, startLength, sourceArity - (startLength + impliedArity)), elementTypes[startLength]); inferFromTypes(getElementTypeOfSliceOfTupleType(source, startLength + impliedArity, endLength), elementTypes[startLength + 1]); } - } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */) { const param = (_b = getInferenceInfoForType(elementTypes[startLength + 1])) == null ? void 0 : _b.typeParameter; const constraint = param && getBaseConstraintOfType(param); if (constraint && isTupleType(constraint) && !constraint.target.hasRestElement) { @@ -66890,10 +67227,10 @@ function createTypeChecker(host) { } } else if (middleLength === 1 && elementFlags[startLength] & 8 /* Variadic */) { const endsInOptional = target.target.elementFlags[targetArity - 1] & 2 /* Optional */; - const sourceSlice = isTupleType(source) ? sliceTupleType(source, startLength, endLength) : createArrayType(getTypeArguments(source)[0]); + const sourceSlice = sliceTupleType(source, startLength, endLength); inferWithPriority(sourceSlice, elementTypes[startLength], endsInOptional ? 2 /* SpeculativeTuple */ : 0); } else if (middleLength === 1 && elementFlags[startLength] & 4 /* Rest */) { - const restType = isTupleType(source) ? getElementTypeOfSliceOfTupleType(source, startLength, endLength) : getTypeArguments(source)[0]; + const restType = getElementTypeOfSliceOfTupleType(source, startLength, endLength); if (restType) { inferFromTypes(restType, elementTypes[startLength]); } @@ -67004,7 +67341,7 @@ function createTypeChecker(host) { function getCovariantInference(inference, signature) { const candidates = unionObjectAndArrayLiteralCandidates(inference.candidates); const primitiveConstraint = hasPrimitiveConstraint(inference.typeParameter) || isConstTypeVariable(inference.typeParameter); - const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), inference.typeParameter)); + const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevelInReturnType(signature, inference.typeParameter)); const baseCandidates = primitiveConstraint ? sameMap(candidates, getRegularTypeOfLiteralType) : widenLiteralTypes ? sameMap(candidates, getWidenedLiteralType) : candidates; const unwidenedType = inference.priority & 416 /* PriorityImpliesCombination */ ? getUnionType(baseCandidates, 2 /* Subtype */) : getCommonSupertype(baseCandidates); return getWidenedType(unwidenedType); @@ -69059,7 +69396,7 @@ function createTypeChecker(host) { return getNonMissingTypeOfSymbol(symbol); } function getControlFlowContainer(node) { - return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 169 /* PropertyDeclaration */); + return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 295 /* CatchClause */ || node2.kind === 169 /* PropertyDeclaration */); } function isSymbolAssigned(symbol) { if (!symbol.valueDeclaration) { @@ -69141,6 +69478,9 @@ function createTypeChecker(host) { }); } function markAliasReferenced(symbol, location) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } if (isNonLocalAlias( symbol, /*excludes*/ @@ -69148,7 +69488,7 @@ function createTypeChecker(host) { ) && !isInTypeQuery(location) && !getTypeOnlyAliasDeclaration(symbol, 111551 /* Value */)) { const target = resolveAlias(symbol); if (getAllSymbolFlags(target) & (111551 /* Value */ | 1048576 /* ExportValue */)) { - if (compilerOptions.isolatedModules || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { + if (getIsolatedModules(compilerOptions) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { markAliasSymbolAsReferenced(symbol); } else { markConstEnumAliasAsReferenced(symbol); @@ -69157,6 +69497,7 @@ function createTypeChecker(host) { } } function getNarrowedTypeOfSymbol(symbol, location) { + var _a2; const type = getTypeOfSymbol(symbol); const declaration = symbol.valueDeclaration; if (declaration) { @@ -69192,7 +69533,7 @@ function createTypeChecker(host) { if (func.parameters.length >= 2 && isContextSensitiveFunctionOrObjectLiteralMethod(func)) { const contextualSignature = getContextualSignature(func); if (contextualSignature && contextualSignature.parameters.length === 1 && signatureHasRestParameter(contextualSignature)) { - const restType = getReducedApparentType(getTypeOfSymbol(contextualSignature.parameters[0])); + const restType = getReducedApparentType(instantiateType(getTypeOfSymbol(contextualSignature.parameters[0]), (_a2 = getInferenceContext(func)) == null ? void 0 : _a2.nonFixingMapper)); if (restType.flags & 1048576 /* Union */ && everyType(restType, isTupleType) && !isSymbolAssigned(symbol)) { const narrowedType = getFlowTypeOfReference( func, @@ -69245,7 +69586,7 @@ function createTypeChecker(host) { } let declaration = localOrExportSymbol.valueDeclaration; if (declaration && localOrExportSymbol.flags & 32 /* Class */) { - if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(declaration)) { + if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(legacyDecorators, declaration)) { let container = getContainingClass(node); while (container !== void 0) { if (container === declaration && container.name !== node) { @@ -69316,13 +69657,14 @@ function createTypeChecker(host) { const isParameter2 = getRootDeclaration(declaration).kind === 166 /* Parameter */; const declarationContainer = getControlFlowContainer(declaration); let flowContainer = getControlFlowContainer(node); + const isCatch = flowContainer.kind === 295 /* CatchClause */; const isOuterVariable = flowContainer !== declarationContainer; const isSpreadDestructuringAssignmentTarget = node.parent && node.parent.parent && isSpreadAssignment(node.parent) && isDestructuringAssignmentTarget(node.parent.parent); const isModuleExports = symbol.flags & 134217728 /* ModuleExports */; while (flowContainer !== declarationContainer && (flowContainer.kind === 215 /* FunctionExpression */ || flowContainer.kind === 216 /* ArrowFunction */ || isObjectLiteralOrClassExpressionMethodOrAccessor(flowContainer)) && (isConstVariable(localOrExportSymbol) && type !== autoArrayType || isParameter2 && !isSymbolAssigned(localOrExportSymbol))) { flowContainer = getControlFlowContainer(flowContainer); } - const assumeInitialized = isParameter2 || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; + const assumeInitialized = isParameter2 || isCatch || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; const initialType = assumeInitialized ? isParameter2 ? removeOptionalityFromDeclaredType(type, declaration) : type : type === autoType || type === autoArrayType ? undefinedType : getOptionalType(type); const flowType = getFlowTypeOfReference(node, type, initialType, flowContainer); if (!isEvolvingArrayOperationTarget(node) && (type === autoType || type === autoArrayType)) { @@ -69469,7 +69811,7 @@ function createTypeChecker(host) { } } function checkThisInStaticClassFieldInitializerInDecoratedClass(thisExpression, container) { - if (isPropertyDeclaration(container) && hasStaticModifier(container) && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { + if (isPropertyDeclaration(container) && hasStaticModifier(container) && legacyDecorators && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { error(thisExpression, Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class); } } @@ -69847,7 +70189,7 @@ function createTypeChecker(host) { } } function getContextualTypeForVariableLikeDeclaration(declaration, contextFlags) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration) || (isInJSFile(declaration) ? tryGetJSDocSatisfiesTypeNode(declaration) : void 0); if (typeNode) { return getTypeFromTypeNode(typeNode); } @@ -70013,6 +70355,10 @@ function createTypeChecker(host) { const restIndex = signature.parameters.length - 1; return signatureHasRestParameter(signature) && argIndex >= restIndex ? getIndexedAccessType(getTypeOfSymbol(signature.parameters[restIndex]), getNumberLiteralType(argIndex - restIndex), 256 /* Contextual */) : getTypeAtPosition(signature, argIndex); } + function getContextualTypeForDecorator(decorator) { + const signature = getDecoratorCallSignature(decorator); + return signature ? getOrCreateTypeFromSignature(signature) : void 0; + } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { if (template.parent.kind === 212 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); @@ -70413,7 +70759,9 @@ function createTypeChecker(host) { } const index = findContextualNode(node); if (index >= 0) { - return contextualTypes[index]; + const cached = contextualTypes[index]; + if (cached || !contextFlags) + return cached; } const { parent: parent2 } = node; switch (parent2.kind) { @@ -70433,6 +70781,8 @@ function createTypeChecker(host) { case 210 /* CallExpression */: case 211 /* NewExpression */: return getContextualTypeForArgument(parent2, node); + case 167 /* Decorator */: + return getContextualTypeForDecorator(parent2); case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: return isConstTypeReference(parent2.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(parent2.type); @@ -70454,8 +70804,16 @@ function createTypeChecker(host) { Debug.assert(parent2.parent.kind === 225 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent2.parent, node); case 214 /* ParenthesizedExpression */: { - const tag = isInJSFile(parent2) ? getJSDocTypeTag(parent2) : void 0; - return !tag ? getContextualType2(parent2, contextFlags) : isJSDocTypeTag(tag) && isConstTypeReference(tag.typeExpression.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(tag.typeExpression.type); + if (isInJSFile(parent2)) { + if (isJSDocSatisfiesExpression(parent2)) { + return getTypeFromTypeNode(getJSDocSatisfiesExpressionType(parent2)); + } + const typeTag = getJSDocTypeTag(parent2); + if (typeTag && !isConstTypeReference(typeTag.typeExpression.type)) { + return getTypeFromTypeNode(typeTag.typeExpression.type); + } + } + return getContextualType2(parent2, contextFlags); } case 232 /* NonNullExpression */: return getContextualType2(parent2, contextFlags); @@ -71607,7 +71965,7 @@ function createTypeChecker(host) { } if (jsxFactorySym) { jsxFactorySym.isReferenced = 67108863 /* All */; - if (jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { + if (!compilerOptions.verbatimModuleSyntax && jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { markAliasSymbolAsReferenced(jsxFactorySym); } } @@ -72064,7 +72422,7 @@ function createTypeChecker(host) { node.kind === 163 /* QualifiedName */ ); } - if (isIdentifier(left) && parentSymbol && (compilerOptions.isolatedModules || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { + if (isIdentifier(left) && parentSymbol && (getIsolatedModules(compilerOptions) || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { markAliasReferenced(parentSymbol, node); } let propType; @@ -72273,7 +72631,7 @@ function createTypeChecker(host) { } } } - const resultDiagnostic = createDiagnosticForNodeFromMessageChain(propNode, errorInfo); + const resultDiagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(propNode), propNode, errorInfo); if (relatedInfo) { addRelatedInfo(resultDiagnostic, relatedInfo); } @@ -73135,35 +73493,22 @@ function createTypeChecker(host) { return args; } function getEffectiveDecoratorArguments(node) { - const parent2 = node.parent; const expr = node.expression; - switch (parent2.kind) { - case 260 /* ClassDeclaration */: - case 228 /* ClassExpression */: - return [ - createSyntheticExpression(expr, getTypeOfSymbol(getSymbolOfDeclaration(parent2))) - ]; - case 166 /* Parameter */: - const func = parent2.parent; - return [ - createSyntheticExpression(expr, parent2.parent.kind === 173 /* Constructor */ ? getTypeOfSymbol(getSymbolOfDeclaration(func)) : errorType), - createSyntheticExpression(expr, anyType), - createSyntheticExpression(expr, numberType) - ]; - case 169 /* PropertyDeclaration */: - case 171 /* MethodDeclaration */: - case 174 /* GetAccessor */: - case 175 /* SetAccessor */: - const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); - return [ - createSyntheticExpression(expr, getParentTypeOfClassElement(parent2)), - createSyntheticExpression(expr, getClassElementPropertyKeyType(parent2)), - createSyntheticExpression(expr, hasPropDesc ? createTypedPropertyDescriptorType(getTypeOfNode(parent2)) : anyType) - ]; + const signature = getDecoratorCallSignature(node); + if (signature) { + const args = []; + for (const param of signature.parameters) { + const type = getTypeOfSymbol(param); + args.push(createSyntheticExpression(expr, type)); + } + return args; } return Debug.fail(); } function getDecoratorArgumentCount(node, signature) { + return compilerOptions.experimentalDecorators ? getLegacyDecoratorArgumentCount(node, signature) : 2; + } + function getLegacyDecoratorArgumentCount(node, signature) { switch (node.parent.kind) { case 260 /* ClassDeclaration */: case 228 /* ClassExpression */: @@ -73198,9 +73543,15 @@ function createTypeChecker(host) { function getDiagnosticForCallNode(node, message, arg0, arg1, arg2, arg3) { if (isCallExpression(node)) { const { sourceFile, start: start2, length: length2 } = getDiagnosticSpanForCallNode(node); - return createFileDiagnostic(sourceFile, start2, length2, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createFileDiagnostic(sourceFile, start2, length2, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForFileFromMessageChain(sourceFile, message); } else { - return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, message); } } function isPromiseResolveArityError(node) { @@ -73224,7 +73575,7 @@ function createTypeChecker(host) { ); return constructorSymbol === globalPromiseSymbol; } - function getArgumentArityError(node, signatures, args) { + function getArgumentArityError(node, signatures, args, headMessage) { var _a2; const spreadIndex = getSpreadArgumentIndex(args); if (spreadIndex > -1) { @@ -73254,11 +73605,36 @@ function createTypeChecker(host) { if (isVoidPromiseError && isInJSFile(node)) { return getDiagnosticForCallNode(node, Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); } - const error2 = hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; + const error2 = isDecorator(node) ? hasRestParameter2 ? Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0 : Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0 : hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; if (min2 < args.length && args.length < max) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, + args.length, + maxBelow, + minAbove + ); + chain = chainDiagnosticMessages(chain, headMessage); + return getDiagnosticForCallNode(node, chain); + } return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, args.length, maxBelow, minAbove); } else if (args.length < min2) { - const diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + let diagnostic; + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + diagnostic = getDiagnosticForCallNode(node, chain); + } else { + diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + } const parameter = (_a2 = closestSignature == null ? void 0 : closestSignature.declaration) == null ? void 0 : _a2.parameters[closestSignature.thisParameter ? args.length + 1 : args.length]; if (parameter) { const parameterError = createDiagnosticForNode( @@ -73277,15 +73653,37 @@ function createTypeChecker(host) { end++; } setTextRangePosEnd(errorSpan, pos, end); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), errorSpan, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), errorSpan, error2, parameterRange, args.length); } } - function getTypeArgumentArityError(node, signatures, typeArguments) { + function getTypeArgumentArityError(node, signatures, typeArguments, headMessage) { const argCount = typeArguments.length; if (signatures.length === 1) { const sig = signatures[0]; const min2 = getMinTypeArgumentCount(sig.typeParameters); const max = length(sig.typeParameters); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + min2 < max ? min2 + "-" + max : min2, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, min2 < max ? min2 + "-" + max : min2, argCount); } let belowArgCount = -Infinity; @@ -73300,11 +73698,34 @@ function createTypeChecker(host) { } } if (belowArgCount !== -Infinity && aboveArgCount !== Infinity) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, + argCount, + belowArgCount, + aboveArgCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, argCount, belowArgCount, aboveArgCount); } + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + belowArgCount === -Infinity ? aboveArgCount : belowArgCount, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, belowArgCount === -Infinity ? aboveArgCount : belowArgCount, argCount); } - function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, fallbackError) { + function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, headMessage) { const isTaggedTemplate = node.kind === 212 /* TaggedTemplateExpression */; const isDecorator2 = node.kind === 167 /* Decorator */; const isJsxOpeningOrSelfClosingElement = isJsxOpeningLikeElement(node); @@ -73353,6 +73774,9 @@ function createTypeChecker(host) { chain = chainDiagnosticMessages(chain, Diagnostics.The_last_overload_gave_the_following_error); chain = chainDiagnosticMessages(chain, Diagnostics.No_overload_matches_this_call); } + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const diags = getSignatureApplicabilityError( node, args, @@ -73413,39 +73837,40 @@ function createTypeChecker(host) { } const diags = max > 1 ? allDiagnostics[minIndex] : flatten(allDiagnostics); Debug.assert(diags.length > 0, "No errors reported for 3 or fewer overload signatures"); - const chain = chainDiagnosticMessages( + let chain = chainDiagnosticMessages( map(diags, createDiagnosticMessageChainFromDiagnostic), Diagnostics.No_overload_matches_this_call ); + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const related = [...flatMap(diags, (d) => d.relatedInformation)]; let diag2; if (every(diags, (d) => d.start === diags[0].start && d.length === diags[0].length && d.file === diags[0].file)) { const { file, start: start2, length: length2 } = diags[0]; diag2 = { file, start: start2, length: length2, code: chain.code, category: chain.category, messageText: chain, relatedInformation: related }; } else { - diag2 = createDiagnosticForNodeFromMessageChain(node, chain, related); + diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, chain, related); } addImplementationSuccessElaboration(candidatesForArgumentError[0], diag2); diagnostics.add(diag2); } } else if (candidateForArgumentArityError) { - diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args)); + diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args, headMessage)); } else if (candidateForTypeArgumentError) { checkTypeArguments( candidateForTypeArgumentError, node.typeArguments, /*reportErrors*/ true, - fallbackError + headMessage ); } else { const signaturesWithCorrectTypeArgumentArity = filter(signatures, (s) => hasCorrectTypeArgumentArity(s, typeArguments)); if (signaturesWithCorrectTypeArgumentArity.length === 0) { - diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments)); - } else if (!isDecorator2) { - diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args)); - } else if (fallbackError) { - diagnostics.add(getDiagnosticForCallNode(node, fallbackError)); + diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments, headMessage)); + } else { + diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args, headMessage)); } } } @@ -73948,7 +74373,7 @@ function createTypeChecker(host) { } function invocationError(errorTarget, apparentType, kind, relatedInformation) { const { messageChain, relatedMessage: relatedInfo } = invocationErrorDetails(errorTarget, apparentType, kind); - const diagnostic = createDiagnosticForNodeFromMessageChain(errorTarget, messageChain); + const diagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorTarget), errorTarget, messageChain); if (relatedInfo) { addRelatedInfo(diagnostic, createDiagnosticForNode(errorTarget, relatedInfo)); } @@ -74029,7 +74454,7 @@ function createTypeChecker(host) { if (isUntypedFunctionCall(funcType, apparentType, callSignatures.length, numConstructSignatures)) { return resolveUntypedCall(node); } - if (isPotentiallyUncalledDecorator(node, callSignatures)) { + if (isPotentiallyUncalledDecorator(node, callSignatures) && !isParenthesizedExpression(node.expression)) { const nodeStr = getTextOfNode( node.expression, /*includeTrivia*/ @@ -74042,7 +74467,7 @@ function createTypeChecker(host) { if (!callSignatures.length) { const errorDetails = invocationErrorDetails(node.expression, apparentType, 0 /* Call */); const messageChain = chainDiagnosticMessages(errorDetails.messageChain, headMessage); - const diag2 = createDiagnosticForNodeFromMessageChain(node.expression, messageChain); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node.expression), node.expression, messageChain); if (errorDetails.relatedMessage) { addRelatedInfo(diag2, createDiagnosticForNode(node.expression, errorDetails.relatedMessage)); } @@ -74659,12 +75084,15 @@ function createTypeChecker(host) { } function checkSatisfiesExpression(node) { checkSourceElement(node.type); - const exprType = checkExpression(node.expression); - const targetType = getTypeFromTypeNode(node.type); + return checkSatisfiesExpressionWorker(node.expression, node.type); + } + function checkSatisfiesExpressionWorker(expression, target, checkMode) { + const exprType = checkExpression(expression, checkMode); + const targetType = getTypeFromTypeNode(target); if (isErrorType(targetType)) { return targetType; } - checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, node.type, node.expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); + checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, target, expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); return exprType; } function checkMetaProperty(node) { @@ -75002,6 +75430,243 @@ function createTypeChecker(host) { } } } + function createClassDecoratorContextType(classType) { + return tryCreateTypeReference(getGlobalClassDecoratorContextType( + /*reportErrors*/ + true + ), [classType]); + } + function createClassMethodDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassMethodDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassGetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassGetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassSetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassSetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassFieldDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2) { + const key = `${isPrivate ? "p" : "P"}${isStatic2 ? "s" : "S"}${nameType.id}`; + let overrideType = decoratorContextOverrideTypeCache.get(key); + if (!overrideType) { + const members = createSymbolTable(); + members.set("name", createProperty("name", nameType)); + members.set("private", createProperty("private", isPrivate ? trueType : falseType)); + members.set("static", createProperty("static", isStatic2 ? trueType : falseType)); + overrideType = createAnonymousType( + /*symbol*/ + void 0, + members, + emptyArray, + emptyArray, + emptyArray + ); + decoratorContextOverrideTypeCache.set(key, overrideType); + } + return overrideType; + } + function createClassMemberDecoratorContextTypeForNode(node, thisType, valueType) { + const isStatic2 = hasStaticModifier(node); + const isPrivate = isPrivateIdentifier(node.name); + const nameType = isPrivate ? getStringLiteralType(idText(node.name)) : getLiteralTypeFromPropertyName(node.name); + const contextType = isMethodDeclaration(node) ? createClassMethodDecoratorContextType(thisType, valueType) : isGetAccessorDeclaration(node) ? createClassGetterDecoratorContextType(thisType, valueType) : isSetAccessorDeclaration(node) ? createClassSetterDecoratorContextType(thisType, valueType) : isAutoAccessorPropertyDeclaration(node) ? createClassAccessorDecoratorContextType(thisType, valueType) : isPropertyDeclaration(node) ? createClassFieldDecoratorContextType(thisType, valueType) : Debug.failBadSyntaxKind(node); + const overrideType = getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2); + return getIntersectionType([contextType, overrideType]); + } + function createClassAccessorDecoratorTargetType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorTargetType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorResultType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorResultType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorInitializerMutatorType(thisType, valueType) { + const thisParam = createParameter("this", thisType); + const valueParam = createParameter("value", valueType); + return createFunctionType( + /*typeParameters*/ + void 0, + thisParam, + [valueParam], + valueType, + /*typePredicate*/ + void 0, + 1 + ); + } + function createESDecoratorCallSignature(targetType, contextType, nonOptionalReturnType) { + const targetParam = createParameter("target", targetType); + const contextParam = createParameter("context", contextType); + const returnType = getUnionType([nonOptionalReturnType, voidType]); + return createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, contextParam], + returnType + ); + } + function getESDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const contextType = createClassDecoratorContextType(targetType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, targetType); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = isMethodDeclaration(node) ? getOrCreateTypeFromSignature(getSignatureFromDeclaration(node)) : getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = hasAccessorModifier(node) ? createClassAccessorDecoratorTargetType(thisType, valueType) : undefinedType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = hasAccessorModifier(node) ? createClassAccessorDecoratorResultType(thisType, valueType) : createClassFieldDecoratorInitializerMutatorType(thisType, valueType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getLegacyDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const targetParam = createParameter("target", targetType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam], + getUnionType([targetType, voidType]) + ); + break; + } + case 166 /* Parameter */: { + const node = parent2; + if (!isConstructorDeclaration(node.parent) && !(isMethodDeclaration(node.parent) || isSetAccessorDeclaration(node.parent) && isClassLike(node.parent.parent))) { + break; + } + if (getThisParameter(node.parent) === node) { + break; + } + const index = getThisParameter(node.parent) ? node.parent.parameters.indexOf(node) - 1 : node.parent.parameters.indexOf(node); + Debug.assert(index >= 0); + const targetType = isConstructorDeclaration(node.parent) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent.parent)) : getParentTypeOfClassElement(node.parent); + const keyType = isConstructorDeclaration(node.parent) ? undefinedType : getClassElementPropertyKeyType(node.parent); + const indexType = getNumberLiteralType(index); + const targetParam = createParameter("target", targetType); + const keyParam = createParameter("propertyKey", keyType); + const indexParam = createParameter("parameterIndex", indexType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, indexParam], + voidType + ); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const targetType = getParentTypeOfClassElement(node); + const targetParam = createParameter("target", targetType); + const keyType = getClassElementPropertyKeyType(node); + const keyParam = createParameter("propertyKey", keyType); + const returnType = isPropertyDeclaration(node) ? voidType : createTypedPropertyDescriptorType(getTypeOfNode(node)); + const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); + if (hasPropDesc) { + const descriptorType = createTypedPropertyDescriptorType(getTypeOfNode(node)); + const descriptorParam = createParameter("descriptor", descriptorType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, descriptorParam], + getUnionType([returnType, voidType]) + ); + } else { + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam], + getUnionType([returnType, voidType]) + ); + } + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getDecoratorCallSignature(decorator) { + return legacyDecorators ? getLegacyDecoratorCallSignature(decorator) : getESDecoratorCallSignature(decorator); + } function createPromiseType(promisedType) { const globalPromiseType = getGlobalPromiseType( /*reportErrors*/ @@ -76071,12 +76736,12 @@ function createTypeChecker(host) { void 0 ); const operator = operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { - if (operator === 55 /* AmpersandAmpersandToken */) { - let parent2 = node.parent; - while (parent2.kind === 214 /* ParenthesizedExpression */ || isBinaryExpression(parent2) && (parent2.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || parent2.operatorToken.kind === 56 /* BarBarToken */)) { - parent2 = parent2.parent; - } + if (isLogicalOrCoalescingBinaryOperator(operator)) { + let parent2 = node.parent; + while (parent2.kind === 214 /* ParenthesizedExpression */ || isLogicalOrCoalescingBinaryExpression(parent2)) { + parent2 = parent2.parent; + } + if (operator === 55 /* AmpersandAmpersandToken */ || isIfStatement(parent2)) { checkTestingKnownTruthyCallableOrAwaitableType(node.left, leftType, isIfStatement(parent2) ? parent2.thenStatement : void 0); } checkTruthinessOfType(leftType, node.left); @@ -76153,7 +76818,7 @@ function createTypeChecker(host) { return checkDestructuringAssignment(left, checkExpression(right, checkMode), checkMode, right.kind === 108 /* ThisKeyword */); } let leftType; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { + if (isLogicalOrCoalescingBinaryOperator(operator)) { leftType = checkTruthinessExpression(left, checkMode); } else { leftType = checkExpression(left, checkMode); @@ -76304,7 +76969,14 @@ function createTypeChecker(host) { if (checkForDisallowedESSymbolOperand(operator)) { leftType = getBaseTypeOfLiteralType(checkNonNullType(leftType, left)); rightType = getBaseTypeOfLiteralType(checkNonNullType(rightType, right)); - reportOperatorErrorUnless((left2, right2) => isTypeComparableTo(left2, right2) || isTypeComparableTo(right2, left2) || isTypeAssignableTo(left2, numberOrBigIntType) && isTypeAssignableTo(right2, numberOrBigIntType)); + reportOperatorErrorUnless((left2, right2) => { + if (isTypeAny(left2) || isTypeAny(right2)) { + return true; + } + const leftAssignableToNumber = isTypeAssignableTo(left2, numberOrBigIntType); + const rightAssignableToNumber = isTypeAssignableTo(right2, numberOrBigIntType); + return leftAssignableToNumber && rightAssignableToNumber || !leftAssignableToNumber && !rightAssignableToNumber && areTypesComparable(left2, right2); + }); } return booleanType; case 34 /* EqualsEqualsToken */: @@ -76437,7 +77109,7 @@ function createTypeChecker(host) { left, Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access - ) && (!isIdentifier(left) || unescapeLeadingUnderscores(left.escapedText) !== "exports")) { + )) { let headMessage; if (exactOptionalPropertyTypes && isPropertyAccessExpression(left) && maybeTypeOfKind(valueType, 32768 /* Undefined */)) { const target = getTypeOfPropertyOfType(getTypeOfExpression(left.expression), left.name.escapedText); @@ -76686,7 +77358,7 @@ function createTypeChecker(host) { } return links.resolvedType; } - function isTypeAssertion3(node) { + function isTypeAssertion(node) { node = skipParentheses( node, /*excludeJSDocTypeAssertions*/ @@ -76696,6 +77368,12 @@ function createTypeChecker(host) { } function checkDeclarationInitializer(declaration, checkMode, contextualType) { const initializer = getEffectiveInitializer(declaration); + if (isInJSFile(declaration)) { + const typeNode = tryGetJSDocSatisfiesTypeNode(declaration); + if (typeNode) { + return checkSatisfiesExpressionWorker(initializer, typeNode, checkMode); + } + } const type = getQuickTypeOfExpression(initializer) || (contextualType ? checkExpressionWithContextualType( initializer, contextualType, @@ -76764,7 +77442,7 @@ function createTypeChecker(host) { } function checkExpressionForMutableLocation(node, checkMode, forceTuple) { const type = checkExpression(node, checkMode, forceTuple); - return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion3(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( + return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( getContextualType2( node, /*contextFlags*/ @@ -77014,18 +77692,23 @@ function createTypeChecker(host) { if (!ok) { error(node, Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query); } - if (compilerOptions.isolatedModules) { + if (getIsolatedModules(compilerOptions)) { Debug.assert(!!(type.symbol.flags & 128 /* ConstEnum */)); const constEnumDeclaration = type.symbol.valueDeclaration; if (constEnumDeclaration.flags & 16777216 /* Ambient */) { - error(node, Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_access_ambient_const_enums_when_0_is_enabled, isolatedModulesLikeFlagName); } } } function checkParenthesizedExpression(node, checkMode) { - if (hasJSDocNodes(node) && isJSDocTypeAssertion(node)) { - const type = getJSDocTypeAssertionType(node); - return checkAssertionWorker(type, type, node.expression, checkMode); + if (hasJSDocNodes(node)) { + if (isJSDocSatisfiesExpression(node)) { + return checkSatisfiesExpressionWorker(node.expression, getJSDocSatisfiesExpressionType(node), checkMode); + } + if (isJSDocTypeAssertion(node)) { + const type = getJSDocTypeAssertionType(node); + return checkAssertionWorker(type, type, node.expression, checkMode); + } } return checkExpression(node.expression, checkMode); } @@ -77188,7 +77871,7 @@ function createTypeChecker(host) { } } function checkParameter(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkVariableLikeDeclaration(node); const func = getContainingFunction(node); if (hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */)) { @@ -77509,7 +78192,7 @@ function createTypeChecker(host) { } } function checkPropertyDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarProperty(node)) + if (!checkGrammarModifiers(node) && !checkGrammarProperty(node)) checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); setNodeLinksForPrivateIdentifierScope(node); @@ -77553,7 +78236,7 @@ function createTypeChecker(host) { } } function checkClassStaticBlockDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); forEachChild(node, checkSourceElement); } function checkConstructorDeclaration(node) { @@ -77733,8 +78416,11 @@ function createTypeChecker(host) { } function checkTypeReferenceNode(node) { checkGrammarTypeArguments(node, node.typeArguments); - if (node.kind === 180 /* TypeReference */ && node.typeName.jsdocDotPos !== void 0 && !isInJSFile(node) && !isInJSDoc(node)) { - grammarErrorAtPos(node, node.typeName.jsdocDotPos, 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + if (node.kind === 180 /* TypeReference */ && !isInJSFile(node) && !isInJSDoc(node) && node.typeArguments && node.typeName.end !== node.typeArguments.pos) { + const sourceFile = getSourceFileOfNode(node); + if (scanTokenAtPosition(sourceFile, node.typeName.end) === 24 /* DotToken */) { + grammarErrorAtPos(node, skipTrivia(sourceFile.text, node.typeName.end), 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + } } forEach(node.typeArguments, checkSourceElement); const type = getTypeFromTypeReference(node); @@ -78427,7 +79113,7 @@ function createTypeChecker(host) { chain = chainDiagnosticMessages(chain, Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1, typeToString(type), typeToString(thisTypeForErrorOut.value)); } chain = chainDiagnosticMessages(chain, diagnosticMessage, arg0); - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chain)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chain)); } return void 0; } @@ -78518,36 +79204,66 @@ function createTypeChecker(host) { if (returnType.flags & 1 /* Any */) { return; } + const decoratorSignature = getDecoratorCallSignature(node); + if (!(decoratorSignature == null ? void 0 : decoratorSignature.resolvedReturnType)) + return; let headMessage; - let expectedReturnType; + const expectedReturnType = decoratorSignature.resolvedReturnType; switch (node.parent.kind) { case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const classSymbol = getSymbolOfDeclaration(node.parent); - const classConstructorType = getTypeOfSymbol(classSymbol); - expectedReturnType = getUnionType([classConstructorType, voidType]); break; case 169 /* PropertyDeclaration */: + if (!legacyDecorators) { + headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + break; + } case 166 /* Parameter */: headMessage = Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any; - expectedReturnType = voidType; break; case 171 /* MethodDeclaration */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const methodType = getTypeOfNode(node.parent); - const descriptorType = createTypedPropertyDescriptorType(methodType); - expectedReturnType = getUnionType([descriptorType, voidType]); break; default: - return Debug.fail(); + return Debug.failBadSyntaxKind(node.parent); } - checkTypeAssignableTo( - returnType, - expectedReturnType, - node, - headMessage + checkTypeAssignableTo(returnType, expectedReturnType, node.expression, headMessage); + } + function createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount = parameters.length, flags = 0 /* None */) { + const decl = factory.createFunctionTypeNode( + /*typeParameters*/ + void 0, + emptyArray, + factory.createKeywordTypeNode(131 /* AnyKeyword */) + ); + return createSignature(decl, typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + } + function createFunctionType(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags) { + const signature = createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + return getOrCreateTypeFromSignature(signature); + } + function createGetterFunctionType(type) { + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + emptyArray, + type + ); + } + function createSetterFunctionType(type) { + const valueParam = createParameter("value", type); + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [valueParam], + voidType ); } function markTypeNodeAsReferenced(node) { @@ -78574,9 +79290,9 @@ function createTypeChecker(host) { true ); if (rootSymbol && rootSymbol.flags & 2097152 /* Alias */) { - if (symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { + if (!compilerOptions.verbatimModuleSyntax && symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { markAliasSymbolAsReferenced(rootSymbol); - } else if (forDecoratorMetadata && compilerOptions.isolatedModules && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { + } else if (forDecoratorMetadata && getIsolatedModules(compilerOptions) && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { const diag2 = error(typeName, Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled); const aliasDeclaration = find(rootSymbol.declarations || emptyArray, isAliasSymbolDeclaration2); if (aliasDeclaration) { @@ -78642,19 +79358,37 @@ function createTypeChecker(host) { return isRestParameter(node) ? getRestParameterElementType(typeNode) : typeNode; } function checkDecorators(node) { - if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(node, node.parent, node.parent.parent)) { + if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { return; } - if (!compilerOptions.experimentalDecorators) { - error(node, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning); - } const firstDecorator = find(node.modifiers, isDecorator); if (!firstDecorator) { return; } - checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); - if (node.kind === 166 /* Parameter */) { - checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + if (legacyDecorators) { + checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); + if (node.kind === 166 /* Parameter */) { + checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + } + } else if (languageVersion < 99 /* ESNext */) { + checkExternalEmitHelpers(firstDecorator, 8 /* ESDecorateAndRunInitializers */); + if (isClassDeclaration(node)) { + if (!node.name) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } else { + const member = getFirstTransformableStaticClassElement(node); + if (member) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + } + } else if (!isClassExpression(node)) { + if (isPrivateIdentifier(node.name) && (isMethodDeclaration(node) || isAccessor(node) || isAutoAccessorPropertyDeclaration(node))) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + if (isComputedPropertyName(node.name)) { + checkExternalEmitHelpers(firstDecorator, 16777216 /* PropKey */); + } + } } if (compilerOptions.emitDecoratorMetadata) { checkExternalEmitHelpers(firstDecorator, 16 /* Metadata */); @@ -78724,6 +79458,19 @@ function createTypeChecker(host) { function checkJSDocTypeTag(node) { checkSourceElement(node.typeExpression); } + function checkJSDocSatisfiesTag(node) { + checkSourceElement(node.typeExpression); + const host2 = getEffectiveJSDocHost(node); + if (host2) { + const tags = getAllJSDocTags(host2, isJSDocSatisfiesTag); + if (length(tags) > 1) { + for (let i = 1; i < length(tags); i++) { + const tagName = tags[i].tagName; + error(tagName, Diagnostics._0_tag_already_specified, idText(tagName)); + } + } + } + } function checkJSDocLinkLikeTag(node) { if (node.name) { resolveJSDocMemberName( @@ -79396,7 +80143,7 @@ function createTypeChecker(host) { return; } const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 2097152 /* Alias */ && isVariableDeclarationInitializedToBareOrAccessedRequire(node.kind === 205 /* BindingElement */ ? node.parent.parent : node)) { + if (symbol.flags & 2097152 /* Alias */ && (isVariableDeclarationInitializedToBareOrAccessedRequire(node) || isBindingElementOfBareOrAccessedRequire(node))) { checkAliasSymbol(node); return; } @@ -79488,7 +80235,7 @@ function createTypeChecker(host) { return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) + if (!checkGrammarModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) checkGrammarForDisallowedLetOrConstStatement(node); forEach(node.declarationList.declarations, checkSourceElement); } @@ -79509,17 +80256,26 @@ function createTypeChecker(host) { function checkTestingKnownTruthyCallableOrAwaitableType(condExpr, condType, body) { if (!strictNullChecks) return; - helper(condExpr, body); - while (isBinaryExpression(condExpr) && condExpr.operatorToken.kind === 56 /* BarBarToken */) { - condExpr = condExpr.left; - helper(condExpr, body); + bothHelper(condExpr, body); + function bothHelper(condExpr2, body2) { + condExpr2 = skipParentheses(condExpr2); + helper(condExpr2, body2); + while (isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 60 /* QuestionQuestionToken */)) { + condExpr2 = skipParentheses(condExpr2.left); + helper(condExpr2, body2); + } } function helper(condExpr2, body2) { - const location = isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 55 /* AmpersandAmpersandToken */) ? condExpr2.right : condExpr2; - if (isModuleExportsAccessExpression(location)) + const location = isLogicalOrCoalescingBinaryExpression(condExpr2) ? skipParentheses(condExpr2.right) : condExpr2; + if (isModuleExportsAccessExpression(location)) { return; + } + if (isLogicalOrCoalescingBinaryExpression(location)) { + bothHelper(location, body2); + return; + } const type = location === condExpr2 ? condType : checkTruthinessExpression(location); - const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion3(location.expression); + const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion(location.expression); if (!(getTypeFacts(type) & 4194304 /* Truthy */) || isPropertyExpressionCast) return; const callSignatures = getSignaturesOfType(type, 0 /* Call */); @@ -79527,7 +80283,7 @@ function createTypeChecker(host) { if (callSignatures.length === 0 && !isPromise) { return; } - const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : isBinaryExpression(location) && isIdentifier(location.right) ? location.right : void 0; + const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : void 0; const testedSymbol = testedNode && getSymbolAtLocation(testedNode); if (!testedSymbol && !isPromise) { return; @@ -80485,14 +81241,10 @@ function createTypeChecker(host) { if (catchClause) { if (catchClause.variableDeclaration) { const declaration = catchClause.variableDeclaration; - const typeNode = getEffectiveTypeAnnotationNode(getRootDeclaration(declaration)); + checkVariableLikeDeclaration(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration); if (typeNode) { - const type = getTypeForVariableLikeDeclaration( - declaration, - /*includeOptionality*/ - false, - 0 /* Normal */ - ); + const type = getTypeFromTypeNode(typeNode); if (type && !(type.flags & 3 /* AnyOrUnknown */)) { grammarErrorOnFirstToken(typeNode, Diagnostics.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified); } @@ -80747,9 +81499,65 @@ function createTypeChecker(host) { } return true; } + function getFirstTransformableStaticClassElement(node) { + var _a2; + const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < 99 /* ESNext */ && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + ); + const willTransformPrivateElementsOrClassStaticBlocks = languageVersion <= 9 /* ES2022 */; + const willTransformInitializers = !useDefineForClassFields || languageVersion < 9 /* ES2022 */; + if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) { + for (const member of node.members) { + if (willTransformStaticElementsOfDecoratedClass && classElementOrClassElementParameterIsDecorated( + /*useLegacyDecorators*/ + false, + member, + node + )) { + return (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else if (willTransformPrivateElementsOrClassStaticBlocks) { + if (isClassStaticBlockDeclaration(member)) { + return member; + } else if (isStatic(member)) { + if (isPrivateIdentifierClassElementDeclaration(member) || willTransformInitializers && isInitializedProperty(member)) { + return member; + } + } + } + } + } + } + function checkClassExpressionExternalHelpers(node) { + var _a2; + if (node.name) + return; + const parent2 = walkUpOuterExpressions(node); + if (!isNamedEvaluationSource(parent2)) + return; + const willTransformESDecorators = !legacyDecorators && languageVersion < 99 /* ESNext */; + let location; + if (willTransformESDecorators && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + )) { + location = (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else { + location = getFirstTransformableStaticClassElement(node); + } + if (location) { + checkExternalEmitHelpers(location, 8388608 /* SetFunctionName */); + if ((isPropertyAssignment(parent2) || isPropertyDeclaration(parent2) || isBindingElement(parent2)) && isComputedPropertyName(parent2.name)) { + checkExternalEmitHelpers(location, 16777216 /* PropKey */); + } + } + } function checkClassExpression(node) { checkClassLikeDeclaration(node); checkNodeDeferred(node); + checkClassExpressionExternalHelpers(node); return getTypeOfSymbol(getSymbolOfDeclaration(node)); } function checkClassExpressionDeferred(node) { @@ -80758,7 +81566,7 @@ function createTypeChecker(host) { } function checkClassDeclaration(node) { const firstDecorator = find(node.modifiers, isDecorator); - if (firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { + if (legacyDecorators && firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { grammarErrorOnNode(firstDecorator, Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator); } if (!node.name && !hasSyntacticModifier(node, 1024 /* Default */)) { @@ -81232,7 +82040,7 @@ function createTypeChecker(host) { typeName2 ); errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); - diagnostics.add(createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(typeNode), typeNode, errorInfo)); } } } @@ -81288,7 +82096,7 @@ function createTypeChecker(host) { return !containsUndefinedType(flowType); } function checkInterfaceDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node)) + if (!checkGrammarModifiers(node)) checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); addLazyDiagnostic(() => { @@ -81322,7 +82130,7 @@ function createTypeChecker(host) { }); } function checkTypeAliasDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); @@ -81518,7 +82326,7 @@ function createTypeChecker(host) { addLazyDiagnostic(() => checkEnumDeclarationWorker(node)); } function checkEnumDeclarationWorker(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkCollisionsForDeclarationName(node, node.name); checkExportsOnMergedDeclarations(node); node.members.forEach(checkEnumMember); @@ -81593,6 +82401,7 @@ function createTypeChecker(host) { } addLazyDiagnostic(checkModuleDeclarationDiagnostics); function checkModuleDeclarationDiagnostics() { + var _a2, _b; const isGlobalAugmentation = isGlobalScopeAugmentation(node); const inAmbientContext = node.flags & 16777216 /* Ambient */; if (isGlobalAugmentation && !inAmbientContext) { @@ -81603,7 +82412,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, contextErrorMessage)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node)) { + if (!checkGrammarModifiers(node)) { if (!inAmbientContext && node.name.kind === 10 /* StringLiteral */) { grammarErrorOnNode(node.name, Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -81613,18 +82422,29 @@ function createTypeChecker(host) { } checkExportsOnMergedDeclarations(node); const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && symbol.declarations && symbol.declarations.length > 1 && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { - const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); - if (firstNonAmbientClassOrFunc) { - if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); - } else if (node.pos < firstNonAmbientClassOrFunc.pos) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { + if (getIsolatedModules(compilerOptions) && !getSourceFileOfNode(node).externalModuleIndicator) { + error(node.name, Diagnostics.Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement, isolatedModulesLikeFlagName); + } + if (((_a2 = symbol.declarations) == null ? void 0 : _a2.length) > 1) { + const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + if (firstNonAmbientClassOrFunc) { + if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); + } else if (node.pos < firstNonAmbientClassOrFunc.pos) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + } + } + const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); + if (mergedClass && inSameLexicalScope(node, mergedClass)) { + getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; } } - const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); - if (mergedClass && inSameLexicalScope(node, mergedClass)) { - getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; + if (compilerOptions.verbatimModuleSyntax && node.parent.kind === 308 /* SourceFile */) { + const exportModifier = (_b = node.modifiers) == null ? void 0 : _b.find((m) => m.kind === 93 /* ExportKeyword */); + if (exportModifier) { + error(exportModifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } } if (isAmbientExternalModule) { @@ -81780,7 +82600,7 @@ function createTypeChecker(host) { const message = node.kind === 278 /* ExportSpecifier */ ? Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); } - if (compilerOptions.isolatedModules && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { + if (getIsolatedModules(compilerOptions) && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { const typeOnlyAlias = getTypeOnlyAliasDeclaration(symbol); const isType = !(targetFlags & 111551 /* Value */); if (isType || typeOnlyAlias) { @@ -81788,9 +82608,9 @@ function createTypeChecker(host) { case 270 /* ImportClause */: case 273 /* ImportSpecifier */: case 268 /* ImportEqualsDeclaration */: { - if (compilerOptions.preserveValueImports) { + if (compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) { Debug.assertIsDefined(node.name, "An ImportClause with a symbol should have a name"); - const message = isType ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; + const message = compilerOptions.verbatimModuleSyntax && isInternalModuleImportEqualsDeclaration(node) ? Diagnostics.An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled : isType ? compilerOptions.verbatimModuleSyntax ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : compilerOptions.verbatimModuleSyntax ? Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; const name = idText(node.kind === 273 /* ImportSpecifier */ ? node.propertyName || node.name : node.name); addTypeOnlyDeclarationRelatedInfo( error(node, message, name), @@ -81799,24 +82619,23 @@ function createTypeChecker(host) { ); } if (isType && node.kind === 268 /* ImportEqualsDeclaration */ && hasEffectiveModifier(node, 1 /* Export */)) { - error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled, isolatedModulesLikeFlagName); } break; } case 278 /* ExportSpecifier */: { - if (getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { - const message = isType ? Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled; + if (compilerOptions.verbatimModuleSyntax || getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { const name = idText(node.propertyName || node.name); - addTypeOnlyDeclarationRelatedInfo( - error(node, message, name), - isType ? void 0 : typeOnlyAlias, - name - ); - return; + const diagnostic = isType ? error(node, Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type, isolatedModulesLikeFlagName) : error(node, Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled, name, isolatedModulesLikeFlagName); + addTypeOnlyDeclarationRelatedInfo(diagnostic, isType ? void 0 : typeOnlyAlias, name); + break; } } } } + if (compilerOptions.verbatimModuleSyntax && node.kind !== 268 /* ImportEqualsDeclaration */ && !isInJSFile(node) && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } if (isImportSpecifier(node)) { const targetSymbol = checkDeprecatedAliasedSymbol(symbol, node); @@ -81896,7 +82715,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -81926,7 +82745,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); if (isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (hasSyntacticModifier(node, 1 /* Export */)) { @@ -81962,7 +82781,7 @@ function createTypeChecker(host) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasSyntacticModifiers(node)) { + if (!checkGrammarModifiers(node) && hasSyntacticModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_declaration_cannot_have_modifiers); } if (node.moduleSpecifier && node.exportClause && isNamedExports(node.exportClause) && length(node.exportClause.elements) && languageVersion === 0 /* ES3 */) { @@ -81999,12 +82818,8 @@ function createTypeChecker(host) { } function checkGrammarExportDeclaration(node) { var _a2; - if (node.isTypeOnly) { - if (((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { - return checkGrammarNamedImportsOrExports(node.exportClause); - } else { - return grammarErrorOnNode(node, Diagnostics.Only_named_exports_may_use_export_type); - } + if (node.isTypeOnly && ((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { + return checkGrammarNamedImportsOrExports(node.exportClause); } return false; } @@ -82102,13 +82917,14 @@ function createTypeChecker(host) { } return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_assignment_cannot_have_modifiers); } const typeAnnotationNode = getEffectiveTypeAnnotationNode(node); if (typeAnnotationNode) { checkTypeAssignableTo(checkExpressionCached(node.expression), getTypeFromTypeNode(typeAnnotationNode), node.expression); } + const isIllegalExportDefaultInCJS = !node.isExportEquals && compilerOptions.verbatimModuleSyntax && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */); if (node.expression.kind === 79 /* Identifier */) { const id = node.expression; const sym = resolveEntityName( @@ -82122,16 +82938,28 @@ function createTypeChecker(host) { ); if (sym) { markAliasReferenced(sym, id); - const target = sym.flags & 2097152 /* Alias */ ? resolveAlias(sym) : sym; - if (getAllSymbolFlags(target) & 111551 /* Value */) { - checkExpressionCached(node.expression); + if (getAllSymbolFlags(sym) & 111551 /* Value */) { + checkExpressionCached(id); + if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax && getTypeOnlyAliasDeclaration(sym, 111551 /* Value */)) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration : Diagnostics.An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration, + idText(id) + ); + } + } else if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type : Diagnostics.An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type, + idText(id) + ); } } else { - checkExpressionCached(node.expression); + checkExpressionCached(id); } if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases( - node.expression, + id, /*setVisibility*/ true ); @@ -82139,6 +82967,9 @@ function createTypeChecker(host) { } else { checkExpressionCached(node.expression); } + if (isIllegalExportDefaultInCJS) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } checkExternalModuleExports(container); if (node.flags & 16777216 /* Ambient */ && !isEntityNameExpression(node.expression)) { grammarErrorOnNode(node.expression, Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context); @@ -82328,6 +83159,8 @@ function createTypeChecker(host) { case 338 /* JSDocProtectedTag */: case 337 /* JSDocPrivateTag */: return checkJSDocAccessibilityModifiers(node); + case 353 /* JSDocSatisfiesTag */: + return checkJSDocSatisfiesTag(node); case 196 /* IndexedAccessType */: return checkIndexedAccessType(node); case 197 /* MappedType */: @@ -83343,8 +84176,9 @@ function createTypeChecker(host) { } } function getReferencedImportDeclaration(nodeIn) { - if (nodeIn.generatedImportReference) { - return nodeIn.generatedImportReference; + const specifier = getIdentifierGeneratedImportReference(nodeIn); + if (specifier) { + return specifier; } const node = getParseTreeNode(nodeIn, isIdentifier); if (node) { @@ -83426,6 +84260,7 @@ function createTypeChecker(host) { return false; } function isValueAliasDeclaration(node) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); switch (node.kind) { case 268 /* ImportEqualsDeclaration */: return isAliasResolvedToValue(getSymbolOfDeclaration(node)); @@ -83466,6 +84301,7 @@ function createTypeChecker(host) { return isConstEnumSymbol(s) || !!s.constEnumOnlyModule; } function isReferencedAliasDeclaration(node, checkChildren) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); if (isAliasSymbolDeclaration2(node)) { const symbol = getSymbolOfDeclaration(node); const links = symbol && getSymbolLinks(symbol); @@ -84182,23 +85018,27 @@ function createTypeChecker(host) { const helpersModule = resolveHelpersModule(sourceFile, location); if (helpersModule !== unknownSymbol) { const uncheckedHelpers = helpers & ~requestedExternalEmitHelpers; - for (let helper = 1 /* FirstEmitHelper */; helper <= 4194304 /* LastEmitHelper */; helper <<= 1) { + for (let helper = 1 /* FirstEmitHelper */; helper <= 16777216 /* LastEmitHelper */; helper <<= 1) { if (uncheckedHelpers & helper) { - const name = getHelperName(helper); - const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); - if (!symbol) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); - } else if (helper & 524288 /* ClassPrivateFieldGet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); - } - } else if (helper & 1048576 /* ClassPrivateFieldSet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); - } - } else if (helper & 1024 /* SpreadArray */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + for (const name of getHelperNames(helper)) { + if (requestedExternalEmitHelperNames.has(name)) + continue; + requestedExternalEmitHelperNames.add(name); + const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); + if (!symbol) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); + } else if (helper & 524288 /* ClassPrivateFieldGet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); + } + } else if (helper & 1048576 /* ClassPrivateFieldSet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); + } + } else if (helper & 1024 /* SpreadArray */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + } } } } @@ -84208,54 +85048,58 @@ function createTypeChecker(host) { } } } - function getHelperName(helper) { + function getHelperNames(helper) { switch (helper) { case 1 /* Extends */: - return "__extends"; + return ["__extends"]; case 2 /* Assign */: - return "__assign"; + return ["__assign"]; case 4 /* Rest */: - return "__rest"; + return ["__rest"]; case 8 /* Decorate */: - return "__decorate"; + return legacyDecorators ? ["__decorate"] : ["__esDecorate", "__runInitializers"]; case 16 /* Metadata */: - return "__metadata"; + return ["__metadata"]; case 32 /* Param */: - return "__param"; + return ["__param"]; case 64 /* Awaiter */: - return "__awaiter"; + return ["__awaiter"]; case 128 /* Generator */: - return "__generator"; + return ["__generator"]; case 256 /* Values */: - return "__values"; + return ["__values"]; case 512 /* Read */: - return "__read"; + return ["__read"]; case 1024 /* SpreadArray */: - return "__spreadArray"; + return ["__spreadArray"]; case 2048 /* Await */: - return "__await"; + return ["__await"]; case 4096 /* AsyncGenerator */: - return "__asyncGenerator"; + return ["__asyncGenerator"]; case 8192 /* AsyncDelegator */: - return "__asyncDelegator"; + return ["__asyncDelegator"]; case 16384 /* AsyncValues */: - return "__asyncValues"; + return ["__asyncValues"]; case 32768 /* ExportStar */: - return "__exportStar"; + return ["__exportStar"]; case 65536 /* ImportStar */: - return "__importStar"; + return ["__importStar"]; case 131072 /* ImportDefault */: - return "__importDefault"; + return ["__importDefault"]; case 262144 /* MakeTemplateObject */: - return "__makeTemplateObject"; + return ["__makeTemplateObject"]; case 524288 /* ClassPrivateFieldGet */: - return "__classPrivateFieldGet"; + return ["__classPrivateFieldGet"]; case 1048576 /* ClassPrivateFieldSet */: - return "__classPrivateFieldSet"; + return ["__classPrivateFieldSet"]; case 2097152 /* ClassPrivateFieldIn */: - return "__classPrivateFieldIn"; + return ["__classPrivateFieldIn"]; case 4194304 /* CreateBinding */: - return "__createBinding"; + return ["__createBinding"]; + case 8388608 /* SetFunctionName */: + return ["__setFunctionName"]; + case 16777216 /* PropKey */: + return ["__propKey"]; default: return Debug.fail("Unrecognized helper"); } @@ -84266,257 +85110,264 @@ function createTypeChecker(host) { } return externalHelpersModule; } - function checkGrammarDecoratorsAndModifiers(node) { - return checkGrammarDecorators(node) || checkGrammarModifiers(node); - } - function checkGrammarDecorators(node) { - if (canHaveIllegalDecorators(node) && some(node.illegalDecorators)) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - if (!canHaveDecorators(node) || !hasDecorators(node)) { - return false; - } - if (!nodeCanBeDecorated(node, node.parent, node.parent.parent)) { - if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { - return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); - } else { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - } else if (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */) { - const accessors = getAllAccessorDeclarations(node.parent.members, node); - if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); - } - } - return false; - } function checkGrammarModifiers(node) { - const quickResult = reportObviousModifierErrors(node); + const quickResult = reportObviousDecoratorErrors(node) || reportObviousModifierErrors(node); if (quickResult !== void 0) { return quickResult; } - let lastStatic, lastDeclare, lastAsync, lastOverride; + if (isParameter(node) && parameterIsThisKeyword(node)) { + return grammarErrorOnFirstToken(node, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); + } + let lastStatic, lastDeclare, lastAsync, lastOverride, firstDecorator; let flags = 0 /* None */; + let sawExportBeforeDecorators = false; for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - if (modifier.kind !== 146 /* ReadonlyKeyword */) { - if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); + if (isDecorator(modifier)) { + if (!nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { + if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } else { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); + } + } else if (legacyDecorators && (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */)) { + const accessors = getAllAccessorDeclarations(node.parent.members, node); + if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } } - if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); + if (flags & ~(1025 /* ExportDefault */ | 131072 /* Decorator */)) { + return grammarErrorOnNode(modifier, Diagnostics.Decorators_are_not_valid_here); } - } - if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { - if (node.kind === 165 /* TypeParameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); + flags |= 131072 /* Decorator */; + if (flags & 1 /* Export */) { + sawExportBeforeDecorators = true; } - } - switch (modifier.kind) { - case 85 /* ConstKeyword */: - if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { - return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); + firstDecorator != null ? firstDecorator : firstDecorator = modifier; + } else { + if (modifier.kind !== 146 /* ReadonlyKeyword */) { + if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); } - const parent2 = node.parent; - if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); + if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); } - break; - case 161 /* OverrideKeyword */: - if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); + } + if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { + if (node.kind === 165 /* TypeParameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); } - flags |= 16384 /* Override */; - lastOverride = modifier; - break; - case 123 /* PublicKeyword */: - case 122 /* ProtectedKeyword */: - case 121 /* PrivateKeyword */: - const text = visibilityToString(modifierToFlag(modifier.kind)); - if (flags & 28 /* AccessibilityModifier */) { - return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); - } else if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); - } else if (flags & 256 /* Abstract */) { - if (modifier.kind === 121 /* PrivateKeyword */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); - } else { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + switch (modifier.kind) { + case 85 /* ConstKeyword */: + if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { + return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); } - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); - } - flags |= modifierToFlag(modifier.kind); - break; - case 124 /* StaticKeyword */: - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); - } - flags |= 32 /* Static */; - lastStatic = modifier; - break; - case 127 /* AccessorKeyword */: - if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); - } else if (node.kind !== 169 /* PropertyDeclaration */) { - return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); - } - flags |= 128 /* Accessor */; - break; - case 146 /* ReadonlyKeyword */: - if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); - } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); - } - flags |= 64 /* Readonly */; - break; - case 93 /* ExportKeyword */: - if (flags & 1 /* Export */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); - } else if (isClassLike(node.parent)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); - } - flags |= 1 /* Export */; - break; - case 88 /* DefaultKeyword */: - const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { - return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); - } else if (!(flags & 1 /* Export */)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); - } - flags |= 1024 /* Default */; - break; - case 136 /* DeclareKeyword */: - if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); - } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); - } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { - return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); - } - flags |= 2 /* Ambient */; - lastDeclare = modifier; - break; - case 126 /* AbstractKeyword */: - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); - } - if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { - if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { - return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); - } - if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { - return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); - } - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } - if (flags & 8 /* Private */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); - } - if (flags & 512 /* Async */ && lastAsync) { - return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + const parent2 = node.parent; + if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); } + break; + case 161 /* OverrideKeyword */: if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); } + flags |= 16384 /* Override */; + lastOverride = modifier; + break; + case 123 /* PublicKeyword */: + case 122 /* ProtectedKeyword */: + case 121 /* PrivateKeyword */: + const text = visibilityToString(modifierToFlag(modifier.kind)); + if (flags & 28 /* AccessibilityModifier */) { + return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); + } else if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); + } else if (flags & 256 /* Abstract */) { + if (modifier.kind === 121 /* PrivateKeyword */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); + } else { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + } + flags |= modifierToFlag(modifier.kind); + break; + case 124 /* StaticKeyword */: + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); + } + flags |= 32 /* Static */; + lastStatic = modifier; + break; + case 127 /* AccessorKeyword */: if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); + } else if (node.kind !== 169 /* PropertyDeclaration */) { + return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); } - } - if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); - } - flags |= 256 /* Abstract */; - break; - case 132 /* AsyncKeyword */: - if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); - } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); - } - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); - } - flags |= 512 /* Async */; - lastAsync = modifier; - break; - case 101 /* InKeyword */: - case 145 /* OutKeyword */: - const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; - const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; - if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); - } - if (flags & inOutFlag) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); - } - if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); - } - flags |= inOutFlag; - break; + flags |= 128 /* Accessor */; + break; + case 146 /* ReadonlyKeyword */: + if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); + } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); + } + flags |= 64 /* Readonly */; + break; + case 93 /* ExportKeyword */: + if (compilerOptions.verbatimModuleSyntax && !(node.flags & 16777216 /* Ambient */) && node.kind !== 262 /* TypeAliasDeclaration */ && node.kind !== 261 /* InterfaceDeclaration */ && // ModuleDeclaration needs to be checked that it is uninstantiated later + node.kind !== 264 /* ModuleDeclaration */ && node.parent.kind === 308 /* SourceFile */ && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + return grammarErrorOnNode(modifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } + if (flags & 1 /* Export */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); + } else if (isClassLike(node.parent)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + } + flags |= 1 /* Export */; + break; + case 88 /* DefaultKeyword */: + const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { + return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + } else if (!(flags & 1 /* Export */)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); + } else if (sawExportBeforeDecorators) { + return grammarErrorOnNode(firstDecorator, Diagnostics.Decorators_are_not_valid_here); + } + flags |= 1024 /* Default */; + break; + case 136 /* DeclareKeyword */: + if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); + } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { + return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); + } + flags |= 2 /* Ambient */; + lastDeclare = modifier; + break; + case 126 /* AbstractKeyword */: + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); + } + if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { + if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { + return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); + } + if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { + return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); + } + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } + if (flags & 8 /* Private */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); + } + if (flags & 512 /* Async */ && lastAsync) { + return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + } + if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + } + } + if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); + } + flags |= 256 /* Abstract */; + break; + case 132 /* AsyncKeyword */: + if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); + } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); + } + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + flags |= 512 /* Async */; + lastAsync = modifier; + break; + case 101 /* InKeyword */: + case 145 /* OutKeyword */: + const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; + const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; + if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); + } + if (flags & inOutFlag) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); + } + if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); + } + flags |= inOutFlag; + break; + } } } if (node.kind === 173 /* Constructor */) { @@ -84543,9 +85394,16 @@ function createTypeChecker(host) { return false; } function reportObviousModifierErrors(node) { - return !node.modifiers ? false : shouldReportBadModifier(node) ? grammarErrorOnFirstToken(node, Diagnostics.Modifiers_cannot_appear_here) : void 0; + if (!node.modifiers) + return false; + const modifier = findFirstIllegalModifier(node); + return modifier && grammarErrorOnFirstToken(modifier, Diagnostics.Modifiers_cannot_appear_here); } - function shouldReportBadModifier(node) { + function findFirstModifierExcept(node, allowedModifier) { + const modifier = find(node.modifiers, isModifier); + return modifier && modifier.kind !== allowedModifier ? modifier : void 0; + } + function findFirstIllegalModifier(node) { switch (node.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: @@ -84564,43 +85422,42 @@ function createTypeChecker(host) { case 216 /* ArrowFunction */: case 166 /* Parameter */: case 165 /* TypeParameter */: - return false; + return void 0; case 172 /* ClassStaticBlockDeclaration */: case 299 /* PropertyAssignment */: case 300 /* ShorthandPropertyAssignment */: case 267 /* NamespaceExportDeclaration */: case 181 /* FunctionType */: case 279 /* MissingDeclaration */: - return true; + return find(node.modifiers, isModifier); default: if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return false; + return void 0; } switch (node.kind) { case 259 /* FunctionDeclaration */: - return nodeHasAnyModifiersExcept(node, 132 /* AsyncKeyword */); + return findFirstModifierExcept(node, 132 /* AsyncKeyword */); case 260 /* ClassDeclaration */: case 182 /* ConstructorType */: - return nodeHasAnyModifiersExcept(node, 126 /* AbstractKeyword */); + return findFirstModifierExcept(node, 126 /* AbstractKeyword */); case 228 /* ClassExpression */: case 261 /* InterfaceDeclaration */: case 240 /* VariableStatement */: case 262 /* TypeAliasDeclaration */: - return true; + return find(node.modifiers, isModifier); case 263 /* EnumDeclaration */: - return nodeHasAnyModifiersExcept(node, 85 /* ConstKeyword */); + return findFirstModifierExcept(node, 85 /* ConstKeyword */); default: Debug.assertNever(node); } } } - function nodeHasAnyModifiersExcept(node, allowedModifier) { - for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - return modifier.kind !== allowedModifier; - } - return false; + function reportObviousDecoratorErrors(node) { + const decorator = findFirstIllegalDecorator(node); + return decorator && grammarErrorOnFirstToken(decorator, Diagnostics.Decorators_are_not_valid_here); + } + function findFirstIllegalDecorator(node) { + return canHaveIllegalDecorators(node) ? find(node.modifiers, isDecorator) : void 0; } function checkGrammarAsyncModifier(node, asyncModifier) { switch (node.kind) { @@ -84679,7 +85536,7 @@ function createTypeChecker(host) { } function checkGrammarFunctionLikeDeclaration(node) { const file = getSourceFileOfNode(node); - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); + return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); } function checkGrammarClassLikeDeclaration(node) { const file = getSourceFileOfNode(node); @@ -84737,7 +85594,7 @@ function createTypeChecker(host) { return false; } function checkGrammarIndexSignature(node) { - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarIndexSignatureParameters(node); + return checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -84777,7 +85634,7 @@ function createTypeChecker(host) { function checkGrammarClassDeclarationHeritageClauses(node) { let seenExtendsClause = false; let seenImplementsClause = false; - if (!checkGrammarDecoratorsAndModifiers(node) && node.heritageClauses) { + if (!checkGrammarModifiers(node) && node.heritageClauses) { for (const heritageClause of node.heritageClauses) { if (heritageClause.token === 94 /* ExtendsKeyword */) { if (seenExtendsClause) { @@ -84878,7 +85735,9 @@ function createTypeChecker(host) { } } else if (canHaveIllegalModifiers(prop) && prop.modifiers) { for (const mod of prop.modifiers) { - grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + if (isModifier(mod)) { + grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + } } } let currentKind; @@ -85322,7 +86181,7 @@ function createTypeChecker(host) { } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 79 /* Identifier */) { - if (name.originalKeywordKind === 119 /* LetKeyword */) { + if (name.escapedText === "let") { return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { @@ -85610,6 +86469,9 @@ function createTypeChecker(host) { }); } function checkGrammarImportCallExpression(node) { + if (compilerOptions.verbatimModuleSyntax && moduleKind === 1 /* CommonJS */) { + return grammarErrorOnNode(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } if (moduleKind === 5 /* ES2015 */) { return grammarErrorOnNode(node, Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext); } @@ -85885,13 +86747,10 @@ var SymbolTrackerImpl = class { // src/compiler/visitorPublic.ts function visitNode(node, visitor, test, lift) { - if (node === void 0 || visitor === void 0) { + if (node === void 0) { return node; } const visited = visitor(node); - if (visited === node) { - return node; - } let visitedNode; if (visited === void 0) { return void 0; @@ -85904,7 +86763,7 @@ function visitNode(node, visitor, test, lift) { return visitedNode; } function visitNodes2(nodes, visitor, test, start2, count) { - if (nodes === void 0 || visitor === void 0) { + if (nodes === void 0) { return nodes; } const length2 = nodes.length; @@ -85953,25 +86812,30 @@ function visitArrayWorker(nodes, visitor, test, start2, count) { } for (let i = 0; i < count; i++) { const node = nodes[i + start2]; - const visited = node !== void 0 ? visitor(node) : void 0; + const visited = node !== void 0 ? visitor ? visitor(node) : node : void 0; if (updated !== void 0 || visited === void 0 || visited !== node) { if (updated === void 0) { updated = nodes.slice(0, i); + Debug.assertEachNode(updated, test); } if (visited) { if (isArray(visited)) { for (const visitedNode of visited) { - void Debug.assertNode(visitedNode, test); + Debug.assertNode(visitedNode, test); updated.push(visitedNode); } } else { - void Debug.assertNode(visited, test); + Debug.assertNode(visited, test); updated.push(visited); } } } } - return updated != null ? updated : nodes; + if (updated) { + return updated; + } + Debug.assertEachNode(nodes, test); + return nodes; } function visitLexicalEnvironment(statements, visitor, context, start2, ensureUseStrict, nodesVisitor = visitNodes2) { context.startLexicalEnvironment(); @@ -85985,7 +86849,7 @@ function visitParameterList(nodes, visitor, context, nodesVisitor = visitNodes2) context.startLexicalEnvironment(); if (nodes) { context.setLexicalEnvironmentFlags(1 /* InParameters */, true); - updated = nodesVisitor(nodes, visitor, isParameterDeclaration); + updated = nodesVisitor(nodes, visitor, isParameter); if (context.getLexicalEnvironmentFlags() & 2 /* VariablesHoistedInParameters */ && getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } @@ -86107,6 +86971,7 @@ function visitFunctionBody(node, visitor, context, nodeVisitor = visitNode) { function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { context.startBlockScope(); const updated = nodeVisitor(body, visitor, isStatement, context.factory.liftToBlock); + Debug.assert(updated); const declarations = context.endBlockScope(); if (some(declarations)) { if (isBlock(updated)) { @@ -86118,6 +86983,18 @@ function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { } return updated; } +function visitCommaListElements(elements, visitor, discardVisitor = visitor) { + if (discardVisitor === visitor || elements.length <= 1) { + return visitNodes2(elements, visitor, isExpression); + } + let i = 0; + const length2 = elements.length; + return visitNodes2(elements, (node) => { + const discarded = i < length2 - 1; + i++; + return discarded ? discardVisitor(node) : visitor(node); + }, isExpression); +} function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, tokenVisitor, nodeVisitor = visitNode) { if (node === void 0) { return void 0; @@ -86126,23 +87003,17 @@ function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, toke return fn === void 0 ? node : fn(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor); } var visitEachChildTable = { - [79 /* Identifier */]: function visitEachChildOfIdentifier(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { - return context.factory.updateIdentifier( - node, - nodesVisitor(node.typeArguments, visitor, isTypeNodeOrTypeParameterDeclaration) - ); - }, [163 /* QualifiedName */]: function visitEachChildOfQualifiedName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateQualifiedName( node, - nodeVisitor(node.left, visitor, isEntityName), - nodeVisitor(node.right, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.left, visitor, isEntityName)), + Debug.checkDefined(nodeVisitor(node.right, visitor, isIdentifier)) ); }, [164 /* ComputedPropertyName */]: function visitEachChildOfComputedPropertyName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateComputedPropertyName( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Signature elements @@ -86150,7 +87021,7 @@ var visitEachChildTable = { return context.factory.updateTypeParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.constraint, visitor, isTypeNode), nodeVisitor(node.default, visitor, isTypeNode) ); @@ -86159,9 +87030,9 @@ var visitEachChildTable = { return context.factory.updateParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -86169,7 +87040,7 @@ var visitEachChildTable = { [167 /* Decorator */]: function visitEachChildOfDecorator(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDecorator( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Type elements @@ -86177,19 +87048,19 @@ var visitEachChildTable = { return context.factory.updatePropertySignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode) ); }, [169 /* PropertyDeclaration */]: function visitEachChildOfPropertyDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { - var _a2; + var _a2, _b; return context.factory.updatePropertyDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), // QuestionToken and ExclamationToken are mutually exclusive in PropertyDeclaration - nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken), + tokenVisitor ? nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken) : (_b = node.questionToken) != null ? _b : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -86198,10 +87069,10 @@ var visitEachChildTable = { return context.factory.updateMethodSignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -86209,9 +87080,9 @@ var visitEachChildTable = { return context.factory.updateMethodDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), @@ -86221,7 +87092,7 @@ var visitEachChildTable = { [173 /* Constructor */]: function visitEachChildOfConstructorDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConstructorDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -86230,7 +87101,7 @@ var visitEachChildTable = { return context.factory.updateGetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), visitFunctionBody(node.body, visitor, context, nodeVisitor) @@ -86240,7 +87111,7 @@ var visitEachChildTable = { return context.factory.updateSetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -86257,7 +87128,7 @@ var visitEachChildTable = { return context.factory.updateCallSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -86265,16 +87136,16 @@ var visitEachChildTable = { return context.factory.updateConstructSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, [178 /* IndexSignature */]: function visitEachChildOfIndexSignatureDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexSignature( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.modifiers, visitor, isModifierLike), + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, // Types @@ -86282,14 +87153,14 @@ var visitEachChildTable = { return context.factory.updateTypePredicateNode( node, nodeVisitor(node.assertsModifier, visitor, isAssertsKeyword), - nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode), + Debug.checkDefined(nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode)), nodeVisitor(node.type, visitor, isTypeNode) ); }, [180 /* TypeReference */]: function visitEachChildOfTypeReferenceNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeReferenceNode( node, - nodeVisitor(node.typeName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.typeName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -86297,8 +87168,8 @@ var visitEachChildTable = { return context.factory.updateFunctionTypeNode( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [182 /* ConstructorType */]: function visitEachChildOfConstructorTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -86306,14 +87177,14 @@ var visitEachChildTable = { node, nodesVisitor(node.modifiers, visitor, isModifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [183 /* TypeQuery */]: function visitEachChildOfTypeQueryNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeQueryNode( node, - nodeVisitor(node.exprName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.exprName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -86326,7 +87197,7 @@ var visitEachChildTable = { [185 /* ArrayType */]: function visitEachChildOfArrayTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateArrayTypeNode( node, - nodeVisitor(node.elementType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.elementType, visitor, isTypeNode)) ); }, [186 /* TupleType */]: function visitEachChildOfTupleTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -86338,13 +87209,13 @@ var visitEachChildTable = { [187 /* OptionalType */]: function visitEachChildOfOptionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateOptionalTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [188 /* RestType */]: function visitEachChildOfRestTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateRestTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [189 /* UnionType */]: function visitEachChildOfUnionTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -86362,22 +87233,22 @@ var visitEachChildTable = { [191 /* ConditionalType */]: function visitEachChildOfConditionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConditionalTypeNode( node, - nodeVisitor(node.checkType, visitor, isTypeNode), - nodeVisitor(node.extendsType, visitor, isTypeNode), - nodeVisitor(node.trueType, visitor, isTypeNode), - nodeVisitor(node.falseType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.checkType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.extendsType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.trueType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.falseType, visitor, isTypeNode)) ); }, [192 /* InferType */]: function visitEachChildOfInferTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInferTypeNode( node, - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration) + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)) ); }, [202 /* ImportType */]: function visitEachChildOfImportTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeNode( node, - nodeVisitor(node.argument, visitor, isTypeNode), + Debug.checkDefined(nodeVisitor(node.argument, visitor, isTypeNode)), nodeVisitor(node.assertions, visitor, isImportTypeAssertionContainer), nodeVisitor(node.qualifier, visitor, isEntityName), nodesVisitor(node.typeArguments, visitor, isTypeNode), @@ -86387,45 +87258,45 @@ var visitEachChildTable = { [298 /* ImportTypeAssertionContainer */]: function visitEachChildOfImportTypeAssertionContainer(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeAssertionContainer( node, - nodeVisitor(node.assertClause, visitor, isAssertClause), + Debug.checkDefined(nodeVisitor(node.assertClause, visitor, isAssertClause)), node.multiLine ); }, [199 /* NamedTupleMember */]: function visitEachChildOfNamedTupleMember(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateNamedTupleMember( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.type, visitor, isTypeNode) + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [193 /* ParenthesizedType */]: function visitEachChildOfParenthesizedType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedType( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [195 /* TypeOperator */]: function visitEachChildOfTypeOperatorNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOperatorNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [196 /* IndexedAccessType */]: function visitEachChildOfIndexedAccessType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexedAccessTypeNode( node, - nodeVisitor(node.objectType, visitor, isTypeNode), - nodeVisitor(node.indexType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.objectType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.indexType, visitor, isTypeNode)) ); }, [197 /* MappedType */]: function visitEachChildOfMappedType(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateMappedTypeNode( node, - nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken), - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration), + tokenVisitor ? nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken) : node.readonlyToken, + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)), nodeVisitor(node.nameType, visitor, isTypeNode), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodesVisitor(node.members, visitor, isTypeElement) ); @@ -86433,21 +87304,21 @@ var visitEachChildTable = { [198 /* LiteralType */]: function visitEachChildOfLiteralTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLiteralTypeNode( node, - nodeVisitor(node.literal, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.literal, visitor, isLiteralTypeLiteral)) ); }, [200 /* TemplateLiteralType */]: function visitEachChildOfTemplateLiteralType(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralType( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateLiteralTypeSpan) ); }, [201 /* TemplateLiteralTypeSpan */]: function visitEachChildOfTemplateLiteralTypeSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralTypeSpan( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Binding patterns @@ -86466,9 +87337,9 @@ var visitEachChildTable = { [205 /* BindingElement */]: function visitEachChildOfBindingElement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBindingElement( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, nodeVisitor(node.propertyName, visitor, isPropertyName), - nodeVisitor(node.name, visitor, isBindingName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -86488,37 +87359,37 @@ var visitEachChildTable = { [208 /* PropertyAccessExpression */]: function visitEachChildOfPropertyAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isPropertyAccessChain(node) ? context.factory.updatePropertyAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ) : context.factory.updatePropertyAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ); }, [209 /* ElementAccessExpression */]: function visitEachChildOfElementAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isElementAccessChain(node) ? context.factory.updateElementAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ) : context.factory.updateElementAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ); }, [210 /* CallExpression */]: function visitEachChildOfCallExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return isCallChain(node) ? context.factory.updateCallChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ) : context.factory.updateCallExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -86526,7 +87397,7 @@ var visitEachChildTable = { [211 /* NewExpression */]: function visitEachChildOfNewExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNewExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -86534,29 +87405,29 @@ var visitEachChildTable = { [212 /* TaggedTemplateExpression */]: function visitEachChildOfTaggedTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTaggedTemplateExpression( node, - nodeVisitor(node.tag, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.tag, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.template, visitor, isTemplateLiteral) + Debug.checkDefined(nodeVisitor(node.template, visitor, isTemplateLiteral)) ); }, [213 /* TypeAssertionExpression */]: function visitEachChildOfTypeAssertionExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAssertion( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [214 /* ParenthesizedExpression */]: function visitEachChildOfParenthesizedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [215 /* FunctionExpression */]: function visitEachChildOfFunctionExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateFunctionExpression( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -86571,82 +87442,82 @@ var visitEachChildTable = { nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken)) : node.equalsGreaterThanToken, visitFunctionBody(node.body, visitor, context, nodeVisitor) ); }, [217 /* DeleteExpression */]: function visitEachChildOfDeleteExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDeleteExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [218 /* TypeOfExpression */]: function visitEachChildOfTypeOfExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOfExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [219 /* VoidExpression */]: function visitEachChildOfVoidExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVoidExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [220 /* AwaitExpression */]: function visitEachChildOfAwaitExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAwaitExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [221 /* PrefixUnaryExpression */]: function visitEachChildOfPrefixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePrefixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [222 /* PostfixUnaryExpression */]: function visitEachChildOfPostfixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePostfixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [223 /* BinaryExpression */]: function visitEachChildOfBinaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBinaryExpression( node, - nodeVisitor(node.left, visitor, isExpression), - nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken), - nodeVisitor(node.right, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.left, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken)) : node.operatorToken, + Debug.checkDefined(nodeVisitor(node.right, visitor, isExpression)) ); }, [224 /* ConditionalExpression */]: function visitEachChildOfConditionalExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateConditionalExpression( node, - nodeVisitor(node.condition, visitor, isExpression), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.whenTrue, visitor, isExpression), - nodeVisitor(node.colonToken, tokenVisitor, isColonToken), - nodeVisitor(node.whenFalse, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.condition, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken)) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.whenTrue, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.colonToken, tokenVisitor, isColonToken)) : node.colonToken, + Debug.checkDefined(nodeVisitor(node.whenFalse, visitor, isExpression)) ); }, [225 /* TemplateExpression */]: function visitEachChildOfTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateExpression( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateSpan) ); }, [226 /* YieldExpression */]: function visitEachChildOfYieldExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateYieldExpression( node, - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.expression, visitor, isExpression) ); }, [227 /* SpreadElement */]: function visitEachChildOfSpreadElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadElement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [228 /* ClassExpression */]: function visitEachChildOfClassExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -86662,45 +87533,45 @@ var visitEachChildTable = { [230 /* ExpressionWithTypeArguments */]: function visitEachChildOfExpressionWithTypeArguments(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionWithTypeArguments( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, [231 /* AsExpression */]: function visitEachChildOfAsExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAsExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [235 /* SatisfiesExpression */]: function visitEachChildOfSatisfiesExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSatisfiesExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [232 /* NonNullExpression */]: function visitEachChildOfNonNullExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return isOptionalChain(node) ? context.factory.updateNonNullChain( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ) : context.factory.updateNonNullExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [233 /* MetaProperty */]: function visitEachChildOfMetaProperty(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateMetaProperty( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Misc [236 /* TemplateSpan */]: function visitEachChildOfTemplateSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateSpan( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Element @@ -86713,21 +87584,21 @@ var visitEachChildTable = { [240 /* VariableStatement */]: function visitEachChildOfVariableStatement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVariableStatement( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.declarationList, visitor, isVariableDeclarationList) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.declarationList, visitor, isVariableDeclarationList)) ); }, [241 /* ExpressionStatement */]: function visitEachChildOfExpressionStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [242 /* IfStatement */]: function visitEachChildOfIfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIfStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock)), nodeVisitor(node.elseStatement, visitor, isStatement, context.factory.liftToBlock) ); }, @@ -86735,13 +87606,13 @@ var visitEachChildTable = { return context.factory.updateDoStatement( node, visitIterationBody(node.statement, visitor, context, nodeVisitor), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [244 /* WhileStatement */]: function visitEachChildOfWhileStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWhileStatement( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -86757,17 +87628,17 @@ var visitEachChildTable = { [246 /* ForInStatement */]: function visitEachChildOfForInStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateForInStatement( node, - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, [247 /* ForOfStatement */]: function visitEachChildOfForOfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateForOfStatement( node, - nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword), - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + tokenVisitor ? nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword) : node.awaitModifier, + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -86792,34 +87663,34 @@ var visitEachChildTable = { [251 /* WithStatement */]: function visitEachChildOfWithStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWithStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [252 /* SwitchStatement */]: function visitEachChildOfSwitchStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSwitchStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.caseBlock, visitor, isCaseBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.caseBlock, visitor, isCaseBlock)) ); }, [253 /* LabeledStatement */]: function visitEachChildOfLabeledStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLabeledStatement( node, - nodeVisitor(node.label, visitor, isIdentifier), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.label, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [254 /* ThrowStatement */]: function visitEachChildOfThrowStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateThrowStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [255 /* TryStatement */]: function visitEachChildOfTryStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTryStatement( node, - nodeVisitor(node.tryBlock, visitor, isBlock), + Debug.checkDefined(nodeVisitor(node.tryBlock, visitor, isBlock)), nodeVisitor(node.catchClause, visitor, isCatchClause), nodeVisitor(node.finallyBlock, visitor, isBlock) ); @@ -86827,8 +87698,8 @@ var visitEachChildTable = { [257 /* VariableDeclaration */]: function visitEachChildOfVariableDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateVariableDeclaration( node, - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken) : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -86843,7 +87714,7 @@ var visitEachChildTable = { return context.factory.updateFunctionDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -86864,8 +87735,8 @@ var visitEachChildTable = { [261 /* InterfaceDeclaration */]: function visitEachChildOfInterfaceDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInterfaceDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), nodesVisitor(node.heritageClauses, visitor, isHeritageClause), nodesVisitor(node.members, visitor, isTypeElement) @@ -86874,25 +87745,25 @@ var visitEachChildTable = { [262 /* TypeAliasDeclaration */]: function visitEachChildOfTypeAliasDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAliasDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [263 /* EnumDeclaration */]: function visitEachChildOfEnumDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.members, visitor, isEnumMember) ); }, [264 /* ModuleDeclaration */]: function visitEachChildOfModuleDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateModuleDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isModuleName), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isModuleName)), nodeVisitor(node.body, visitor, isModuleBody) ); }, @@ -86911,24 +87782,24 @@ var visitEachChildTable = { [267 /* NamespaceExportDeclaration */]: function visitEachChildOfNamespaceExportDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExportDeclaration( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [268 /* ImportEqualsDeclaration */]: function visitEachChildOfImportEqualsDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportEqualsDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.moduleReference, visitor, isModuleReference) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.moduleReference, visitor, isModuleReference)) ); }, [269 /* ImportDeclaration */]: function visitEachChildOfImportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), nodeVisitor(node.importClause, visitor, isImportClause), - nodeVisitor(node.moduleSpecifier, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.moduleSpecifier, visitor, isExpression)), nodeVisitor(node.assertClause, visitor, isAssertClause) ); }, @@ -86942,8 +87813,8 @@ var visitEachChildTable = { [297 /* AssertEntry */]: function visitEachChildOfAssertEntry(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAssertEntry( node, - nodeVisitor(node.name, visitor, isAssertionKey), - nodeVisitor(node.value, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isAssertionKey)), + Debug.checkDefined(nodeVisitor(node.value, visitor, isExpression)) ); }, [270 /* ImportClause */]: function visitEachChildOfImportClause(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -86957,13 +87828,13 @@ var visitEachChildTable = { [271 /* NamespaceImport */]: function visitEachChildOfNamespaceImport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceImport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [277 /* NamespaceExport */]: function visitEachChildOfNamespaceExport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [272 /* NamedImports */]: function visitEachChildOfNamedImports(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -86977,20 +87848,20 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [274 /* ExportAssignment */]: function visitEachChildOfExportAssignment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportAssignment( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.expression, visitor, isExpression) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [275 /* ExportDeclaration */]: function visitEachChildOfExportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, nodeVisitor(node.exportClause, visitor, isNamedExportBindings), nodeVisitor(node.moduleSpecifier, visitor, isExpression), @@ -87008,59 +87879,59 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Module references [280 /* ExternalModuleReference */]: function visitEachChildOfExternalModuleReference(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExternalModuleReference( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // JSX [281 /* JsxElement */]: function visitEachChildOfJsxElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxElement( node, - nodeVisitor(node.openingElement, visitor, isJsxOpeningElement), + Debug.checkDefined(nodeVisitor(node.openingElement, visitor, isJsxOpeningElement)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingElement, visitor, isJsxClosingElement) + Debug.checkDefined(nodeVisitor(node.closingElement, visitor, isJsxClosingElement)) ); }, [282 /* JsxSelfClosingElement */]: function visitEachChildOfJsxSelfClosingElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSelfClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [283 /* JsxOpeningElement */]: function visitEachChildOfJsxOpeningElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxOpeningElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [284 /* JsxClosingElement */]: function visitEachChildOfJsxClosingElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression) + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)) ); }, [285 /* JsxFragment */]: function visitEachChildOfJsxFragment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxFragment( node, - nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment), + Debug.checkDefined(nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment) + Debug.checkDefined(nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment)) ); }, [288 /* JsxAttribute */]: function visitEachChildOfJsxAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxAttribute( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.initializer, visitor, isStringLiteralOrJsxExpression) ); }, @@ -87073,20 +87944,20 @@ var visitEachChildTable = { [290 /* JsxSpreadAttribute */]: function visitEachChildOfJsxSpreadAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSpreadAttribute( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [291 /* JsxExpression */]: function visitEachChildOfJsxExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Clauses [292 /* CaseClause */]: function visitEachChildOfCaseClause(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateCaseClause( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.statements, visitor, isStatement) ); }, @@ -87106,35 +87977,35 @@ var visitEachChildTable = { return context.factory.updateCatchClause( node, nodeVisitor(node.variableDeclaration, visitor, isVariableDeclaration), - nodeVisitor(node.block, visitor, isBlock) + Debug.checkDefined(nodeVisitor(node.block, visitor, isBlock)) ); }, // Property assignments [299 /* PropertyAssignment */]: function visitEachChildOfPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePropertyAssignment( node, - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.initializer, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isExpression)) ); }, [300 /* ShorthandPropertyAssignment */]: function visitEachChildOfShorthandPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateShorthandPropertyAssignment( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.objectAssignmentInitializer, visitor, isExpression) ); }, [301 /* SpreadAssignment */]: function visitEachChildOfSpreadAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadAssignment( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Enum [302 /* EnumMember */]: function visitEachChildOfEnumMember(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumMember( node, - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -87146,13 +88017,13 @@ var visitEachChildTable = { ); }, // Transformation nodes - [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [356 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [357 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -88032,10 +88903,13 @@ function getAllDecoratorsOfClass(node) { parameters }; } -function getAllDecoratorsOfClassElement(member, parent2) { +function getAllDecoratorsOfClassElement(member, parent2, useLegacyDecorators) { switch (member.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: + if (!useLegacyDecorators) { + return getAllDecoratorsOfMethod(member); + } return getAllDecoratorsOfAccessors(member, parent2); case 171 /* MethodDeclaration */: return getAllDecoratorsOfMethod(member); @@ -88084,6 +88958,34 @@ function getAllDecoratorsOfProperty(property) { } return { decorators }; } +function walkUpLexicalEnvironments(env, cb) { + while (env) { + const result = cb(env); + if (result !== void 0) + return result; + env = env.previous; + } +} +function newPrivateEnvironment(data) { + return { data }; +} +function getPrivateIdentifier(privateEnv, name) { + var _a2, _b; + return isGeneratedPrivateIdentifier(name) ? (_a2 = privateEnv == null ? void 0 : privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(getNodeForGeneratedName(name)) : (_b = privateEnv == null ? void 0 : privateEnv.identifiers) == null ? void 0 : _b.get(name.escapedText); +} +function setPrivateIdentifier(privateEnv, name, entry) { + var _a2, _b; + if (isGeneratedPrivateIdentifier(name)) { + (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); + privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), entry); + } else { + (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); + privateEnv.identifiers.set(name.escapedText, entry); + } +} +function accessPrivateIdentifier(env, name) { + return walkUpLexicalEnvironments(env, (env2) => getPrivateIdentifier(env2.privateEnv, name)); +} // src/compiler/transformers/destructuring.ts var FlattenLevel = /* @__PURE__ */ ((FlattenLevel2) => { @@ -88101,7 +89003,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu location = node = value; value = node.right; } else { - return visitNode(value, visitor, isExpression); + return Debug.checkDefined(visitNode(value, visitor, isExpression)); } } } @@ -88120,6 +89022,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu }; if (value) { value = visitNode(value, visitor, isExpression); + Debug.assert(value); if (isIdentifier(value) && bindingOrAssignmentElementAssignsToName(node, value.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node)) { value = ensureIdentifier( flattenContext, @@ -88161,7 +89064,7 @@ function flattenDestructuringAssignment(node, visitor, context, level, needsValu function emitBindingOrAssignment(target, value2, location2, original) { Debug.assertNode(target, createAssignmentCallback ? isIdentifier : isExpression); const expression = createAssignmentCallback ? createAssignmentCallback(target, value2, location2) : setTextRange( - context.factory.createAssignment(visitNode(target, visitor, isExpression), value2), + context.factory.createAssignment(Debug.checkDefined(visitNode(target, visitor, isExpression)), value2), location2 ); expression.original = original; @@ -88218,7 +89121,7 @@ function flattenDestructuringBinding(node, visitor, context, level, rval, hoistT if (initializer && (isIdentifier(initializer) && bindingOrAssignmentElementAssignsToName(node, initializer.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node))) { initializer = ensureIdentifier( flattenContext, - visitNode(initializer, flattenContext.visitor), + Debug.checkDefined(visitNode(initializer, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, initializer @@ -88339,7 +89242,7 @@ function flattenObjectBindingOrAssignmentPattern(flattenContext, parent2, patter if (!getRestIndicatorOfBindingOrAssignmentElement(element)) { const propertyName = getPropertyNameOfBindingOrAssignmentElement(element); if (flattenContext.level >= 1 /* ObjectRest */ && !(element.transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !(getTargetOfBindingOrAssignmentElement(element).transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !isComputedPropertyName(propertyName)) { - bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor)); + bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor, isBindingOrAssignmentElement)); } else { if (bindingElements) { flattenContext.emitBindingOrAssignment(flattenContext.createObjectBindingOrAssignmentPattern(bindingElements), value, location, pattern); @@ -88477,7 +89380,7 @@ function createDestructuringPropertyAccess(flattenContext, value, propertyName) if (isComputedPropertyName(propertyName)) { const argumentExpression = ensureIdentifier( flattenContext, - visitNode(propertyName.expression, flattenContext.visitor), + Debug.checkDefined(visitNode(propertyName.expression, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, /*location*/ @@ -88520,6 +89423,7 @@ function makeArrayBindingPattern(factory2, elements) { return factory2.createArrayBindingPattern(elements); } function makeArrayAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isArrayBindingOrAssignmentElement); return factory2.createArrayLiteralExpression(map(elements, factory2.converters.convertToArrayAssignmentElement)); } function makeObjectBindingPattern(factory2, elements) { @@ -88527,6 +89431,7 @@ function makeObjectBindingPattern(factory2, elements) { return factory2.createObjectBindingPattern(elements); } function makeObjectAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isObjectBindingOrAssignmentElement); return factory2.createObjectLiteralExpression(map(elements, factory2.converters.convertToObjectAssignmentElement)); } function makeBindingElement(factory2, name) { @@ -88550,6 +89455,7 @@ var ProcessLevel = /* @__PURE__ */ ((ProcessLevel2) => { })(ProcessLevel || {}); function processTaggedTemplateExpression(context, node, visitor, currentSourceFile, recordTaggedTemplateString, level) { const tag = visitNode(node.tag, visitor, isExpression); + Debug.assert(tag); const templateArguments = [void 0]; const cookedStrings = []; const rawStrings = []; @@ -88566,7 +89472,7 @@ function processTaggedTemplateExpression(context, node, visitor, currentSourceFi for (const templateSpan of template.templateSpans) { cookedStrings.push(createTemplateCooked(templateSpan.literal)); rawStrings.push(getRawLiteral(templateSpan.literal, currentSourceFile)); - templateArguments.push(visitNode(templateSpan.expression, visitor, isExpression)); + templateArguments.push(Debug.checkDefined(visitNode(templateSpan.expression, visitor, isExpression))); } } const helperCall = context.getEmitHelperFactory().createTemplateObjectHelper( @@ -88626,6 +89532,7 @@ function transformTypeScript(context) { const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const typeSerializer = compilerOptions.emitDecoratorMetadata ? createRuntimeTypeSerializer(context) : void 0; const previousOnEmitNode = context.onEmitNode; const previousOnSubstituteNode = context.onSubstituteNode; @@ -88800,6 +89707,12 @@ function transformTypeScript(context) { return Debug.failBadSyntaxKind(node); } } + function decoratorElidingVisitor(node) { + return isDecorator(node) ? void 0 : visitor(node); + } + function modifierElidingVisitor(node) { + return isModifier(node) ? void 0 : visitor(node); + } function modifierVisitor(node) { if (isDecorator(node)) return void 0; @@ -88939,19 +89852,25 @@ function transformTypeScript(context) { function visitObjectLiteralExpression(node) { return factory2.updateObjectLiteralExpression( node, - visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElement) + visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElementLike) ); } - function getClassFacts(node, staticProperties) { + function getClassFacts(node) { let facts = 0 /* None */; - if (some(staticProperties)) + if (some(getProperties( + node, + /*requireInitialized*/ + true, + /*isStatic*/ + true + ))) facts |= 1 /* HasStaticInitializedProperties */; const extendsClauseElement = getEffectiveBaseTypeNode(node); if (extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */) facts |= 64 /* IsDerivedClass */; - if (classOrConstructorParameterIsDecorated(node)) - facts |= 2 /* HasConstructorDecorators */; - if (childIsDecorated(node)) + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) + facts |= 2 /* HasClassOrConstructorParameterDecorators */; + if (childIsDecorated(legacyDecorators, node)) facts |= 4 /* HasMemberDecorators */; if (isExportOfNamespace(node)) facts |= 8 /* IsExportOfNamespace */; @@ -88959,8 +89878,6 @@ function transformTypeScript(context) { facts |= 32 /* IsDefaultExternalExport */; else if (isNamedExternalModuleExport(node)) facts |= 16 /* IsNamedExternalExport */; - if (languageVersion <= 1 /* ES5 */ && facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */) - facts |= 128 /* UseImmediatelyInvokedFunctionExpression */; return facts; } function hasTypeScriptClassSyntax(node) { @@ -88970,7 +89887,10 @@ function transformTypeScript(context) { return hasDecorators(node) || some(node.typeParameters) || some(node.heritageClauses, hasTypeScriptClassSyntax) || some(node.members, hasTypeScriptClassSyntax); } function visitClassDeclaration(node) { - if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !(currentNamespace && hasSyntacticModifier(node, 1 /* Export */))) { + var _a2; + const facts = getClassFacts(node); + const promoteToIIFE = languageVersion <= 1 /* ES5 */ && !!(facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */); + if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !classOrConstructorParameterIsDecorated(legacyDecorators, node) && !isExportOfNamespace(node)) { return factory2.updateClassDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), @@ -88981,24 +89901,19 @@ function transformTypeScript(context) { visitNodes2(node.members, getClassElementVisitor(node), isClassElement) ); } - const staticProperties = getProperties( - node, - /*requireInitializer*/ - true, - /*isStatic*/ - true - ); - const facts = getClassFacts(node, staticProperties); - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + if (promoteToIIFE) { context.startLexicalEnvironment(); } - const name = node.name || (facts & 5 /* NeedsName */ ? factory2.getGeneratedNameForNode(node) : void 0); - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); - const modifiers = !(facts & 128 /* UseImmediatelyInvokedFunctionExpression */) ? visitNodes2(node.modifiers, modifierVisitor, isModifier) : elideNodes(factory2, node.modifiers); - const classStatement = factory2.updateClassDeclaration( + const moveModifiers = promoteToIIFE || facts & 8 /* IsExportOfNamespace */ || facts & 2 /* HasClassOrConstructorParameterDecorators */ && legacyDecorators || facts & 1 /* HasStaticInitializedProperties */; + let modifiers = moveModifiers ? visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, visitor, isModifierLike); + if (facts & 2 /* HasClassOrConstructorParameterDecorators */) { + modifiers = injectClassTypeMetadata(modifiers, node); + } + const needsName = moveModifiers && !node.name || facts & 4 /* HasMemberDecorators */ || facts & 1 /* HasStaticInitializedProperties */; + const name = needsName ? (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node) : node.name; + const classDeclaration = factory2.updateClassDeclaration( node, - concatenate(decorators, modifiers), + modifiers, name, /*typeParameters*/ void 0, @@ -89009,24 +89924,25 @@ function transformTypeScript(context) { if (facts & 1 /* HasStaticInitializedProperties */) { emitFlags |= 64 /* NoTrailingSourceMap */; } - setEmitFlags(classStatement, emitFlags); - let statements = [classStatement]; - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + setEmitFlags(classDeclaration, emitFlags); + let statement; + if (promoteToIIFE) { + const statements = [classDeclaration]; const closingBraceLocation = createTokenRange(skipTrivia(currentSourceFile.text, node.members.end), 19 /* CloseBraceToken */); const localName = factory2.getInternalName(node); const outer = factory2.createPartiallyEmittedExpression(localName); setTextRangeEnd(outer, closingBraceLocation.end); setEmitFlags(outer, 3072 /* NoComments */); - const statement = factory2.createReturnStatement(outer); - setTextRangePos(statement, closingBraceLocation.pos); - setEmitFlags(statement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); - statements.push(statement); + const returnStatement = factory2.createReturnStatement(outer); + setTextRangePos(returnStatement, closingBraceLocation.pos); + setEmitFlags(returnStatement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); + statements.push(returnStatement); insertStatementsAfterStandardPrologue(statements, context.endLexicalEnvironment()); const iife = factory2.createImmediatelyInvokedArrowFunction(statements); - setEmitFlags(iife, 67108864 /* TypeScriptClassWrapper */); + setInternalEmitFlags(iife, 1 /* TypeScriptClassWrapper */); + const modifiers2 = facts & 16 /* IsNamedExternalExport */ ? factory2.createModifiersFromModifierFlags(1 /* Export */) : void 0; const varStatement = factory2.createVariableStatement( - /*modifiers*/ - void 0, + modifiers2, factory2.createVariableDeclarationList([ factory2.createVariableDeclaration( factory2.getLocalName( @@ -89042,114 +89958,133 @@ function transformTypeScript(context) { void 0, iife ) - ]) + ], 1 /* Let */) ); setOriginalNode(varStatement, node); setCommentRange(varStatement, node); setSourceMapRange(varStatement, moveRangePastDecorators(node)); startOnNewLine(varStatement); - statements = [varStatement]; + statement = varStatement; + } else { + statement = classDeclaration; } - if (facts & 8 /* IsExportOfNamespace */) { - addExportMemberAssignment(statements, node); - } else if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */ || facts & 2 /* HasConstructorDecorators */) { + if (moveModifiers) { + if (facts & 8 /* IsExportOfNamespace */) { + return demarcateMultiStatementExport( + statement, + createExportMemberAssignmentStatement(node) + ); + } if (facts & 32 /* IsDefaultExternalExport */) { - statements.push(factory2.createExportDefault(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); - } else if (facts & 16 /* IsNamedExternalExport */) { - statements.push(factory2.createExternalModuleExport(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); + return demarcateMultiStatementExport( + statement, + factory2.createExportDefault(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); + } + if (facts & 16 /* IsNamedExternalExport */ && !promoteToIIFE) { + return demarcateMultiStatementExport( + statement, + factory2.createExternalModuleExport(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); } } - if (statements.length > 1) { - statements.push(factory2.createEndOfDeclarationMarker(node)); - setEmitFlags(classStatement, getEmitFlags(classStatement) | 8388608 /* HasEndOfDeclarationMarker */); - } - return singleOrMany(statements); + return statement; + } + function demarcateMultiStatementExport(declarationStatement, exportStatement) { + addEmitFlags(declarationStatement, 8388608 /* HasEndOfDeclarationMarker */); + return [ + declarationStatement, + exportStatement, + factory2.createEndOfDeclarationMarker(declarationStatement) + ]; } function visitClassExpression(node) { - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); + let modifiers = visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike); + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) { + modifiers = injectClassTypeMetadata(modifiers, node); + } return factory2.updateClassExpression( node, - decorators, + modifiers, node.name, /*typeParameters*/ void 0, visitNodes2(node.heritageClauses, visitor, isHeritageClause), - isClassLikeDeclarationWithTypeScriptSyntax(node) ? transformClassMembers(node) : visitNodes2(node.members, getClassElementVisitor(node), isClassElement) + transformClassMembers(node) ); } function transformClassMembers(node) { - const members = []; + const members = visitNodes2(node.members, getClassElementVisitor(node), isClassElement); + let newMembers; const constructor = getFirstConstructorWithBody(node); const parametersWithPropertyAssignments = constructor && filter(constructor.parameters, (p) => isParameterPropertyDeclaration(p, constructor)); if (parametersWithPropertyAssignments) { for (const parameter of parametersWithPropertyAssignments) { - if (isIdentifier(parameter.name)) { - members.push(setOriginalNode(factory2.createPropertyDeclaration( - /*modifiers*/ - void 0, - parameter.name, - /*questionOrExclamationToken*/ - void 0, - /*type*/ - void 0, - /*initializer*/ - void 0 - ), parameter)); - } + const parameterProperty = factory2.createPropertyDeclaration( + /*modifiers*/ + void 0, + parameter.name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + /*initializer*/ + void 0 + ); + setOriginalNode(parameterProperty, parameter); + newMembers = append(newMembers, parameterProperty); } } - addRange(members, visitNodes2(node.members, getClassElementVisitor(node), isClassElement)); - return setTextRange( - factory2.createNodeArray(members), - /*location*/ - node.members - ); - } - function transformAllDecoratorsOfDeclaration(node, container, allDecorators) { - var _a2, _b, _c, _d; - if (!allDecorators) { - return void 0; + if (newMembers) { + newMembers = addRange(newMembers, members); + return setTextRange( + factory2.createNodeArray(newMembers), + /*location*/ + node.members + ); } - const decorators = visitArray(allDecorators.decorators, visitor, isDecorator); - const parameterDecorators = flatMap(allDecorators.parameters, transformDecoratorsOfParameter); - const metadataDecorators = some(decorators) || some(parameterDecorators) ? getTypeMetadata(node, container) : void 0; - const result = factory2.createNodeArray(concatenate(concatenate(decorators, parameterDecorators), metadataDecorators)); - const pos = (_b = (_a2 = firstOrUndefined(allDecorators.decorators)) == null ? void 0 : _a2.pos) != null ? _b : -1; - const end = (_d = (_c = lastOrUndefined(allDecorators.decorators)) == null ? void 0 : _c.end) != null ? _d : -1; - setTextRangePosEnd(result, pos, end); - return result; + return members; } - function transformDecoratorsOfParameter(parameterDecorators, parameterOffset) { - if (parameterDecorators) { - const decorators = []; - for (const parameterDecorator of parameterDecorators) { - const expression = visitNode(parameterDecorator.expression, visitor, isExpression); - const helper = emitHelpers().createParamHelper(expression, parameterOffset); - setTextRange(helper, parameterDecorator.expression); - setEmitFlags(helper, 3072 /* NoComments */); - const decorator = factory2.createDecorator(helper); - setSourceMapRange(decorator, parameterDecorator.expression); - setCommentRange(decorator, parameterDecorator.expression); - setEmitFlags(decorator, 3072 /* NoComments */); - decorators.push(decorator); + function injectClassTypeMetadata(modifiers, node) { + const metadata = getTypeMetadata(node, node); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, takeWhile(modifiers, isExportOrDefaultModifier)); + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(skipWhile(modifiers, isExportOrDefaultModifier), isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); + } + return modifiers; + } + function injectClassElementTypeMetadata(modifiers, node, container) { + if (isClassLike(container) && classElementOrClassElementParameterIsDecorated(legacyDecorators, node, container)) { + const metadata = getTypeMetadata(node, container); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(modifiers, isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); } - return decorators; } + return modifiers; } function getTypeMetadata(node, container) { + if (!legacyDecorators) + return void 0; return USE_NEW_TYPE_METADATA_FORMAT ? getNewTypeMetadata(node, container) : getOldTypeMetadata(node, container); } function getOldTypeMetadata(node, container) { @@ -89258,8 +90193,9 @@ function transformTypeScript(context) { } function visitPropertyNameOfClassElement(member) { const name = member.name; - if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member))) { + if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member) && legacyDecorators)) { const expression = visitNode(name.expression, visitor, isExpression); + Debug.assert(expression); const innerExpression = skipPartiallyEmittedExpressions(expression); if (!isSimpleInlineableExpression(innerExpression)) { const generatedName = factory2.getGeneratedNameForNode(name); @@ -89267,7 +90203,7 @@ function transformTypeScript(context) { return factory2.updateComputedPropertyName(name, factory2.createAssignment(generatedName, expression)); } } - return visitNode(name, visitor, isPropertyName); + return Debug.checkDefined(visitNode(name, visitor, isPropertyName)); } function visitHeritageClause(node) { if (node.token === 117 /* ImplementsKeyword */) { @@ -89278,7 +90214,7 @@ function transformTypeScript(context) { function visitExpressionWithTypeArguments(node) { return factory2.updateExpressionWithTypeArguments( node, - visitNode(node.expression, visitor, isLeftHandSideExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression)), /*typeArguments*/ void 0 ); @@ -89288,16 +90224,16 @@ function transformTypeScript(context) { } function visitPropertyDeclaration(node, parent2) { const isAmbient = node.flags & 16777216 /* Ambient */ || hasSyntacticModifier(node, 256 /* Abstract */); - if (isAmbient && !hasDecorators(node)) { + if (isAmbient && !(legacyDecorators && hasDecorators(node))) { return void 0; } - const allDecorators = getAllDecoratorsOfClassElement(node, parent2); - const decorators = transformAllDecoratorsOfDeclaration(node, parent2, allDecorators); + let modifiers = isClassLike(parent2) ? !isAmbient ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); if (isAmbient) { return factory2.updatePropertyDeclaration( node, - concatenate(decorators, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), - visitNode(node.name, visitor, isPropertyName), + concatenate(modifiers, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -89308,13 +90244,13 @@ function transformTypeScript(context) { } return factory2.updatePropertyDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), /*questionOrExclamationToken*/ void 0, /*type*/ void 0, - visitNode(node.initializer, visitor) + visitNode(node.initializer, visitor, isExpression) ); } function visitConstructor(node) { @@ -89415,11 +90351,11 @@ function transformTypeScript(context) { if (!shouldEmitFunctionLikeDeclaration(node)) { return void 0; } - const allDecorators = isClassLike(parent2) ? getAllDecoratorsOfClassElement(node, parent2) : void 0; - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, allDecorators) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateMethodDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, node.asteriskToken, visitPropertyNameOfClassElement(node), /*questionToken*/ @@ -89442,10 +90378,11 @@ function transformTypeScript(context) { if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateGetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), /*type*/ @@ -89460,10 +90397,11 @@ function transformTypeScript(context) { if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateSetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), visitFunctionBody(node.body, visitor, context) || factory2.createBlock([]) @@ -89530,10 +90468,9 @@ function transformTypeScript(context) { } const updated = factory2.updateParameterDeclaration( node, - elideNodes(factory2, node.modifiers), - // preserve positions, if available + visitNodes2(node.modifiers, (node2) => isDecorator(node2) ? visitor(node2) : void 0, isModifierLike), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -89582,7 +90519,7 @@ function transformTypeScript(context) { return setTextRange( factory2.createAssignment( getNamespaceMemberNameWithSourceMapsAndWithoutComments(name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), /*location*/ node @@ -89592,7 +90529,7 @@ function transformTypeScript(context) { function visitVariableDeclaration(node) { const updated = factory2.updateVariableDeclaration( node, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*exclamationToken*/ void 0, /*type*/ @@ -89608,26 +90545,30 @@ function transformTypeScript(context) { const innerExpression = skipOuterExpressions(node.expression, ~6 /* Assertions */); if (isAssertionExpression(innerExpression)) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } return visitEachChild(node, visitor, context); } function visitAssertionExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitNonNullExpression(node) { const expression = visitNode(node.expression, visitor, isLeftHandSideExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitSatisfiesExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitCallExpression(node) { return factory2.updateCallExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -89636,7 +90577,7 @@ function transformTypeScript(context) { function visitNewExpression(node) { return factory2.updateNewExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -89645,28 +90586,28 @@ function transformTypeScript(context) { function visitTaggedTemplateExpression(node) { return factory2.updateTaggedTemplateExpression( node, - visitNode(node.tag, visitor, isExpression), + Debug.checkDefined(visitNode(node.tag, visitor, isExpression)), /*typeArguments*/ void 0, - visitNode(node.template, visitor, isExpression) + Debug.checkDefined(visitNode(node.template, visitor, isTemplateLiteral)) ); } function visitJsxSelfClosingElement(node) { return factory2.updateJsxSelfClosingElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function visitJsxJsxOpeningElement(node) { return factory2.updateJsxOpeningElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function shouldEmitEnumDeclaration(node) { @@ -89812,7 +90753,7 @@ function transformTypeScript(context) { } else { enableSubstitutionForNonQualifiedEnumMembers(); if (member.initializer) { - return visitNode(member.initializer, visitor, isExpression); + return Debug.checkDefined(visitNode(member.initializer, visitor, isExpression)); } else { return factory2.createVoidZero(); } @@ -90054,7 +90995,7 @@ function transformTypeScript(context) { if (node.kind === 271 /* NamespaceImport */) { return shouldEmitAliasDeclaration(node) ? node : void 0; } else { - const allowEmpty = compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const elements = visitNodes2(node.elements, visitImportSpecifier, isImportSpecifier); return allowEmpty || some(elements) ? factory2.updateNamedImports(node, elements) : void 0; } @@ -90063,7 +91004,7 @@ function transformTypeScript(context) { return !node.isTypeOnly && shouldEmitAliasDeclaration(node) ? node : void 0; } function visitExportAssignment(node) { - return resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; + return compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; } function visitExportDeclaration(node) { if (node.isTypeOnly) { @@ -90072,7 +91013,7 @@ function transformTypeScript(context) { if (!node.exportClause || isNamespaceExport(node.exportClause)) { return node; } - const allowEmpty = !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const exportClause = visitNode( node.exportClause, (bindings) => visitNamedExportBindings(bindings, allowEmpty), @@ -90093,13 +91034,13 @@ function transformTypeScript(context) { return allowEmpty || some(elements) ? factory2.updateNamedExports(node, elements) : void 0; } function visitNamespaceExports(node) { - return factory2.updateNamespaceExport(node, visitNode(node.name, visitor, isIdentifier)); + return factory2.updateNamespaceExport(node, Debug.checkDefined(visitNode(node.name, visitor, isIdentifier))); } function visitNamedExportBindings(node, allowEmpty) { return isNamespaceExport(node) ? visitNamespaceExports(node) : visitNamedExports(node, allowEmpty); } function visitExportSpecifier(node) { - return !node.isTypeOnly && resolver.isValueAliasDeclaration(node) ? node : void 0; + return !node.isTypeOnly && (compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node)) ? node : void 0; } function shouldEmitImportEqualsDeclaration(node) { return shouldEmitAliasDeclaration(node) || !isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node); @@ -90159,7 +91100,7 @@ function transformTypeScript(context) { ); } else { return setOriginalNode( - createNamespaceExport2( + createNamespaceExport( node.name, moduleReference, node @@ -90180,7 +91121,7 @@ function transformTypeScript(context) { function isDefaultExternalModuleExport(node) { return isExternalModuleExport(node) && hasSyntacticModifier(node, 1024 /* Default */); } - function addExportMemberAssignment(statements, node) { + function createExportMemberAssignmentStatement(node) { const expression = factory2.createAssignment( factory2.getExternalModuleOrNamespaceExportName( currentNamespaceContainerName, @@ -90195,9 +91136,12 @@ function transformTypeScript(context) { setSourceMapRange(expression, createRange(node.name ? node.name.pos : node.pos, node.end)); const statement = factory2.createExpressionStatement(expression); setSourceMapRange(statement, createRange(-1, node.end)); - statements.push(statement); + return statement; } - function createNamespaceExport2(exportName, exportValue, location) { + function addExportMemberAssignment(statements, node) { + statements.push(createExportMemberAssignmentStatement(node)); + } + function createNamespaceExport(exportName, exportValue, location) { return setTextRange( factory2.createExpressionStatement( factory2.createAssignment( @@ -90358,20 +91302,15 @@ function transformTypeScript(context) { return isPropertyAccessExpression(node) || isElementAccessExpression(node) ? resolver.getConstantValue(node) : void 0; } function shouldEmitAliasDeclaration(node) { - return isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); + return compilerOptions.verbatimModuleSyntax || isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); } } // src/compiler/transformers/classFields.ts -var PrivateIdentifierKind2 = /* @__PURE__ */ ((PrivateIdentifierKind3) => { - PrivateIdentifierKind3["Field"] = "f"; - PrivateIdentifierKind3["Method"] = "m"; - PrivateIdentifierKind3["Accessor"] = "a"; - return PrivateIdentifierKind3; -})(PrivateIdentifierKind2 || {}); function transformClassFields(context) { const { factory: factory2, + getEmitHelperFactory: emitHelpers, hoistVariableDeclaration, endLexicalEnvironment, startLexicalEnvironment, @@ -90382,6 +91321,7 @@ function transformClassFields(context) { const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const shouldTransformInitializersUsingSet = !useDefineForClassFields; const shouldTransformInitializersUsingDefine = useDefineForClassFields && languageVersion < 9 /* ES2022 */; const shouldTransformInitializers = shouldTransformInitializersUsingSet || shouldTransformInitializersUsingDefine; @@ -90394,42 +91334,69 @@ function transformClassFields(context) { context.onSubstituteNode = onSubstituteNode; const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; + let shouldTransformPrivateStaticElementsInFile = false; let enabledSubstitutions; let classAliases; let pendingExpressions; let pendingStatements; - const classLexicalEnvironmentStack = []; - const classLexicalEnvironmentMap = /* @__PURE__ */ new Map(); - let currentClassLexicalEnvironment; + let lexicalEnvironment; + const lexicalEnvironmentMap = /* @__PURE__ */ new Map(); let currentClassContainer; - let currentComputedPropertyNameClassLexicalEnvironment; let currentStaticPropertyDeclarationOrStaticBlock; + let shouldSubstituteThisWithClassThis = false; + let previousShouldSubstituteThisWithClassThis = false; return chainBundle(context, transformSourceFile); function transformSourceFile(node) { - if (node.isDeclarationFile || !shouldTransformAnything) { + if (node.isDeclarationFile) { + return node; + } + lexicalEnvironment = void 0; + shouldTransformPrivateStaticElementsInFile = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (!shouldTransformAnything && !shouldTransformPrivateStaticElementsInFile) { return node; } const visited = visitEachChild(node, visitor, context); addEmitHelpers(visited, context.readEmitHelpers()); return visited; } + function modifierVisitor(node) { + switch (node.kind) { + case 127 /* AccessorKeyword */: + return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + default: + return tryCast(node, isModifier); + } + } function visitor(node) { if (!(node.transformFlags & 16777216 /* ContainsClassFields */) && !(node.transformFlags & 134234112 /* ContainsLexicalThisOrSuper */)) { return node; } switch (node.kind) { case 127 /* AccessorKeyword */: - return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + return Debug.fail("Use `modifierVisitor` instead."); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); case 228 /* ClassExpression */: - return visitClassExpression(node); + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); case 172 /* ClassStaticBlockDeclaration */: - return visitClassStaticBlockDeclaration(node); case 169 /* PropertyDeclaration */: - return visitPropertyDeclaration(node); + return Debug.fail("Use `classElementVisitor` instead."); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); case 240 /* VariableStatement */: return visitVariableStatement(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); case 80 /* PrivateIdentifier */: return visitPrivateIdentifier(node); case 208 /* PropertyAccessExpression */: @@ -90440,15 +91407,23 @@ function transformClassFields(context) { case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); case 210 /* CallExpression */: return visitCallExpression(node); case 241 /* ExpressionStatement */: @@ -90477,21 +91452,57 @@ function transformClassFields(context) { function fallbackVisitor(node) { return visitEachChild(node, visitor, context); } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } function discardedValueVisitor(node) { switch (node.kind) { case 221 /* PrefixUnaryExpression */: case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); default: return visitor(node); } @@ -90535,10 +91546,20 @@ function transformClassFields(context) { visitPropertyDeclaration, node ); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); case 164 /* ComputedPropertyName */: return visitComputedPropertyName(node); case 237 /* SemicolonClassElement */: return node; + default: + return isModifierLike(node) ? modifierVisitor(node) : visitor(node); + } + } + function propertyNameVisitor(node) { + switch (node.kind) { + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); default: return visitor(node); } @@ -90564,20 +91585,25 @@ function transformClassFields(context) { } return setOriginalNode(factory2.createIdentifier(""), node); } - function isPrivateIdentifierInExpression(node) { - return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; - } function transformPrivateIdentifierInInExpression(node) { - const info = accessPrivateIdentifier(node.left); + const info = accessPrivateIdentifier2(node.left); if (info) { const receiver = visitNode(node.right, visitor, isExpression); return setOriginalNode( - context.getEmitHelperFactory().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), + emitHelpers().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), node ); } return visitEachChild(node, visitor, context); } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } function visitVariableStatement(node) { const savedPendingStatements = pendingStatements; pendingStatements = []; @@ -90586,17 +91612,90 @@ function transformClassFields(context) { pendingStatements = savedPendingStatements; return statement; } - function visitComputedPropertyName(node) { - let expression = visitNode(node.expression, visitor, isExpression); + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function injectPendingExpressions(expression) { if (some(pendingExpressions)) { if (isParenthesizedExpression(expression)) { - expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions([...pendingExpressions, expression.expression])); + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); } else { - expression = factory2.inlineExpressions([...pendingExpressions, expression]); + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); } pendingExpressions = void 0; } - return factory2.updateComputedPropertyName(node, expression); + return expression; + } + function visitComputedPropertyName(node) { + const expression = visitNode(node.expression, visitor, isExpression); + return factory2.updateComputedPropertyName(node, injectPendingExpressions(expression)); } function visitConstructorDeclaration(node) { if (currentClassContainer) { @@ -90604,12 +91703,19 @@ function transformClassFields(context) { } return fallbackVisitor(node); } + function shouldTransformClassElementToWeakMap(node) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) + return true; + if (hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) + return true; + return false; + } function visitMethodOrAccessorDeclaration(node) { Debug.assert(!hasDecorators(node)); - if (!shouldTransformPrivateElementsOrClassStaticBlocks || !isPrivateIdentifier(node.name)) { + if (!isPrivateIdentifierClassElementDeclaration(node) || !shouldTransformClassElementToWeakMap(node)) { return visitEachChild(node, classElementVisitor, context); } - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (!info.isValid) { return node; @@ -90644,7 +91750,7 @@ function transformClassFields(context) { } function getHoistedFunctionName(node) { Debug.assert(isPrivateIdentifier(node.name)); - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (info.kind === "m" /* Method */) { return info.methodName; @@ -90659,42 +91765,61 @@ function transformClassFields(context) { } } function transformAutoAccessor(node) { - Debug.assertEachNode(node.modifiers, isModifier); const commentRange = getCommentRange(node); const sourceMapRange = getSourceMapRange(node); const name = node.name; let getterName = name; let setterName = name; if (isComputedPropertyName(name) && !isSimpleInlineableExpression(name.expression)) { - const temp = factory2.createTempVariable(hoistVariableDeclaration); - setSourceMapRange(temp, name.expression); - const expression = visitNode(name.expression, visitor, isExpression); - const assignment = factory2.createAssignment(temp, expression); - setSourceMapRange(assignment, name.expression); - getterName = factory2.updateComputedPropertyName(name, factory2.inlineExpressions([assignment, temp])); - setterName = factory2.updateComputedPropertyName(name, temp); + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name, visitNode(name.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name.expression); + const expression = visitNode(name.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name.expression); + getterName = factory2.updateComputedPropertyName(name, assignment); + setterName = factory2.updateComputedPropertyName(name, temp); + } } - const backingField = createAccessorPropertyBackingField(factory2, node, node.modifiers, node.initializer); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiers, node.initializer); setOriginalNode(backingField, node); setEmitFlags(backingField, 3072 /* NoComments */); setSourceMapRange(backingField, sourceMapRange); - const getter = createAccessorPropertyGetRedirector(factory2, node, node.modifiers, getterName); + const getter = createAccessorPropertyGetRedirector(factory2, node, modifiers, getterName); setOriginalNode(getter, node); setCommentRange(getter, commentRange); setSourceMapRange(getter, sourceMapRange); - const setter = createAccessorPropertySetRedirector(factory2, node, node.modifiers, setterName); + const setter = createAccessorPropertySetRedirector(factory2, node, modifiers, setterName); setOriginalNode(setter, node); setEmitFlags(setter, 3072 /* NoComments */); setSourceMapRange(setter, sourceMapRange); return visitArray([backingField, getter, setter], accessorFieldResultVisitor, isClassElement); } function transformPrivateFieldInitializer(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { - const info = accessPrivateIdentifier(node.name); + if (shouldTransformClassElementToWeakMap(node)) { + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); - return info.isValid ? void 0 : node; + if (!info.isValid) { + return node; + } + if (info.isStatic && !shouldTransformPrivateElementsOrClassStaticBlocks) { + const statement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); + if (statement) { + return factory2.createClassStaticBlockDeclaration(factory2.createBlock( + [statement], + /*multiLine*/ + true + )); + } + } + return void 0; } - if (shouldTransformInitializersUsingSet && !isStatic(node) && currentClassLexicalEnvironment && currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */) { + if (shouldTransformInitializersUsingSet && !isStatic(node) && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */) { return factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, visitor, isModifierLike), @@ -90707,6 +91832,19 @@ function transformClassFields(context) { void 0 ); } + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, (child) => namedEvaluationVisitor(child, referencedName), isExpression) + ); + } return visitEachChild(node, visitor, context); } function transformPublicFieldInitializer(node) { @@ -90714,10 +91852,12 @@ function transformClassFields(context) { const expr = getPropertyNameExpressionIfNeeded( node.name, /*shouldHoist*/ - !!node.initializer || useDefineForClassFields + !!node.initializer || useDefineForClassFields, + /*captureReferencedName*/ + isNamedEvaluation(node, isAnonymousClassNeedingAssignedName) ); if (expr) { - getPendingExpressions().push(expr); + getPendingExpressions().push(...flattenCommaList(expr)); } if (isStatic(node) && !shouldTransformPrivateElementsOrClassStaticBlocks) { const initializerStatement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); @@ -90735,17 +91875,26 @@ function transformClassFields(context) { } return void 0; } - return visitEachChild(node, classElementVisitor, context); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + visitNode(node.name, propertyNameVisitor, isPropertyName), + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); } function transformFieldInitializer(node) { Debug.assert(!hasDecorators(node), "Decorators should already have been transformed and elided."); return isPrivateIdentifierClassElementDeclaration(node) ? transformPrivateFieldInitializer(node) : transformPublicFieldInitializer(node); } function shouldTransformAutoAccessorsInCurrentClass() { - return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!currentClassLexicalEnvironment && !!(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */); + return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && !!(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */); } function visitPropertyDeclaration(node) { - if (shouldTransformAutoAccessorsInCurrentClass() && isAutoAccessorPropertyDeclaration(node)) { + if (isAutoAccessorPropertyDeclaration(node) && (shouldTransformAutoAccessorsInCurrentClass() || hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */)) { return transformAutoAccessor(node); } return transformFieldInitializer(node); @@ -90757,33 +91906,35 @@ function transformClassFields(context) { setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.getterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.methodName ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } } function visitPropertyAccessExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(node.name)) { - const privateIdentifierInfo = accessPrivateIdentifier(node.name); + if (isPrivateIdentifier(node.name)) { + const privateIdentifierInfo = accessPrivateIdentifier2(node.name); if (privateIdentifierInfo) { return setTextRange( setOriginalNode( @@ -90794,8 +91945,8 @@ function transformClassFields(context) { ); } } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -90813,8 +91964,8 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function visitElementAccessExpression(node) { - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -90831,16 +91982,16 @@ function transformClassFields(context) { } return visitEachChild(node, visitor, context); } - function visitPreOrPostfixUnaryExpression(node, valueIsDiscarded) { + function visitPreOrPostfixUnaryExpression(node, discarded) { if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { const operand = skipParentheses(node.operand); - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(operand)) { + if (isPrivateIdentifierPropertyAccessExpression(operand)) { let info; - if (info = accessPrivateIdentifier(operand.name)) { + if (info = accessPrivateIdentifier2(operand.name)) { const receiver = visitNode(operand.expression, visitor, isExpression); const { readExpression, initializeExpression } = createCopiableReceiverExpr(receiver); let expression = createPrivateIdentifierAccess(info, readExpression); - const temp = isPrefixUnaryExpression(node) || valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = isPrefixUnaryExpression(node) || discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = createPrivateIdentifierAssignment( info, @@ -90856,8 +92007,8 @@ function transformClassFields(context) { } return expression; } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { const expression = visitInvalidSuperProperty(operand); return isPrefixUnaryExpression(node) ? factory2.updatePrefixUnaryExpression(node, expression) : factory2.updatePostfixUnaryExpression(node, expression); @@ -90880,7 +92031,7 @@ function transformClassFields(context) { if (setterName && getterName) { let expression = factory2.createReflectGetCall(superClassReference, getterName, classConstructor); setTextRange(expression, operand); - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = factory2.createReflectSetCall(superClassReference, setterName, expression, classConstructor); setOriginalNode(expression, node); @@ -90921,12 +92072,13 @@ function transformClassFields(context) { return { readExpression, initializeExpression }; } function visitCallExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.expression)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.expression) && accessPrivateIdentifier2(node.expression.name)) { const { thisArg, target } = factory2.createCallBinding(node.expression, hoistVariableDeclaration, languageVersion); if (isCallChain(node)) { return factory2.updateCallChain( node, - factory2.createPropertyAccessChain(visitNode(target, visitor), node.questionDotToken, "call"), + factory2.createPropertyAccessChain(visitNode(target, visitor, isExpression), node.questionDotToken, "call"), /*questionDotToken*/ void 0, /*typeArguments*/ @@ -90936,16 +92088,16 @@ function transformClassFields(context) { } return factory2.updateCallExpression( node, - factory2.createPropertyAccessExpression(visitNode(target, visitor), "call"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "call"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression), ...visitNodes2(node.arguments, visitor, isExpression)] ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionCallCall( visitNode(node.expression, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, visitNodes2(node.arguments, visitor, isExpression) ); setOriginalNode(invocation, node); @@ -90955,12 +92107,13 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function visitTaggedTemplateExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.tag)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.tag) && accessPrivateIdentifier2(node.tag.name)) { const { thisArg, target } = factory2.createCallBinding(node.tag, hoistVariableDeclaration, languageVersion); return factory2.updateTaggedTemplateExpression( node, factory2.createCallExpression( - factory2.createPropertyAccessExpression(visitNode(target, visitor), "bind"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "bind"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression)] @@ -90970,10 +92123,10 @@ function transformClassFields(context) { visitNode(node.template, visitor, isTemplateLiteral) ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionBindCall( visitNode(node.tag, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, [] ); setOriginalNode(invocation, node); @@ -90989,10 +92142,10 @@ function transformClassFields(context) { return visitEachChild(node, visitor, context); } function transformClassStaticBlockDeclaration(node) { + if (lexicalEnvironment) { + lexicalEnvironmentMap.set(getOriginalNode(node), lexicalEnvironment); + } if (shouldTransformPrivateElementsOrClassStaticBlocks) { - if (currentClassLexicalEnvironment) { - classLexicalEnvironmentMap.set(getOriginalNodeId(node), currentClassLexicalEnvironment); - } startLexicalEnvironment(); let statements = setCurrentStaticPropertyDeclarationOrStaticBlockAnd( node, @@ -91007,23 +92160,45 @@ function transformClassFields(context) { return iife; } } - function visitBinaryExpression(node, valueIsDiscarded) { + function isAnonymousClassNeedingAssignedName(node) { + if (isClassExpression(node) && !node.name) { + const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); + const classStaticBlock = find(staticPropertiesOrClassStaticBlocks, isClassStaticBlockDeclaration); + if (classStaticBlock) { + for (const statement of classStaticBlock.body.statements) { + if (isExpressionStatement(statement) && isCallToHelper(statement.expression, "___setFunctionName")) { + return false; + } + } + } + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || !!(getInternalEmitFlags(node) && 32 /* TransformPrivateStaticElements */)) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + return hasTransformableStatics; + } + return false; + } + function visitBinaryExpression(node, discarded) { if (isDestructuringAssignment(node)) { const savedPendingExpressions = pendingExpressions; pendingExpressions = void 0; node = factory2.updateBinaryExpression( node, - visitNode(node.left, assignmentTargetVisitor), + visitNode(node.left, assignmentTargetVisitor, isExpression), node.operatorToken, - visitNode(node.right, visitor) + visitNode(node.right, visitor, isExpression) ); const expr = some(pendingExpressions) ? factory2.inlineExpressions(compact([...pendingExpressions, node])) : node; pendingExpressions = savedPendingExpressions; return expr; } if (isAssignmentExpression(node)) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.left)) { - const info = accessPrivateIdentifier(node.left.name); + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isPrivateIdentifierPropertyAccessExpression(node.left)) { + const info = accessPrivateIdentifier2(node.left.name); if (info) { return setTextRange( setOriginalNode( @@ -91033,8 +92208,8 @@ function transformClassFields(context) { node ); } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return factory2.updateBinaryExpression( node, @@ -91067,7 +92242,7 @@ function transformClassFields(context) { ); setTextRange(expression, node); } - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); if (temp) { expression = factory2.createAssignment(temp, expression); setTextRange(temp, node); @@ -91089,11 +92264,42 @@ function transformClassFields(context) { } } } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierInExpression(node)) { + if (isPrivateIdentifierInExpression(node)) { return transformPrivateIdentifierInInExpression(node); } return visitEachChild(node, visitor, context); } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.createTempVariable(hoistVariableDeclaration); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } function createPrivateIdentifierAssignment(info, receiver, right, operator) { receiver = visitNode(receiver, visitor, isExpression); right = visitNode(right, visitor, isExpression); @@ -91109,7 +92315,7 @@ function transformClassFields(context) { setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -91117,7 +92323,7 @@ function transformClassFields(context) { info.setterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -91126,13 +92332,15 @@ function transformClassFields(context) { void 0 ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } @@ -91143,7 +92351,7 @@ function transformClassFields(context) { function getClassFacts(node) { let facts = 0 /* None */; const original = getOriginalNode(node); - if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(original)) { + if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(legacyDecorators, original)) { facts |= 1 /* ClassWasDecorated */; } let containsPublicInstanceFields = false; @@ -91187,7 +92395,8 @@ function transformClassFields(context) { return facts; } function visitExpressionWithTypeArgumentsInHeritageClause(node) { - const facts = (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts) || 0 /* None */; + var _a2; + const facts = ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts) || 0 /* None */; if (facts & 4 /* NeedsClassSuperReference */) { const temp = factory2.createTempVariable( hoistVariableDeclaration, @@ -91207,20 +92416,24 @@ function transformClassFields(context) { } return visitEachChild(node, visitor, context); } - function visitInNewClassLexicalEnvironment(node, visitor2) { + function visitInNewClassLexicalEnvironment(node, referencedName, visitor2) { const savedCurrentClassContainer = currentClassContainer; const savedPendingExpressions = pendingExpressions; + const savedLexicalEnvironment = lexicalEnvironment; currentClassContainer = node; pendingExpressions = void 0; startClassLexicalEnvironment(); - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldAlwaysTransformPrivateStaticElements = getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */; + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldAlwaysTransformPrivateStaticElements) { const name = getNameOfDeclaration(node); if (name && isIdentifier(name)) { - getPrivateIdentifierEnvironment().className = name; + getPrivateIdentifierEnvironment().data.className = name; } + } + if (shouldTransformPrivateElementsOrClassStaticBlocks) { const privateInstanceMethodsAndAccessors = getPrivateInstanceMethodsAndAccessors(node); if (some(privateInstanceMethodsAndAccessors)) { - getPrivateIdentifierEnvironment().weakSetName = createHoistedVariableForClass( + getPrivateIdentifierEnvironment().data.weakSetName = createHoistedVariableForClass( "instances", privateInstanceMethodsAndAccessors[0].name ); @@ -91233,27 +92446,42 @@ function transformClassFields(context) { if (facts & 8 /* NeedsSubstitutionForThisInClassStaticField */) { enableSubstitutionForClassStaticThisOrSuperReference(); } - const result = visitor2(node, facts); + const result = visitor2(node, facts, referencedName); endClassLexicalEnvironment(); + Debug.assert(lexicalEnvironment === savedLexicalEnvironment); currentClassContainer = savedCurrentClassContainer; pendingExpressions = savedPendingExpressions; return result; } function visitClassDeclaration(node) { - return visitInNewClassLexicalEnvironment(node, visitClassDeclarationInNewClassLexicalEnvironment); + return visitInNewClassLexicalEnvironment( + node, + /*referencedName*/ + void 0, + visitClassDeclarationInNewClassLexicalEnvironment + ); } function visitClassDeclarationInNewClassLexicalEnvironment(node, facts) { + var _a2, _b; let pendingClassReferenceAssignment; if (facts & 2 /* NeedsClassConstructorReference */) { - const temp = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); - pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis)) { + getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + pendingClassReferenceAssignment = factory2.createAssignment(node.emitNode.classThis, factory2.getInternalName(node)); + } else { + const temp = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + } + if ((_b = node.emitNode) == null ? void 0 : _b.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; + } } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); const classDecl = factory2.updateClassDeclaration( @@ -91276,7 +92504,7 @@ function transformClassFields(context) { if (some(pendingExpressions)) { statements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); } - if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks) { + if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) { const staticProperties = getStaticPropertiesAndClassStaticBlock(node); if (some(staticProperties)) { addPropertyOrClassStaticBlockStatements(statements, staticProperties, factory2.getInternalName(node)); @@ -91284,28 +92512,37 @@ function transformClassFields(context) { } return statements; } - function visitClassExpression(node) { - return visitInNewClassLexicalEnvironment(node, visitClassExpressionInNewClassLexicalEnvironment); + function visitClassExpression(node, referencedName) { + return visitInNewClassLexicalEnvironment(node, referencedName, visitClassExpressionInNewClassLexicalEnvironment); } - function visitClassExpressionInNewClassLexicalEnvironment(node, facts) { + function visitClassExpressionInNewClassLexicalEnvironment(node, facts, referencedName) { + var _a2, _b, _c, _d, _e, _f; const isDecoratedClassDeclaration = !!(facts & 1 /* ClassWasDecorated */); const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); const isClassWithConstructorReference = resolver.getNodeCheckFlags(node) & 1048576 /* ClassWithConstructorReference */; let temp; function createClassTempVar() { + var _a3; + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a3 = node.emitNode) == null ? void 0 : _a3.classThis)) { + return getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + } const classCheckFlags = resolver.getNodeCheckFlags(node); const isClassWithConstructorReference2 = classCheckFlags & 1048576 /* ClassWithConstructorReference */; const requiresBlockScopedVar = classCheckFlags & 32768 /* BlockScopedBindingInLoop */; - return factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + const temp2 = factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp2); + return temp2; + } + if ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; } if (facts & 2 /* NeedsClassConstructorReference */) { - temp = createClassTempVar(); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + temp != null ? temp : temp = createClassTempVar(); } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); - const classExpression = factory2.updateClassExpression( + let classExpression = factory2.updateClassExpression( node, modifiers, node.name, @@ -91318,46 +92555,68 @@ function transformClassFields(context) { if (prologue) { expressions.push(prologue); } - const hasTransformableStatics = shouldTransformPrivateElementsOrClassStaticBlocks && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); - if (hasTransformableStatics || some(pendingExpressions)) { + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + if (hasTransformableStatics || some(pendingExpressions) || referencedName) { if (isDecoratedClassDeclaration) { Debug.assertIsDefined(pendingStatements, "Decorated classes transformed by TypeScript are expected to be within a variable declaration."); - if (pendingStatements && pendingExpressions && some(pendingExpressions)) { - pendingStatements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); + if (some(pendingExpressions)) { + addRange(pendingStatements, map(pendingExpressions, factory2.createExpressionStatement)); } - if (pendingStatements && some(staticPropertiesOrClassStaticBlocks)) { - addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, factory2.getInternalName(node)); - } - if (temp) { - expressions.push( - startOnNewLine(factory2.createAssignment(temp, classExpression)), - startOnNewLine(temp) - ); - } else { - expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); + if (referencedName) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const setNameExpression = emitHelpers().createSetFunctionNameHelper((_c = temp != null ? temp : (_b = node.emitNode) == null ? void 0 : _b.classThis) != null ? _c : factory2.getInternalName(node), referencedName); + pendingStatements.push(factory2.createExpressionStatement(setNameExpression)); + } else { + const setNameExpression = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), referencedName); + classExpression = factory2.updateClassExpression( + classExpression, + classExpression.modifiers, + classExpression.name, + classExpression.typeParameters, + classExpression.heritageClauses, + [ + factory2.createClassStaticBlockDeclaration( + factory2.createBlock([ + factory2.createExpressionStatement(setNameExpression) + ]) + ), + ...classExpression.members + ] + ); } } + if (some(staticPropertiesOrClassStaticBlocks)) { + addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, (_e = (_d = node.emitNode) == null ? void 0 : _d.classThis) != null ? _e : factory2.getInternalName(node)); + } + if (temp) { + expressions.push(factory2.createAssignment(temp, classExpression)); + } else if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_f = node.emitNode) == null ? void 0 : _f.classThis)) { + expressions.push(factory2.createAssignment(node.emitNode.classThis, classExpression)); + } else { + expressions.push(classExpression); + } } else { - temp || (temp = createClassTempVar()); + temp != null ? temp : temp = createClassTempVar(); if (isClassWithConstructorReference) { enableSubstitutionForClassAliases(); const alias = factory2.cloneNode(temp); - alias.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; + alias.emitNode.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; classAliases[getOriginalNodeId(node)] = alias; } - setEmitFlags(classExpression, 131072 /* Indented */ | getEmitFlags(classExpression)); - expressions.push(startOnNewLine(factory2.createAssignment(temp, classExpression))); - addRange(expressions, map(pendingExpressions, startOnNewLine)); + expressions.push(factory2.createAssignment(temp, classExpression)); + addRange(expressions, pendingExpressions); + if (referencedName) { + expressions.push(emitHelpers().createSetFunctionNameHelper(temp, referencedName)); + } addRange(expressions, generateInitializedPropertyExpressionsOrClassStaticBlock(staticPropertiesOrClassStaticBlocks, temp)); - expressions.push(startOnNewLine(temp)); + expressions.push(factory2.cloneNode(temp)); } } else { expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); - } + } + if (expressions.length > 1) { + addEmitFlags(classExpression, 131072 /* Indented */); + expressions.forEach(startOnNewLine); } return factory2.inlineExpressions(expressions); } @@ -91368,16 +92627,24 @@ function transformClassFields(context) { return void 0; } function transformClassMembers(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldTransformPrivateStaticElementsInClass = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInFile) { for (const member of node.members) { if (isPrivateIdentifierClassElementDeclaration(member)) { - addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + if (shouldTransformClassElementToWeakMap(member)) { + addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, member.name, { kind: "untransformed" }); + } } } - if (some(getPrivateInstanceMethodsAndAccessors(node))) { - createBrandCheckWeakSetForPrivateMethods(); + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + if (some(getPrivateInstanceMethodsAndAccessors(node))) { + createBrandCheckWeakSetForPrivateMethods(); + } } - if (shouldTransformAutoAccessors) { + if (shouldTransformAutoAccessorsInCurrentClass()) { for (const member of node.members) { if (isAutoAccessorPropertyDeclaration(member)) { const storageName = factory2.getGeneratedPrivateNameForNode( @@ -91386,7 +92653,12 @@ function transformClassFields(context) { void 0, "_accessor_storage" ); - addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInClass && hasStaticModifier(member)) { + addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, storageName, { kind: "untransformed" }); + } } } } @@ -91445,7 +92717,7 @@ function transformClassFields(context) { return { members, prologue }; } function createBrandCheckWeakSetForPrivateMethods() { - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); getPendingExpressions().push( factory2.createAssignment( @@ -91461,7 +92733,7 @@ function transformClassFields(context) { } function transformConstructor(constructor, container) { constructor = visitNode(constructor, visitor, isConstructorDeclaration); - if (!currentClassLexicalEnvironment || !(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */)) { + if (!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) || !(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */)) { return constructor; } const extendsClauseElement = getEffectiveBaseTypeNode(container); @@ -91498,13 +92770,14 @@ function transformClassFields(context) { } function transformConstructorBody(node, constructor, isDerivedClass) { var _a2, _b; - let properties = getProperties( + const instanceProperties = getProperties( node, /*requireInitializer*/ false, /*isStatic*/ false ); + let properties = instanceProperties; if (!useDefineForClassFields) { properties = filter(properties, (property) => !!property.initializer || isPrivateIdentifier(property.name) || hasAccessorModifier(property)); } @@ -91558,37 +92831,30 @@ function transformClassFields(context) { } let parameterPropertyDeclarationCount = 0; if (constructor == null ? void 0 : constructor.body) { - if (useDefineForClassFields) { - statements = statements.filter((statement) => !isParameterPropertyDeclaration(getOriginalNode(statement), constructor)); - } else { - for (const statement of constructor.body.statements) { - if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - parameterPropertyDeclarationCount++; - } - } - if (parameterPropertyDeclarationCount > 0) { - const parameterProperties = visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue, parameterPropertyDeclarationCount); - if (superStatementIndex >= 0) { - addRange(statements, parameterProperties); - } else { - let superAndPrologueStatementCount = prologueStatementCount; - if (needsSyntheticConstructor) - superAndPrologueStatementCount++; - statements = [ - ...statements.slice(0, superAndPrologueStatementCount), - ...parameterProperties, - ...statements.slice(superAndPrologueStatementCount) - ]; - } - indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + for (let i = indexOfFirstStatementAfterSuperAndPrologue; i < constructor.body.statements.length; i++) { + const statement = constructor.body.statements[i]; + if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { + parameterPropertyDeclarationCount++; + } else { + break; } } + if (parameterPropertyDeclarationCount > 0) { + indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + } } const receiver = factory2.createThis(); - addMethodStatements(statements, privateMethodsAndAccessors, receiver); - addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + addInstanceMethodStatements(statements, privateMethodsAndAccessors, receiver); if (constructor) { - addRange(statements, visitNodes2(constructor.body.statements, visitBodyStatement, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); + const parameterProperties = filter(instanceProperties, (prop) => isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + const nonParameterProperties = filter(properties, (prop) => !isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + addPropertyOrClassStaticBlockStatements(statements, parameterProperties, receiver); + addPropertyOrClassStaticBlockStatements(statements, nonParameterProperties, receiver); + } else { + addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + } + if (constructor) { + addRange(statements, visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); } statements = factory2.mergeLexicalEnvironment(statements, endLexicalEnvironment()); if (statements.length === 0 && !constructor) { @@ -91607,16 +92873,10 @@ function transformClassFields(context) { /*location*/ constructor ? constructor.body : void 0 ); - function visitBodyStatement(statement) { - if (useDefineForClassFields && isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - return void 0; - } - return visitor(statement); - } } function addPropertyOrClassStaticBlockStatements(statements, properties, receiver) { for (const property of properties) { - if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks && !useDefineForClassFields) { + if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks) { continue; } const statement = transformPropertyOrClassStaticBlock(property, receiver); @@ -91634,10 +92894,19 @@ function transformClassFields(context) { const statement = factory2.createExpressionStatement(expression); setOriginalNode(statement, property); addEmitFlags(statement, getEmitFlags(property) & 3072 /* NoComments */); - setSourceMapRange(statement, moveRangePastModifiers(property)); setCommentRange(statement, property); + const propertyOriginalNode = getOriginalNode(property); + if (isParameter(propertyOriginalNode)) { + setSourceMapRange(statement, propertyOriginalNode); + removeAllComments(statement); + } else { + setSourceMapRange(statement, moveRangePastModifiers(property)); + } setSyntheticLeadingComments(expression, void 0); setSyntheticTrailingComments(expression, void 0); + if (hasAccessorModifier(propertyOriginalNode)) { + addEmitFlags(statement, 3072 /* NoComments */); + } return statement; } function generateInitializedPropertyExpressionsOrClassStaticBlock(propertiesOrClassStaticBlocks, receiver) { @@ -91657,37 +92926,49 @@ function transformClassFields(context) { return expressions; } function transformProperty(property, receiver) { + var _a2; const savedCurrentStaticPropertyDeclarationOrStaticBlock = currentStaticPropertyDeclarationOrStaticBlock; const transformed = transformPropertyWorker(property, receiver); - if (transformed && hasStaticModifier(property) && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts)) { + if (transformed && hasStaticModifier(property) && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts)) { setOriginalNode(transformed, property); addEmitFlags(transformed, 4 /* AdviseOnEmitNode */); - classLexicalEnvironmentMap.set(getOriginalNodeId(transformed), currentClassLexicalEnvironment); + setSourceMapRange(transformed, getSourceMapRange(property.name)); + lexicalEnvironmentMap.set(getOriginalNode(property), lexicalEnvironment); } currentStaticPropertyDeclarationOrStaticBlock = savedCurrentStaticPropertyDeclarationOrStaticBlock; return transformed; } function transformPropertyWorker(property, receiver) { - var _a2; const emitAssignment = !useDefineForClassFields; + let referencedName; + if (isNamedEvaluation(property, isAnonymousClassNeedingAssignedName)) { + if (isPropertyNameLiteral(property.name) || isPrivateIdentifier(property.name)) { + referencedName = factory2.createStringLiteralFromNode(property.name); + } else if (isPropertyNameLiteral(property.name.expression) && !isIdentifier(property.name.expression)) { + referencedName = factory2.createStringLiteralFromNode(property.name.expression); + } else { + referencedName = factory2.getGeneratedNameForNode(property.name); + } + } const propertyName = hasAccessorModifier(property) ? factory2.getGeneratedPrivateNameForNode(property.name) : isComputedPropertyName(property.name) && !isSimpleInlineableExpression(property.name.expression) ? factory2.updateComputedPropertyName(property.name, factory2.getGeneratedNameForNode(property.name)) : property.name; if (hasStaticModifier(property)) { currentStaticPropertyDeclarationOrStaticBlock = property; } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(propertyName)) { - const privateIdentifierInfo = accessPrivateIdentifier(propertyName); + const initializerVisitor = referencedName ? (child) => namedEvaluationVisitor(child, referencedName) : visitor; + if (isPrivateIdentifier(propertyName) && shouldTransformClassElementToWeakMap(property)) { + const privateIdentifierInfo = accessPrivateIdentifier2(propertyName); if (privateIdentifierInfo) { if (privateIdentifierInfo.kind === "f" /* Field */) { if (!privateIdentifierInfo.isStatic) { return createPrivateInstanceFieldInitializer( receiver, - visitNode(property.initializer, visitor, isExpression), + visitNode(property.initializer, initializerVisitor, isExpression), privateIdentifierInfo.brandCheckIdentifier ); } else { return createPrivateStaticFieldInitializer( privateIdentifierInfo.variableName, - visitNode(property.initializer, visitor, isExpression) + visitNode(property.initializer, initializerVisitor, isExpression) ); } } else { @@ -91704,7 +92985,23 @@ function transformClassFields(context) { if (hasSyntacticModifier(propertyOriginalNode, 256 /* Abstract */)) { return void 0; } - const initializer = property.initializer || emitAssignment ? (_a2 = visitNode(property.initializer, visitor, isExpression)) != null ? _a2 : factory2.createVoidZero() : isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName) ? propertyName : factory2.createVoidZero(); + let initializer = visitNode(property.initializer, initializerVisitor, isExpression); + if (isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName)) { + const localName = factory2.cloneNode(propertyName); + if (initializer) { + if (isParenthesizedExpression(initializer) && isCommaExpression(initializer.expression) && isCallToHelper(initializer.expression.left, "___runInitializers") && isVoidExpression(initializer.expression.right) && isNumericLiteral(initializer.expression.right.expression)) { + initializer = initializer.expression.left; + } + initializer = factory2.inlineExpressions([initializer, localName]); + } else { + initializer = localName; + } + setEmitFlags(propertyName, 3072 /* NoComments */ | 96 /* NoSourceMap */); + setSourceMapRange(localName, propertyOriginalNode.name); + setEmitFlags(localName, 3072 /* NoComments */); + } else { + initializer != null ? initializer : initializer = factory2.createVoidZero(); + } if (emitAssignment || isPrivateIdentifier(propertyName)) { const memberAccess = createMemberAccessForPropertyName( factory2, @@ -91713,7 +93010,9 @@ function transformClassFields(context) { /*location*/ propertyName ); - return factory2.createAssignment(memberAccess, initializer); + addEmitFlags(memberAccess, 1024 /* NoLeadingComments */); + const expression = factory2.createAssignment(memberAccess, initializer); + return expression; } else { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; const descriptor = factory2.createPropertyDescriptor({ value: initializer, configurable: true, writable: true, enumerable: true }); @@ -91741,11 +93040,11 @@ function transformClassFields(context) { context.enableEmitNotification(164 /* ComputedPropertyName */); } } - function addMethodStatements(statements, methods, receiver) { + function addInstanceMethodStatements(statements, methods, receiver) { if (!shouldTransformPrivateElementsOrClassStaticBlocks || !some(methods)) { return; } - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); statements.push( factory2.createExpressionStatement( @@ -91764,20 +93063,352 @@ function transformClassFields(context) { visitNode(node.argumentExpression, visitor, isExpression) ); } + function getPropertyNameExpressionIfNeeded(name, shouldHoist, captureReferencedName) { + if (isComputedPropertyName(name)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + let expression = visitNode(name.expression, visitor, isExpression); + const innerExpression = skipPartiallyEmittedExpressions(expression); + const inlinable = isSimpleInlineableExpression(innerExpression); + const alreadyTransformed = !!cacheAssignment || isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); + if (!alreadyTransformed && !inlinable && shouldHoist) { + const generatedName = factory2.getGeneratedNameForNode(name); + if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(generatedName); + } else { + hoistVariableDeclaration(generatedName); + } + if (captureReferencedName) { + expression = emitHelpers().createPropKeyHelper(expression); + } + return factory2.createAssignment(generatedName, expression); + } + return inlinable || isIdentifier(innerExpression) ? void 0 : expression; + } + } + function startClassLexicalEnvironment() { + lexicalEnvironment = { previous: lexicalEnvironment, data: void 0 }; + } + function endClassLexicalEnvironment() { + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + } + function getClassLexicalEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.data) != null ? _a2 : lexicalEnvironment.data = { + facts: 0 /* None */, + classConstructor: void 0, + classThis: void 0, + superClassReference: void 0 + // privateIdentifierEnvironment: undefined, + }; + } + function getPrivateIdentifierEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.privateEnv) != null ? _a2 : lexicalEnvironment.privateEnv = newPrivateEnvironment({ + className: void 0, + weakSetName: void 0 + }); + } + function getPendingExpressions() { + return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + } + function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + if (isAutoAccessorPropertyDeclaration(node)) { + addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isPropertyDeclaration(node)) { + addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isMethodDeclaration(node)) { + addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isGetAccessorDeclaration(node)) { + addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isSetAccessorDeclaration(node)) { + addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + } + function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + if (isStatic2) { + const brandCheckIdentifier = Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment"); + const variableName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: true, + brandCheckIdentifier, + variableName, + isValid + }); + } else { + const weakMapName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: false, + brandCheckIdentifier: weakMapName, + isValid + }); + getPendingExpressions().push(factory2.createAssignment( + weakMapName, + factory2.createNewExpression( + factory2.createIdentifier("WeakMap"), + /*typeArguments*/ + void 0, + [] + ) + )); + } + } + function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const methodName = createHoistedVariableForPrivateName(name); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "m" /* Method */, + methodName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { + previousInfo.getterName = getterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName: void 0, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { + previousInfo.setterName = setterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName: void 0, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { + const lex = getClassLexicalEnvironment(); + const privateEnv = getPrivateIdentifierEnvironment(); + const previousInfo = getPrivateIdentifier(privateEnv, name); + const isStatic2 = hasStaticModifier(node); + const isValid = !isReservedPrivateName(name) && previousInfo === void 0; + addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + function createHoistedVariableForClass(name, node, suffix) { + const { className } = getPrivateIdentifierEnvironment().data; + const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; + const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( + /*recordTempVariable*/ + void 0, + /*reserveInNestedScopes*/ + true, + prefix, + suffix + ); + if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(identifier); + } else { + hoistVariableDeclaration(identifier); + } + return identifier; + } + function createHoistedVariableForPrivateName(name, suffix) { + var _a2; + const text = tryGetTextOfPropertyName(name); + return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); + } + function accessPrivateIdentifier2(name) { + const info = accessPrivateIdentifier(lexicalEnvironment, name); + return (info == null ? void 0 : info.kind) === "untransformed" ? void 0 : info; + } + function wrapPrivateIdentifierForDestructuringTarget(node) { + const parameter = factory2.getGeneratedNameForNode(node); + const info = accessPrivateIdentifier2(node.name); + if (!info) { + return visitEachChild(node, visitor, context); + } + let receiver = node.expression; + if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { + receiver = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); + } + return factory2.createAssignmentTargetWrapper( + parameter, + createPrivateIdentifierAssignment( + info, + receiver, + parameter, + 63 /* EqualsToken */ + ) + ); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isPrivateIdentifierPropertyAccessExpression(node)) { + return wrapPrivateIdentifierForDestructuringTarget(node); + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */) { + return visitInvalidSuperProperty(node); + } else if (classConstructor && superClassReference) { + const name = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (name) { + const temp = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + return factory2.createAssignmentTargetWrapper( + temp, + factory2.createReflectSetCall( + superClassReference, + name, + temp, + classConstructor + ) + ); + } + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const left = visitDestructuringAssignmentTarget(node.left); + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const left = visitDestructuringAssignmentTarget(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitDestructuringAssignmentTarget(node); + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, node.name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + return factory2.updateArrayLiteralExpression( + node, + visitNodes2(node.elements, visitArrayAssignmentElement, isExpression) + ); + } else { + return factory2.updateObjectLiteralExpression( + node, + visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike) + ); + } + } function onEmitNode(hint, node, emitCallback) { const original = getOriginalNode(node); - if (original.id) { - const classLexicalEnvironment = classLexicalEnvironmentMap.get(original.id); - if (classLexicalEnvironment) { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = classLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = classLexicalEnvironment; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + const lex = lexicalEnvironmentMap.get(original); + if (lex) { + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = lex; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = !isClassStaticBlockDeclaration(original) || !(getInternalEmitFlags(original) & 32 /* TransformPrivateStaticElements */); + previousOnEmitNode(hint, node, emitCallback); + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; + return; } switch (node.kind) { case 215 /* FunctionExpression */: @@ -91785,37 +93416,30 @@ function transformClassFields(context) { break; } case 259 /* FunctionDeclaration */: - case 173 /* Constructor */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; - currentComputedPropertyNameClassLexicalEnvironment = void 0; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + case 173 /* Constructor */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: case 169 /* PropertyDeclaration */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = currentClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = void 0; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = false; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } case 164 /* ComputedPropertyName */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = savedShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } } @@ -91838,15 +93462,16 @@ function transformClassFields(context) { return node; } function substituteThisExpression(node) { - if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && currentClassLexicalEnvironment) { - const { facts, classConstructor } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { + if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { facts, classConstructor, classThis } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */ && legacyDecorators) { return factory2.createParenthesizedExpression(factory2.createVoidZero()); } - if (classConstructor) { + const substituteThis = shouldSubstituteThisWithClassThis ? classThis != null ? classThis : classConstructor : classConstructor; + if (substituteThis) { return setTextRange( setOriginalNode( - factory2.cloneNode(classConstructor), + factory2.cloneNode(substituteThis), node ), node @@ -91875,350 +93500,6 @@ function transformClassFields(context) { } return void 0; } - function getPropertyNameExpressionIfNeeded(name, shouldHoist) { - if (isComputedPropertyName(name)) { - const expression = visitNode(name.expression, visitor, isExpression); - const innerExpression = skipPartiallyEmittedExpressions(expression); - const inlinable = isSimpleInlineableExpression(innerExpression); - const alreadyTransformed = isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); - if (!alreadyTransformed && !inlinable && shouldHoist) { - const generatedName = factory2.getGeneratedNameForNode(name); - if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(generatedName); - } else { - hoistVariableDeclaration(generatedName); - } - return factory2.createAssignment(generatedName, expression); - } - return inlinable || isIdentifier(innerExpression) ? void 0 : expression; - } - } - function startClassLexicalEnvironment() { - classLexicalEnvironmentStack.push(currentClassLexicalEnvironment); - currentClassLexicalEnvironment = void 0; - } - function endClassLexicalEnvironment() { - currentClassLexicalEnvironment = classLexicalEnvironmentStack.pop(); - } - function getClassLexicalEnvironment() { - return currentClassLexicalEnvironment || (currentClassLexicalEnvironment = { - facts: 0 /* None */, - classConstructor: void 0, - superClassReference: void 0, - privateIdentifierEnvironment: void 0 - }); - } - function getPrivateIdentifierEnvironment() { - const lex = getClassLexicalEnvironment(); - lex.privateIdentifierEnvironment || (lex.privateIdentifierEnvironment = { - className: void 0, - weakSetName: void 0, - identifiers: void 0, - generatedIdentifiers: void 0 - }); - return lex.privateIdentifierEnvironment; - } - function getPendingExpressions() { - return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; - } - function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - if (isAutoAccessorPropertyDeclaration(node)) { - addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isPropertyDeclaration(node)) { - addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isMethodDeclaration(node)) { - addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isGetAccessorDeclaration(node)) { - addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isSetAccessorDeclaration(node)) { - addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - } - function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - if (isStatic2) { - Debug.assert(lex.classConstructor, "classConstructor should be set in private identifier environment"); - const variableName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: lex.classConstructor, - variableName, - isStatic: true, - isValid - }); - } else { - const weakMapName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: weakMapName, - variableName: void 0, - isStatic: false, - isValid - }); - getPendingExpressions().push(factory2.createAssignment( - weakMapName, - factory2.createNewExpression( - factory2.createIdentifier("WeakMap"), - /*typeArguments*/ - void 0, - [] - ) - )); - } - } - function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const methodName = createHoistedVariableForPrivateName(name); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "m" /* Method */, - methodName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { - previousInfo.getterName = getterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName: void 0, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { - previousInfo.setterName = setterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName: void 0, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { - const lex = getClassLexicalEnvironment(); - const privateEnv = getPrivateIdentifierEnvironment(); - const previousInfo = getPrivateIdentifier(privateEnv, name); - const isStatic2 = hasStaticModifier(node); - const isValid = !isReservedPrivateName(name) && previousInfo === void 0; - addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - function createHoistedVariableForClass(name, node, suffix) { - const { className } = getPrivateIdentifierEnvironment(); - const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; - const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( - /*recordTempVariable*/ - void 0, - /*reserveInNestedScopes*/ - true, - prefix, - suffix - ); - if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(identifier); - } else { - hoistVariableDeclaration(identifier); - } - return identifier; - } - function createHoistedVariableForPrivateName(name, suffix) { - var _a2; - const text = tryGetTextOfPropertyName(name); - return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); - } - function accessPrivateIdentifier(name) { - if (isGeneratedPrivateIdentifier(name)) { - return accessGeneratedPrivateIdentifier(name); - } else { - return accessPrivateIdentifierByText(name.escapedText); - } - } - function accessPrivateIdentifierByText(text) { - return accessPrivateIdentifierWorker(getPrivateIdentifierInfo, text); - } - function accessGeneratedPrivateIdentifier(name) { - return accessPrivateIdentifierWorker(getGeneratedPrivateIdentifierInfo, getNodeForGeneratedName(name)); - } - function accessPrivateIdentifierWorker(getPrivateIdentifierInfo2, privateIdentifierKey) { - if (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(currentClassLexicalEnvironment.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - for (let i = classLexicalEnvironmentStack.length - 1; i >= 0; --i) { - const env = classLexicalEnvironmentStack[i]; - if (!env) { - continue; - } - if (env.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(env.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - } - return void 0; - } - function wrapPrivateIdentifierForDestructuringTarget(node) { - const parameter = factory2.getGeneratedNameForNode(node); - const info = accessPrivateIdentifier(node.name); - if (!info) { - return visitEachChild(node, visitor, context); - } - let receiver = node.expression; - if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { - receiver = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); - } - return factory2.createAssignmentTargetWrapper( - parameter, - createPrivateIdentifierAssignment( - info, - receiver, - parameter, - 63 /* EqualsToken */ - ) - ); - } - function visitArrayAssignmentTarget(node) { - const target = getTargetOfBindingOrAssignmentElement(node); - if (target) { - let wrapped; - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - if (wrapped) { - if (isAssignmentExpression(node)) { - return factory2.updateBinaryExpression( - node, - wrapped, - node.operatorToken, - visitNode(node.right, visitor, isExpression) - ); - } else if (isSpreadElement(node)) { - return factory2.updateSpreadElement(node, wrapped); - } else { - return wrapped; - } - } - } - return visitNode(node, assignmentTargetVisitor); - } - function visitObjectAssignmentTarget(node) { - if (isObjectBindingOrAssignmentElement(node) && !isShorthandPropertyAssignment(node)) { - const target = getTargetOfBindingOrAssignmentElement(node); - let wrapped; - if (target) { - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - } - if (isPropertyAssignment(node)) { - const initializer = getInitializerOfBindingOrAssignmentElement(node); - return factory2.updatePropertyAssignment( - node, - visitNode(node.name, visitor, isPropertyName), - wrapped ? initializer ? factory2.createAssignment(wrapped, visitNode(initializer, visitor)) : wrapped : visitNode(node.initializer, assignmentTargetVisitor, isExpression) - ); - } - if (isSpreadAssignment(node)) { - return factory2.updateSpreadAssignment( - node, - wrapped || visitNode(node.expression, assignmentTargetVisitor, isExpression) - ); - } - Debug.assert(wrapped === void 0, "Should not have generated a wrapped target"); - } - return visitNode(node, visitor); - } - function visitAssignmentPattern(node) { - if (isArrayLiteralExpression(node)) { - return factory2.updateArrayLiteralExpression( - node, - visitNodes2(node.elements, visitArrayAssignmentTarget, isExpression) - ); - } else { - return factory2.updateObjectLiteralExpression( - node, - visitNodes2(node.properties, visitObjectAssignmentTarget, isObjectLiteralElementLike) - ); - } - } } function createPrivateStaticFieldInitializer(variableName, initializer) { return factory.createAssignment( @@ -92247,26 +93528,8 @@ function createPrivateInstanceMethodInitializer(receiver, weakSetName) { function isReservedPrivateName(node) { return !isGeneratedPrivateIdentifier(node) && node.escapedText === "#constructor"; } -function getPrivateIdentifier(privateEnv, name) { - return isGeneratedPrivateIdentifier(name) ? getGeneratedPrivateIdentifierInfo(privateEnv, getNodeForGeneratedName(name)) : getPrivateIdentifierInfo(privateEnv, name.escapedText); -} -function setPrivateIdentifier(privateEnv, name, info) { - var _a2, _b; - if (isGeneratedPrivateIdentifier(name)) { - (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); - privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), info); - } else { - (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); - privateEnv.identifiers.set(name.escapedText, info); - } -} -function getPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.identifiers) == null ? void 0 : _a2.get(key); -} -function getGeneratedPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(key); +function isPrivateIdentifierInExpression(node) { + return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; } // src/compiler/transformers/typeSerializer.ts @@ -92672,9 +93935,22 @@ function transformLegacyDecorators(context) { } } function visitClassDeclaration(node) { - if (!(classOrConstructorParameterIsDecorated(node) || childIsDecorated(node))) + if (!(classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + true, + node + ) || childIsDecorated( + /*legacyDecorators*/ + true, + node + ))) { return visitEachChild(node, visitor, context); - const statements = hasDecorators(node) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); + } + const statements = classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + true, + node + ) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); if (statements.length > 1) { statements.push(factory2.createEndOfDeclarationMarker(node)); setEmitFlags(statements[0], getEmitFlags(statements[0]) | 8388608 /* HasEndOfDeclarationMarker */); @@ -92691,7 +93967,12 @@ function transformLegacyDecorators(context) { for (const member of node.members) { if (!canHaveDecorators(member)) continue; - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); if (some(allDecorators == null ? void 0 : allDecorators.decorators, decoratorContainsPrivateIdentifierInExpression)) return true; if (some(allDecorators == null ? void 0 : allDecorators.parameters, parameterDecoratorsContainPrivateIdentifierInExpression)) @@ -92768,7 +94049,7 @@ function transformLegacyDecorators(context) { const classExpression = factory2.createClassExpression( /*modifiers*/ void 0, - name, + name && isGeneratedIdentifier(name) ? void 0 : name, /*typeParameters*/ void 0, heritageClauses, @@ -92813,7 +94094,7 @@ function transformLegacyDecorators(context) { return factory2.updateConstructorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ); } @@ -92829,12 +94110,12 @@ function transformLegacyDecorators(context) { node, visitNodes2(node.modifiers, modifierVisitor, isModifier), node.asteriskToken, - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionToken*/ void 0, /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -92844,8 +94125,8 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updateGetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -92855,8 +94136,8 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updateSetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ), node); } @@ -92867,7 +94148,7 @@ function transformLegacyDecorators(context) { return finishClassElement(factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -92880,7 +94161,7 @@ function transformLegacyDecorators(context) { node, elideNodes(factory2, node.modifiers), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -92895,20 +94176,30 @@ function transformLegacyDecorators(context) { } return updated; } + function isSyntheticMetadataDecorator(node) { + return isCallToHelper(node.expression, "___metadata"); + } function transformAllDecoratorsOfDeclaration(allDecorators) { if (!allDecorators) { return void 0; } + const { false: decorators, true: metadata } = groupBy(allDecorators.decorators, isSyntheticMetadataDecorator); const decoratorExpressions = []; - addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + addRange(decoratorExpressions, map(decorators, transformDecorator)); addRange(decoratorExpressions, flatMap(allDecorators.parameters, transformDecoratorsOfParameter)); + addRange(decoratorExpressions, map(metadata, transformDecorator)); return decoratorExpressions; } function addClassElementDecorationStatements(statements, node, isStatic2) { addRange(statements, map(generateClassElementDecorationExpressions(node, isStatic2), (expr) => factory2.createExpressionStatement(expr))); } function isDecoratedClassElement(member, isStaticElement, parent2) { - return nodeOrChildIsDecorated(member, parent2) && isStaticElement === isStatic(member); + return nodeOrChildIsDecorated( + /*legacyDecorators*/ + true, + member, + parent2 + ) && isStaticElement === isStatic(member); } function getDecoratedClassElements(node, isStatic2) { return filter(node.members, (m) => isDecoratedClassElement(m, isStatic2, node)); @@ -92922,7 +94213,12 @@ function transformLegacyDecorators(context) { return expressions; } function generateClassElementDecorationExpression(node, member) { - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); const decoratorExpressions = transformAllDecoratorsOfDeclaration(allDecorators); if (!decoratorExpressions) { return void 0; @@ -92977,7 +94273,7 @@ function transformLegacyDecorators(context) { return expression; } function transformDecorator(decorator) { - return visitNode(decorator.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(decorator.expression, visitor, isExpression)); } function transformDecoratorsOfParameter(decorators, parameterOffset) { let expressions; @@ -93065,6 +94361,1713 @@ function transformLegacyDecorators(context) { } } +// src/compiler/transformers/esDecorators.ts +function transformESDecorators(context) { + const { + factory: factory2, + getEmitHelperFactory: emitHelpers, + startLexicalEnvironment, + endLexicalEnvironment, + hoistVariableDeclaration + } = context; + let top; + let classInfo; + let classThis; + let classSuper; + let pendingExpressions; + let shouldTransformPrivateStaticElementsInFile; + return chainBundle(context, transformSourceFile); + function transformSourceFile(node) { + top = void 0; + shouldTransformPrivateStaticElementsInFile = false; + const visited = visitEachChild(node, visitor, context); + addEmitHelpers(visited, context.readEmitHelpers()); + if (shouldTransformPrivateStaticElementsInFile) { + addInternalEmitFlags(visited, 32 /* TransformPrivateStaticElements */); + shouldTransformPrivateStaticElementsInFile = false; + } + return visited; + } + function updateState() { + classInfo = void 0; + classThis = void 0; + classSuper = void 0; + switch (top == null ? void 0 : top.kind) { + case "class": + classInfo = top.classInfo; + break; + case "class-element": + classInfo = top.next.classInfo; + classThis = top.classThis; + classSuper = top.classSuper; + break; + case "name": + const grandparent = top.next.next.next; + if ((grandparent == null ? void 0 : grandparent.kind) === "class-element") { + classInfo = grandparent.next.classInfo; + classThis = grandparent.classThis; + classSuper = grandparent.classSuper; + } + break; + } + } + function enterClass(classInfo2) { + top = { kind: "class", next: top, classInfo: classInfo2, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + function exitClass() { + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + function enterClassElement(node) { + var _a2, _b; + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "class-element", next: top }; + if (isClassStaticBlockDeclaration(node) || isPropertyDeclaration(node) && hasStaticModifier(node)) { + top.classThis = (_a2 = top.next.classInfo) == null ? void 0 : _a2.classThis; + top.classSuper = (_b = top.next.classInfo) == null ? void 0 : _b.classSuper; + } + updateState(); + } + function exitClassElement() { + var _a2; + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + Debug.assert(((_a2 = top.next) == null ? void 0 : _a2.kind) === "class", "Incorrect value for top.next.kind.", () => { + var _a3; + return `Expected top.next.kind to be 'class' but got '${(_a3 = top.next) == null ? void 0 : _a3.kind}' instead.`; + }); + top = top.next; + updateState(); + } + function enterName() { + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "name", next: top }; + updateState(); + } + function exitName() { + Debug.assert((top == null ? void 0 : top.kind) === "name", "Incorrect value for top.kind.", () => `Expected top.kind to be 'name' but got '${top == null ? void 0 : top.kind}' instead.`); + top = top.next; + updateState(); + } + function enterOther() { + if ((top == null ? void 0 : top.kind) === "other") { + Debug.assert(!pendingExpressions); + top.depth++; + } else { + top = { kind: "other", next: top, depth: 0, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + } + function exitOther() { + Debug.assert((top == null ? void 0 : top.kind) === "other", "Incorrect value for top.kind.", () => `Expected top.kind to be 'other' but got '${top == null ? void 0 : top.kind}' instead.`); + if (top.depth > 0) { + Debug.assert(!pendingExpressions); + top.depth--; + } else { + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + } + function shouldVisitNode(node) { + return !!(node.transformFlags & 33554432 /* ContainsDecorators */) || !!classThis && !!(node.transformFlags & 16384 /* ContainsLexicalThis */) || !!classThis && !!classSuper && !!(node.transformFlags & 134217728 /* ContainsLexicalSuper */); + } + function visitor(node) { + if (!shouldVisitNode(node)) { + return node; + } + switch (node.kind) { + case 167 /* Decorator */: + return Debug.fail("Use `modifierVisitor` instead."); + case 260 /* ClassDeclaration */: + return visitClassDeclaration(node); + case 228 /* ClassExpression */: + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); + case 173 /* Constructor */: + case 169 /* PropertyDeclaration */: + case 172 /* ClassStaticBlockDeclaration */: + return Debug.fail("Not supported outside of a class. Use 'classElementVisitor' instead."); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + false + ); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); + case 108 /* ThisKeyword */: + return visitThisExpression(node); + case 245 /* ForStatement */: + return visitForStatement(node); + case 241 /* ExpressionStatement */: + return visitExpressionStatement(node); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + false + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 210 /* CallExpression */: + return visitCallExpression(node); + case 212 /* TaggedTemplateExpression */: + return visitTaggedTemplateExpression(node); + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discard*/ + false + ); + case 208 /* PropertyAccessExpression */: + return visitPropertyAccessExpression(node); + case 209 /* ElementAccessExpression */: + return visitElementAccessExpression(node); + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); + case 171 /* MethodDeclaration */: + case 175 /* SetAccessor */: + case 174 /* GetAccessor */: + case 215 /* FunctionExpression */: + case 259 /* FunctionDeclaration */: { + enterOther(); + const result = visitEachChild(node, fallbackVisitor, context); + exitOther(); + return result; + } + default: + return visitEachChild(node, fallbackVisitor, context); + } + } + function fallbackVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return visitor(node); + } + } + function modifierVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return node; + } + } + function classElementVisitor(node) { + switch (node.kind) { + case 173 /* Constructor */: + return visitConstructorDeclaration(node); + case 171 /* MethodDeclaration */: + return visitMethodDeclaration(node); + case 174 /* GetAccessor */: + return visitGetAccessorDeclaration(node); + case 175 /* SetAccessor */: + return visitSetAccessorDeclaration(node); + case 169 /* PropertyDeclaration */: + return visitPropertyDeclaration(node); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); + default: + return visitor(node); + } + } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } + function discardedValueVisitor(node) { + switch (node.kind) { + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discarded*/ + true + ); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + true + ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); + default: + return visitor(node); + } + } + function getHelperVariableName(node) { + let declarationName = node.name && isIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name) : node.name && isPrivateIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name).slice(1) : node.name && isStringLiteral(node.name) && isIdentifierText(node.name.text, 99 /* ESNext */) ? node.name.text : isClassLike(node) ? "class" : "member"; + if (isGetAccessor(node)) + declarationName = `get_${declarationName}`; + if (isSetAccessor(node)) + declarationName = `set_${declarationName}`; + if (node.name && isPrivateIdentifier(node.name)) + declarationName = `private_${declarationName}`; + if (isStatic(node)) + declarationName = `static_${declarationName}`; + return "_" + declarationName; + } + function createHelperVariable(node, suffix) { + return factory2.createUniqueName(`${getHelperVariableName(node)}_${suffix}`, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */); + } + function createLet(name, initializer) { + return factory2.createVariableStatement( + /*modifiers*/ + void 0, + factory2.createVariableDeclarationList([ + factory2.createVariableDeclaration( + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ) + ], 1 /* Let */) + ); + } + function createClassInfo(node) { + let instanceExtraInitializersName; + let staticExtraInitializersName; + let hasStaticInitializers = false; + let hasNonAmbientInstanceFields = false; + let hasStaticPrivateClassElements = false; + for (const member of node.members) { + if (isNamedClassElement(member) && nodeOrChildIsDecorated( + /*legacyDecorators*/ + false, + member, + node + )) { + if (hasStaticModifier(member)) { + staticExtraInitializersName != null ? staticExtraInitializersName : staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */); + } else { + instanceExtraInitializersName != null ? instanceExtraInitializersName : instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + } + } + if (isClassStaticBlockDeclaration(member)) { + hasStaticInitializers = true; + } else if (isPropertyDeclaration(member)) { + if (hasStaticModifier(member)) { + hasStaticInitializers || (hasStaticInitializers = !!member.initializer || hasDecorators(member)); + } else { + hasNonAmbientInstanceFields || (hasNonAmbientInstanceFields = !isAmbientPropertyDeclaration(member)); + } + } + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + hasStaticPrivateClassElements = true; + } + if (staticExtraInitializersName && instanceExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) { + break; + } + } + return { + class: node, + instanceExtraInitializersName, + staticExtraInitializersName, + hasStaticInitializers, + hasNonAmbientInstanceFields, + hasStaticPrivateClassElements + }; + } + function containsLexicalSuperInStaticInitializer(node) { + for (const member of node.members) { + if (isClassStaticBlockDeclaration(member) || isPropertyDeclaration(member) && hasStaticModifier(member)) { + if (member.transformFlags & 134217728 /* ContainsLexicalSuper */) { + return true; + } + } + } + return false; + } + function transformClassLike(node, className) { + var _a2, _b, _c, _d, _e; + startLexicalEnvironment(); + const classReference = (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node); + const classInfo2 = createClassInfo(node); + const classDefinitionStatements = []; + let leadingBlockStatements; + let trailingBlockStatements; + let syntheticConstructor; + let heritageClauses; + let shouldTransformPrivateStaticElementsInClass = false; + const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass(node)); + if (classDecorators) { + classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */); + classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */); + classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */); + classInfo2.classThis = factory2.createUniqueName("_classThis", 16 /* Optimistic */); + classDefinitionStatements.push( + createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)), + createLet(classInfo2.classDescriptorName), + createLet(classInfo2.classExtraInitializersName, factory2.createArrayLiteralExpression()), + createLet(classInfo2.classThis) + ); + if (classInfo2.hasStaticPrivateClassElements) { + shouldTransformPrivateStaticElementsInClass = true; + shouldTransformPrivateStaticElementsInFile = true; + } + } + if (classDecorators && containsLexicalSuperInStaticInitializer(node)) { + const extendsClause = getHeritageClause(node.heritageClauses, 94 /* ExtendsKeyword */); + const extendsElement = extendsClause && firstOrUndefined(extendsClause.types); + const extendsExpression = extendsElement && visitNode(extendsElement.expression, visitor, isExpression); + if (extendsExpression) { + classInfo2.classSuper = factory2.createUniqueName("_classSuper", 16 /* Optimistic */); + const unwrapped = skipOuterExpressions(extendsExpression); + const safeExtendsExpression = isClassExpression(unwrapped) && !unwrapped.name || isFunctionExpression(unwrapped) && !unwrapped.name || isArrowFunction(unwrapped) ? factory2.createComma(factory2.createNumericLiteral(0), extendsExpression) : extendsExpression; + classDefinitionStatements.push(createLet(classInfo2.classSuper, safeExtendsExpression)); + const updatedExtendsElement = factory2.updateExpressionWithTypeArguments( + extendsElement, + classInfo2.classSuper, + /*typeArguments*/ + void 0 + ); + const updatedExtendsClause = factory2.updateHeritageClause(extendsClause, [updatedExtendsElement]); + heritageClauses = factory2.createNodeArray([updatedExtendsClause]); + } + } else { + heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + } + const renamedClassThis = (_b = classInfo2.classThis) != null ? _b : factory2.createThis(); + const needsSetNameHelper = !((_c = getOriginalNode(node, isClassLike)) == null ? void 0 : _c.name) && (classDecorators || !isStringLiteral(className) || !isEmptyStringLiteral(className)); + if (needsSetNameHelper) { + const setNameExpr = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), className); + leadingBlockStatements = append(leadingBlockStatements, factory2.createExpressionStatement(setNameExpr)); + } + enterClass(classInfo2); + let members = visitNodes2(node.members, classElementVisitor, isClassElement); + if (pendingExpressions) { + let outerThis; + for (let expression of pendingExpressions) { + expression = visitNode(expression, function thisVisitor(node2) { + if (!(node2.transformFlags & 16384 /* ContainsLexicalThis */)) { + return node2; + } + switch (node2.kind) { + case 108 /* ThisKeyword */: + if (!outerThis) { + outerThis = factory2.createUniqueName("_outerThis", 16 /* Optimistic */); + classDefinitionStatements.unshift(createLet(outerThis, factory2.createThis())); + } + return outerThis; + default: + return visitEachChild(node2, thisVisitor, context); + } + }, isExpression); + const statement = factory2.createExpressionStatement(expression); + leadingBlockStatements = append(leadingBlockStatements, statement); + } + pendingExpressions = void 0; + } + exitClass(); + if (classInfo2.instanceExtraInitializersName && !getFirstConstructorWithBody(node)) { + const initializerStatements = prepareConstructor(node, classInfo2); + if (initializerStatements) { + const extendsClauseElement = getEffectiveBaseTypeNode(node); + const isDerivedClass = !!(extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */); + const constructorStatements = []; + if (isDerivedClass) { + const spreadArguments = factory2.createSpreadElement(factory2.createIdentifier("arguments")); + const superCall = factory2.createCallExpression( + factory2.createSuper(), + /*typeArguments*/ + void 0, + [spreadArguments] + ); + constructorStatements.push(factory2.createExpressionStatement(superCall)); + } + addRange(constructorStatements, initializerStatements); + const constructorBody = factory2.createBlock( + constructorStatements, + /*multiLine*/ + true + ); + syntheticConstructor = factory2.createConstructorDeclaration( + /*modifiers*/ + void 0, + [], + constructorBody + ); + } + } + if (classInfo2.staticExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.staticExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.instanceExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.instanceExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (!isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticFieldDecorationStatements); + if (classInfo2.classDescriptorName && classInfo2.classDecoratorsName && classInfo2.classExtraInitializersName && classInfo2.classThis) { + leadingBlockStatements != null ? leadingBlockStatements : leadingBlockStatements = []; + const valueProperty = factory2.createPropertyAssignment("value", factory2.createThis()); + const classDescriptor = factory2.createObjectLiteralExpression([valueProperty]); + const classDescriptorAssignment = factory2.createAssignment(classInfo2.classDescriptorName, classDescriptor); + const classNameReference = factory2.createPropertyAccessExpression(factory2.createThis(), "name"); + const esDecorateHelper2 = emitHelpers().createESDecorateHelper( + factory2.createNull(), + classDescriptorAssignment, + classInfo2.classDecoratorsName, + { kind: "class", name: classNameReference }, + factory2.createNull(), + classInfo2.classExtraInitializersName + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateHelper2); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(node)); + leadingBlockStatements.push(esDecorateStatement); + const classDescriptorValueReference = factory2.createPropertyAccessExpression(classInfo2.classDescriptorName, "value"); + const classThisAssignment = factory2.createAssignment(classInfo2.classThis, classDescriptorValueReference); + const classReferenceAssignment = factory2.createAssignment(classReference, classThisAssignment); + leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment)); + } + if (classInfo2.staticExtraInitializersName) { + const runStaticInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.staticExtraInitializersName); + const runStaticInitializersStatement = factory2.createExpressionStatement(runStaticInitializersHelper); + setSourceMapRange(runStaticInitializersStatement, (_d = node.name) != null ? _d : moveRangePastDecorators(node)); + leadingBlockStatements = append(leadingBlockStatements, runStaticInitializersStatement); + } + if (classInfo2.classExtraInitializersName) { + const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName); + const runClassInitializersStatement = factory2.createExpressionStatement(runClassInitializersHelper); + setSourceMapRange(runClassInitializersStatement, (_e = node.name) != null ? _e : moveRangePastDecorators(node)); + trailingBlockStatements = append(trailingBlockStatements, runClassInitializersStatement); + } + if (leadingBlockStatements && trailingBlockStatements && !classInfo2.hasStaticInitializers) { + addRange(leadingBlockStatements, trailingBlockStatements); + trailingBlockStatements = void 0; + } + let newMembers = members; + if (leadingBlockStatements) { + const leadingStaticBlockBody = factory2.createBlock( + leadingBlockStatements, + /*multiline*/ + true + ); + const leadingStaticBlock = factory2.createClassStaticBlockDeclaration(leadingStaticBlockBody); + if (shouldTransformPrivateStaticElementsInClass) { + setInternalEmitFlags(leadingStaticBlock, 32 /* TransformPrivateStaticElements */); + } + newMembers = [leadingStaticBlock, ...newMembers]; + } + if (syntheticConstructor) { + newMembers = [...newMembers, syntheticConstructor]; + } + if (trailingBlockStatements) { + const trailingStaticBlockBody = factory2.createBlock( + trailingBlockStatements, + /*multiline*/ + true + ); + const trailingStaticBlock = factory2.createClassStaticBlockDeclaration(trailingStaticBlockBody); + newMembers = [...newMembers, trailingStaticBlock]; + } + if (newMembers !== members) { + members = setTextRange(factory2.createNodeArray(newMembers), members); + } + const lexicalEnvironment = endLexicalEnvironment(); + let classExpression; + if (classDecorators) { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + const classReferenceDeclaration = factory2.createVariableDeclaration( + classReference, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + classExpression + ); + const classReferenceVarDeclList = factory2.createVariableDeclarationList([classReferenceDeclaration]); + const returnExpr = classInfo2.classThis ? factory2.createAssignment(classReference, classInfo2.classThis) : classReference; + classDefinitionStatements.push( + factory2.createVariableStatement( + /*modifiers*/ + void 0, + classReferenceVarDeclList + ), + factory2.createReturnStatement(returnExpr) + ); + } else { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + classDefinitionStatements.push(factory2.createReturnStatement(classExpression)); + } + if (shouldTransformPrivateStaticElementsInClass) { + addInternalEmitFlags(classExpression, 32 /* TransformPrivateStaticElements */); + for (const member of classExpression.members) { + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + addInternalEmitFlags(member, 32 /* TransformPrivateStaticElements */); + } + } + } + setOriginalNode(classExpression, node); + getOrCreateEmitNode(classExpression).classThis = classInfo2.classThis; + return factory2.createImmediatelyInvokedArrowFunction(factory2.mergeLexicalEnvironment(classDefinitionStatements, lexicalEnvironment)); + } + function isDecoratedClassLike(node) { + return classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + false, + node + ) || childIsDecorated( + /*legacyDecorators*/ + false, + node + ); + } + function visitClassDeclaration(node) { + var _a2; + if (isDecoratedClassLike(node)) { + if (hasSyntacticModifier(node, 1 /* Export */) && hasSyntacticModifier(node, 1024 /* Default */)) { + const originalClass = (_a2 = getOriginalNode(node, isClassLike)) != null ? _a2 : node; + const className = originalClass.name ? factory2.createStringLiteralFromNode(originalClass.name) : factory2.createStringLiteral("default"); + const iife = transformClassLike(node, className); + const statement = factory2.createExportDefault(iife); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + setSourceMapRange(statement, moveRangePastDecorators(node)); + return statement; + } else { + Debug.assertIsDefined(node.name, "A class declaration that is not a default export must have a name."); + const iife = transformClassLike(node, factory2.createStringLiteralFromNode(node.name)); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const varDecl = factory2.createVariableDeclaration( + node.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + iife + ); + const varDecls = factory2.createVariableDeclarationList([varDecl], 1 /* Let */); + const statement = factory2.createVariableStatement(modifiers, varDecls); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + return statement; + } + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassDeclaration( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function visitClassExpression(node, referencedName) { + if (isDecoratedClassLike(node)) { + const className = node.name ? factory2.createStringLiteralFromNode(node.name) : referencedName != null ? referencedName : factory2.createStringLiteral(""); + const iife = transformClassLike(node, className); + setOriginalNode(iife, node); + return iife; + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassExpression( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function prepareConstructor(_parent, classInfo2) { + if (classInfo2.instanceExtraInitializersName && !classInfo2.hasNonAmbientInstanceFields) { + const statements = []; + statements.push( + factory2.createExpressionStatement( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo2.instanceExtraInitializersName + ) + ) + ); + return statements; + } + } + function visitConstructorDeclaration(node) { + enterClassElement(node); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const parameters = visitNodes2(node.parameters, visitor, isParameter); + let body; + if (node.body && classInfo) { + const initializerStatements = prepareConstructor(classInfo.class, classInfo); + if (initializerStatements) { + const statements = []; + const nonPrologueStart = factory2.copyPrologue( + node.body.statements, + statements, + /*ensureUseStrict*/ + false, + visitor + ); + addRange(statements, initializerStatements); + addRange(statements, visitNodes2(node.body.statements, visitor, isStatement, nonPrologueStart)); + body = factory2.createBlock( + statements, + /*multiLine*/ + true + ); + setOriginalNode(body, node.body); + setTextRange(body, node.body); + } + } + body != null ? body : body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return factory2.updateConstructorDeclaration(node, modifiers, parameters, body); + } + function finishClassElement(updated, original) { + if (updated !== original) { + setCommentRange(updated, original); + setSourceMapRange(updated, moveRangePastDecorators(original)); + } + return updated; + } + function partialTransformClassElement(member, useNamedEvaluation, classInfo2, createDescriptor) { + var _a2, _b, _c, _d, _e, _f, _g, _h; + let referencedName; + let name; + let initializersName; + let thisArg; + let descriptorName; + if (!classInfo2) { + const modifiers2 = visitNodes2(member.modifiers, modifierVisitor, isModifier); + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + return { modifiers: modifiers2, referencedName, name, initializersName, descriptorName, thisArg }; + } + const memberDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClassElement( + member, + classInfo2.class, + /*useLegacyDecorators*/ + false + )); + const modifiers = visitNodes2(member.modifiers, modifierVisitor, isModifier); + if (memberDecorators) { + const memberDecoratorsName = createHelperVariable(member, "decorators"); + const memberDecoratorsArray = factory2.createArrayLiteralExpression(memberDecorators); + const memberDecoratorsAssignment = factory2.createAssignment(memberDecoratorsName, memberDecoratorsArray); + const memberInfo = { memberDecoratorsName }; + (_a2 = classInfo2.memberInfos) != null ? _a2 : classInfo2.memberInfos = /* @__PURE__ */ new Map(); + classInfo2.memberInfos.set(member, memberInfo); + pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + pendingExpressions.push(memberDecoratorsAssignment); + const statements = isMethodOrAccessor(member) || isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_b = classInfo2.staticNonFieldDecorationStatements) != null ? _b : classInfo2.staticNonFieldDecorationStatements = [] : (_c = classInfo2.nonStaticNonFieldDecorationStatements) != null ? _c : classInfo2.nonStaticNonFieldDecorationStatements = [] : isPropertyDeclaration(member) && !isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_d = classInfo2.staticFieldDecorationStatements) != null ? _d : classInfo2.staticFieldDecorationStatements = [] : (_e = classInfo2.nonStaticFieldDecorationStatements) != null ? _e : classInfo2.nonStaticFieldDecorationStatements = [] : Debug.fail(); + const kind = isGetAccessorDeclaration(member) ? "getter" : isSetAccessorDeclaration(member) ? "setter" : isMethodDeclaration(member) ? "method" : isAutoAccessorPropertyDeclaration(member) ? "accessor" : isPropertyDeclaration(member) ? "field" : Debug.fail(); + let propertyName; + if (isIdentifier(member.name) || isPrivateIdentifier(member.name)) { + propertyName = { computed: false, name: member.name }; + } else if (isPropertyNameLiteral(member.name)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(member.name) }; + } else { + const expression = member.name.expression; + if (isPropertyNameLiteral(expression) && !isIdentifier(expression)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(expression) }; + } else { + enterName(); + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + propertyName = { computed: true, name: referencedName }; + exitName(); + } + } + const context2 = { + kind, + name: propertyName, + static: isStatic(member), + private: isPrivateIdentifier(member.name), + access: { + // 15.7.3 CreateDecoratorAccessObject (kind, name) + // 2. If _kind_ is ~field~, ~method~, ~accessor~, or ~getter~, then ... + get: isPropertyDeclaration(member) || isGetAccessorDeclaration(member) || isMethodDeclaration(member), + // 3. If _kind_ is ~field~, ~accessor~, or ~setter~, then ... + set: isPropertyDeclaration(member) || isSetAccessorDeclaration(member) + } + }; + const extraInitializers = isStatic(member) ? (_f = classInfo2.staticExtraInitializersName) != null ? _f : classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */) : (_g = classInfo2.instanceExtraInitializersName) != null ? _g : classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + if (isMethodOrAccessor(member)) { + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) { + descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier)); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor != null ? descriptor : factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), extraInitializers); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } else if (isPropertyDeclaration(member)) { + initializersName = (_h = memberInfo.memberInitializersName) != null ? _h : memberInfo.memberInitializersName = createHelperVariable(member, "initializers"); + if (isStatic(member)) { + thisArg = classInfo2.classThis; + } + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && hasAccessorModifier(member) && createDescriptor) { + descriptor = createDescriptor( + member, + /*modifiers*/ + void 0 + ); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper( + isAutoAccessorPropertyDeclaration(member) ? factory2.createThis() : factory2.createNull(), + descriptor != null ? descriptor : factory2.createNull(), + memberDecoratorsName, + context2, + initializersName, + extraInitializers + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } + } + if (name === void 0) { + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + } + if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) { + setEmitFlags(name, 1024 /* NoLeadingComments */); + } + return { modifiers, referencedName, name, initializersName, descriptorName, thisArg }; + } + function visitMethodDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createMethodDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createMethodDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateMethodDeclaration( + node, + modifiers, + node.asteriskToken, + name, + /*questionToken*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitGetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createGetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createGetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateGetAccessorDeclaration( + node, + modifiers, + name, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitSetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createSetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createSetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateSetAccessorDeclaration(node, modifiers, name, parameters, body), node); + } + } + function visitClassStaticBlockDeclaration(node) { + enterClassElement(node); + if (classInfo) + classInfo.hasStaticInitializers = true; + const result = visitEachChild(node, visitor, context); + exitClassElement(); + return result; + } + function visitPropertyDeclaration(node) { + enterClassElement(node); + Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented."); + const useNamedEvaluation = isNamedEvaluation(node, isAnonymousClassNeedingAssignedName); + const { modifiers, name, referencedName, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, useNamedEvaluation, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0); + startLexicalEnvironment(); + let initializer = referencedName ? visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression) : visitNode(node.initializer, visitor, isExpression); + if (initializersName) { + initializer = emitHelpers().createRunInitializersHelper( + thisArg != null ? thisArg : factory2.createThis(), + initializersName, + initializer != null ? initializer : factory2.createVoidZero() + ); + } + if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) { + classInfo.hasInjectedInstanceInitializers = true; + initializer != null ? initializer : initializer = factory2.createVoidZero(); + initializer = factory2.createParenthesizedExpression(factory2.createComma( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo.instanceExtraInitializersName + ), + initializer + )); + } + if (isStatic(node) && classInfo && initializer) { + classInfo.hasStaticInitializers = true; + } + const declarations = endLexicalEnvironment(); + if (some(declarations)) { + initializer = factory2.createImmediatelyInvokedArrowFunction([ + ...declarations, + factory2.createReturnStatement(initializer) + ]); + } + exitClassElement(); + if (hasAccessorModifier(node) && descriptorName) { + const commentRange = getCommentRange(node); + const sourceMapRange = getSourceMapRange(node); + const name2 = node.name; + let getterName = name2; + let setterName = name2; + if (isComputedPropertyName(name2) && !isSimpleInlineableExpression(name2.expression)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name2); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name2, visitNode(name2.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name2, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name2.expression); + const expression = visitNode(name2.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name2.expression); + getterName = factory2.updateComputedPropertyName(name2, assignment); + setterName = factory2.updateComputedPropertyName(name2, temp); + } + } + const modifiersWithoutAccessor = visitNodes2(modifiers, (node2) => node2.kind !== 127 /* AccessorKeyword */ ? node2 : void 0, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiersWithoutAccessor, initializer); + setOriginalNode(backingField, node); + setEmitFlags(backingField, 3072 /* NoComments */); + setSourceMapRange(backingField, sourceMapRange); + setSourceMapRange(backingField.name, node.name); + const getter = createGetAccessorDescriptorForwarder(modifiersWithoutAccessor, getterName, descriptorName); + setOriginalNode(getter, node); + setCommentRange(getter, commentRange); + setSourceMapRange(getter, sourceMapRange); + const setter = createSetAccessorDescriptorForwarder(modifiersWithoutAccessor, setterName, descriptorName); + setOriginalNode(setter, node); + setEmitFlags(setter, 3072 /* NoComments */); + setSourceMapRange(setter, sourceMapRange); + return [backingField, getter, setter]; + } + return finishClassElement(factory2.updatePropertyDeclaration( + node, + modifiers, + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ), node); + } + function visitThisExpression(node) { + return classThis != null ? classThis : node; + } + function visitCallExpression(node) { + if (isSuperProperty(node.expression) && classThis) { + const expression = visitNode(node.expression, visitor, isExpression); + const argumentsList = visitNodes2(node.arguments, visitor, isExpression); + const invocation = factory2.createFunctionCallCall(expression, classThis, argumentsList); + setOriginalNode(invocation, node); + setTextRange(invocation, node); + return invocation; + } + return visitEachChild(node, visitor, context); + } + function visitTaggedTemplateExpression(node) { + if (isSuperProperty(node.tag) && classThis) { + const tag = visitNode(node.tag, visitor, isExpression); + const boundTag = factory2.createFunctionBindCall(tag, classThis, []); + setOriginalNode(boundTag, node); + setTextRange(boundTag, node); + const template = visitNode(node.template, visitor, isTemplateLiteral); + return factory2.updateTaggedTemplateExpression( + node, + boundTag, + /*typeArguments*/ + void 0, + template + ); + } + return visitEachChild(node, visitor, context); + } + function visitPropertyAccessExpression(node) { + if (isSuperProperty(node) && isIdentifier(node.name) && classThis && classSuper) { + const propertyName = factory2.createStringLiteralFromNode(node.name); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitElementAccessExpression(node) { + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = visitNode(node.argumentExpression, visitor, isExpression); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + let updated; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } else { + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + node.dotDotDotToken, + visitNode(node.name, visitor, isBindingName), + /*questionToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); + } + if (updated !== node) { + setCommentRange(updated, node); + setTextRange(updated, moveRangePastModifiers(node)); + setSourceMapRange(updated, moveRangePastModifiers(node)); + setEmitFlags(updated.name, 64 /* NoTrailingSourceMap */); + } + return updated; + } + function isAnonymousClassNeedingAssignedName(node) { + return isClassExpression(node) && !node.name && isDecoratedClassLike(node); + } + function visitForStatement(node) { + return factory2.updateForStatement( + node, + visitNode(node.initializer, discardedValueVisitor, isForInitializer), + visitNode(node.condition, visitor, isExpression), + visitNode(node.incrementor, discardedValueVisitor, isExpression), + visitIterationBody(node.statement, visitor, context) + ); + } + function visitExpressionStatement(node) { + return visitEachChild(node, discardedValueVisitor, context); + } + function visitBinaryExpression(node, discarded) { + if (isDestructuringAssignment(node)) { + const left = visitAssignmentPattern(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression(node)) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isSuperProperty(node.left) && classThis && classSuper) { + let setterName = isElementAccessExpression(node.left) ? visitNode(node.left.argumentExpression, visitor, isExpression) : isIdentifier(node.left.name) ? factory2.createStringLiteralFromNode(node.left.name) : void 0; + if (setterName) { + let expression = visitNode(node.right, visitor, isExpression); + if (isCompoundAssignment(node.operatorToken.kind)) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + const superPropertyGet = factory2.createReflectGetCall( + classSuper, + getterName, + classThis + ); + setOriginalNode(superPropertyGet, node.left); + setTextRange(superPropertyGet, node.left); + expression = factory2.createBinaryExpression( + superPropertyGet, + getNonAssignmentOperatorForCompoundAssignment(node.operatorToken.kind), + expression + ); + setTextRange(expression, node); + } + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + if (temp) { + expression = factory2.createAssignment(temp, expression); + setTextRange(temp, node); + } + expression = factory2.createReflectSetCall( + classSuper, + setterName, + expression, + classThis + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + if (node.operatorToken.kind === 27 /* CommaToken */) { + const left = visitNode(node.left, discardedValueVisitor, isExpression); + const right = visitNode(node.right, discarded ? discardedValueVisitor : visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitEachChild(node, visitor, context); + } + function visitPreOrPostfixUnaryExpression(node, discarded) { + if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { + const operand = skipParentheses(node.operand); + if (isSuperProperty(operand) && classThis && classSuper) { + let setterName = isElementAccessExpression(operand) ? visitNode(operand.argumentExpression, visitor, isExpression) : isIdentifier(operand.name) ? factory2.createStringLiteralFromNode(operand.name) : void 0; + if (setterName) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + let expression = factory2.createReflectGetCall(classSuper, getterName, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); + expression = factory2.createReflectSetCall(classSuper, setterName, expression, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + return visitEachChild(node, visitor, context); + } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.getGeneratedNameForNode(node); + hoistVariableDeclaration(referencedName); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } + function visitPropertyName(node) { + if (isComputedPropertyName(node)) { + return visitComputedPropertyName(node); + } + return visitNode(node, visitor, isPropertyName); + } + function visitComputedPropertyName(node) { + let expression = visitNode(node.expression, visitor, isExpression); + if (!isSimpleInlineableExpression(expression)) { + expression = injectPendingExpressions(expression); + } + return factory2.updateComputedPropertyName(node, expression); + } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (propertyName) { + const paramName = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + const expression = factory2.createAssignmentTargetWrapper( + paramName, + factory2.createReflectSetCall( + classSuper, + propertyName, + paramName, + classThis + ) + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + return expression; + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentTarget = visitDestructuringAssignmentTarget(node.left); + let initializer; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + initializer = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + } else { + initializer = visitNode(node.right, visitor, isExpression); + } + return factory2.updateBinaryExpression(node, assignmentTarget, node.operatorToken, initializer); + } else { + return visitDestructuringAssignmentTarget(node); + } + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const name = visitNode(node.name, visitor, isIdentifier); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + const elements = visitNodes2(node.elements, visitArrayAssignmentElement, isExpression); + return factory2.updateArrayLiteralExpression(node, elements); + } else { + const properties = visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike); + return factory2.updateObjectLiteralExpression(node, properties); + } + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const referencedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function injectPendingExpressions(expression) { + if (some(pendingExpressions)) { + if (isParenthesizedExpression(expression)) { + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); + } else { + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); + } + pendingExpressions = void 0; + } + return expression; + } + function transformAllDecoratorsOfDeclaration(allDecorators) { + if (!allDecorators) { + return void 0; + } + const decoratorExpressions = []; + addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + return decoratorExpressions; + } + function transformDecorator(decorator) { + const expression = visitNode(decorator.expression, visitor, isExpression); + setEmitFlags(expression, 3072 /* NoComments */); + return expression; + } + function createDescriptorMethod(original, name, modifiers, asteriskToken, kind, parameters, body) { + const func = factory2.createFunctionExpression( + modifiers, + asteriskToken, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body != null ? body : factory2.createBlock([]) + ); + setOriginalNode(func, original); + setSourceMapRange(func, moveRangePastDecorators(original)); + setEmitFlags(func, 3072 /* NoComments */); + const prefix = kind === "get" || kind === "set" ? kind : void 0; + const functionName = factory2.createStringLiteralFromNode( + name, + /*isSingleQuote*/ + void 0 + ); + const namedFunction = emitHelpers().createSetFunctionNameHelper(func, functionName, prefix); + const method = factory2.createPropertyAssignment(factory2.createIdentifier(kind), namedFunction); + setOriginalNode(method, original); + setSourceMapRange(method, moveRangePastDecorators(original)); + setEmitFlags(method, 3072 /* NoComments */); + return method; + } + function createMethodDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + node.asteriskToken, + "value", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createGetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createSetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createAccessorPropertyDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ) + ) + ]) + ), + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createExpressionStatement( + factory2.createAssignment( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ), + factory2.createIdentifier("value") + ) + ) + ]) + ) + ]); + } + function createMethodDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("value") + ) + ) + ]) + ); + } + function createGetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("get") + ), + factory2.createThis(), + [] + ) + ) + ]) + ); + } + function createSetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createSetAccessorDeclaration( + modifiers, + name, + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("set") + ), + factory2.createThis(), + [factory2.createIdentifier("value")] + ) + ) + ]) + ); + } + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } +} + // src/compiler/transformers/es2017.ts function transformES2017(context) { const { @@ -93243,21 +96246,21 @@ function transformES2017(context) { node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } function visitForOfStatementInAsyncBody(node) { return factory2.updateForOfStatement( node, - visitNode(node.awaitModifier, visitor, isToken), + visitNode(node.awaitModifier, visitor, isAwaitKeyword), isVariableDeclarationListWithCollidingName(node.initializer) ? visitVariableDeclarationListWithCollidingNames( node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } @@ -93294,7 +96297,7 @@ function transformES2017(context) { function visitConstructorDeclaration(node) { return factory2.updateConstructorDeclaration( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), visitParameterList(node.parameters, visitor, context), transformMethodBody(node) ); @@ -93352,7 +96355,7 @@ function transformES2017(context) { function visitFunctionExpression(node) { return factory2.updateFunctionExpression( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), node.asteriskToken, node.name, /*typeParameters*/ @@ -93366,7 +96369,7 @@ function transformES2017(context) { function visitArrowFunction(node) { return factory2.updateArrowFunction( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), /*typeParameters*/ void 0, visitParameterList(node.parameters, visitor, context), @@ -93423,7 +96426,7 @@ function transformES2017(context) { ), node ); - return visitNode(converted, visitor, isExpression); + return Debug.checkDefined(visitNode(converted, visitor, isExpression)); } function collidesWithParameterName({ name }) { if (isIdentifier(name)) { @@ -93555,7 +96558,7 @@ function transformES2017(context) { if (isBlock(body)) { return factory2.updateBlock(body, visitNodes2(body.statements, asyncBodyVisitor, isStatement, start2)); } else { - return factory2.converters.convertToFunctionBlock(visitNode(body, asyncBodyVisitor, isConciseBody)); + return factory2.converters.convertToFunctionBlock(Debug.checkDefined(visitNode(body, asyncBodyVisitor, isConciseBody))); } } function getPromiseConstructor(type) { @@ -93910,7 +96913,7 @@ function transformES2018(context) { return visitObjectLiteralExpression(node); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 295 /* CatchClause */: return visitCatchClause(node); @@ -94668,7 +97671,7 @@ function transformES2018(context) { /*questionToken*/ void 0, visitor, - isToken + isQuestionToken ), /*typeParameters*/ void 0, @@ -95342,15 +98345,10 @@ function transformES2021(context) { if ((node.transformFlags & 16 /* ContainsES2021 */) === 0) { return node; } - switch (node.kind) { - case 223 /* BinaryExpression */: - const binaryExpression = node; - if (isLogicalOrCoalescingAssignmentExpression(binaryExpression)) { - return transformLogicalAssignment(binaryExpression); - } - default: - return visitEachChild(node, visitor, context); + if (isLogicalOrCoalescingAssignmentExpression(node)) { + return transformLogicalAssignment(node); } + return visitEachChild(node, visitor, context); } function transformLogicalAssignment(binaryExpression) { const operator = binaryExpression.operatorToken; @@ -95480,7 +98478,7 @@ function transformJsx(context) { factory2.createIdentifier(name), generatedName ); - generatedName.generatedImportReference = specifier; + setIdentifierGeneratedImportReference(generatedName, specifier); specifierSourceImports.set(name, specifier); return generatedName; } @@ -95796,7 +98794,7 @@ function transformJsx(context) { return element; } function transformJsxSpreadAttributeToSpreadAssignment(node) { - return factory2.createSpreadAssignment(visitNode(node.expression, visitor, isExpression)); + return factory2.createSpreadAssignment(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); } function transformJsxAttributesToObjectProps(attrs, children) { const target = getEmitScriptTarget(compilerOptions); @@ -95826,7 +98824,7 @@ function transformJsx(context) { return singleOrUndefined(expressions) || emitHelpers().createAssignHelper(expressions); } function transformJsxSpreadAttributeToExpression(node) { - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } function transformJsxAttributeToObjectLiteralElement(node) { const name = getAttributeName(node); @@ -95846,7 +98844,7 @@ function transformJsx(context) { if (node.expression === void 0) { return factory2.createTrue(); } - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } if (isJsxElement(node)) { return visitJsxElement( @@ -96357,7 +99355,7 @@ function transformES2015(context) { node, /*lookInLabeledStatements*/ false - ) && shouldConvertIterationStatement(node) || (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) !== 0; + ) && shouldConvertIterationStatement(node) || (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) !== 0; } function visitor(node) { return shouldVisitNode(node) ? visitorWorker( @@ -96488,7 +99486,7 @@ function transformES2015(context) { return visitParenthesizedExpression(node, expressionResultIsUnused2); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 14 /* NoSubstitutionTemplateLiteral */: case 15 /* TemplateHead */: @@ -96591,7 +99589,7 @@ function transformES2015(context) { [ factory2.createPropertyAssignment( factory2.createIdentifier("value"), - node.expression ? visitNode(node.expression, visitor, isExpression) : factory2.createVoidZero() + node.expression ? Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) : factory2.createVoidZero() ) ] ) @@ -96623,7 +99621,7 @@ function transformES2015(context) { return convertedLoopState.argumentsName || (convertedLoopState.argumentsName = factory2.createUniqueName("arguments")); } } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { return setOriginalNode(setTextRange( factory2.createIdentifier(unescapeLeadingUnderscores(node.escapedText)), node @@ -96762,7 +99760,7 @@ function transformES2015(context) { outer, /*typeArguments*/ void 0, - extendsClauseElement ? [visitNode(extendsClauseElement.expression, visitor, isExpression)] : [] + extendsClauseElement ? [Debug.checkDefined(visitNode(extendsClauseElement.expression, visitor, isExpression))] : [] ) ); addSyntheticLeadingComment(result, 3 /* MultiLineCommentTrivia */, "* @class "); @@ -97104,7 +100102,7 @@ function transformES2015(context) { factory2.createExpressionStatement( factory2.createAssignment( factory2.getGeneratedNameForNode(parameter), - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ) ), 2097152 /* CustomPrologue */ @@ -97115,7 +100113,7 @@ function transformES2015(context) { return false; } function insertDefaultValueAssignmentForInitializer(statements, parameter, name, initializer) { - initializer = visitNode(initializer, visitor, isExpression); + initializer = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); const statement = factory2.createIfStatement( factory2.createTypeCheck(factory2.cloneNode(name), "undefined"), setEmitFlags( @@ -97391,6 +100389,7 @@ function transformES2015(context) { container ); const propertyName = visitNode(member.name, visitor, isPropertyName); + Debug.assert(propertyName); let e; if (!isPrivateIdentifier(propertyName) && getUseDefineForClassFields(context.getCompilerOptions())) { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; @@ -97434,6 +100433,7 @@ function transformES2015(context) { setEmitFlags(target, 3072 /* NoComments */ | 64 /* NoTrailingSourceMap */); setSourceMapRange(target, firstAccessor.name); const visitedAccessorName = visitNode(firstAccessor.name, visitor, isPropertyName); + Debug.assert(visitedAccessorName); if (isPrivateIdentifier(visitedAccessorName)) { return Debug.failBadSyntaxKind(visitedAccessorName, "Encountered unhandled private identifier while transforming ES2015."); } @@ -97706,9 +100706,9 @@ function transformES2015(context) { if (node.operatorToken.kind === 27 /* CommaToken */) { return factory2.updateBinaryExpression( node, - visitNode(node.left, visitorWithUnusedExpressionResult, isExpression), + Debug.checkDefined(visitNode(node.left, visitorWithUnusedExpressionResult, isExpression)), node.operatorToken, - visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression) + Debug.checkDefined(visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -97723,6 +100723,7 @@ function transformES2015(context) { const visited = visitNode(element, i < node.elements.length - 1 ? visitorWithUnusedExpressionResult : visitor, isExpression); if (result || visited !== element) { result || (result = node.elements.slice(0, i)); + Debug.assert(visited); result.push(visited); } } @@ -97730,7 +100731,7 @@ function transformES2015(context) { return factory2.updateCommaListExpression(node, elements); } function isVariableStatementOfTypeScriptClassWrapper(node) { - return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getEmitFlags(node.declarationList.declarations[0].initializer) & 67108864 /* TypeScriptClassWrapper */); + return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getInternalEmitFlags(node.declarationList.declarations[0].initializer) & 1 /* TypeScriptClassWrapper */); } function visitVariableStatement(node) { const ancestorFacts = enterSubtree(0 /* None */, hasSyntacticModifier(node, 1 /* Export */) ? 32 /* ExportedVariableStatement */ : 0 /* None */); @@ -97749,7 +100750,7 @@ function transformES2015(context) { 0 /* All */ ); } else { - assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, visitNode(decl.initializer, visitor, isExpression)); + assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, Debug.checkDefined(visitNode(decl.initializer, visitor, isExpression))); setTextRange(assignment, decl); } assignments = append(assignments, assignment); @@ -97771,7 +100772,7 @@ function transformES2015(context) { if (node.flags & 3 /* BlockScoped */) { enableSubstitutionsForBlockScopedBindings(); } - const declarations = flatMap(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration); + const declarations = visitNodes2(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration, isVariableDeclaration); const declarationList = factory2.createVariableDeclarationList(declarations); setOriginalNode(declarationList, node); setTextRange(declarationList, node); @@ -97855,7 +100856,7 @@ function transformES2015(context) { statement, /*outermostLabeledStatement*/ node - ) : factory2.restoreEnclosingLabel(visitNode(statement, visitor, isStatement, factory2.liftToBlock), node, convertedLoopState && resetLabel); + ) : factory2.restoreEnclosingLabel(Debug.checkDefined(visitNode(statement, visitor, isStatement, factory2.liftToBlock)), node, convertedLoopState && resetLabel); } function visitIterationStatement(node, outermostLabeledStatement) { switch (node.kind) { @@ -97898,7 +100899,7 @@ function transformES2015(context) { visitNode(node.initializer, visitorWithUnusedExpressionResult, isForInitializer), visitNode(node.condition, visitor, isExpression), visitNode(node.incrementor, visitorWithUnusedExpressionResult, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } function visitForInStatement(node, outermostLabeledStatement) { @@ -97984,13 +100985,14 @@ function transformES2015(context) { ))); } else { setTextRangeEnd(assignment, initializer.end); - statements.push(setTextRange(factory2.createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1))); + statements.push(setTextRange(factory2.createExpressionStatement(Debug.checkDefined(visitNode(assignment, visitor, isExpression))), moveRangeEnd(initializer, -1))); } } if (convertedLoopBodyStatements) { return createSyntheticBlockForConvertedStatements(addRange(statements, convertedLoopBodyStatements)); } else { const statement = visitNode(node.statement, visitor, isStatement, factory2.liftToBlock); + Debug.assert(statement); if (isBlock(statement)) { return factory2.updateBlock(statement, setTextRange(factory2.createNodeArray(concatenate(statements, statement.statements)), statement.statements)); } else { @@ -98011,6 +101013,7 @@ function transformES2015(context) { } function convertForOfStatementForArray(node, outermostLabeledStatement, convertedLoopBodyStatements) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const counter = factory2.createLoopVariable(); const rhsReference = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ @@ -98070,6 +101073,7 @@ function transformES2015(context) { } function convertForOfStatementForIterable(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const iterator = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ void 0 @@ -98327,7 +101331,7 @@ function transformES2015(context) { loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } } else { - const clone2 = convertIterationStatementCore(node, initializerFunction, visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)); + const clone2 = convertIterationStatementCore(node, initializerFunction, Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock))); loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } statements.push(loop); @@ -98365,16 +101369,16 @@ function transformES2015(context) { node, /*awaitModifier*/ void 0, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } function convertForInStatement(node, convertedLoopBody) { return factory2.updateForInStatement( node, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -98382,13 +101386,13 @@ function transformES2015(context) { return factory2.updateDoStatement( node, convertedLoopBody, - visitNode(node.expression, visitor, isExpression) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) ); } function convertWhileStatement(node, convertedLoopBody) { return factory2.updateWhileStatement( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -98550,7 +101554,7 @@ function transformES2015(context) { void 0, /*type*/ void 0, - visitNode( + Debug.checkDefined(visitNode( factory2.createBlock( statements, /*multiLine*/ @@ -98558,7 +101562,7 @@ function transformES2015(context) { ), visitor, isBlock - ) + )) ), emitFlags ) @@ -98581,7 +101585,7 @@ function transformES2015(context) { if (node.incrementor) { statements.push(factory2.createIfStatement( currentState.conditionVariable, - factory2.createExpressionStatement(visitNode(node.incrementor, visitor, isExpression)), + factory2.createExpressionStatement(Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression))), factory2.createExpressionStatement(factory2.createAssignment(currentState.conditionVariable, factory2.createTrue())) )); } else { @@ -98592,11 +101596,12 @@ function transformES2015(context) { } if (shouldConvertConditionOfForStatement(node)) { statements.push(factory2.createIfStatement( - factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, visitNode(node.condition, visitor, isExpression)), - visitNode(factory2.createBreakStatement(), visitor, isStatement) + factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))), + Debug.checkDefined(visitNode(factory2.createBreakStatement(), visitor, isStatement)) )); } } + Debug.assert(statement); if (isBlock(statement)) { addRange(statements, statement.statements); } else { @@ -98864,9 +101869,9 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), - visitNode(property.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(property.initializer, visitor, isExpression)) ); setTextRange(expression, property); if (startsOnNewLine) { @@ -98879,7 +101884,7 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), factory2.cloneNode(property.name) ); @@ -98894,7 +101899,7 @@ function transformES2015(context) { createMemberAccessForPropertyName( factory2, receiver, - visitNode(method.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(method.name, visitor, isPropertyName)) ), transformFunctionLikeToExpression( method, @@ -99015,7 +102020,7 @@ function transformES2015(context) { return visitEachChild(node, visitor, context); } function visitCallExpression(node) { - if (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) { + if (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) { return visitTypeScriptClassWrapper(node); } const expression = skipOuterExpressions(node.expression); @@ -99028,7 +102033,7 @@ function transformES2015(context) { } return factory2.updateCallExpression( node, - visitNode(node.expression, callExpressionVisitor, isExpression), + Debug.checkDefined(visitNode(node.expression, callExpressionVisitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -99080,7 +102085,14 @@ function transformES2015(context) { if (classBodyEnd < -1) { addRange(statements, funcStatements, classBodyEnd + 1); } - addRange(statements, remainingStatements); + const returnStatement = tryCast(elementAt(funcStatements, classBodyEnd), isReturnStatement); + for (const statement of remainingStatements) { + if (isReturnStatement(statement) && (returnStatement == null ? void 0 : returnStatement.expression) && !isIdentifier(returnStatement.expression)) { + statements.push(returnStatement); + } else { + statements.push(statement); + } + } addRange( statements, classStatements, @@ -99140,8 +102152,8 @@ function transformES2015(context) { let resultingCall; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { resultingCall = factory2.createFunctionApplyCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), transformAndSpreadElements( node.arguments, /*isArgumentList*/ @@ -99155,8 +102167,8 @@ function transformES2015(context) { } else { resultingCall = setTextRange( factory2.createFunctionCallCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), visitNodes2(node.arguments, visitor, isExpression) ), node @@ -99178,7 +102190,7 @@ function transformES2015(context) { const { target, thisArg } = factory2.createCallBinding(factory2.createPropertyAccessExpression(node.expression, "bind"), hoistVariableDeclaration); return factory2.createNewExpression( factory2.createFunctionApplyCall( - visitNode(target, visitor, isExpression), + Debug.checkDefined(visitNode(target, visitor, isExpression)), thisArg, transformAndSpreadElements( factory2.createNodeArray([factory2.createVoidZero(), ...node.arguments]), @@ -99235,7 +102247,9 @@ function transformES2015(context) { return map(chunk, visitExpressionOfSpread); } function visitExpressionOfSpread(node) { + Debug.assertNode(node, isSpreadElement); let expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const isCallToReadHelper = isCallToHelper(expression, "___read"); let kind = isCallToReadHelper || isPackedArrayLiteral(expression) ? 2 /* PackedSpread */ : 1 /* UnpackedSpread */; if (compilerOptions.downlevelIteration && kind === 1 /* UnpackedSpread */ && !isArrayLiteralExpression(expression) && !isCallToReadHelper) { @@ -99286,7 +102300,7 @@ function transformES2015(context) { function visitTemplateExpression(node) { let expression = factory2.createStringLiteral(node.head.text); for (const span of node.templateSpans) { - const args = [visitNode(span.expression, visitor, isExpression)]; + const args = [Debug.checkDefined(visitNode(span.expression, visitor, isExpression))]; if (span.literal.text.length > 0) { args.push(factory2.createStringLiteral(span.literal.text)); } @@ -99504,7 +102518,7 @@ function transformES5(context) { return node; } function trySubstituteReservedName(name) { - const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(idText(name)) : void 0); + const token = identifierToKeywordKind(name); if (token !== void 0 && token >= 81 /* FirstReservedWord */ && token <= 116 /* LastReservedWord */) { return setTextRange(factory2.createStringLiteralFromNode(name), name); } @@ -99640,7 +102654,7 @@ function transformGenerators(context) { switch (node.kind) { case 223 /* BinaryExpression */: return visitBinaryExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node); case 224 /* ConditionalExpression */: return visitConditionalExpression(node); @@ -99852,19 +102866,19 @@ function transformGenerators(context) { case 208 /* PropertyAccessExpression */: target = factory2.updatePropertyAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), left.name ); break; case 209 /* ElementAccessExpression */: target = factory2.updateElementAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), - cacheExpression(visitNode(left.argumentExpression, visitor, isExpression)) + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), + cacheExpression(Debug.checkDefined(visitNode(left.argumentExpression, visitor, isExpression))) ); break; default: - target = visitNode(left, visitor, isExpression); + target = Debug.checkDefined(visitNode(left, visitor, isExpression)); break; } const operator = node.operatorToken.kind; @@ -99876,7 +102890,7 @@ function transformGenerators(context) { factory2.createBinaryExpression( cacheExpression(target), getNonAssignmentOperatorForCompoundAssignment(operator), - visitNode(right, visitor, isExpression) + Debug.checkDefined(visitNode(right, visitor, isExpression)) ), node ) @@ -99884,7 +102898,7 @@ function transformGenerators(context) { node ); } else { - return factory2.updateBinaryExpression(node, target, node.operatorToken, visitNode(right, visitor, isExpression)); + return factory2.updateBinaryExpression(node, target, node.operatorToken, Debug.checkDefined(visitNode(right, visitor, isExpression))); } } return visitEachChild(node, visitor, context); @@ -99898,9 +102912,9 @@ function transformGenerators(context) { } return factory2.updateBinaryExpression( node, - cacheExpression(visitNode(node.left, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(node.left, visitor, isExpression))), node.operatorToken, - visitNode(node.right, visitor, isExpression) + Debug.checkDefined(visitNode(node.right, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -99919,7 +102933,7 @@ function transformGenerators(context) { emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(node2, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(node2, visitor, isExpression))); } } } @@ -99933,7 +102947,7 @@ function transformGenerators(context) { emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(elem, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(elem, visitor, isExpression))); } } return factory2.inlineExpressions(pendingExpressions); @@ -99943,7 +102957,7 @@ function transformGenerators(context) { const resultLocal = declareLocal(); emitAssignment( resultLocal, - visitNode(node.left, visitor, isExpression), + Debug.checkDefined(visitNode(node.left, visitor, isExpression)), /*location*/ node.left ); @@ -99964,7 +102978,7 @@ function transformGenerators(context) { } emitAssignment( resultLocal, - visitNode(node.right, visitor, isExpression), + Debug.checkDefined(visitNode(node.right, visitor, isExpression)), /*location*/ node.right ); @@ -99978,13 +102992,13 @@ function transformGenerators(context) { const resultLocal = declareLocal(); emitBreakWhenFalse( whenFalseLabel, - visitNode(node.condition, visitor, isExpression), + Debug.checkDefined(visitNode(node.condition, visitor, isExpression)), /*location*/ node.condition ); emitAssignment( resultLocal, - visitNode(node.whenTrue, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenTrue, visitor, isExpression)), /*location*/ node.whenTrue ); @@ -99992,7 +103006,7 @@ function transformGenerators(context) { markLabel(whenFalseLabel); emitAssignment( resultLocal, - visitNode(node.whenFalse, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenFalse, visitor, isExpression)), /*location*/ node.whenFalse ); @@ -100072,7 +103086,7 @@ function transformGenerators(context) { leadingElement = void 0; expressions2 = []; } - expressions2.push(visitNode(element, visitor, isExpression)); + expressions2.push(Debug.checkDefined(visitNode(element, visitor, isExpression))); return expressions2; } } @@ -100111,8 +103125,8 @@ function transformGenerators(context) { if (containsYield(node.argumentExpression)) { return factory2.updateElementAccessExpression( node, - cacheExpression(visitNode(node.expression, visitor, isLeftHandSideExpression)), - visitNode(node.argumentExpression, visitor, isExpression) + cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression))), + Debug.checkDefined(visitNode(node.argumentExpression, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -100129,7 +103143,7 @@ function transformGenerators(context) { return setOriginalNode( setTextRange( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isLeftHandSideExpression))), thisArg, visitElements(node.arguments) ), @@ -100147,7 +103161,7 @@ function transformGenerators(context) { setTextRange( factory2.createNewExpression( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isExpression))), thisArg, visitElements( node.arguments, @@ -100263,7 +103277,7 @@ function transformGenerators(context) { return setSourceMapRange( factory2.createAssignment( setSourceMapRange(factory2.cloneNode(node.name), node.name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), node ); @@ -100275,7 +103289,7 @@ function transformGenerators(context) { const elseLabel = node.elseStatement ? defineLabel() : void 0; emitBreakWhenFalse( node.elseStatement ? elseLabel : endLabel, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*location*/ node.expression ); @@ -100304,7 +103318,7 @@ function transformGenerators(context) { markLabel(loopLabel); transformAndEmitEmbeddedStatement(node.statement); markLabel(conditionLabel); - emitBreakWhenTrue(loopLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenTrue(loopLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); endLoopBlock(); } else { emitStatement(visitNode(node, visitor, isStatement)); @@ -100325,7 +103339,7 @@ function transformGenerators(context) { const loopLabel = defineLabel(); const endLabel = beginLoopBlock(loopLabel); markLabel(loopLabel); - emitBreakWhenFalse(endLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); transformAndEmitEmbeddedStatement(node.statement); emitBreak(loopLabel); endLoopBlock(); @@ -100356,7 +103370,7 @@ function transformGenerators(context) { emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ), initializer ) @@ -100365,7 +103379,7 @@ function transformGenerators(context) { } markLabel(conditionLabel); if (node.condition) { - emitBreakWhenFalse(endLabel, visitNode(node.condition, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))); } transformAndEmitEmbeddedStatement(node.statement); markLabel(incrementLabel); @@ -100373,7 +103387,7 @@ function transformGenerators(context) { emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(node.incrementor, visitor, isExpression) + Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression)) ), node.incrementor ) @@ -100418,7 +103432,7 @@ function transformGenerators(context) { const keysIndex = factory2.createLoopVariable(); const initializer = node.initializer; hoistVariableDeclaration(keysIndex); - emitAssignment(obj, visitNode(node.expression, visitor, isExpression)); + emitAssignment(obj, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); emitAssignment(keysArray, factory2.createArrayLiteralExpression()); emitStatement( factory2.createForInStatement( @@ -100449,7 +103463,7 @@ function transformGenerators(context) { } variable = factory2.cloneNode(initializer.declarations[0].name); } else { - variable = visitNode(initializer, visitor, isExpression); + variable = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); Debug.assert(isLeftHandSideExpression(variable)); } emitAssignment(variable, key); @@ -100474,8 +103488,8 @@ function transformGenerators(context) { node = factory2.updateForInStatement( node, initializer.declarations[0].name, - visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } else { node = visitEachChild(node, visitor, context); @@ -100551,7 +103565,7 @@ function transformGenerators(context) { } function transformAndEmitWithStatement(node) { if (containsYield(node)) { - beginWithBlock(cacheExpression(visitNode(node.expression, visitor, isExpression))); + beginWithBlock(cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression)))); transformAndEmitEmbeddedStatement(node.statement); endWithBlock(); } else { @@ -100563,7 +103577,7 @@ function transformGenerators(context) { const caseBlock = node.caseBlock; const numClauses = caseBlock.clauses.length; const endLabel = beginSwitchBlock(); - const expression = cacheExpression(visitNode(node.expression, visitor, isExpression)); + const expression = cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); const clauseLabels = []; let defaultClauseIndex = -1; for (let i = 0; i < numClauses; i++) { @@ -100585,7 +103599,7 @@ function transformGenerators(context) { } pendingClauses.push( factory2.createCaseClause( - visitNode(clause.expression, visitor, isExpression), + Debug.checkDefined(visitNode(clause.expression, visitor, isExpression)), [ createInlineBreak( clauseLabels[i], @@ -100655,7 +103669,7 @@ function transformGenerators(context) { function transformAndEmitThrowStatement(node) { var _a2; emitThrow( - visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression), + Debug.checkDefined(visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression)), /*location*/ node ); @@ -101011,7 +104025,7 @@ function transformGenerators(context) { } return 0; } - function createLabel2(label) { + function createLabel(label) { if (label !== void 0 && label > 0) { if (labelExpressions === void 0) { labelExpressions = []; @@ -101037,7 +104051,7 @@ function transformGenerators(context) { factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), location @@ -101242,10 +104256,10 @@ function transformGenerators(context) { void 0, [ factory2.createArrayLiteralExpression([ - createLabel2(startLabel), - createLabel2(catchLabel), - createLabel2(finallyLabel), - createLabel2(endLabel) + createLabel(startLabel), + createLabel(catchLabel), + createLabel(finallyLabel), + createLabel(endLabel) ]) ] ) @@ -101421,7 +104435,7 @@ function transformGenerators(context) { factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -101440,7 +104454,7 @@ function transformGenerators(context) { factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -101462,7 +104476,7 @@ function transformGenerators(context) { factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -101939,7 +104953,7 @@ function transformModule(context) { } function addExportEqualsIfNeeded(statements, emitAsReturn) { if (currentModuleInfo.exportEquals) { - const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor); + const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor, isExpression); if (expressionResult) { if (emitAsReturn) { const statement = factory2.createReturnStatement(expressionResult); @@ -101979,9 +104993,9 @@ function transformModule(context) { return visitFunctionDeclaration(node); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -101998,7 +105012,7 @@ function transformModule(context) { return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 210 /* CallExpression */: if (isImportCall(node) && currentSourceFile.impliedNodeFormat === void 0) { @@ -102134,7 +105148,7 @@ function transformModule(context) { } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; const containsLexicalThis = !!(node.transformFlags & 16384 /* ContainsLexicalThis */); switch (compilerOptions.module) { @@ -102343,7 +105357,7 @@ function transformModule(context) { return downleveledImport; } function getHelperExpressionForExport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getExportNeedsImportStarHelper(node)) { @@ -102352,7 +105366,7 @@ function transformModule(context) { return innerExpr; } function getHelperExpressionForImport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getImportNeedsImportStarHelper(node)) { @@ -102597,7 +105611,7 @@ function transformModule(context) { ) ); } else { - const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; + const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; const exportedValue = factory2.createPropertyAccessExpression( exportNeedsImportDefault ? emitHelpers().createImportDefaultHelper(generatedName) : generatedName, specifier.propertyName || specifier.name @@ -102663,7 +105677,7 @@ function transformModule(context) { deferredExports[id] = appendExportStatement( deferredExports[id], factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -102673,7 +105687,7 @@ function transformModule(context) { statements = appendExportStatement( statements, factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -102701,7 +105715,7 @@ function transformModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitEachChild(node.body, visitor, context) @@ -102742,8 +105756,8 @@ function transformModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.heritageClauses, visitor), - visitNodes2(node.members, visitor) + visitNodes2(node.heritageClauses, visitor, isHeritageClause), + visitNodes2(node.members, visitor, isClassElement) ), node ), @@ -102773,7 +105787,23 @@ function transformModule(context) { if (!modifiers) { modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); } - variables = append(variables, variable); + if (variable.initializer) { + const updatedVariable = factory2.updateVariableDeclaration( + variable, + variable.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + createExportExpression( + variable.name, + visitNode(variable.initializer, visitor, isExpression) + ) + ); + variables = append(variables, updatedVariable); + } else { + variables = append(variables, variable); + } } else if (variable.initializer) { if (!isBindingPattern(variable.name) && (isArrowFunction(variable.initializer) || isFunctionExpression(variable.initializer) || isClassExpression(variable.initializer))) { const expression = factory2.createAssignment( @@ -102791,7 +105821,7 @@ function transformModule(context) { variable.name, variable.exclamationToken, variable.type, - visitNode(variable.initializer, visitor) + visitNode(variable.initializer, visitor, isExpression) ); variables = append(variables, updatedVariable); expressions = append(expressions, expression); @@ -102842,9 +105872,8 @@ function transformModule(context) { function transformInitializedVariable(node) { if (isBindingPattern(node.name)) { return flattenDestructuringAssignment( - visitNode(node, visitor), - /*visitor*/ - void 0, + visitNode(node, visitor, isInitializedVariable), + visitor, context, 0 /* All */, /*needsValue*/ @@ -102861,7 +105890,7 @@ function transformModule(context) { /*location*/ node.name ), - node.initializer ? visitNode(node.initializer, visitor) : factory2.createVoidZero() + node.initializer ? visitNode(node.initializer, visitor, isExpression) : factory2.createVoidZero() ); } } @@ -103131,7 +106160,7 @@ function transformModule(context) { const expression = substituteExpressionIdentifier(node.expression); noSubstitution[getNodeId(expression)] = true; if (!isIdentifier(expression) && !(getEmitFlags(node.expression) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateCallExpression( node, expression, @@ -103139,7 +106168,7 @@ function transformModule(context) { void 0, node.arguments ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -103150,7 +106179,7 @@ function transformModule(context) { const tag = substituteExpressionIdentifier(node.tag); noSubstitution[getNodeId(tag)] = true; if (!isIdentifier(tag) && !(getEmitFlags(node.tag) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateTaggedTemplateExpression( node, tag, @@ -103158,7 +106187,7 @@ function transformModule(context) { void 0, node.template ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -103172,7 +106201,7 @@ function transformModule(context) { return factory2.createPropertyAccessExpression(externalHelpersModuleName, node); } return node; - } else if (!(isGeneratedIdentifier(node) && !(node.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { + } else if (!(isGeneratedIdentifier(node) && !(node.emitNode.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); if (exportContainer && exportContainer.kind === 308 /* SourceFile */) { return setTextRange( @@ -103804,7 +106833,7 @@ function transformSystemModule(context) { ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -103901,7 +106930,7 @@ function transformSystemModule(context) { return (getEmitFlags(node) & 4194304 /* NoHoisting */) === 0 && (enclosingBlockScopedContainer.kind === 308 /* SourceFile */ || (getOriginalNode(node).flags & 3 /* BlockScoped */) === 0); } function transformInitializedVariable(node, isExportedDeclaration) { - const createAssignment3 = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; + const createAssignment = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; return isBindingPattern(node.name) ? flattenDestructuringAssignment( node, visitor, @@ -103909,8 +106938,8 @@ function transformSystemModule(context) { 0 /* All */, /*needsValue*/ false, - createAssignment3 - ) : node.initializer ? createAssignment3(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; + createAssignment + ) : node.initializer ? createAssignment(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; } function createExportedVariableAssignment(name, value, location) { return createVariableAssignment( @@ -104114,9 +107143,9 @@ function transformSystemModule(context) { return visitCatchClause(node); case 238 /* Block */: return visitBlock(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -104178,7 +107207,7 @@ function transformSystemModule(context) { } return expressions ? factory2.inlineExpressions(expressions) : factory2.createOmittedExpression(); } else { - return visitNode(node, discardedValueVisitor, isExpression); + return visitNode(node, discardedValueVisitor, isForInitializer); } } function visitDoStatement(node) { @@ -104199,21 +107228,21 @@ function transformSystemModule(context) { return factory2.updateLabeledStatement( node, node.label, - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitWithStatement(node) { return factory2.updateWithStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitSwitchStatement(node) { return factory2.updateSwitchStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock) + Debug.checkDefined(visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock)) ); } function visitCaseBlock(node) { @@ -104245,7 +107274,7 @@ function transformSystemModule(context) { node = factory2.updateCatchClause( node, node.variableDeclaration, - visitNode(node.block, topLevelNestedVisitor, isBlock) + Debug.checkDefined(visitNode(node.block, topLevelNestedVisitor, isBlock)) ); enclosingBlockScopedContainer = savedEnclosingBlockScopedContainer; return node; @@ -104272,7 +107301,7 @@ function transformSystemModule(context) { return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 223 /* BinaryExpression */: if (isDestructuringAssignment(node)) { @@ -104315,7 +107344,7 @@ function transformSystemModule(context) { } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; return factory2.createCallExpression( factory2.createPropertyAccessExpression( @@ -105436,7 +108465,7 @@ function transformDeclarations(context) { sourceFile, /*bundled*/ true - )) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + )) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); const newFile = factory2.updateSourceFile( sourceFile, [factory2.createModuleDeclaration( @@ -105458,7 +108487,7 @@ function transformDeclarations(context) { return newFile; } needsDeclare = true; - const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); return factory2.updateSourceFile( sourceFile, transformAndReplaceLatePaintedStatements(updated2), @@ -105527,7 +108556,7 @@ function transformDeclarations(context) { refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); } else { - const statements = visitNodes2(node.statements, visitDeclarationStatements); + const statements = visitNodes2(node.statements, visitDeclarationStatements, isStatement); combinedStatements = setTextRange(factory2.createNodeArray(transformAndReplaceLatePaintedStatements(statements)), node.statements); refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); @@ -105644,9 +108673,9 @@ function transformDeclarations(context) { return name; } else { if (name.kind === 204 /* ArrayBindingPattern */) { - return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isArrayBindingElement)); } else { - return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isBindingElement)); } } function visitBindingElement(elem) { @@ -105716,10 +108745,10 @@ function transformDeclarations(context) { } const shouldUseResolverType = node.kind === 166 /* Parameter */ && (resolver.isRequiredInitializedParameter(node) || resolver.isOptionalUninitializedParameterProperty(node)); if (type && !shouldUseResolverType) { - return visitNode(type, visitDeclarationSubtree); + return visitNode(type, visitDeclarationSubtree, isTypeNode); } if (!getParseTreeNode(node)) { - return type ? visitNode(type, visitDeclarationSubtree) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); + return type ? visitNode(type, visitDeclarationSubtree, isTypeNode) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); } if (node.kind === 175 /* SetAccessor */) { return factory2.createKeywordTypeNode(131 /* AnyKeyword */); @@ -105789,11 +108818,11 @@ function transformDeclarations(context) { } function updateParamsList(node, params, modifierMask) { if (hasEffectiveModifier(node, 8 /* Private */)) { - return void 0; + return factory2.createNodeArray(); } const newParams = map(params, (p) => ensureParameter(p, modifierMask)); if (!newParams) { - return void 0; + return factory2.createNodeArray(); } return factory2.createNodeArray(newParams, params.hasTrailingComma); } @@ -105833,7 +108862,7 @@ function transformDeclarations(context) { return factory2.createNodeArray(newParams || emptyArray); } function ensureTypeParams(node, params) { - return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree); + return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree, isTypeParameterDeclaration); } function isEnclosingDeclaration(node) { return isSourceFile(node) || isTypeAliasDeclaration(node) || isModuleDeclaration(node) || isClassDeclaration(node) || isInterfaceDeclaration(node) || isFunctionLike(node) || isIndexSignatureDeclaration(node) || isMappedTypeNode(node); @@ -105968,7 +108997,7 @@ function transformDeclarations(context) { needsDeclare = priorNeedsDeclare; lateStatementReplacementMap.set(getOriginalNodeId(i), result); } - return visitNodes2(statements, visitLateVisibilityMarkedStatements); + return visitNodes2(statements, visitLateVisibilityMarkedStatements, isStatement); function visitLateVisibilityMarkedStatements(statement) { if (isLateVisibilityPaintedStatement(statement)) { const key = getOriginalNodeId(statement); @@ -106182,7 +109211,7 @@ function transformDeclarations(context) { input, ensureModifiers(input), updateParamsList(input, input.parameters), - visitNode(input.type, visitDeclarationSubtree) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(input.type, visitDeclarationSubtree, isTypeNode) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) )); } case 257 /* VariableDeclaration */: { @@ -106215,20 +109244,24 @@ function transformDeclarations(context) { return cleanup(visitEachChild(input, visitDeclarationSubtree, context)); } case 191 /* ConditionalType */: { - const checkType = visitNode(input.checkType, visitDeclarationSubtree); - const extendsType = visitNode(input.extendsType, visitDeclarationSubtree); + const checkType = visitNode(input.checkType, visitDeclarationSubtree, isTypeNode); + const extendsType = visitNode(input.extendsType, visitDeclarationSubtree, isTypeNode); const oldEnclosingDecl = enclosingDeclaration; enclosingDeclaration = input.trueType; - const trueType = visitNode(input.trueType, visitDeclarationSubtree); + const trueType = visitNode(input.trueType, visitDeclarationSubtree, isTypeNode); enclosingDeclaration = oldEnclosingDecl; - const falseType = visitNode(input.falseType, visitDeclarationSubtree); + const falseType = visitNode(input.falseType, visitDeclarationSubtree, isTypeNode); + Debug.assert(checkType); + Debug.assert(extendsType); + Debug.assert(trueType); + Debug.assert(falseType); return cleanup(factory2.updateConditionalTypeNode(input, checkType, extendsType, trueType, falseType)); } case 181 /* FunctionType */: { - return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 182 /* ConstructorType */: { - return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 202 /* ImportType */: { if (!isLiteralImportTypeNode(input)) @@ -106372,7 +109405,7 @@ function transformDeclarations(context) { ensureModifiers(input), input.name, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), - visitNode(input.type, visitDeclarationSubtree, isTypeNode) + Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)) )); needsDeclare = previousNeedsDeclare; return clean2; @@ -106384,7 +109417,7 @@ function transformDeclarations(context) { input.name, ensureTypeParams(input, input.typeParameters), transformHeritageClauses(input.heritageClauses), - visitNodes2(input.members, visitDeclarationSubtree) + visitNodes2(input.members, visitDeclarationSubtree, isTypeElement) )); } case 259 /* FunctionDeclaration */: { @@ -106501,7 +109534,7 @@ function transformDeclarations(context) { const oldHasScopeFix = resultHasScopeMarker; resultHasScopeMarker = false; needsScopeFixMarker = false; - const statements = visitNodes2(inner.statements, visitDeclarationStatements); + const statements = visitNodes2(inner.statements, visitDeclarationStatements, isStatement); let lateStatements = transformAndReplaceLatePaintedStatements(statements); if (input.flags & 16777216 /* Ambient */) { needsScopeFixMarker = false; @@ -106510,7 +109543,7 @@ function transformDeclarations(context) { if (needsScopeFixMarker) { lateStatements = factory2.createNodeArray([...lateStatements, createEmptyExports(factory2)]); } else { - lateStatements = visitNodes2(lateStatements, stripExportModifiers); + lateStatements = visitNodes2(lateStatements, stripExportModifiers, isStatement); } } const body = factory2.updateModuleBlock(inner, lateStatements); @@ -106606,7 +109639,7 @@ function transformDeclarations(context) { void 0 ) ] : void 0; - const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree)); + const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); const members = factory2.createNodeArray(memberNodes); const extendsClause = getEffectiveBaseTypeNode(input); if (extendsClause && !isEntityNameExpression(extendsClause.expression) && extendsClause.expression.kind !== 104 /* NullKeyword */) { @@ -106630,11 +109663,11 @@ function transformDeclarations(context) { if (clause.token === 94 /* ExtendsKeyword */) { const oldDiag2 = getSymbolAccessibilityDiagnostic; getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(clause.types[0]); - const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree)))); + const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree, isTypeNode)))); getSymbolAccessibilityDiagnostic = oldDiag2; return newClause; } - return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree)); + return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree, isExpressionWithTypeArguments)); })); return [statement, cleanup(factory2.updateClassDeclaration( input, @@ -106690,7 +109723,7 @@ function transformDeclarations(context) { function transformVariableStatement(input) { if (!forEach(input.declarationList.declarations, getBindingNameVisible)) return; - const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree); + const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree, isVariableDeclaration); if (!length(nodes)) return; return factory2.updateVariableStatement(input, factory2.createNodeArray(ensureModifiers(input)), factory2.updateVariableDeclarationList(input.declarationList, nodes)); @@ -106781,7 +109814,7 @@ function transformDeclarations(context) { function transformHeritageClauses(nodes) { return factory2.createNodeArray(filter(map(nodes, (clause) => factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => { return isEntityNameExpression(t.expression) || clause.token === 94 /* ExtendsKeyword */ && t.expression.kind === 104 /* NullKeyword */; - })), visitDeclarationSubtree))), (clause) => clause.types && !!clause.types.length)); + })), visitDeclarationSubtree, isExpressionWithTypeArguments))), (clause) => clause.types && !!clause.types.length)); } } function isAlwaysType(node) { @@ -106890,10 +109923,15 @@ function getScriptTransformers(compilerOptions, customTransformers, emitOnly) { return emptyArray; const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const transformers = []; addRange(transformers, customTransformers && map(customTransformers.before, wrapScriptTransformerFactory)); transformers.push(transformTypeScript); - transformers.push(transformLegacyDecorators); + if (compilerOptions.experimentalDecorators) { + transformers.push(transformLegacyDecorators); + } else if (languageVersion < 99 /* ESNext */ || !useDefineForClassFields) { + transformers.push(transformESDecorators); + } transformers.push(transformClassFields); if (getJSXTransformEnabled(compilerOptions)) { transformers.push(transformJsx); @@ -106959,7 +109997,7 @@ function noEmitNotification(hint, node, callback) { } function transformNodes(resolver, host, factory2, options, nodes, transformers, allowDtsFiles) { var _a2, _b; - const enabledSyntaxKindFeatures = new Array(360 /* Count */); + const enabledSyntaxKindFeatures = new Array(361 /* Count */); let lexicalEnvironmentVariableDeclarations; let lexicalEnvironmentFunctionDeclarations; let lexicalEnvironmentStatements; @@ -107521,7 +110559,7 @@ function emitFiles(resolver, host, targetSourceFile, { scriptTransformers, decla const sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions) ? [] : void 0; const emittedFilesList = compilerOptions.listEmittedFiles ? [] : void 0; const emitterDiagnostics = createDiagnosticCollection(); - const newLine = getNewLineCharacter(compilerOptions, () => host.getNewLine()); + const newLine = getNewLineCharacter(compilerOptions); const writer = createTextWriter(newLine); const { enter, exit } = createTimer("printTime", "beforePrint", "afterPrint"); let bundleBuildInfo; @@ -108021,7 +111059,6 @@ function emitUsingBuildInfoWorker(config, host, getCommandLine, customTransforme getCommonSourceDirectory: () => getNormalizedAbsolutePath(buildInfo.bundle.commonSourceDirectory, buildInfoDirectory), getCompilerOptions: () => config.options, getCurrentDirectory: () => host.getCurrentDirectory(), - getNewLine: () => host.getNewLine(), getSourceFile: returnUndefined, getSourceFileByPath: returnUndefined, getSourceFiles: () => sourceFilesForJsEmit, @@ -108107,6 +111144,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { const bundledHelpers = /* @__PURE__ */ new Map(); let currentSourceFile; let nodeIdToGeneratedName; + let nodeIdToGeneratedPrivateName; let autoGeneratedIdToGeneratedName; let generatedNames; let formattedNameTempFlagsStack; @@ -108403,6 +111441,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function reset2() { nodeIdToGeneratedName = []; + nodeIdToGeneratedPrivateName = []; autoGeneratedIdToGeneratedName = []; generatedNames = /* @__PURE__ */ new Set(); formattedNameTempFlagsStack = []; @@ -108454,7 +111493,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { pipelineEmit(isStringLiteral(node) ? 6 /* JsxAttributeValue */ : 4 /* Unspecified */, node); } function beforeEmitNode(node) { - if (preserveSourceNewlines && getEmitFlags(node) & 268435456 /* IgnoreSourceNewlines */) { + if (preserveSourceNewlines && getInternalEmitFlags(node) & 4 /* IgnoreSourceNewlines */) { preserveSourceNewlines = false; } } @@ -108844,6 +111883,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { case 346 /* JSDocThisTag */: case 347 /* JSDocTypeTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return emitJSDocSimpleTypedTag(node); case 348 /* JSDocTemplateTag */: return emitJSDocTemplateTag(node); @@ -108851,9 +111891,9 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitJSDocTypedefTag(node); case 350 /* JSDocSeeTag */: return emitJSDocSeeTag(node); - case 354 /* NotEmittedStatement */: - case 358 /* EndOfDeclarationMarker */: - case 357 /* MergeDeclarationMarker */: + case 355 /* NotEmittedStatement */: + case 359 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return; } if (isExpression(node)) { @@ -108946,24 +111986,26 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitMetaProperty(node); case 234 /* SyntheticExpression */: return Debug.fail("SyntheticExpression should never be printed."); + case 279 /* MissingDeclaration */: + return; case 281 /* JsxElement */: return emitJsxElement(node); case 282 /* JsxSelfClosingElement */: return emitJsxSelfClosingElement(node); case 285 /* JsxFragment */: return emitJsxFragment(node); - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return Debug.fail("SyntaxList should not be printed"); - case 354 /* NotEmittedStatement */: + case 355 /* NotEmittedStatement */: return; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return emitPartiallyEmittedExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return emitCommaList(node); - case 357 /* MergeDeclarationMarker */: - case 358 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return; - case 359 /* SyntheticReferenceExpression */: + case 360 /* SyntheticReferenceExpression */: return Debug.fail("SyntheticReferenceExpression should not be printed"); } } @@ -109136,7 +112178,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*includeTrivia*/ false ), node.symbol); - emitList(node, node.typeArguments, 53776 /* TypeParameters */); + emitList(node, getIdentifierTypeArguments(node), 53776 /* TypeParameters */); } function emitPrivateIdentifier(node) { write(getTextOfNode2( @@ -109167,7 +112209,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { pushPrivateNameGenerationScope(savedPrivateNameTempFlags, savedReservedMemberNames); } function emitTypeParameter(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); if (node.constraint) { writeSpace(); @@ -109183,7 +112225,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function emitParameter(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.dotDotDotToken); emitNodeWithWriter(node.name, writeParameter); emit(node.questionToken); @@ -109199,14 +112246,19 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitExpression(decorator.expression, parenthesizer.parenthesizeLeftSideOfAccess); } function emitPropertySignature(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitNodeWithWriter(node.name, writeProperty); emit(node.questionToken); emitTypeAnnotation(node.type); writeTrailingSemicolon(); } function emitPropertyDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.name); emit(node.questionToken); emit(node.exclamationToken); @@ -109216,7 +112268,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function emitMethodSignature(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); emit(node.questionToken); emitTypeParameters(node, node.typeParameters); @@ -109226,7 +112278,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popNameGenerationScope(node); } function emitMethodDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.asteriskToken); emit(node.name); emit(node.questionToken); @@ -109237,13 +112294,24 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitBlockFunctionBody(node.body); } function emitConstructor(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("constructor"); emitSignatureAndBody(node, emitSignatureHead); } function emitAccessorDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword(node.kind === 174 /* GetAccessor */ ? "get" : "set"); + const pos = emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + const token = node.kind === 174 /* GetAccessor */ ? 137 /* GetKeyword */ : 151 /* SetKeyword */; + emitTokenWithComment(token, pos, writeKeyword, node); writeSpace(); emit(node.name); emitSignatureAndBody(node, emitSignatureHead); @@ -109267,7 +112335,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popNameGenerationScope(node); } function emitIndexSignature(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitParametersForIndexSignature(node, node.parameters); emitTypeAnnotation(node.type); writeTrailingSemicolon(); @@ -109326,7 +112399,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } function emitConstructorType(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); writeKeyword("new"); writeSpace(); emitTypeParameters(node, node.typeParameters); @@ -109602,7 +112675,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitTokenWithComment(23 /* CloseBracketToken */, node.argumentExpression.end, writePunctuation, node); } function emitCallExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -109625,7 +112698,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitExpressionList(node, node.arguments, 18960 /* NewExpressionArguments */, parenthesizer.parenthesizeExpressionForDisallowedComma); } function emitTaggedTemplateExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -109663,7 +112736,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitFunctionDeclarationOrExpression(node); } function emitArrowFunction(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitSignatureAndBody(node, emitArrowFunctionHead); } function emitArrowFunctionHead(node) { @@ -109929,7 +113002,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { ); } function emitVariableStatement(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emit(node.declarationList); writeTrailingSemicolon(); } @@ -110187,7 +113265,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitFunctionDeclarationOrExpression(node); } function emitFunctionDeclarationOrExpression(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("function"); emit(node.asteriskToken); writeSpace(); @@ -110295,8 +113378,13 @@ function createPrinter(printerOptions = {}, handlers = {}) { void 0 ); forEach(node.members, generateMemberNames); - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword("class"); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + emitTokenWithComment(84 /* ClassKeyword */, moveRangePastModifiers(node).pos, writeKeyword, node); if (node.name) { writeSpace(); emitIdentifierName(node.name); @@ -110322,7 +113410,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*newReservedMemberNames*/ void 0 ); - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("interface"); writeSpace(); emit(node.name); @@ -110335,7 +113428,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { popPrivateNameGenerationScope(); } function emitTypeAliasDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("type"); writeSpace(); emit(node.name); @@ -110347,7 +113445,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeTrailingSemicolon(); } function emitEnumDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("enum"); writeSpace(); emit(node.name); @@ -110357,7 +113460,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writePunctuation("}"); } function emitModuleDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); if (~node.flags & 1024 /* GlobalAugmentation */) { writeKeyword(node.flags & 16 /* Namespace */ ? "namespace" : "module"); writeSpace(); @@ -110397,7 +113505,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { ); } function emitImportEqualsDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -110419,7 +113532,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function emitImportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.importClause) { @@ -110472,7 +113590,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeTrailingSemicolon(); } function emitExportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); let nextPos = emitTokenWithComment(93 /* ExportKeyword */, node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -111095,23 +114218,27 @@ function createPrinter(printerOptions = {}, handlers = {}) { emit(node); write = savedWrite; } - function emitDecoratorsAndModifiers(node, modifiers) { + function emitDecoratorsAndModifiers(node, modifiers, allowDecorators) { if (modifiers == null ? void 0 : modifiers.length) { if (every(modifiers, isModifier)) { - return emitModifiers(node, modifiers); + return emitModifierList(node, modifiers); } if (every(modifiers, isDecorator)) { - return emitDecorators(node, modifiers); + if (allowDecorators) { + return emitDecoratorList(node, modifiers); + } + return node.pos; } onBeforeEmitNodeArray == null ? void 0 : onBeforeEmitNodeArray(modifiers); let lastMode; let mode; let start2 = 0; let pos = 0; + let lastModifier; while (start2 < modifiers.length) { while (pos < modifiers.length) { - const modifier = modifiers[pos]; - mode = isDecorator(modifier) ? "decorators" : "modifiers"; + lastModifier = modifiers[pos]; + mode = isDecorator(lastModifier) ? "decorators" : "modifiers"; if (lastMode === void 0) { lastMode = mode; } else if (mode !== lastMode) { @@ -111124,28 +114251,36 @@ function createPrinter(printerOptions = {}, handlers = {}) { textRange.pos = modifiers.pos; if (pos === modifiers.length - 1) textRange.end = modifiers.end; - emitNodeListItems( - emit, - node, - modifiers, - lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, - /*parenthesizerRule*/ - void 0, - start2, - pos - start2, - /*hasTrailingComma*/ - false, - textRange - ); + if (lastMode === "modifiers" || allowDecorators) { + emitNodeListItems( + emit, + node, + modifiers, + lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, + /*parenthesizerRule*/ + void 0, + start2, + pos - start2, + /*hasTrailingComma*/ + false, + textRange + ); + } start2 = pos; lastMode = mode; pos++; } onAfterEmitNodeArray == null ? void 0 : onAfterEmitNodeArray(modifiers); + if (lastModifier && !positionIsSynthesized(lastModifier.end)) { + return lastModifier.end; + } } + return node.pos; } - function emitModifiers(node, modifiers) { + function emitModifierList(node, modifiers) { emitList(node, modifiers, 2359808 /* Modifiers */); + const lastModifier = lastOrUndefined(modifiers); + return lastModifier && !positionIsSynthesized(lastModifier.end) ? lastModifier.end : node.pos; } function emitTypeAnnotation(node) { if (node) { @@ -111201,8 +114336,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { decreaseIndent(); } } - function emitDecorators(parentNode, decorators) { + function emitDecoratorList(parentNode, decorators) { emitList(parentNode, decorators, 2146305 /* Decorators */); + const lastDecorator = lastOrUndefined(decorators); + return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? lastDecorator.end : parentNode.pos; } function emitTypeArguments(parentNode, typeArguments) { emitList(parentNode, typeArguments, 53776 /* TypeArguments */, typeArgumentParenthesizerRuleSelector); @@ -111329,7 +114466,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { writeDelimiter(format); } else if (previousSibling) { if (format & 60 /* DelimitersMask */ && previousSibling.end !== (parentNode ? parentNode.end : -1)) { - emitLeadingCommentsOfPosition(previousSibling.end); + const previousSiblingEmitFlags = getEmitFlags(previousSibling); + if (!(previousSiblingEmitFlags & 2048 /* NoTrailingComments */)) { + emitLeadingCommentsOfPosition(previousSibling.end); + } } writeDelimiter(format); recordBundleFileInternalSectionEnd(previousSourceFileTextKind); @@ -111854,16 +114994,18 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function generateName(name) { - if ((name.autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { - return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), name.autoGenerate.flags, name.autoGenerate.prefix, name.autoGenerate.suffix); + const autoGenerate = name.emitNode.autoGenerate; + if ((autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { + return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), autoGenerate.flags, autoGenerate.prefix, autoGenerate.suffix); } else { - const autoGenerateId = name.autoGenerate.id; + const autoGenerateId = autoGenerate.id; return autoGeneratedIdToGeneratedName[autoGenerateId] || (autoGeneratedIdToGeneratedName[autoGenerateId] = makeName(name)); } } function generateNameCached(node, privateName, flags, prefix, suffix) { const nodeId = getNodeId(node); - return nodeIdToGeneratedName[nodeId] || (nodeIdToGeneratedName[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); + const cache = privateName ? nodeIdToGeneratedPrivateName : nodeIdToGeneratedName; + return cache[nodeId] || (cache[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); } function isUniqueName(name, privateName) { return isFileLevelUniqueName2(name, privateName) && !isReservedName(name, privateName) && !generatedNames.has(name); @@ -112105,7 +115247,21 @@ function createPrinter(printerOptions = {}, handlers = {}) { Debug.assert(!prefix && !suffix && !privateName); return generateNameForImportOrExportDeclaration(node); case 259 /* FunctionDeclaration */: - case 260 /* ClassDeclaration */: + case 260 /* ClassDeclaration */: { + Debug.assert(!prefix && !suffix && !privateName); + const name = node.name; + if (name && !isGeneratedIdentifier(name)) { + return generateNameForNode( + name, + /*privateName*/ + false, + flags, + prefix, + suffix + ); + } + return generateNameForExportDefault(); + } case 274 /* ExportAssignment */: Debug.assert(!prefix && !suffix && !privateName); return generateNameForExportDefault(); @@ -112137,16 +115293,17 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } function makeName(name) { - const prefix = formatGeneratedNamePart(name.autoGenerate.prefix, generateName); - const suffix = formatGeneratedNamePart(name.autoGenerate.suffix); - switch (name.autoGenerate.flags & 7 /* KindMask */) { + const autoGenerate = name.emitNode.autoGenerate; + const prefix = formatGeneratedNamePart(autoGenerate.prefix, generateName); + const suffix = formatGeneratedNamePart(autoGenerate.suffix); + switch (autoGenerate.flags & 7 /* KindMask */) { case 1 /* Auto */: - return makeTempVariableName(TempFlags.Auto, !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); + return makeTempVariableName(TempFlags.Auto, !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); case 2 /* Loop */: Debug.assertNode(name, isIdentifier); return makeTempVariableName( TempFlags._i, - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), /*privateName*/ false, prefix, @@ -112155,16 +115312,16 @@ function createPrinter(printerOptions = {}, handlers = {}) { case 3 /* Unique */: return makeUniqueName2( idText(name), - name.autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, - !!(name.autoGenerate.flags & 16 /* Optimistic */), - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, + !!(autoGenerate.flags & 16 /* Optimistic */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix ); } return Debug.fail(`Unsupported GeneratedIdentifierKind: ${Debug.formatEnum( - name.autoGenerate.flags & 7 /* KindMask */, + autoGenerate.flags & 7 /* KindMask */, GeneratedIdentifierFlags, /*isFlags*/ true @@ -112209,7 +115366,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { emitLeadingComments( pos, /*isEmittedNode*/ - node.kind !== 354 /* NotEmittedStatement */ + node.kind !== 355 /* NotEmittedStatement */ ); } if (!skipLeadingComments || pos >= 0 && (emitFlags & 1024 /* NoLeadingComments */) !== 0) { @@ -112233,7 +115390,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { containerPos = savedContainerPos; containerEnd = savedContainerEnd; declarationListContainerEnd = savedDeclarationListContainerEnd; - if (!skipTrailingComments && node.kind !== 354 /* NotEmittedStatement */) { + if (!skipTrailingComments && node.kind !== 355 /* NotEmittedStatement */) { emitTrailingComments(end); } } @@ -112505,7 +115662,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } } else { const source = sourceMapRange.source || sourceMapSource; - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, skipSourceTrivia(source, sourceMapRange.pos)); } if (emitFlags & 128 /* NoNestedSourceMaps */) { @@ -112520,7 +115677,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { if (emitFlags & 128 /* NoNestedSourceMaps */) { sourceMapsDisabled = false; } - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, sourceMapRange.end); } } @@ -113230,7 +116387,7 @@ function createCompilerHostWorker(options, setParentNodes, system = sys) { function getDefaultLibLocation() { return getDirectoryPath(normalizePath(system.getExecutingFilePath())); } - const newLine = getNewLineCharacter(options, () => system.newLine); + const newLine = getNewLineCharacter(options); const realpath = system.realpath && ((path) => system.realpath(path)); const compilerHost = { getSourceFile: createGetSourceFile((fileName) => compilerHost.readFile(fileName), () => options, setParentNodes), @@ -114754,7 +117911,6 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config getCommonSourceDirectory: program.getCommonSourceDirectory, getCompilerOptions: program.getCompilerOptions, getCurrentDirectory: () => currentDirectory, - getNewLine: () => host.getNewLine(), getSourceFile: program.getSourceFile, getSourceFileByPath: program.getSourceFileByPath, getSourceFiles: program.getSourceFiles, @@ -115133,8 +118289,26 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } function walkArray(nodes, parent2) { - if (canHaveModifiers(parent2) && parent2.modifiers === nodes && some(nodes, isDecorator) && !options.experimentalDecorators) { - diagnostics.push(createDiagnosticForNode2(parent2, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)); + if (canHaveIllegalDecorators(parent2)) { + const decorator = find(parent2.modifiers, isDecorator); + if (decorator) { + diagnostics.push(createDiagnosticForNode2(decorator, Diagnostics.Decorators_are_not_valid_here)); + } + } else if (canHaveDecorators(parent2) && parent2.modifiers) { + const decoratorIndex = findIndex(parent2.modifiers, isDecorator); + if (decoratorIndex >= 0) { + if (isParameter(parent2) && !options.experimentalDecorators) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } else if (isClassDeclaration(parent2)) { + const exportIndex = findIndex(parent2.modifiers, isExportModifier); + const defaultIndex = findIndex(parent2.modifiers, isDefaultModifier); + if (exportIndex >= 0 && decoratorIndex < exportIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_must_come_after_export_or_export_default_in_JavaScript_files)); + } else if (defaultIndex >= 0 && decoratorIndex < defaultIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } + } + } } switch (parent2.kind) { case 260 /* ClassDeclaration */: @@ -115293,7 +118467,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config /*assertClause*/ void 0 ); - addEmitFlags(importDecl, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(importDecl, 2 /* NeverApplyImportHelper */); setParent(externalHelpersModuleReference, importDecl); setParent(importDecl, file); externalHelpersModuleReference.flags &= ~8 /* Synthesized */; @@ -115560,7 +118734,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config if (filesByName.has(path)) { const file2 = filesByName.get(path); addFileIncludeReason(file2 || void 0, reason); - if (file2 && options.forceConsistentCasingInFileNames) { + if (file2 && !(options.forceConsistentCasingInFileNames === false)) { const checkedName = file2.fileName; const isRedirect = toPath3(checkedName) !== toPath3(fileName); if (isRedirect) { @@ -116159,24 +119333,12 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } const languageVersion = getEmitScriptTarget(options); const firstNonAmbientExternalModuleSourceFile = find(files, (f) => isExternalModule(f) && !f.isDeclarationFile); - if (options.isolatedModules) { - if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */) { + if (options.isolatedModules || options.verbatimModuleSyntax) { + if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */ && options.isolatedModules) { createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); } if (options.preserveConstEnums === false) { - createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); - } - for (const file of files) { - if (!isExternalModule(file) && !isSourceFileJS(file) && !file.isDeclarationFile && file.scriptKind !== 6 /* JSON */) { - const span = getErrorSpanForNode(file, file); - programDiagnostics.add(createFileDiagnostic( - file, - span.start, - span.length, - Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, - getBaseFileName(file.fileName) - )); - } + createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled, options.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules", "preserveConstEnums"); } } else if (firstNonAmbientExternalModuleSourceFile && languageVersion < 2 /* ES2015 */ && options.module === 0 /* None */) { const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, typeof firstNonAmbientExternalModuleSourceFile.externalModuleIndicator === "boolean" ? firstNonAmbientExternalModuleSourceFile : firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); @@ -116258,10 +119420,25 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } if (options.preserveValueImports && getEmitModuleKind(options) < 5 /* ES2015 */) { - createOptionValueDiagnostic("importsNotUsedAsValues", Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later); + createDiagnosticForOptionName(Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later, "preserveValueImports"); + } + if (options.verbatimModuleSyntax) { + const moduleKind = getEmitModuleKind(options); + if (moduleKind === 2 /* AMD */ || moduleKind === 3 /* UMD */ || moduleKind === 4 /* System */) { + createDiagnosticForOptionName(Diagnostics.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System, "verbatimModuleSyntax"); + } + if (options.isolatedModules) { + createRedundantOptionDiagnostic("isolatedModules", "verbatimModuleSyntax"); + } + if (options.preserveValueImports) { + createRedundantOptionDiagnostic("preserveValueImports", "verbatimModuleSyntax"); + } + if (options.importsNotUsedAsValues) { + createRedundantOptionDiagnostic("importsNotUsedAsValues", "verbatimModuleSyntax"); + } } if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly)) { - createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set); + createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set); } const moduleResolution = getEmitModuleResolutionKind(options); if (options.resolvePackageJsonExports && !moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { @@ -116307,16 +119484,25 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } } - function verifyDeprecatedCompilerOptions() { + function getVersionForDeprecationDiagnostics(reportInvalidIgnoreDeprecations) { const version2 = typeScriptVersion3 || versionMajorMinor; const ignoreDeprecations = options.ignoreDeprecations; if (ignoreDeprecations) { if (ignoreDeprecations === "5.0" /* v5_0 */ && (version2 === "5.0" /* v5_0 */ || version2 === "5.5" /* v5_5 */)) { return; - } else { + } else if (reportInvalidIgnoreDeprecations) { createOptionValueDiagnostic("ignoreDeprecations", Diagnostics.Invalid_value_for_ignoreDeprecations); } } + return version2; + } + function verifyDeprecatedCompilerOptions() { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + true + ); + if (!version2) + return; if (options.target === 0 /* ES3 */) { createDeprecatedDiagnosticForOption(version2, "target", "ES3"); } @@ -116341,30 +119527,83 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config if (options.out) { createDeprecatedDiagnosticForOption(version2, "out"); } + if (options.importsNotUsedAsValues) { + createDeprecatedDiagnosticForOption( + version2, + "importsNotUsedAsValues", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } + if (options.preserveValueImports) { + createDeprecatedDiagnosticForOption( + version2, + "preserveValueImports", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } } - function createDeprecatedDiagnosticForOption(version2, name, value) { + function verifyDeprecatedProjectReference(ref, parentFile, index) { + if (ref.prepend) { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + false + ); + if (version2) { + createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => createDiagnosticForReference(parentFile, index, message, arg0, arg1, arg2), + "prepend" + ); + } + } + } + function createDeprecatedDiagnosticForOption(version2, name, value, useInstead) { + return createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => { + if (useInstead) { + const details = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Use_0_instead, + useInstead + ); + const chain = chainDiagnosticMessages(details, message, arg0, arg1, arg2); + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + chain + ); + } else { + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + message, + arg0, + arg1, + arg2 + ); + } + }, + name, + value + ); + } + function createDeprecatedOptionForVersionDiagnostic(version2, createDiagnostic, name, value) { if (version2 === "6.0" /* v6_0 */) { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, - value || name - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, value || name); } else { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, - value || name, - "5.5" /* v5_5 */, - "5.0" /* v5_0 */ - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, value || name, "5.5" /* v5_5 */, "5.0" /* v5_0 */); } } function createDiagnosticExplainingFile(file, fileProcessingReason, diagnostic, args) { @@ -116510,6 +119749,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent2, index) => { const ref = (parent2 ? parent2.commandLine.projectReferences : projectReferences)[index]; const parentFile = parent2 && parent2.sourceFile; + verifyDeprecatedProjectReference(ref, parentFile, index); if (!resolvedRef) { createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); return; @@ -116617,22 +119857,26 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config arg1 ); } - function createDiagnosticForReference(sourceFile, index, message, arg0, arg1) { + function createDiagnosticForReference(sourceFile, index, message, arg0, arg1, arg2) { const referencesSyntax = firstDefined( getTsConfigPropArray(sourceFile || options.configFile, "references"), (property) => isArrayLiteralExpression(property.initializer) ? property.initializer : void 0 ); if (referencesSyntax && referencesSyntax.elements.length > index) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1)); + programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1, arg2)); } else { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1)); + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); } } function createDiagnosticForOption(onKey, option1, option2, message, arg0, arg1, arg2) { const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); const needCompilerDiagnostic = !compilerOptionsObjectLiteralSyntax || !createOptionDiagnosticInObjectLiteralSyntax(compilerOptionsObjectLiteralSyntax, onKey, option1, option2, message, arg0, arg1, arg2); if (needCompilerDiagnostic) { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createCompilerDiagnosticFromMessageChain(message)); + } else { + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + } } } function getCompilerOptionsObjectLiteralSyntax() { @@ -116653,10 +119897,32 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config function createOptionDiagnosticInObjectLiteralSyntax(objectLiteral, onKey, key1, key2, message, arg0, arg1, arg2) { const props = getPropertyAssignment(objectLiteral, key1, key2); for (const prop of props) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createDiagnosticForNodeFromMessageChain(options.configFile, onKey ? prop.name : prop.initializer, message)); + } else { + programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + } } return !!props.length; } + function createRedundantOptionDiagnostic(errorOnOption, redundantWithOption) { + const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); + if (compilerOptionsObjectLiteralSyntax) { + createOptionDiagnosticInObjectLiteralSyntax( + compilerOptionsObjectLiteralSyntax, + /*onKey*/ + true, + errorOnOption, + /*key2*/ + void 0, + Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, + errorOnOption, + redundantWithOption + ); + } else { + createDiagnosticForOptionName(Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, errorOnOption, redundantWithOption); + } + } function blockEmittingOfFile(emitFileName, diag2) { hasEmitBlockingDiagnostics.set(toPath3(emitFileName), true); programDiagnostics.add(diag2); @@ -116908,9 +120174,8 @@ function createPrependNodes(projectReferences, getCommandLine, readFile, host) { } return nodes || emptyArray; } -function resolveProjectReferencePath(hostOrRef, ref) { - const passedInRef = ref ? ref : hostOrRef; - return resolveConfigFileProjectName(passedInRef.path); +function resolveProjectReferencePath(ref) { + return resolveConfigFileProjectName(ref.path); } function getResolutionDiagnostic(options, { extension }, { isDeclarationFile }) { switch (extension) { @@ -119522,6 +122787,9 @@ function getFilesInErrorForSummary(diagnostics) { } ); return filesInError.map((fileName) => { + if (fileName === void 0) { + return void 0; + } const diagnosticForFileName = find( diagnostics, (diagnostic) => diagnostic.file !== void 0 && diagnostic.file.fileName === fileName @@ -119915,7 +123183,6 @@ function createWatchFactory(host, options) { } function createCompilerHostFromProgramHost(host, getCompilerOptions, directoryStructureHost = host) { const useCaseSensitiveFileNames = host.useCaseSensitiveFileNames(); - const hostGetNewLine = memoize(() => host.getNewLine()); const compilerHost = { getSourceFile: createGetSourceFile( (fileName, encoding) => !encoding ? compilerHost.readFile(fileName) : host.readFile(fileName, encoding), @@ -119933,7 +123200,7 @@ function createCompilerHostFromProgramHost(host, getCompilerOptions, directorySt getCurrentDirectory: memoize(() => host.getCurrentDirectory()), useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getCanonicalFileName: createGetCanonicalFileName(useCaseSensitiveFileNames), - getNewLine: () => getNewLineCharacter(getCompilerOptions(), hostGetNewLine), + getNewLine: () => getNewLineCharacter(getCompilerOptions()), fileExists: (f) => host.fileExists(f), readFile: (f) => host.readFile(f), trace: maybeBind(host, host.trace), @@ -120019,7 +123286,7 @@ function createWatchCompilerHost(system = sys, createProgram2, reportDiagnostic, copyProperties(result, createWatchHost(system, reportWatchStatus2)); result.afterProgramCreate = (builderProgram) => { const compilerOptions = builderProgram.getCompilerOptions(); - const newLine = getNewLineCharacter(compilerOptions, () => system.newLine); + const newLine = getNewLineCharacter(compilerOptions); emitFilesAndReportErrors( builderProgram, reportDiagnostic, @@ -120190,11 +123457,13 @@ function createWatchProgram(host) { } reportWatchDiagnostic(Diagnostics.Starting_compilation_in_watch_mode); if (configFileName && !host.configFileParsingResult) { - newLine = getNewLineCharacter(optionsToExtendForConfigFile, () => host.getNewLine()); + newLine = getNewLineCharacter(optionsToExtendForConfigFile); Debug.assert(!rootFileNames); parseConfigFile2(); newLine = updateNewLine(); } + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); const { watchFile: watchFile2, watchDirectory, writeLog } = createWatchFactory(host, compilerOptions); const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames); writeLog(`Current directory: ${currentDirectory} CaseSensitiveFileNames: ${useCaseSensitiveFileNames}`); @@ -120297,6 +123566,8 @@ function createWatchProgram(host) { } function synchronizeProgram() { writeLog(`Synchronizing program`); + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); clearInvalidateResolutionsOfFailedLookupLocations(); const program = getCurrentBuilderProgram(); if (hasChangedCompilerOptions) { @@ -120382,7 +123653,7 @@ function createWatchProgram(host) { scheduleProgramUpdate(); } function updateNewLine() { - return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile, () => host.getNewLine()); + return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile); } function toPath3(fileName) { return toPath(fileName, currentDirectory, getCanonicalFileName); @@ -120536,6 +123807,8 @@ function createWatchProgram(host) { } function reloadFileNamesFromConfigFile() { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); + Debug.assert(configFileName); reloadLevel = 0 /* None */; rootFileNames = getFileNamesFromConfigSpecs(compilerOptions.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName), currentDirectory), compilerOptions, parseConfigFileHost, extraFileExtensions); if (updateErrorForNoInputFiles(rootFileNames, getNormalizedAbsolutePath(configFileName, currentDirectory), compilerOptions.configFile.configFileSpecs, configFileParsingDiagnostics, canConfigFileJsonReportNoInputFiles)) { @@ -120544,6 +123817,7 @@ function createWatchProgram(host) { synchronizeProgram(); } function reloadConfigFile() { + Debug.assert(configFileName); writeLog(`Reloading config file: ${configFileName}`); reloadLevel = 0 /* None */; if (cachedDirectoryStructureHost) { @@ -120556,6 +123830,7 @@ function createWatchProgram(host) { updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); } function parseConfigFile2() { + Debug.assert(configFileName); setConfigFileParsingResult(getParsedCommandLineOfConfigFile( configFileName, optionsToExtendForConfigFile, @@ -120583,6 +123858,7 @@ function createWatchProgram(host) { return config.parsedCommandLine; if (config.parsedCommandLine && config.reloadLevel === 1 /* Partial */ && !host.getParsedCommandLine) { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); const fileNames = getFileNamesFromConfigSpecs( config.parsedCommandLine.options.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName2), currentDirectory), @@ -120674,7 +123950,8 @@ function createWatchProgram(host) { return watchDirectory( directory, (fileOrDirectory) => { - Debug.assert(!!configFileName); + Debug.assert(configFileName); + Debug.assert(compilerOptions); const fileOrDirectoryPath = toPath3(fileOrDirectory); if (cachedDirectoryStructureHost) { cachedDirectoryStructureHost.addOrDeleteFileOrDirectory(fileOrDirectory, fileOrDirectoryPath); @@ -120705,6 +123982,7 @@ function createWatchProgram(host) { ); } function updateExtendedConfigFilesWatches(forProjectPath, options, watchOptions2, watchType) { + Debug.assert(configFileName); updateSharedExtendedConfigFileWatcher( forProjectPath, options, @@ -123302,6 +126580,7 @@ __export(ts_exports3, { InferencePriority: () => InferencePriority, InlayHintKind: () => InlayHintKind, InlayHints: () => ts_InlayHints_exports, + InternalEmitFlags: () => InternalEmitFlags, InternalSymbolName: () => InternalSymbolName, InvalidatedProjectKind: () => InvalidatedProjectKind, JsDoc: () => ts_JsDoc_exports, @@ -123345,7 +126624,7 @@ __export(ts_exports3, { PollingInterval: () => PollingInterval, PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, - PrivateIdentifierKind: () => PrivateIdentifierKind2, + PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, QuotePreference: () => QuotePreference, RelationComparisonResult: () => RelationComparisonResult, @@ -123395,10 +126674,13 @@ __export(ts_exports3, { WatchFileKind: () => WatchFileKind, WatchLogLevel: () => WatchLogLevel, WatchType: () => WatchType, + accessPrivateIdentifier: () => accessPrivateIdentifier, addEmitFlags: () => addEmitFlags, addEmitHelper: () => addEmitHelper, addEmitHelpers: () => addEmitHelpers, + addInternalEmitFlags: () => addInternalEmitFlags, addNodeFactoryPatcher: () => addNodeFactoryPatcher, + addObjectAllocatorPatcher: () => addObjectAllocatorPatcher, addRange: () => addRange, addRelatedInfo: () => addRelatedInfo, addSyntheticLeadingComment: () => addSyntheticLeadingComment, @@ -123469,6 +126751,7 @@ __export(ts_exports3, { changesAffectModuleResolution: () => changesAffectModuleResolution, changesAffectingProgramStructure: () => changesAffectingProgramStructure, childIsDecorated: () => childIsDecorated, + classElementOrClassElementParameterIsDecorated: () => classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated: () => classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper: () => classPrivateFieldGetHelper, classPrivateFieldInHelper: () => classPrivateFieldInHelper, @@ -123517,6 +126800,7 @@ __export(ts_exports3, { compilerOptionsAffectSemanticDiagnostics: () => compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics: () => compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules: () => compilerOptionsIndicateEsModules, + compose: () => compose, computeCommonSourceDirectoryOfFilenames: () => computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition: () => computeLineAndCharacterOfPosition, computeLineOfPosition: () => computeLineOfPosition, @@ -123534,7 +126818,6 @@ __export(ts_exports3, { containsPath: () => containsPath, convertCompilerOptionsForTelemetry: () => convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson: () => convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable: () => convertEnableAutoDiscoveryToEnable, convertJsonOption: () => convertJsonOption, convertToBase64: () => convertToBase64, convertToObject: () => convertToObject, @@ -123555,41 +126838,17 @@ __export(ts_exports3, { createAccessorPropertyBackingField: () => createAccessorPropertyBackingField, createAccessorPropertyGetRedirector: () => createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector: () => createAccessorPropertySetRedirector, - createAdd: () => createAdd, - createArrayBindingPattern: () => createArrayBindingPattern, - createArrayLiteral: () => createArrayLiteral, - createArrayTypeNode: () => createArrayTypeNode, - createArrowFunction: () => createArrowFunction, - createAsExpression: () => createAsExpression, - createAssignment: () => createAssignment, - createAwait: () => createAwait, createBaseNodeFactory: () => createBaseNodeFactory, - createBigIntLiteral: () => createBigIntLiteral, - createBinary: () => createBinary, createBinaryExpressionTrampoline: () => createBinaryExpressionTrampoline, - createBindingElement: () => createBindingElement, createBindingHelper: () => createBindingHelper, - createBlock: () => createBlock, - createBreak: () => createBreak, createBuildInfo: () => createBuildInfo, createBuilderProgram: () => createBuilderProgram, createBuilderProgramUsingProgramBuildInfo: () => createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter: () => createBuilderStatusReporter, - createBundle: () => createBundle, createCacheWithRedirects: () => createCacheWithRedirects, createCacheableExportInfoMap: () => createCacheableExportInfoMap, createCachedDirectoryStructureHost: () => createCachedDirectoryStructureHost, - createCall: () => createCall, - createCallChain: () => createCallChain, - createCallSignature: () => createCallSignature, - createCaseBlock: () => createCaseBlock, - createCaseClause: () => createCaseClause, - createCatchClause: () => createCatchClause, - createClassDeclaration: () => createClassDeclaration, - createClassExpression: () => createClassExpression, createClassifier: () => createClassifier, - createComma: () => createComma, - createCommaList: () => createCommaList, createCommentDirectivesMap: () => createCommentDirectivesMap, createCompilerDiagnostic: () => createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType: () => createCompilerDiagnosticForInvalidCustomType, @@ -123597,212 +126856,73 @@ __export(ts_exports3, { createCompilerHost: () => createCompilerHost, createCompilerHostFromProgramHost: () => createCompilerHostFromProgramHost, createCompilerHostWorker: () => createCompilerHostWorker, - createComputedPropertyName: () => createComputedPropertyName, - createConditional: () => createConditional, - createConditionalTypeNode: () => createConditionalTypeNode, - createConstructSignature: () => createConstructSignature, - createConstructor: () => createConstructor, - createConstructorTypeNode: () => createConstructorTypeNode, - createContinue: () => createContinue, - createDebuggerStatement: () => createDebuggerStatement, - createDecorator: () => createDecorator, - createDefaultClause: () => createDefaultClause, - createDelete: () => createDelete, createDetachedDiagnostic: () => createDetachedDiagnostic, createDiagnosticCollection: () => createDiagnosticCollection, createDiagnosticForFileFromMessageChain: () => createDiagnosticForFileFromMessageChain, createDiagnosticForNode: () => createDiagnosticForNode, createDiagnosticForNodeArray: () => createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain: () => createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain: () => createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile: () => createDiagnosticForNodeInSourceFile, createDiagnosticForRange: () => createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic: () => createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter: () => createDiagnosticReporter, - createDo: () => createDo, createDocumentPositionMapper: () => createDocumentPositionMapper, createDocumentRegistry: () => createDocumentRegistry, createDocumentRegistryInternal: () => createDocumentRegistryInternal, - createElementAccess: () => createElementAccess, - createElementAccessChain: () => createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram: () => createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory: () => createEmitHelperFactory, createEmptyExports: () => createEmptyExports, - createEmptyStatement: () => createEmptyStatement, - createEnumDeclaration: () => createEnumDeclaration, - createEnumMember: () => createEnumMember, - createExportAssignment: () => createExportAssignment2, - createExportDeclaration: () => createExportDeclaration, - createExportDefault: () => createExportDefault, - createExportSpecifier: () => createExportSpecifier, createExpressionForJsxElement: () => createExpressionForJsxElement, createExpressionForJsxFragment: () => createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike: () => createExpressionForObjectLiteralElementLike, createExpressionForPropertyName: () => createExpressionForPropertyName, createExpressionFromEntityName: () => createExpressionFromEntityName, - createExpressionStatement: () => createExpressionStatement, - createExpressionWithTypeArguments: () => createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded: () => createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport: () => createExternalModuleExport, - createExternalModuleReference: () => createExternalModuleReference, - createFalse: () => createFalse, createFileDiagnostic: () => createFileDiagnostic, createFileDiagnosticFromMessageChain: () => createFileDiagnosticFromMessageChain, - createFileLevelUniqueName: () => createFileLevelUniqueName, - createFor: () => createFor, - createForIn: () => createForIn, - createForOf: () => createForOf, createForOfBindingStatement: () => createForOfBindingStatement, - createFunctionDeclaration: () => createFunctionDeclaration, - createFunctionExpression: () => createFunctionExpression, - createFunctionTypeNode: () => createFunctionTypeNode, - createGetAccessor: () => createGetAccessor, createGetCanonicalFileName: () => createGetCanonicalFileName, createGetSourceFile: () => createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode: () => createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName: () => createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker: () => createGetSymbolWalker, - createHeritageClause: () => createHeritageClause, - createIdentifier: () => createIdentifier, - createIf: () => createIf, - createImmediatelyInvokedArrowFunction: () => createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression: () => createImmediatelyInvokedFunctionExpression, - createImportClause: () => createImportClause, - createImportDeclaration: () => createImportDeclaration, - createImportEqualsDeclaration: () => createImportEqualsDeclaration, - createImportSpecifier: () => createImportSpecifier, - createImportTypeNode: () => createImportTypeNode, createIncrementalCompilerHost: () => createIncrementalCompilerHost, createIncrementalProgram: () => createIncrementalProgram, - createIndexSignature: () => createIndexSignature, - createIndexedAccessTypeNode: () => createIndexedAccessTypeNode, - createInferTypeNode: () => createInferTypeNode, createInputFiles: () => createInputFiles, createInputFilesWithFilePaths: () => createInputFilesWithFilePaths, createInputFilesWithFileTexts: () => createInputFilesWithFileTexts, - createInterfaceDeclaration: () => createInterfaceDeclaration, - createIntersectionTypeNode: () => createIntersectionTypeNode, - createJSDocAugmentsTag: () => createJSDocAugmentsTag, - createJSDocAuthorTag: () => createJSDocAuthorTag, - createJSDocCallbackTag: () => createJSDocCallbackTag, - createJSDocClassTag: () => createJSDocClassTag, - createJSDocComment: () => createJSDocComment, - createJSDocEnumTag: () => createJSDocEnumTag, - createJSDocImplementsTag: () => createJSDocImplementsTag, - createJSDocParamTag: () => createJSDocParamTag, - createJSDocParameterTag: () => createJSDocParameterTag, - createJSDocPrivateTag: () => createJSDocPrivateTag, - createJSDocPropertyTag: () => createJSDocPropertyTag, - createJSDocProtectedTag: () => createJSDocProtectedTag, - createJSDocPublicTag: () => createJSDocPublicTag, - createJSDocReadonlyTag: () => createJSDocReadonlyTag, - createJSDocReturnTag: () => createJSDocReturnTag, - createJSDocSignature: () => createJSDocSignature, - createJSDocTag: () => createJSDocTag, - createJSDocTemplateTag: () => createJSDocTemplateTag, - createJSDocThisTag: () => createJSDocThisTag, - createJSDocTypeExpression: () => createJSDocTypeExpression, - createJSDocTypeLiteral: () => createJSDocTypeLiteral, - createJSDocTypeTag: () => createJSDocTypeTag, - createJSDocTypedefTag: () => createJSDocTypedefTag, - createJsxAttribute: () => createJsxAttribute, - createJsxAttributes: () => createJsxAttributes, - createJsxClosingElement: () => createJsxClosingElement, - createJsxElement: () => createJsxElement, - createJsxExpression: () => createJsxExpression, createJsxFactoryExpression: () => createJsxFactoryExpression, - createJsxFragment: () => createJsxFragment, - createJsxJsxClosingFragment: () => createJsxJsxClosingFragment, - createJsxOpeningElement: () => createJsxOpeningElement, - createJsxOpeningFragment: () => createJsxOpeningFragment, - createJsxSelfClosingElement: () => createJsxSelfClosingElement, - createJsxSpreadAttribute: () => createJsxSpreadAttribute, - createJsxText: () => createJsxText, - createKeywordTypeNode: () => createKeywordTypeNode, - createLabel: () => createLabel, createLanguageService: () => createLanguageService, createLanguageServiceSourceFile: () => createLanguageServiceSourceFile, - createLessThan: () => createLessThan, - createLiteral: () => createLiteral, - createLiteralTypeNode: () => createLiteralTypeNode, - createLogicalAnd: () => createLogicalAnd, - createLogicalNot: () => createLogicalNot, - createLogicalOr: () => createLogicalOr, - createLoopVariable: () => createLoopVariable, - createMappedTypeNode: () => createMappedTypeNode, createMemberAccessForPropertyName: () => createMemberAccessForPropertyName, - createMetaProperty: () => createMetaProperty, - createMethod: () => createMethod, - createMethodSignature: () => createMethodSignature, createModeAwareCache: () => createModeAwareCache, createModeAwareCacheKey: () => createModeAwareCacheKey, - createModifier: () => createModifier, - createModifiersFromModifierFlags: () => createModifiersFromModifierFlags, - createModuleBlock: () => createModuleBlock, - createModuleDeclaration: () => createModuleDeclaration, createModuleResolutionCache: () => createModuleResolutionCache, createModuleResolutionLoader: () => createModuleResolutionLoader, createModuleSpecifierResolutionHost: () => createModuleSpecifierResolutionHost, createMultiMap: () => createMultiMap, - createNamedExports: () => createNamedExports, - createNamedImports: () => createNamedImports, - createNamespaceExport: () => createNamespaceExport, - createNamespaceExportDeclaration: () => createNamespaceExportDeclaration, - createNamespaceImport: () => createNamespaceImport, - createNew: () => createNew, - createNoSubstitutionTemplateLiteral: () => createNoSubstitutionTemplateLiteral, - createNode: () => createNode2, - createNodeArray: () => createNodeArray, createNodeConverters: () => createNodeConverters, createNodeFactory: () => createNodeFactory, - createNonNullChain: () => createNonNullChain, - createNonNullExpression: () => createNonNullExpression, - createNotEmittedStatement: () => createNotEmittedStatement, - createNull: () => createNull, - createNumericLiteral: () => createNumericLiteral, - createObjectBindingPattern: () => createObjectBindingPattern, - createObjectLiteral: () => createObjectLiteral, - createOmittedExpression: () => createOmittedExpression, - createOptimisticUniqueName: () => createOptimisticUniqueName, createOptionNameMap: () => createOptionNameMap, - createOptionalTypeNode: () => createOptionalTypeNode, createOverload: () => createOverload, createPackageJsonImportFilter: () => createPackageJsonImportFilter, createPackageJsonInfo: () => createPackageJsonInfo, - createParameter: () => createParameter, - createParen: () => createParen, - createParenthesizedType: () => createParenthesizedType, createParenthesizerRules: () => createParenthesizerRules, - createPartiallyEmittedExpression: () => createPartiallyEmittedExpression, createPatternMatcher: () => createPatternMatcher, - createPostfix: () => createPostfix, - createPostfixIncrement: () => createPostfixIncrement, - createPrefix: () => createPrefix, createPrependNodes: () => createPrependNodes, createPrinter: () => createPrinter, - createPrivateIdentifier: () => createPrivateIdentifier, createProgram: () => createProgram, createProgramHost: () => createProgramHost, - createProperty: () => createProperty, - createPropertyAccess: () => createPropertyAccess, - createPropertyAccessChain: () => createPropertyAccessChain, - createPropertyAssignment: () => createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral: () => createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature: () => createPropertySignature, - createQualifiedName: () => createQualifiedName, createQueue: () => createQueue, createRange: () => createRange, createRedirectedBuilderProgram: () => createRedirectedBuilderProgram, - createRegularExpressionLiteral: () => createRegularExpressionLiteral, createResolutionCache: () => createResolutionCache, - createRestTypeNode: () => createRestTypeNode, - createReturn: () => createReturn, createRuntimeTypeSerializer: () => createRuntimeTypeSerializer, createScanner: () => createScanner, createSemanticDiagnosticsBuilderProgram: () => createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement: () => createSemicolonClassElement, createSet: () => createSet, - createSetAccessor: () => createSetAccessor, - createShorthandPropertyAssignment: () => createShorthandPropertyAssignment, createSolutionBuilder: () => createSolutionBuilder, createSolutionBuilderHost: () => createSolutionBuilderHost, createSolutionBuilderWithWatch: () => createSolutionBuilderWithWatch, @@ -123811,27 +126931,10 @@ __export(ts_exports3, { createSourceFile: () => createSourceFile, createSourceMapGenerator: () => createSourceMapGenerator, createSourceMapSource: () => createSourceMapSource, - createSpread: () => createSpread, - createSpreadAssignment: () => createSpreadAssignment, - createStatement: () => createStatement, - createStrictEquality: () => createStrictEquality, - createStrictInequality: () => createStrictInequality, - createStringLiteral: () => createStringLiteral, - createStringLiteralFromNode: () => createStringLiteralFromNode, - createSubtract: () => createSubtract, - createSuper: () => createSuper, createSuperAccessVariableStatement: () => createSuperAccessVariableStatement, - createSwitch: () => createSwitch, createSymbolTable: () => createSymbolTable, createSymlinkCache: () => createSymlinkCache, createSystemWatchFunctions: () => createSystemWatchFunctions, - createTaggedTemplate: () => createTaggedTemplate, - createTempVariable: () => createTempVariable, - createTemplateExpression: () => createTemplateExpression, - createTemplateHead: () => createTemplateHead, - createTemplateMiddle: () => createTemplateMiddle, - createTemplateSpan: () => createTemplateSpan, - createTemplateTail: () => createTemplateTail, createTextChange: () => createTextChange, createTextChangeFromStartLength: () => createTextChangeFromStartLength, createTextChangeRange: () => createTextChangeRange, @@ -123843,36 +126946,12 @@ __export(ts_exports3, { createTextSpanFromRange: () => createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent: () => createTextSpanFromStringLiteralLikeContent, createTextWriter: () => createTextWriter, - createThis: () => createThis, - createThisTypeNode: () => createThisTypeNode, - createThrow: () => createThrow, - createToken: () => createToken, createTokenRange: () => createTokenRange, - createTrue: () => createTrue, - createTry: () => createTry, - createTupleTypeNode: () => createTupleTypeNode, - createTypeAliasDeclaration: () => createTypeAliasDeclaration, - createTypeAssertion: () => createTypeAssertion, createTypeChecker: () => createTypeChecker, - createTypeLiteralNode: () => createTypeLiteralNode, - createTypeOf: () => createTypeOf, - createTypeOperatorNode: () => createTypeOperatorNode, - createTypeParameterDeclaration: () => createTypeParameterDeclaration, - createTypePredicateNode: () => createTypePredicateNode, - createTypePredicateNodeWithModifier: () => createTypePredicateNodeWithModifier, - createTypeQueryNode: () => createTypeQueryNode, createTypeReferenceDirectiveResolutionCache: () => createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode: () => createTypeReferenceNode, createTypeReferenceResolutionLoader: () => createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap: () => createUnderscoreEscapedMultiMap, - createUnionTypeNode: () => createUnionTypeNode, - createUniqueName: () => createUniqueName, createUnparsedSourceFile: () => createUnparsedSourceFile, - createVariableDeclaration: () => createVariableDeclaration, - createVariableDeclarationList: () => createVariableDeclarationList, - createVariableStatement: () => createVariableStatement, - createVoid: () => createVoid, - createVoidZero: () => createVoidZero, createWatchCompilerHost: () => createWatchCompilerHost2, createWatchCompilerHostOfConfigFile: () => createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions: () => createWatchCompilerHostOfFilesAndCompilerOptions, @@ -123880,10 +126959,7 @@ __export(ts_exports3, { createWatchHost: () => createWatchHost, createWatchProgram: () => createWatchProgram, createWatchStatusReporter: () => createWatchStatusReporter, - createWhile: () => createWhile, - createWith: () => createWith, createWriteFileMeasuringIO: () => createWriteFileMeasuringIO, - createYield: () => createYield, declarationNameToString: () => declarationNameToString, decodeMappings: () => decodeMappings, decodedTextSpanIntersectsWith: () => decodedTextSpanIntersectsWith, @@ -123930,6 +127006,7 @@ __export(ts_exports3, { equateStringsCaseInsensitive: () => equateStringsCaseInsensitive, equateStringsCaseSensitive: () => equateStringsCaseSensitive, equateValues: () => equateValues, + esDecorateHelper: () => esDecorateHelper, escapeJsxAttributeString: () => escapeJsxAttributeString, escapeLeadingUnderscores: () => escapeLeadingUnderscores, escapeNonAsciiString: () => escapeNonAsciiString, @@ -123958,6 +127035,7 @@ __export(ts_exports3, { findAncestor: () => findAncestor, findBestPatternMatch: () => findBestPatternMatch, findChildOfKind: () => findChildOfKind, + findComputedPropertyNameCacheAssignment: () => findComputedPropertyNameCacheAssignment, findConfigFile: () => findConfigFile, findContainingList: () => findContainingList, findDiagnosticForNode: () => findDiagnosticForNode, @@ -123988,6 +127066,7 @@ __export(ts_exports3, { flatMapIterator: () => flatMapIterator, flatMapToMutable: () => flatMapToMutable, flatten: () => flatten, + flattenCommaList: () => flattenCommaList, flattenDestructuringAssignment: () => flattenDestructuringAssignment, flattenDestructuringBinding: () => flattenDestructuringBinding, flattenDiagnosticMessageText: () => flattenDiagnosticMessageText, @@ -124093,6 +127172,7 @@ __export(ts_exports3, { getDeclaredExpandoInitializer: () => getDeclaredExpandoInitializer, getDecorators: () => getDecorators, getDefaultCompilerOptions: () => getDefaultCompilerOptions2, + getDefaultExportInfoWorker: () => getDefaultExportInfoWorker, getDefaultFormatCodeSettings: () => getDefaultFormatCodeSettings, getDefaultLibFileName: () => getDefaultLibFileName, getDefaultLibFilePath: () => getDefaultLibFilePath, @@ -124164,9 +127244,11 @@ __export(ts_exports3, { getFormatCodeSettingsForWriting: () => getFormatCodeSettingsForWriting, getFullWidth: () => getFullWidth, getFunctionFlags: () => getFunctionFlags, - getGeneratedNameForNode: () => getGeneratedNameForNode, getHeritageClause: () => getHeritageClause, getHostSignatureFromJSDoc: () => getHostSignatureFromJSDoc, + getIdentifierAutoGenerate: () => getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference: () => getIdentifierGeneratedImportReference, + getIdentifierTypeArguments: () => getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression: () => getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile: () => getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker: () => getImpliedNodeFormatForFileWorker, @@ -124178,7 +127260,9 @@ __export(ts_exports3, { getInitializerOfBinaryExpression: () => getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement: () => getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes: () => getInterfaceBaseTypeNodes, + getInternalEmitFlags: () => getInternalEmitFlags, getInvokedExpression: () => getInvokedExpression, + getIsolatedModules: () => getIsolatedModules, getJSDocAugmentsTag: () => getJSDocAugmentsTag, getJSDocClassTag: () => getJSDocClassTag, getJSDocCommentRanges: () => getJSDocCommentRanges, @@ -124202,6 +127286,8 @@ __export(ts_exports3, { getJSDocReturnTag: () => getJSDocReturnTag, getJSDocReturnType: () => getJSDocReturnType, getJSDocRoot: () => getJSDocRoot, + getJSDocSatisfiesExpressionType: () => getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag: () => getJSDocSatisfiesTag, getJSDocTags: () => getJSDocTags, getJSDocTagsNoCache: () => getJSDocTagsNoCache, getJSDocTemplateTag: () => getJSDocTemplateTag, @@ -124256,7 +127342,6 @@ __export(ts_exports3, { getModuleNameStringLiteralAt: () => getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference: () => getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost: () => getModuleSpecifierResolverHost, - getMutableClone: () => getMutableClone, getNameForExportedSymbol: () => getNameForExportedSymbol, getNameFromIndexInfo: () => getNameFromIndexInfo, getNameFromPropertyName: () => getNameFromPropertyName, @@ -124330,6 +127415,7 @@ __export(ts_exports3, { getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier: () => getPrivateIdentifier, getProperties: () => getProperties, getProperty: () => getProperty, getPropertyArrayElementValue: () => getPropertyArrayElementValue, @@ -124455,6 +127541,7 @@ __export(ts_exports3, { getWatchErrorSummaryDiagnosticMessage: () => getWatchErrorSummaryDiagnosticMessage, getWatchFactory: () => getWatchFactory, group: () => group, + groupBy: () => groupBy, guessIndentation: () => guessIndentation, handleNoEmitOptions: () => handleNoEmitOptions, hasAbstractModifier: () => hasAbstractModifier, @@ -124500,12 +127587,14 @@ __export(ts_exports3, { hostUsesCaseSensitiveFileNames: () => hostUsesCaseSensitiveFileNames, idText: () => idText, identifierIsThisKeyword: () => identifierIsThisKeyword, + identifierToKeywordKind: () => identifierToKeywordKind, identity: () => identity, identitySourceMapConsumer: () => identitySourceMapConsumer, ignoreSourceNewlines: () => ignoreSourceNewlines, ignoredPaths: () => ignoredPaths, importDefaultHelper: () => importDefaultHelper, importFromModuleSpecifier: () => importFromModuleSpecifier, + importNameElisionDisabled: () => importNameElisionDisabled, importStarHelper: () => importStarHelper, indexOfAnyCharCode: () => indexOfAnyCharCode, indexOfNode: () => indexOfNode, @@ -124531,6 +127620,7 @@ __export(ts_exports3, { isAliasableExpression: () => isAliasableExpression, isAmbientModule: () => isAmbientModule, isAmbientPropertyDeclaration: () => isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition: () => isAnonymousFunctionDefinition, isAnyDirectorySeparator: () => isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire: () => isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport: () => isAnyImportOrReExport, @@ -124540,6 +127630,7 @@ __export(ts_exports3, { isArgumentExpressionOfElementAccess: () => isArgumentExpressionOfElementAccess, isArray: () => isArray, isArrayBindingElement: () => isArrayBindingElement, + isArrayBindingOrAssignmentElement: () => isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, isArrayBindingPattern: () => isArrayBindingPattern, isArrayLiteralExpression: () => isArrayLiteralExpression, @@ -124571,7 +127662,9 @@ __export(ts_exports3, { isBindableStaticElementAccessExpression: () => isBindableStaticElementAccessExpression, isBindableStaticNameExpression: () => isBindableStaticNameExpression, isBindingElement: () => isBindingElement, + isBindingElementOfBareOrAccessedRequire: () => isBindingElementOfBareOrAccessedRequire, isBindingName: () => isBindingName, + isBindingOrAssignmentElement: () => isBindingOrAssignmentElement, isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, isBindingPattern: () => isBindingPattern, isBlock: () => isBlock, @@ -124612,6 +127705,7 @@ __export(ts_exports3, { isClassStaticBlockDeclaration: () => isClassStaticBlockDeclaration, isCollapsedRange: () => isCollapsedRange, isColonToken: () => isColonToken, + isCommaExpression: () => isCommaExpression, isCommaListExpression: () => isCommaListExpression, isCommaSequence: () => isCommaSequence, isCommaToken: () => isCommaToken, @@ -124645,6 +127739,7 @@ __export(ts_exports3, { isDecoratorTarget: () => isDecoratorTarget, isDefaultClause: () => isDefaultClause, isDefaultImport: () => isDefaultImport, + isDefaultModifier: () => isDefaultModifier, isDefaultedExpandoInitializer: () => isDefaultedExpandoInitializer, isDeleteExpression: () => isDeleteExpression, isDeleteTarget: () => isDeleteTarget, @@ -124668,6 +127763,7 @@ __export(ts_exports3, { isEmptyBindingPattern: () => isEmptyBindingPattern, isEmptyObjectLiteral: () => isEmptyObjectLiteral, isEmptyStatement: () => isEmptyStatement, + isEmptyStringLiteral: () => isEmptyStringLiteral, isEndOfDeclarationMarker: () => isEndOfDeclarationMarker, isEntityName: () => isEntityName, isEntityNameExpression: () => isEntityNameExpression, @@ -124684,6 +127780,7 @@ __export(ts_exports3, { isExportModifier: () => isExportModifier, isExportName: () => isExportName, isExportNamespaceAsDefaultDeclaration: () => isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier: () => isExportOrDefaultModifier, isExportSpecifier: () => isExportSpecifier, isExportsIdentifier: () => isExportsIdentifier, isExportsOrModuleExportsOrAlias: () => isExportsOrModuleExportsOrAlias, @@ -124738,7 +127835,6 @@ __export(ts_exports3, { isIdentifier: () => isIdentifier, isIdentifierANonContextualKeyword: () => isIdentifierANonContextualKeyword, isIdentifierName: () => isIdentifierName, - isIdentifierOrPrivateIdentifier: () => isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode: () => isIdentifierOrThisTypeNode, isIdentifierPart: () => isIdentifierPart, isIdentifierStart: () => isIdentifierStart, @@ -124778,6 +127874,7 @@ __export(ts_exports3, { isInferTypeNode: () => isInferTypeNode, isInfinityOrNaNString: () => isInfinityOrNaNString, isInitializedProperty: () => isInitializedProperty, + isInitializedVariable: () => isInitializedVariable, isInsideJsxElement: () => isInsideJsxElement, isInsideJsxElementOrAttribute: () => isInsideJsxElementOrAttribute, isInsideNodeModules: () => isInsideNodeModules, @@ -124827,6 +127924,8 @@ __export(ts_exports3, { isJSDocPublicTag: () => isJSDocPublicTag, isJSDocReadonlyTag: () => isJSDocReadonlyTag, isJSDocReturnTag: () => isJSDocReturnTag, + isJSDocSatisfiesExpression: () => isJSDocSatisfiesExpression, + isJSDocSatisfiesTag: () => isJSDocSatisfiesTag, isJSDocSeeTag: () => isJSDocSeeTag, isJSDocSignature: () => isJSDocSignature, isJSDocTag: () => isJSDocTag, @@ -124882,11 +127981,14 @@ __export(ts_exports3, { isLiteralLikeElementAccess: () => isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess: () => isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression: () => isLiteralTypeLikeExpression, + isLiteralTypeLiteral: () => isLiteralTypeLiteral, isLiteralTypeNode: () => isLiteralTypeNode, isLocalName: () => isLocalName, isLogicalOperator: () => isLogicalOperator, isLogicalOrCoalescingAssignmentExpression: () => isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator: () => isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression: () => isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator: () => isLogicalOrCoalescingBinaryOperator, isMappedTypeNode: () => isMappedTypeNode, isMemberName: () => isMemberName, isMergeDeclarationMarker: () => isMergeDeclarationMarker, @@ -124914,6 +128016,8 @@ __export(ts_exports3, { isNameOfModuleDeclaration: () => isNameOfModuleDeclaration, isNamedClassElement: () => isNamedClassElement, isNamedDeclaration: () => isNamedDeclaration, + isNamedEvaluation: () => isNamedEvaluation, + isNamedEvaluationSource: () => isNamedEvaluationSource, isNamedExportBindings: () => isNamedExportBindings, isNamedExports: () => isNamedExports, isNamedImportBindings: () => isNamedImportBindings, @@ -124938,6 +128042,7 @@ __export(ts_exports3, { isNodeModulesDirectory: () => isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration: () => isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword: () => isNonContextualKeyword, + isNonExportDefaultModifier: () => isNonExportDefaultModifier, isNonGlobalAmbientModule: () => isNonGlobalAmbientModule, isNonGlobalDeclaration: () => isNonGlobalDeclaration, isNonNullAccess: () => isNonNullAccess, @@ -125006,6 +128111,7 @@ __export(ts_exports3, { isPropertyName: () => isPropertyName, isPropertyNameLiteral: () => isPropertyNameLiteral, isPropertySignature: () => isPropertySignature, + isProtoSetter: () => isProtoSetter, isPrototypeAccess: () => isPrototypeAccess, isPrototypePropertyAssignment: () => isPrototypePropertyAssignment, isPunctuation: () => isPunctuation, @@ -125117,7 +128223,6 @@ __export(ts_exports3, { isTupleTypeNode: () => isTupleTypeNode, isTypeAlias: () => isTypeAlias, isTypeAliasDeclaration: () => isTypeAliasDeclaration, - isTypeAssertion: () => isTypeAssertion, isTypeAssertionExpression: () => isTypeAssertionExpression, isTypeDeclaration: () => isTypeDeclaration, isTypeElement: () => isTypeElement, @@ -125127,8 +128232,9 @@ __export(ts_exports3, { isTypeLiteralNode: () => isTypeLiteralNode, isTypeNode: () => isTypeNode, isTypeNodeKind: () => isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration: () => isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression: () => isTypeOfExpression, + isTypeOnlyExportDeclaration: () => isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration: () => isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration: () => isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode: () => isTypeOperatorNode, isTypeParameterDeclaration: () => isTypeParameterDeclaration, @@ -125203,6 +128309,7 @@ __export(ts_exports3, { maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, memoize: () => memoize, + memoizeCached: () => memoizeCached, memoizeOne: () => memoizeOne, memoizeWeak: () => memoizeWeak, metadataHelper: () => metadataHelper, @@ -125228,6 +128335,7 @@ __export(ts_exports3, { mutateMapSkippingNewValues: () => mutateMapSkippingNewValues, needsParentheses: () => needsParentheses, needsScopeMarker: () => needsScopeMarker, + newPrivateEnvironment: () => newPrivateEnvironment, noEmitNotification: () => noEmitNotification, noEmitSubstitution: () => noEmitSubstitution, noTransformers: () => noTransformers, @@ -125321,6 +128429,7 @@ __export(ts_exports3, { programContainsEsModules: () => programContainsEsModules, programContainsModules: () => programContainsModules, projectReferenceIsEqualTo: () => projectReferenceIsEqualTo, + propKeyHelper: () => propKeyHelper, propertyNamePart: () => propertyNamePart, pseudoBigIntToString: () => pseudoBigIntToString, punctuationPart: () => punctuationPart, @@ -125385,10 +128494,12 @@ __export(ts_exports3, { returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + runInitializersHelper: () => runInitializersHelper, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, scanShebangTrivia: () => scanShebangTrivia, + scanTokenAtPosition: () => scanTokenAtPosition, scanner: () => scanner, screenStartingMessageCodes: () => screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations: () => semanticDiagnosticsOptionDeclarations, @@ -125400,7 +128511,12 @@ __export(ts_exports3, { setConstantValue: () => setConstantValue, setEachParent: () => setEachParent, setEmitFlags: () => setEmitFlags, + setFunctionNameHelper: () => setFunctionNameHelper, setGetSourceFileAsHashVersioned: () => setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate: () => setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference: () => setIdentifierGeneratedImportReference, + setIdentifierTypeArguments: () => setIdentifierTypeArguments, + setInternalEmitFlags: () => setInternalEmitFlags, setLocalizedDiagnosticMessages: () => setLocalizedDiagnosticMessages, setModuleDefaultHelper: () => setModuleDefaultHelper, setNodeFlags: () => setNodeFlags, @@ -125408,6 +128524,7 @@ __export(ts_exports3, { setOriginalNode: () => setOriginalNode, setParent: () => setParent, setParentRecursive: () => setParentRecursive, + setPrivateIdentifier: () => setPrivateIdentifier, setResolvedModule: () => setResolvedModule, setResolvedTypeReferenceDirective: () => setResolvedTypeReferenceDirective, setSnippetElement: () => setSnippetElement, @@ -125448,6 +128565,7 @@ __export(ts_exports3, { skipTrivia: () => skipTrivia, skipTypeChecking: () => skipTypeChecking, skipTypeParentheses: () => skipTypeParentheses, + skipWhile: () => skipWhile, sliceAfter: () => sliceAfter, some: () => some, sort: () => sort, @@ -125542,6 +128660,7 @@ __export(ts_exports3, { transformES2020: () => transformES2020, transformES2021: () => transformES2021, transformES5: () => transformES5, + transformESDecorators: () => transformESDecorators, transformESNext: () => transformESNext, transformGenerators: () => transformGenerators, transformJsx: () => transformJsx, @@ -125568,6 +128687,7 @@ __export(ts_exports3, { tryGetDirectories: () => tryGetDirectories, tryGetExtensionFromPath: () => tryGetExtensionFromPath2, tryGetImportFromModuleSpecifier: () => tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode: () => tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile: () => tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration: () => tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks: () => tryGetNativePerformanceHooks, @@ -125602,148 +128722,14 @@ __export(ts_exports3, { unreachableCodeIsError: () => unreachableCodeIsError, unusedLabelIsError: () => unusedLabelIsError, unwrapInnermostStatementOfLabel: () => unwrapInnermostStatementOfLabel, - updateArrayBindingPattern: () => updateArrayBindingPattern, - updateArrayLiteral: () => updateArrayLiteral, - updateArrayTypeNode: () => updateArrayTypeNode, - updateArrowFunction: () => updateArrowFunction, - updateAsExpression: () => updateAsExpression, - updateAwait: () => updateAwait, - updateBinary: () => updateBinary, - updateBindingElement: () => updateBindingElement, - updateBlock: () => updateBlock, - updateBreak: () => updateBreak, - updateBundle: () => updateBundle, - updateCall: () => updateCall, - updateCallChain: () => updateCallChain, - updateCallSignature: () => updateCallSignature, - updateCaseBlock: () => updateCaseBlock, - updateCaseClause: () => updateCaseClause, - updateCatchClause: () => updateCatchClause, - updateClassDeclaration: () => updateClassDeclaration, - updateClassExpression: () => updateClassExpression, - updateCommaList: () => updateCommaList, - updateComputedPropertyName: () => updateComputedPropertyName, - updateConditional: () => updateConditional, - updateConditionalTypeNode: () => updateConditionalTypeNode, - updateConstructSignature: () => updateConstructSignature, - updateConstructor: () => updateConstructor, - updateConstructorTypeNode: () => updateConstructorTypeNode, - updateContinue: () => updateContinue, - updateDecorator: () => updateDecorator, - updateDefaultClause: () => updateDefaultClause, - updateDelete: () => updateDelete, - updateDo: () => updateDo, - updateElementAccess: () => updateElementAccess, - updateElementAccessChain: () => updateElementAccessChain, - updateEnumDeclaration: () => updateEnumDeclaration, - updateEnumMember: () => updateEnumMember, updateErrorForNoInputFiles: () => updateErrorForNoInputFiles, - updateExportAssignment: () => updateExportAssignment, - updateExportDeclaration: () => updateExportDeclaration, - updateExportSpecifier: () => updateExportSpecifier, - updateExpressionStatement: () => updateExpressionStatement, - updateExpressionWithTypeArguments: () => updateExpressionWithTypeArguments, - updateExternalModuleReference: () => updateExternalModuleReference, - updateFor: () => updateFor, - updateForIn: () => updateForIn, - updateForOf: () => updateForOf, - updateFunctionDeclaration: () => updateFunctionDeclaration, - updateFunctionExpression: () => updateFunctionExpression, - updateFunctionTypeNode: () => updateFunctionTypeNode, - updateGetAccessor: () => updateGetAccessor, - updateHeritageClause: () => updateHeritageClause, - updateIf: () => updateIf, - updateImportClause: () => updateImportClause, - updateImportDeclaration: () => updateImportDeclaration, - updateImportEqualsDeclaration: () => updateImportEqualsDeclaration, - updateImportSpecifier: () => updateImportSpecifier, - updateImportTypeNode: () => updateImportTypeNode, - updateIndexSignature: () => updateIndexSignature, - updateIndexedAccessTypeNode: () => updateIndexedAccessTypeNode, - updateInferTypeNode: () => updateInferTypeNode, - updateInterfaceDeclaration: () => updateInterfaceDeclaration, - updateIntersectionTypeNode: () => updateIntersectionTypeNode, - updateJsxAttribute: () => updateJsxAttribute, - updateJsxAttributes: () => updateJsxAttributes, - updateJsxClosingElement: () => updateJsxClosingElement, - updateJsxElement: () => updateJsxElement, - updateJsxExpression: () => updateJsxExpression, - updateJsxFragment: () => updateJsxFragment, - updateJsxOpeningElement: () => updateJsxOpeningElement, - updateJsxSelfClosingElement: () => updateJsxSelfClosingElement, - updateJsxSpreadAttribute: () => updateJsxSpreadAttribute, - updateJsxText: () => updateJsxText, - updateLabel: () => updateLabel, updateLanguageServiceSourceFile: () => updateLanguageServiceSourceFile, - updateLiteralTypeNode: () => updateLiteralTypeNode, - updateMappedTypeNode: () => updateMappedTypeNode, - updateMetaProperty: () => updateMetaProperty, - updateMethod: () => updateMethod, - updateMethodSignature: () => updateMethodSignature, updateMissingFilePathsWatch: () => updateMissingFilePathsWatch, - updateModuleBlock: () => updateModuleBlock, - updateModuleDeclaration: () => updateModuleDeclaration, - updateNamedExports: () => updateNamedExports, - updateNamedImports: () => updateNamedImports, - updateNamespaceExport: () => updateNamespaceExport, - updateNamespaceExportDeclaration: () => updateNamespaceExportDeclaration, - updateNamespaceImport: () => updateNamespaceImport, - updateNew: () => updateNew, - updateNonNullChain: () => updateNonNullChain, - updateNonNullExpression: () => updateNonNullExpression, - updateObjectBindingPattern: () => updateObjectBindingPattern, - updateObjectLiteral: () => updateObjectLiteral, - updateOptionalTypeNode: () => updateOptionalTypeNode, updatePackageJsonWatch: () => updatePackageJsonWatch, - updateParameter: () => updateParameter, - updateParen: () => updateParen, - updateParenthesizedType: () => updateParenthesizedType, - updatePartiallyEmittedExpression: () => updatePartiallyEmittedExpression, - updatePostfix: () => updatePostfix, - updatePrefix: () => updatePrefix, - updateProperty: () => updateProperty, - updatePropertyAccess: () => updatePropertyAccess, - updatePropertyAccessChain: () => updatePropertyAccessChain, - updatePropertyAssignment: () => updatePropertyAssignment, - updatePropertySignature: () => updatePropertySignature, - updateQualifiedName: () => updateQualifiedName, updateResolutionField: () => updateResolutionField, - updateRestTypeNode: () => updateRestTypeNode, - updateReturn: () => updateReturn, - updateSetAccessor: () => updateSetAccessor, updateSharedExtendedConfigFileWatcher: () => updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment: () => updateShorthandPropertyAssignment, updateSourceFile: () => updateSourceFile, - updateSourceFileNode: () => updateSourceFileNode, - updateSpread: () => updateSpread, - updateSpreadAssignment: () => updateSpreadAssignment, - updateStatement: () => updateStatement, - updateSwitch: () => updateSwitch, - updateTaggedTemplate: () => updateTaggedTemplate, - updateTemplateExpression: () => updateTemplateExpression, - updateTemplateSpan: () => updateTemplateSpan, - updateThrow: () => updateThrow, - updateTry: () => updateTry, - updateTupleTypeNode: () => updateTupleTypeNode, - updateTypeAliasDeclaration: () => updateTypeAliasDeclaration, - updateTypeAssertion: () => updateTypeAssertion, - updateTypeLiteralNode: () => updateTypeLiteralNode, - updateTypeOf: () => updateTypeOf, - updateTypeOperatorNode: () => updateTypeOperatorNode, - updateTypeParameterDeclaration: () => updateTypeParameterDeclaration, - updateTypePredicateNode: () => updateTypePredicateNode, - updateTypePredicateNodeWithModifier: () => updateTypePredicateNodeWithModifier, - updateTypeQueryNode: () => updateTypeQueryNode, - updateTypeReferenceNode: () => updateTypeReferenceNode, - updateUnionTypeNode: () => updateUnionTypeNode, - updateVariableDeclaration: () => updateVariableDeclaration, - updateVariableDeclarationList: () => updateVariableDeclarationList, - updateVariableStatement: () => updateVariableStatement, - updateVoid: () => updateVoid, updateWatchingWildcardDirectories: () => updateWatchingWildcardDirectories, - updateWhile: () => updateWhile, - updateWith: () => updateWith, - updateYield: () => updateYield, usesExtensionsOnImports: () => usesExtensionsOnImports, usingSingleLineStringWriter: () => usingSingleLineStringWriter, utf16EncodeAsString: () => utf16EncodeAsString, @@ -125752,6 +128738,7 @@ __export(ts_exports3, { version: () => version, versionMajorMinor: () => versionMajorMinor, visitArray: () => visitArray, + visitCommaListElements: () => visitCommaListElements, visitEachChild: () => visitEachChild, visitFunctionBody: () => visitFunctionBody, visitIterationBody: () => visitIterationBody, @@ -125760,6 +128747,8 @@ __export(ts_exports3, { visitNodes: () => visitNodes2, visitParameterList: () => visitParameterList, walkUpBindingElementsAndPatterns: () => walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments: () => walkUpLexicalEnvironments, + walkUpOuterExpressions: () => walkUpOuterExpressions, walkUpParenthesizedExpressions: () => walkUpParenthesizedExpressions, walkUpParenthesizedTypes: () => walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild: () => walkUpParenthesizedTypesAndGetParentAndChild, @@ -126658,7 +129647,7 @@ function findContainingList(node) { Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); return syntaxList; } -function isDefaultModifier(node) { +function isDefaultModifier2(node) { return node.kind === 88 /* DefaultKeyword */; } function isClassKeyword(node) { @@ -126672,7 +129661,7 @@ function getAdjustedLocationForClass(node) { return node.name; } if (isClassDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -126687,7 +129676,7 @@ function getAdjustedLocationForFunction(node) { return node.name; } if (isFunctionDeclaration(node)) { - const defaultModifier = find(node.modifiers, isDefaultModifier); + const defaultModifier = find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -127631,16 +130620,19 @@ function spanContainsNode(span, node, file) { function findModifier(node, kind) { return canHaveModifiers(node) ? find(node.modifiers, (m) => m.kind === kind) : void 0; } -function insertImports(changes, sourceFile, imports, blankLineBetween) { +function insertImports(changes, sourceFile, imports, blankLineBetween, preferences) { const decl = isArray(imports) ? imports[0] : imports; const importKindPredicate = decl.kind === 240 /* VariableStatement */ ? isRequireVariableStatement : isAnyImportSyntax; const existingImportStatements = filter(sourceFile.statements, importKindPredicate); - const sortedNewImports = isArray(imports) ? stableSort(imports, ts_OrganizeImports_exports.compareImportsOrRequireStatements) : [imports]; + let sortKind = isArray(imports) ? ts_OrganizeImports_exports.detectImportDeclarationSorting(imports, preferences) : 3 /* Both */; + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const sortedNewImports = isArray(imports) ? stableSort(imports, (a, b) => ts_OrganizeImports_exports.compareImportsOrRequireStatements(a, b, comparer)) : [imports]; if (!existingImportStatements.length) { changes.insertNodesAtTopOfFile(sourceFile, sortedNewImports, blankLineBetween); - } else if (existingImportStatements && ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements)) { + } else if (existingImportStatements && (sortKind = ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements, preferences))) { + const comparer2 = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); for (const newImport of sortedNewImports) { - const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport); + const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport, comparer2); if (insertionIndex === 0) { const options = existingImportStatements[0] === sourceFile.statements[0] ? { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude } : {}; changes.insertNodeBefore( @@ -127970,10 +130962,10 @@ function findLinkNameEnd(text) { } return 0; } -var carriageReturnLineFeed2 = "\r\n"; +var lineFeed2 = "\n"; function getNewLineOrDefaultFromHost(host, formatSettings) { var _a2; - return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || carriageReturnLineFeed2; + return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || lineFeed2; } function lineBreakPart() { return displayPart("\n", 6 /* lineBreak */); @@ -128693,7 +131685,7 @@ function isNonGlobalDeclaration(declaration) { if (!sourceFile.externalModuleIndicator && !sourceFile.commonJsModuleIndicator) { return false; } - return isInJSFile(declaration) || !findAncestor(declaration, isGlobalScopeAugmentation); + return isInJSFile(declaration) || !findAncestor(declaration, (d) => isModuleDeclaration(d) && isGlobalScopeAugmentation(d)); } function isDeprecatedDeclaration(decl) { return !!(getCombinedNodeFlagsAlwaysIncludeJSDoc(decl) & 8192 /* Deprecated */); @@ -128992,7 +131984,7 @@ function forEachExternalModuleToImportFrom(program, host, preferences, useAutoIm } function forEachExternalModule(checker, allSourceFiles, excludePatterns, cb) { var _a2; - const isExcluded = (fileName) => excludePatterns == null ? void 0 : excludePatterns.some((p) => p.test(fileName)); + const isExcluded = excludePatterns && ((fileName) => excludePatterns.some((p) => p.test(fileName))); for (const ambient of checker.getAmbientModules()) { if (!stringContains(ambient.name, "*") && !(excludePatterns && ((_a2 = ambient.declarations) == null ? void 0 : _a2.every((d) => isExcluded(d.getSourceFile().fileName))))) { cb( @@ -129003,7 +131995,7 @@ function forEachExternalModule(checker, allSourceFiles, excludePatterns, cb) { } } for (const sourceFile of allSourceFiles) { - if (isExternalOrCommonJsModule(sourceFile) && !isExcluded(sourceFile.fileName)) { + if (isExternalOrCommonJsModule(sourceFile) && !(isExcluded == null ? void 0 : isExcluded(sourceFile.fileName))) { cb(checker.getMergedSymbol(sourceFile.symbol), sourceFile); } } @@ -129100,10 +132092,10 @@ function getDefaultLikeExportWorker(moduleSymbol, checker) { function getDefaultExportInfoWorker(defaultExport, checker, compilerOptions) { const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) - return { symbolForMeaning: localSymbol, name: localSymbol.name }; + return { resolvedSymbol: localSymbol, name: localSymbol.name }; const name = getNameForExportDefault(defaultExport); if (name !== void 0) - return { symbolForMeaning: defaultExport, name }; + return { resolvedSymbol: defaultExport, name }; if (defaultExport.flags & 2097152 /* Alias */) { const aliased = checker.getImmediateAliasedSymbol(defaultExport); if (aliased && aliased.parent) { @@ -129111,9 +132103,9 @@ function getDefaultExportInfoWorker(defaultExport, checker, compilerOptions) { } } if (defaultExport.escapedName !== "default" /* Default */ && defaultExport.escapedName !== "export=" /* ExportEquals */) { - return { symbolForMeaning: defaultExport, name: defaultExport.getName() }; + return { resolvedSymbol: defaultExport, name: defaultExport.getName() }; } - return { symbolForMeaning: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; + return { resolvedSymbol: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; } function getNameForExportDefault(symbol) { return symbol.declarations && firstDefined(symbol.declarations, (declaration) => { @@ -132918,7 +135910,7 @@ var NodeObject = class { if (!children.length) { return void 0; } - const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 352 /* LastJSDocNode */); + const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 353 /* LastJSDocNode */); return child.kind < 163 /* FirstNode */ ? child : child.getFirstToken(sourceFile); } getLastToken(sourceFile) { @@ -132985,7 +135977,7 @@ function addSyntheticNodes(nodes, pos, end, parent2) { } } function createSyntaxList(nodes, parent2) { - const list = createNode(353 /* SyntaxList */, nodes.pos, nodes.end, parent2); + const list = createNode(354 /* SyntaxList */, nodes.pos, nodes.end, parent2); list._children = []; let pos = nodes.pos; for (const node of nodes) { @@ -133813,7 +136805,7 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h getCancellationToken: () => cancellationToken, getCanonicalFileName, useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, - getNewLine: () => getNewLineCharacter(newSettings, () => getNewLineOrDefaultFromHost(host)), + getNewLine: () => getNewLineCharacter(newSettings), getDefaultLibFileName: (options2) => host.getDefaultLibFileName(options2), writeFile: noop, getCurrentDirectory: () => currentDirectory, @@ -134359,22 +137351,22 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h } return []; } - function getCodeFixesAtPosition(fileName, start2, end, errorCodes64, formatOptions, preferences = emptyOptions) { + function getCodeFixesAtPosition(fileName, start2, end, errorCodes63, formatOptions, preferences = emptyOptions) { synchronizeHostData(); const sourceFile = getValidSourceFile(fileName); const span = createTextSpanFromBounds(start2, end); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return flatMap(deduplicate(errorCodes64, equateValues, compareValues), (errorCode) => { + return flatMap(deduplicate(errorCodes63, equateValues, compareValues), (errorCode) => { cancellationToken.throwIfCancellationRequested(); return ts_codefix_exports.getFixes({ errorCode, sourceFile, span, program, host, cancellationToken, formatContext, preferences }); }); } - function getCombinedCodeFix(scope, fixId52, formatOptions, preferences = emptyOptions) { + function getCombinedCodeFix(scope, fixId51, formatOptions, preferences = emptyOptions) { synchronizeHostData(); Debug.assert(scope.type === "file"); const sourceFile = getValidSourceFile(scope.fileName); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return ts_codefix_exports.getAllFixes({ fixId: fixId52, sourceFile, program, host, cancellationToken, formatContext, preferences }); + return ts_codefix_exports.getAllFixes({ fixId: fixId51, sourceFile, program, host, cancellationToken, formatContext, preferences }); } function organizeImports2(args, formatOptions, preferences = emptyOptions) { var _a3; @@ -134398,7 +137390,11 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h return host.installPackage ? host.installPackage({ fileName: getPath(action.file), packageName: action.packageName }) : Promise.reject("Host does not implement `installPackage`"); } function getDocCommentTemplateAtPosition2(fileName, position, options) { - return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); + return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost( + host, + /*formatSettings*/ + void 0 + ), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); } function isValidBraceCompletionAtPosition(fileName, position, openingBrace) { if (openingBrace === 60 /* lessThan */) { @@ -135301,7 +138297,11 @@ var LanguageServiceShimObject = class extends ShimBase { ); } realizeDiagnostics(diagnostics) { - const newLine = getNewLineOrDefaultFromHost(this.host); + const newLine = getNewLineOrDefaultFromHost( + this.host, + /*formatSettings*/ + void 0 + ); return realizeDiagnostics(diagnostics, newLine); } getSyntacticClassifications(fileName, start2, length2) { @@ -136432,9 +139432,9 @@ function getCallHierarchyDeclarationReferenceNode(node) { return node.name; if (isConstNamedExpression(node)) return node.parent.name; - return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier2)); + return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier3)); } -function isDefaultModifier2(node) { +function isDefaultModifier3(node) { return node.kind === 88 /* DefaultKeyword */; } function getSymbolOfCallHierarchyDeclaration(typeChecker, node) { @@ -136446,7 +139446,7 @@ function getCallHierarchyItemName(program, node) { return { text: node.fileName, pos: 0, end: 0 }; } if ((isFunctionDeclaration(node) || isClassDeclaration(node)) && !isNamedDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier3); if (defaultModifier) { return { text: "default", pos: defaultModifier.getStart(), end: defaultModifier.getEnd() }; } @@ -137153,23 +140153,23 @@ function createCodeFixActionWithoutFixAll(fixName8, changes, description2) { void 0 ); } -function createCodeFixAction(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, diagnosticToString(fixAllDescription), command); +function createCodeFixAction(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, diagnosticToString(fixAllDescription), command); } -function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, fixAllDescription && diagnosticToString(fixAllDescription), command); +function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, fixAllDescription && diagnosticToString(fixAllDescription), command); } -function createCodeFixActionWorker(fixName8, description2, changes, fixId52, fixAllDescription, command) { - return { fixName: fixName8, description: description2, changes, fixId: fixId52, fixAllDescription, commands: command ? [command] : void 0 }; +function createCodeFixActionWorker(fixName8, description2, changes, fixId51, fixAllDescription, command) { + return { fixName: fixName8, description: description2, changes, fixId: fixId51, fixAllDescription, commands: command ? [command] : void 0 }; } function registerCodeFix(reg) { for (const error of reg.errorCodes) { errorCodeToFixes.add(String(error), reg); } if (reg.fixIds) { - for (const fixId52 of reg.fixIds) { - Debug.assert(!fixIdToRegistration.has(fixId52)); - fixIdToRegistration.set(fixId52, reg); + for (const fixId51 of reg.fixIds) { + Debug.assert(!fixIdToRegistration.has(fixId51)); + fixIdToRegistration.set(fixId51, reg); } } } @@ -137177,17 +140177,17 @@ function getSupportedErrorCodes() { return arrayFrom(errorCodeToFixes.keys()); } function removeFixIdIfFixAllUnavailable(registration, diagnostics) { - const { errorCodes: errorCodes64 } = registration; + const { errorCodes: errorCodes63 } = registration; let maybeFixableDiagnostics = 0; for (const diag2 of diagnostics) { - if (contains(errorCodes64, diag2.code)) + if (contains(errorCodes63, diag2.code)) maybeFixableDiagnostics++; if (maybeFixableDiagnostics > 1) break; } const fixAllUnavailable = maybeFixableDiagnostics < 2; - return ({ fixId: fixId52, fixAllDescription, ...action }) => { - return fixAllUnavailable ? action : { ...action, fixId: fixId52, fixAllDescription }; + return ({ fixId: fixId51, fixAllDescription, ...action }) => { + return fixAllUnavailable ? action : { ...action, fixId: fixId51, fixAllDescription }; }; } function getFixes(context) { @@ -137204,14 +140204,14 @@ function createCombinedCodeActions(changes, commands) { function createFileTextChanges(fileName, textChanges2) { return { fileName, textChanges: textChanges2 }; } -function codeFixAll(context, errorCodes64, use) { +function codeFixAll(context, errorCodes63, use) { const commands = []; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes64, (diag2) => use(t, diag2, commands))); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes63, (diag2) => use(t, diag2, commands))); return createCombinedCodeActions(changes, commands.length === 0 ? void 0 : commands); } -function eachDiagnostic(context, errorCodes64, cb) { +function eachDiagnostic(context, errorCodes63, cb) { for (const diag2 of getDiagnostics(context)) { - if (contains(errorCodes64, diag2.code)) { + if (contains(errorCodes63, diag2.code)) { cb(diag2); } } @@ -137892,7 +140892,7 @@ function doChange(changes, sourceFile, decl) { if (!param.type) { const paramType = getJSDocType(param); if (paramType) - changes.tryInsertTypeAnnotation(sourceFile, param, transformJSDocType(paramType)); + changes.tryInsertTypeAnnotation(sourceFile, param, visitNode(paramType, transformJSDocType, isTypeNode)); } } if (needParens) @@ -137900,12 +140900,12 @@ function doChange(changes, sourceFile, decl) { if (!decl.type) { const returnType = getJSDocReturnType(decl); if (returnType) - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(returnType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(returnType, transformJSDocType, isTypeNode)); } } else { const jsdocType = Debug.checkDefined(getJSDocType(decl), "A JSDocType for this declaration should exist"); Debug.assert(!decl.type, "The JSDocType decl should have a type"); - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(jsdocType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(jsdocType, transformJSDocType, isTypeNode)); } } function isDeclarationWithType(node) { @@ -137942,19 +140942,19 @@ function transformJSDocTypeLiteral(node) { void 0, isIdentifier(tag.name) ? tag.name : tag.name.right, isOptionalJSDocPropertyLikeTag(tag) ? factory.createToken(57 /* QuestionToken */) : void 0, - tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ))); setEmitFlags(typeNode, 1 /* SingleLine */); return typeNode; } function transformJSDocOptionalType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("undefined", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("undefined", emptyArray)]); } function transformJSDocNullableType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("null", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("null", emptyArray)]); } function transformJSDocVariadicType(node) { - return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType)); + return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType, isTypeNode)); } function transformJSDocFunctionType(node) { var _a2; @@ -137965,7 +140965,7 @@ function transformJSDocParameter(node) { const isRest = node.type.kind === 321 /* JSDocVariadicType */ && index === node.parent.parameters.length - 1; const name = node.name || (isRest ? "rest" : "arg" + index); const dotdotdot = isRest ? factory.createToken(25 /* DotDotDotToken */) : node.dotDotDotToken; - return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType), node.initializer); + return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType, isTypeNode), node.initializer); } function transformJSDocTypeReference(node) { let name = node.typeName; @@ -137992,7 +140992,7 @@ function transformJSDocTypeReference(node) { if ((text === "Array" || text === "Promise") && !node.typeArguments) { args = factory.createNodeArray([factory.createTypeReferenceNode("any", emptyArray)]); } else { - args = visitNodes2(node.typeArguments, transformJSDocType); + args = visitNodes2(node.typeArguments, transformJSDocType, isTypeNode); } } return factory.createTypeReferenceNode(name, args); @@ -139078,8 +142078,8 @@ function convertFileToEsModule(sourceFile, checker, changes, target, quotePrefer function collectExportRenames(sourceFile, checker, identifiers) { const res = /* @__PURE__ */ new Map(); forEachExportReference(sourceFile, (node) => { - const { text, originalKeywordKind } = node.name; - if (!res.has(text) && (originalKeywordKind !== void 0 && isNonContextualKeyword(originalKeywordKind) || checker.resolveName( + const { text } = node.name; + if (!res.has(text) && (isIdentifierANonContextualKeyword(node.name) || checker.resolveName( text, node, 111551 /* Value */, @@ -139589,7 +142589,7 @@ function doChange3(changeTracker, sourceFile, qualifiedName) { } // src/services/codefixes/convertToTypeOnlyExport.ts -var errorCodes13 = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code]; +var errorCodes13 = [Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code]; var fixId12 = "convertToTypeOnlyExport"; registerCodeFix({ errorCodes: errorCodes13, @@ -139954,7 +142954,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre Debug.checkDefined(exportInfo), moduleSymbol, program, - /*useNamespaceInfo*/ + /*position*/ void 0, !!isValidTypeOnlyUseSite, useRequire, @@ -140099,7 +143099,8 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre sourceFile, newDeclarations, /*blankLineBetween*/ - true + true, + preferences ); } } @@ -140111,10 +143112,10 @@ function createImportSpecifierResolver(importingFile, program, host, preferences const packageJsonImportFilter = createPackageJsonImportFilter(importingFile, preferences, host); const importMap = createExistingImportMap(program.getTypeChecker(), importingFile, program.getCompilerOptions()); return { getModuleSpecifierForBestExportInfo }; - function getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, fromCacheOnly) { + function getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, fromCacheOnly) { const { fixes, computedWithoutCacheCount } = getImportFixes( exportInfo, - { symbolName: symbolName2, position }, + position, isValidTypeOnlyUseSite, /*useRequire*/ false, @@ -140149,7 +143150,7 @@ function getImportCompletionAction(targetSymbol, moduleSymbol, sourceFile, symbo Debug.assertIsDefined(exportInfos); const useRequire = shouldUseRequire(sourceFile, program); const isValidTypeOnlyUseSite = isValidTypeOnlyAliasUseSite(getTokenAtPosition(sourceFile, position)); - const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, { symbolName: symbolName2, position }, isValidTypeOnlyUseSite, useRequire, host, preferences)); + const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences)); return { moduleSpecifier: fix.moduleSpecifier, codeAction: codeFixActionToCodeAction(codeActionForFix( @@ -140171,10 +143172,10 @@ function getPromoteTypeOnlyCompletionAction(sourceFile, symbolToken, program, ho const includeSymbolNameInDescription = symbolName2 !== symbolToken.text; return fix && codeFixActionToCodeAction(codeActionForFix({ host, formatContext, preferences }, sourceFile, symbolName2, fix, includeSymbolNameInDescription, compilerOptions, preferences)); } -function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, host, preferences) { +function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences) { Debug.assert(exportInfos.some((info) => info.moduleSymbol === moduleSymbol || info.symbol.parent === moduleSymbol), "Some exportInfo should match the specified moduleSymbol"); const packageJsonImportFilter = createPackageJsonImportFilter(sourceFile, preferences, host); - return getBestFix(getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); + return getBestFix(getImportFixes(exportInfos, position, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); } function codeFixActionToCodeAction({ description: description2, changes, commands }) { return { description: description2, changes, commands }; @@ -140215,10 +143216,10 @@ function getSingleExportInfoForSymbol(symbol, moduleSymbol, program, host) { } } } -function getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { +function getImportFixes(exportInfos, usagePosition, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { const checker = program.getTypeChecker(); const existingImports = flatMap(exportInfos, importMap.getImportsForExportInfo); - const useNamespace = useNamespaceInfo && tryUseExistingNamespaceImport(existingImports, useNamespaceInfo.symbolName, useNamespaceInfo.position, checker); + const useNamespace = usagePosition !== void 0 && tryUseExistingNamespaceImport(existingImports, usagePosition); const addToExisting = tryAddToExistingImport(existingImports, isValidTypeOnlyUseSite, checker, program.getCompilerOptions()); if (addToExisting) { return { @@ -140231,7 +143232,7 @@ function getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, u existingImports, program, sourceFile, - useNamespaceInfo == null ? void 0 : useNamespaceInfo.position, + usagePosition, isValidTypeOnlyUseSite, useRequire, host, @@ -140243,33 +143244,18 @@ function getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, u fixes: [...useNamespace ? [useNamespace] : emptyArray, ...fixes] }; } -function tryUseExistingNamespaceImport(existingImports, symbolName2, position, checker) { - return firstDefined(existingImports, ({ declaration }) => { +function tryUseExistingNamespaceImport(existingImports, position) { + return firstDefined(existingImports, ({ declaration, importKind }) => { var _a2; + if (importKind !== 0 /* Named */) + return void 0; const namespacePrefix = getNamespaceLikeImportText(declaration); - const moduleSpecifier = (_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text; - if (namespacePrefix && moduleSpecifier) { - const moduleSymbol = getTargetModuleFromNamespaceLikeImport(declaration, checker); - if (moduleSymbol && moduleSymbol.exports.has(escapeLeadingUnderscores(symbolName2))) { - return { kind: 0 /* UseNamespace */, namespacePrefix, position, moduleSpecifier }; - } + const moduleSpecifier = namespacePrefix && ((_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text); + if (moduleSpecifier) { + return { kind: 0 /* UseNamespace */, namespacePrefix, usagePosition: position, moduleSpecifier }; } }); } -function getTargetModuleFromNamespaceLikeImport(declaration, checker) { - var _a2; - switch (declaration.kind) { - case 257 /* VariableDeclaration */: - return checker.resolveExternalModuleName(declaration.initializer.arguments[0]); - case 268 /* ImportEqualsDeclaration */: - return checker.getAliasedSymbol(declaration.symbol); - case 269 /* ImportDeclaration */: - const namespaceImport = tryCast((_a2 = declaration.importClause) == null ? void 0 : _a2.namedBindings, isNamespaceImport); - return namespaceImport && checker.getAliasedSymbol(namespaceImport.symbol); - default: - return Debug.assertNever(declaration); - } -} function getNamespaceLikeImportText(declaration) { var _a2, _b, _c; switch (declaration.kind) { @@ -140290,7 +143276,7 @@ function getAddAsTypeOnly(isValidTypeOnlyUseSite, isForNewImportDeclaration, sym if (isForNewImportDeclaration && compilerOptions.importsNotUsedAsValues === 2 /* Error */) { return 2 /* Required */; } - if (compilerOptions.isolatedModules && compilerOptions.preserveValueImports && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { + if ((compilerOptions.isolatedModules && compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { return 2 /* Required */; } return 1 /* Allowed */; @@ -140385,7 +143371,7 @@ function shouldUseRequire(sourceFile, program) { function createGetChecker(program, host) { return memoizeOne((isFromPackageJson) => isFromPackageJson ? host.getPackageJsonAutoImportProvider().getTypeChecker() : program.getTypeChecker()); } -function getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { +function getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { const isJs = isSourceFileJS(sourceFile); const compilerOptions = program.getCompilerOptions(); const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); @@ -140408,27 +143394,47 @@ function getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite compilerOptions ); computedWithoutCacheCount += computedWithoutCache ? 1 : 0; - return mapDefined( - moduleSpecifiers, - (moduleSpecifier) => rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier) ? void 0 : ( - // `position` should only be undefined at a missing jsx namespace, in which case we shouldn't be looking for pure types. - !importedSymbolHasValueMeaning && isJs && position !== void 0 ? { kind: 1 /* JsdocTypeImport */, moduleSpecifier, position, exportInfo: exportInfo2, isReExport: i > 0 } : { - kind: 3 /* AddNew */, - moduleSpecifier, - importKind: getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions), - useRequire, - addAsTypeOnly, - exportInfo: exportInfo2, - isReExport: i > 0 + return mapDefined(moduleSpecifiers, (moduleSpecifier) => { + var _a2; + if (rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier)) { + return void 0; + } + if (!importedSymbolHasValueMeaning && isJs && usagePosition !== void 0) { + return { kind: 1 /* JsdocTypeImport */, moduleSpecifier, usagePosition, exportInfo: exportInfo2, isReExport: i > 0 }; + } + const importKind = getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions); + let qualification; + if (usagePosition !== void 0 && importKind === 3 /* CommonJS */ && exportInfo2.exportKind === 0 /* Named */) { + const exportEquals = checker.resolveExternalModuleSymbol(exportInfo2.moduleSymbol); + let namespacePrefix; + if (exportEquals !== exportInfo2.moduleSymbol) { + namespacePrefix = (_a2 = getDefaultExportInfoWorker(exportEquals, checker, compilerOptions)) == null ? void 0 : _a2.name; } - ) - ); + namespacePrefix || (namespacePrefix = moduleSymbolToValidIdentifier( + exportInfo2.moduleSymbol, + getEmitScriptTarget(compilerOptions), + /*forceCapitalize*/ + false + )); + qualification = { namespacePrefix, usagePosition }; + } + return { + kind: 3 /* AddNew */, + moduleSpecifier, + importKind, + useRequire, + addAsTypeOnly, + exportInfo: exportInfo2, + isReExport: i > 0, + qualification + }; + }); }); return { computedWithoutCacheCount, fixes }; } -function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { +function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { const existingDeclaration = firstDefined(existingImports, (info) => newImportInfoFromExistingSpecifier(info, isValidTypeOnlyUseSite, useRequire, program.getTypeChecker(), program.getCompilerOptions())); - return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); + return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); } function newImportInfoFromExistingSpecifier({ declaration, importKind, symbol, targetFlags }, isValidTypeOnlyUseSite, useRequire, checker, compilerOptions) { var _a2; @@ -140528,10 +143534,10 @@ function getFixesInfoForUMDImport({ sourceFile, program, host, preferences }, to const symbolName2 = umdSymbol.name; const exportInfo = [{ symbol: umdSymbol, moduleSymbol: symbol, moduleFileName: void 0, exportKind: 3 /* UMD */, targetFlags: symbol.flags, isFromPackageJson: false }]; const useRequire = shouldUseRequire(sourceFile, program); - const position = isIdentifier(token) ? token.getStart(sourceFile) : void 0; const fixes = getImportFixes( exportInfo, - position ? { position, symbolName: symbolName2 } : void 0, + /*usagePosition*/ + void 0, /*isValidTypeOnlyUseSite*/ false, useRequire, @@ -140550,15 +143556,24 @@ function getUmdSymbol(token, checker) { if (isUMDExportSymbol(umdSymbol)) return umdSymbol; const { parent: parent2 } = token; - return isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2) ? tryCast(checker.resolveName( - checker.getJsxNamespace(parent2), - isJsxOpeningLikeElement(parent2) ? token : parent2, - 111551 /* Value */, - /*excludeGlobals*/ - false - ), isUMDExportSymbol) : void 0; + if (isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2)) { + const parentSymbol = checker.resolveName( + checker.getJsxNamespace(parent2), + isJsxOpeningLikeElement(parent2) ? token : parent2, + 111551 /* Value */, + /*excludeGlobals*/ + false + ); + if (isUMDExportSymbol(parentSymbol)) { + return parentSymbol; + } + } + return void 0; } function getImportKind(importingFile, exportKind, compilerOptions, forceImportKeyword) { + if (compilerOptions.verbatimModuleSyntax && (getEmitModuleKind(compilerOptions) === 1 /* CommonJS */ || importingFile.impliedNodeFormat === 1 /* CommonJS */)) { + return 3 /* CommonJS */; + } switch (exportKind) { case 0 /* Named */: return 0 /* Named */; @@ -140610,7 +143625,7 @@ function getFixesInfoForNonUMDImport({ sourceFile, program, cancellationToken, h const useRequire = shouldUseRequire(sourceFile, program); const exportInfo = getExportInfos(symbolName2, isJSXTagName(symbolToken), getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, program, useAutoImportProvider, host, preferences); return arrayFrom( - flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, { symbolName: symbolName2, position: symbolToken.getStart(sourceFile) }, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), + flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, symbolToken.getStart(sourceFile), isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), (fix) => ({ fix, symbolName: symbolName2, errorIdentifierText: symbolToken.text, isJsxNamespaceFix: symbolName2 !== symbolToken.text }) ); }); @@ -140680,7 +143695,7 @@ function getExportInfos(symbolName2, isJsxTagName, currentTokenMeaning, cancella cancellationToken.throwIfCancellationRequested(); const compilerOptions = program2.getCompilerOptions(); const defaultInfo = getDefaultLikeExportInfo(moduleSymbol, checker, compilerOptions); - if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.symbolForMeaning, currentTokenMeaning)) { + if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.resolvedSymbol, currentTokenMeaning)) { addSymbol(moduleSymbol, sourceFile, defaultInfo.symbol, defaultInfo.exportKind, program2, isFromPackageJson); } const exportSymbolWithIdenticalName = checker.tryGetMemberInModuleExportsAndProperties(symbolName2, moduleSymbol); @@ -140737,23 +143752,27 @@ function codeActionForFixWorker(changes, sourceFile, symbolName2, fix, includeSy return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifierWithoutQuotes] : [Diagnostics.Update_import_from_0, moduleSpecifierWithoutQuotes]; } case 3 /* AddNew */: { - const { importKind, moduleSpecifier, addAsTypeOnly, useRequire } = fix; + const { importKind, moduleSpecifier, addAsTypeOnly, useRequire, qualification } = fix; const getDeclarations = useRequire ? getNewRequires : getNewImports; const defaultImport = importKind === 1 /* Default */ ? { name: symbolName2, addAsTypeOnly } : void 0; const namedImports = importKind === 0 /* Named */ ? [{ name: symbolName2, addAsTypeOnly }] : void 0; - const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: symbolName2, addAsTypeOnly } : void 0; + const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: (qualification == null ? void 0 : qualification.namespacePrefix) || symbolName2, addAsTypeOnly } : void 0; insertImports( changes, sourceFile, getDeclarations(moduleSpecifier, quotePreference, defaultImport, namedImports, namespaceLikeImport), /*blankLineBetween*/ - true + true, + preferences ); + if (qualification) { + addNamespaceQualifier(changes, sourceFile, qualification); + } return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifier] : [Diagnostics.Add_import_from_0, moduleSpecifier]; } case 4 /* PromoteTypeOnly */: { const { typeOnlyAliasDeclaration } = fix; - const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile); + const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile, preferences); return promotedDeclaration.kind === 273 /* ImportSpecifier */ ? [Diagnostics.Remove_type_from_import_of_0_from_1, symbolName2, getModuleSpecifierText(promotedDeclaration.parent.parent)] : [Diagnostics.Remove_type_from_import_declaration_from_0, getModuleSpecifierText(promotedDeclaration)]; } default: @@ -140764,12 +143783,12 @@ function getModuleSpecifierText(promotedDeclaration) { var _a2, _b; return promotedDeclaration.kind === 268 /* ImportEqualsDeclaration */ ? ((_b = tryCast((_a2 = tryCast(promotedDeclaration.moduleReference, isExternalModuleReference)) == null ? void 0 : _a2.expression, isStringLiteralLike)) == null ? void 0 : _b.text) || promotedDeclaration.moduleReference.getText() : cast(promotedDeclaration.parent.moduleSpecifier, isStringLiteral).text; } -function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile) { - const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules; +function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile, preferences) { + const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax; switch (aliasDeclaration.kind) { case 273 /* ImportSpecifier */: if (aliasDeclaration.isTypeOnly) { - const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements); + const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements, preferences); if (aliasDeclaration.parent.elements.length > 1 && sortKind) { changes.delete(sourceFile, aliasDeclaration); const newSpecifier = factory.updateImportSpecifier( @@ -140779,7 +143798,8 @@ function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceF aliasDeclaration.propertyName, aliasDeclaration.name ); - const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, sortKind === 2 /* CaseInsensitive */); + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, comparer); changes.insertImportSpecifierAtIndex(sourceFile, newSpecifier, aliasDeclaration.parent, insertionIndex); } else { changes.deleteRange(sourceFile, aliasDeclaration.getFirstToken()); @@ -140807,7 +143827,7 @@ function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceF if (convertExistingToTypeOnly) { const namedImports = tryCast(importClause.namedBindings, isNamedImports); if (namedImports && namedImports.elements.length > 1) { - if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { + if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements, preferences) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { changes.delete(sourceFile, aliasDeclaration); changes.insertImportSpecifierAtIndex(sourceFile, aliasDeclaration, namedImports, 0); } @@ -140838,7 +143858,7 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor } const promoteFromTypeOnly2 = clause.isTypeOnly && some([defaultImport, ...namedImports], (i) => (i == null ? void 0 : i.addAsTypeOnly) === 4 /* NotAllowed */); const existingSpecifiers = clause.namedBindings && ((_a2 = tryCast(clause.namedBindings, isNamedImports)) == null ? void 0 : _a2.elements); - const convertExistingToTypeOnly = promoteFromTypeOnly2 && compilerOptions.preserveValueImports && compilerOptions.isolatedModules; + const convertExistingToTypeOnly = promoteFromTypeOnly2 && (compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax); if (defaultImport) { Debug.assert(!clause.name, "Cannot add a default import to an import clause that already has one"); changes.insertNodeAt(sourceFile, clause.getStart(sourceFile), factory.createIdentifier(defaultImport.name), { suffix: ", " }); @@ -140848,14 +143868,15 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor if (typeof preferences.organizeImportsIgnoreCase === "boolean") { ignoreCaseForSorting = preferences.organizeImportsIgnoreCase; } else if (existingSpecifiers) { - const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (targetImportSorting !== 3 /* Both */) { ignoreCaseForSorting = targetImportSorting === 2 /* CaseInsensitive */; } } if (ignoreCaseForSorting === void 0) { - ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile) === 2 /* CaseInsensitive */; + ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile, preferences) === 2 /* CaseInsensitive */; } + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, ignoreCaseForSorting); const newSpecifiers = stableSort( namedImports.map((namedImport) => factory.createImportSpecifier( (!clause.isTypeOnly || promoteFromTypeOnly2) && needsTypeOnly(namedImport), @@ -140863,12 +143884,12 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor void 0, factory.createIdentifier(namedImport.name) )), - (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, ignoreCaseForSorting) + (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, comparer) ); - const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (specifierSort && !(ignoreCaseForSorting && specifierSort === 1 /* CaseSensitive */)) { for (const spec of newSpecifiers) { - const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, ignoreCaseForSorting); + const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, comparer); changes.insertImportSpecifierAtIndex(sourceFile, spec, clause.namedBindings, insertionIndex); } } else if (existingSpecifiers == null ? void 0 : existingSpecifiers.length) { @@ -140908,10 +143929,10 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor } } } -function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, position }) { - changes.insertText(sourceFile, position, namespacePrefix + "."); +function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, usagePosition }) { + changes.insertText(sourceFile, usagePosition, namespacePrefix + "."); } -function addImportType(changes, sourceFile, { moduleSpecifier, position }, quotePreference) { +function addImportType(changes, sourceFile, { moduleSpecifier, usagePosition: position }, quotePreference) { changes.insertText(sourceFile, position, getImportTypePrefix(moduleSpecifier, quotePreference)); } function getImportTypePrefix(moduleSpecifier, quotePreference) { @@ -141232,10 +144253,10 @@ registerCodeFix({ const info = errorCodeFixIdMap[errorCode]; if (!info) return emptyArray; - const { descriptions, fixId: fixId52, fixAllDescriptions } = info; + const { descriptions, fixId: fixId51, fixAllDescriptions } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => dispatchChanges(changes2, context, errorCode, span.start)); return [ - createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId52, fixAllDescriptions) + createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId51, fixAllDescriptions) ]; }, fixIds: [fixName, fixAddOverrideId, fixRemoveOverrideId], @@ -142046,7 +145067,7 @@ registerCodeFix({ }, fixIds: [fixMissingMember, fixMissingFunctionDeclaration, fixMissingProperties, fixMissingAttributes], getAllCodeActions: (context) => { - const { program, fixId: fixId52 } = context; + const { program, fixId: fixId51 } = context; const checker = program.getTypeChecker(); const seen = /* @__PURE__ */ new Map(); const typeDeclToMembers = /* @__PURE__ */ new Map(); @@ -142056,11 +145077,11 @@ registerCodeFix({ if (!info || !addToSeen(seen, getNodeId(info.parentDeclaration) + "#" + info.token.text)) { return; } - if (fixId52 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { + if (fixId51 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { addFunctionDeclaration(changes, context, info); - } else if (fixId52 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { + } else if (fixId51 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { addObjectLiteralProperties(changes, context, info); - } else if (fixId52 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { + } else if (fixId51 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { addJsxAttributes(changes, context, info); } else { if (info.kind === 1 /* Enum */) { @@ -142837,22 +145858,25 @@ function doChange11(changes, sourceFile, ctr) { changes.insertNodeAtConstructorStart(sourceFile, ctr, superCall); } -// src/services/codefixes/fixEnableExperimentalDecorators.ts -var fixId27 = "enableExperimentalDecorators"; -var errorCodes32 = [ - Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning.code -]; +// src/services/codefixes/fixEnableJsxFlag.ts +var fixID = "fixEnableJsxFlag"; +var errorCodes32 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; registerCodeFix({ errorCodes: errorCodes32, - getCodeActions: function getCodeActionsToEnableExperimentalDecorators(context) { + getCodeActions: function getCodeActionsToFixEnableJsxFlag(context) { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => doChange12(changeTracker, configFile)); - return [createCodeFixActionWithoutFixAll(fixId27, changes, Diagnostics.Enable_the_experimentalDecorators_option_in_your_configuration_file)]; + const changes = ts_textChanges_exports.ChangeTracker.with( + context, + (changeTracker) => doChange12(changeTracker, configFile) + ); + return [ + createCodeFixActionWithoutFixAll(fixID, changes, Diagnostics.Enable_the_jsx_flag_in_your_configuration_file) + ]; }, - fixIds: [fixId27], + fixIds: [fixID], getAllCodeActions: (context) => codeFixAll(context, errorCodes32, (changes) => { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { @@ -142862,62 +145886,31 @@ registerCodeFix({ }) }); function doChange12(changeTracker, configFile) { - setJsonCompilerOptionValue(changeTracker, configFile, "experimentalDecorators", factory.createTrue()); -} - -// src/services/codefixes/fixEnableJsxFlag.ts -var fixID = "fixEnableJsxFlag"; -var errorCodes33 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; -registerCodeFix({ - errorCodes: errorCodes33, - getCodeActions: function getCodeActionsToFixEnableJsxFlag(context) { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - const changes = ts_textChanges_exports.ChangeTracker.with( - context, - (changeTracker) => doChange13(changeTracker, configFile) - ); - return [ - createCodeFixActionWithoutFixAll(fixID, changes, Diagnostics.Enable_the_jsx_flag_in_your_configuration_file) - ]; - }, - fixIds: [fixID], - getAllCodeActions: (context) => codeFixAll(context, errorCodes33, (changes) => { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - doChange13(changes, configFile); - }) -}); -function doChange13(changeTracker, configFile) { setJsonCompilerOptionValue(changeTracker, configFile, "jsx", factory.createStringLiteral("react")); } // src/services/codefixes/fixNaNEquality.ts -var fixId28 = "fixNaNEquality"; -var errorCodes34 = [ +var fixId27 = "fixNaNEquality"; +var errorCodes33 = [ Diagnostics.This_condition_will_always_return_0.code ]; registerCodeFix({ - errorCodes: errorCodes34, + errorCodes: errorCodes33, getCodeActions(context) { const { sourceFile, span, program } = context; const info = getInfo8(program, sourceFile, span); if (info === void 0) return; const { suggestion, expression, arg } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, sourceFile, arg, expression)); - return [createCodeFixAction(fixId28, changes, [Diagnostics.Use_0, suggestion], fixId28, Diagnostics.Use_Number_isNaN_in_all_conditions)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange13(t, sourceFile, arg, expression)); + return [createCodeFixAction(fixId27, changes, [Diagnostics.Use_0, suggestion], fixId27, Diagnostics.Use_Number_isNaN_in_all_conditions)]; }, - fixIds: [fixId28], + fixIds: [fixId27], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes34, (changes, diag2) => { + return codeFixAll(context, errorCodes33, (changes, diag2) => { const info = getInfo8(context.program, diag2.file, createTextSpan(diag2.start, diag2.length)); if (info) { - doChange14(changes, diag2.file, info.arg, info.expression); + doChange13(changes, diag2.file, info.arg, info.expression); } }); } @@ -142937,7 +145930,7 @@ function getInfo8(program, sourceFile, span) { } return void 0; } -function doChange14(changes, sourceFile, arg, expression) { +function doChange13(changes, sourceFile, arg, expression) { const callExpression = factory.createCallExpression( factory.createPropertyAccessExpression(factory.createIdentifier("Number"), factory.createIdentifier("isNaN")), /*typeArguments*/ @@ -142997,22 +145990,22 @@ registerCodeFix({ }); // src/services/codefixes/fixPropertyAssignment.ts -var fixId29 = "fixPropertyAssignment"; -var errorCodes35 = [ +var fixId28 = "fixPropertyAssignment"; +var errorCodes34 = [ Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code ]; registerCodeFix({ - errorCodes: errorCodes35, - fixIds: [fixId29], + errorCodes: errorCodes34, + fixIds: [fixId28], getCodeActions(context) { const { sourceFile, span } = context; const property = getProperty2(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, context.sourceFile, property)); - return [createCodeFixAction(fixId29, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId29, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, context.sourceFile, property)); + return [createCodeFixAction(fixId28, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId28, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => doChange15(changes, diag2.file, getProperty2(diag2.file, diag2.start))) + getAllCodeActions: (context) => codeFixAll(context, errorCodes34, (changes, diag2) => doChange14(changes, diag2.file, getProperty2(diag2.file, diag2.start))) }); -function doChange15(changes, sourceFile, node) { +function doChange14(changes, sourceFile, node) { changes.replaceNode(sourceFile, node, factory.createPropertyAssignment(node.name, node.objectAssignmentInitializer)); } function getProperty2(sourceFile, pos) { @@ -143020,10 +146013,10 @@ function getProperty2(sourceFile, pos) { } // src/services/codefixes/fixExtendsInterfaceBecomesImplements.ts -var fixId30 = "extendsInterfaceBecomesImplements"; -var errorCodes36 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; +var fixId29 = "extendsInterfaceBecomesImplements"; +var errorCodes35 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; registerCodeFix({ - errorCodes: errorCodes36, + errorCodes: errorCodes35, getCodeActions(context) { const { sourceFile } = context; const nodes = getNodes2(sourceFile, context.span.start); @@ -143031,10 +146024,10 @@ registerCodeFix({ return void 0; const { extendsToken, heritageClauses } = nodes; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChanges2(t, sourceFile, extendsToken, heritageClauses)); - return [createCodeFixAction(fixId30, changes, Diagnostics.Change_extends_to_implements, fixId30, Diagnostics.Change_all_extended_interfaces_to_implements)]; + return [createCodeFixAction(fixId29, changes, Diagnostics.Change_extends_to_implements, fixId29, Diagnostics.Change_all_extended_interfaces_to_implements)]; }, - fixIds: [fixId30], - getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { + fixIds: [fixId29], + getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => { const nodes = getNodes2(diag2.file, diag2.start); if (nodes) doChanges2(changes, diag2.file, nodes.extendsToken, nodes.heritageClauses); @@ -143062,29 +146055,29 @@ function doChanges2(changes, sourceFile, extendsToken, heritageClauses) { } // src/services/codefixes/fixForgottenThisPropertyAccess.ts -var fixId31 = "forgottenThisPropertyAccess"; +var fixId30 = "forgottenThisPropertyAccess"; var didYouMeanStaticMemberCode = Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code; -var errorCodes37 = [ +var errorCodes36 = [ Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, didYouMeanStaticMemberCode ]; registerCodeFix({ - errorCodes: errorCodes37, + errorCodes: errorCodes36, getCodeActions(context) { const { sourceFile } = context; const info = getInfo9(sourceFile, context.span.start, context.errorCode); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16(t, sourceFile, info)); - return [createCodeFixAction(fixId31, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId31, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, sourceFile, info)); + return [createCodeFixAction(fixId30, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId30, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; }, - fixIds: [fixId31], - getAllCodeActions: (context) => codeFixAll(context, errorCodes37, (changes, diag2) => { + fixIds: [fixId30], + getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { const info = getInfo9(diag2.file, diag2.start, diag2.code); if (info) - doChange16(changes, context.sourceFile, info); + doChange15(changes, context.sourceFile, info); }) }); function getInfo9(sourceFile, pos, diagCode) { @@ -143093,7 +146086,7 @@ function getInfo9(sourceFile, pos, diagCode) { return { node, className: diagCode === didYouMeanStaticMemberCode ? getContainingClass(node).name.text : void 0 }; } } -function doChange16(changes, sourceFile, { node, className }) { +function doChange15(changes, sourceFile, { node, className }) { suppressLeadingAndTrailingTrivia(node); changes.replaceNode(sourceFile, node, factory.createPropertyAccessExpression(className ? factory.createIdentifier(className) : factory.createThis(), node)); } @@ -143101,16 +146094,16 @@ function doChange16(changes, sourceFile, { node, className }) { // src/services/codefixes/fixInvalidJsxCharacters.ts var fixIdExpression = "fixInvalidJsxCharacters_expression"; var fixIdHtmlEntity = "fixInvalidJsxCharacters_htmlEntity"; -var errorCodes38 = [ +var errorCodes37 = [ Diagnostics.Unexpected_token_Did_you_mean_or_gt.code, Diagnostics.Unexpected_token_Did_you_mean_or_rbrace.code ]; registerCodeFix({ - errorCodes: errorCodes38, + errorCodes: errorCodes37, fixIds: [fixIdExpression, fixIdHtmlEntity], getCodeActions(context) { const { sourceFile, preferences, span } = context; - const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -143118,7 +146111,7 @@ registerCodeFix({ /* useHtmlEntity */ false )); - const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -143132,7 +146125,7 @@ registerCodeFix({ ]; }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes38, (changes, diagnostic) => doChange17(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); + return codeFixAll(context, errorCodes37, (changes, diagnostic) => doChange16(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); } }); var htmlEntity = { @@ -143142,7 +146135,7 @@ var htmlEntity = { function isValidCharacter(character) { return hasProperty(htmlEntity, character); } -function doChange17(changes, preferences, sourceFile, start2, useHtmlEntity) { +function doChange16(changes, preferences, sourceFile, start2, useHtmlEntity) { const character = sourceFile.getText()[start2]; if (!isValidCharacter(character)) { return; @@ -143154,12 +146147,12 @@ function doChange17(changes, preferences, sourceFile, start2, useHtmlEntity) { // src/services/codefixes/fixUnmatchedParameter.ts var deleteUnmatchedParameter = "deleteUnmatchedParameter"; var renameUnmatchedParameter = "renameUnmatchedParameter"; -var errorCodes39 = [ +var errorCodes38 = [ Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code ]; registerCodeFix({ fixIds: [deleteUnmatchedParameter, renameUnmatchedParameter], - errorCodes: errorCodes39, + errorCodes: errorCodes38, getCodeActions: function getCodeActionsToFixUnmatchedParameter(context) { const { sourceFile, span } = context; const actions2 = []; @@ -143174,7 +146167,7 @@ registerCodeFix({ getAllCodeActions: function getAllCodeActionsToFixUnmatchedParameter(context) { const tagsToSignature = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes39, ({ file, start: start2 }) => { + eachDiagnostic(context, errorCodes38, ({ file, start: start2 }) => { const info = getInfo10(file, start2); if (info) { tagsToSignature.set(info.signature, append(tagsToSignature.get(info.signature), info.jsDocParameterTag)); @@ -143189,8 +146182,8 @@ registerCodeFix({ })); } }); -function getDeleteAction(context, { name, signature, jsDocParameterTag }) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, signature, (t) => t !== jsDocParameterTag)); +function getDeleteAction(context, { name, jsDocHost, jsDocParameterTag }) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, jsDocHost, (t) => t !== jsDocParameterTag)); return createCodeFixAction( deleteUnmatchedParameter, changes, @@ -143229,19 +146222,20 @@ function getInfo10(sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); if (token.parent && isJSDocParameterTag(token.parent) && isIdentifier(token.parent.name)) { const jsDocParameterTag = token.parent; + const jsDocHost = getJSDocHost(jsDocParameterTag); const signature = getHostSignatureFromJSDoc(jsDocParameterTag); - if (signature) { - return { signature, name: token.parent.name, jsDocParameterTag }; + if (jsDocHost && signature) { + return { jsDocHost, signature, name: token.parent.name, jsDocParameterTag }; } } return void 0; } // src/services/codefixes/fixUnreferenceableDecoratorMetadata.ts -var fixId32 = "fixUnreferenceableDecoratorMetadata"; -var errorCodes40 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; +var fixId31 = "fixUnreferenceableDecoratorMetadata"; +var errorCodes39 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; registerCodeFix({ - errorCodes: errorCodes40, + errorCodes: errorCodes39, getCodeActions: (context) => { const importDeclaration = getImportDeclaration(context.sourceFile, context.program, context.span.start); if (!importDeclaration) @@ -143250,14 +146244,14 @@ registerCodeFix({ const typeOnlyChanges = ts_textChanges_exports.ChangeTracker.with(context, (t) => doTypeOnlyImportChange(t, context.sourceFile, importDeclaration, context.program)); let actions2; if (namespaceChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); } if (typeOnlyChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); } return actions2; }, - fixIds: [fixId32] + fixIds: [fixId31] }); function getImportDeclaration(sourceFile, program, start2) { const identifier = tryCast(getTokenAtPosition(sourceFile, start2), isIdentifier); @@ -143296,7 +146290,7 @@ var fixIdPrefix = "unusedIdentifier_prefix"; var fixIdDelete = "unusedIdentifier_delete"; var fixIdDeleteImports = "unusedIdentifier_deleteImports"; var fixIdInfer = "unusedIdentifier_infer"; -var errorCodes41 = [ +var errorCodes40 = [ Diagnostics._0_is_declared_but_its_value_is_never_read.code, Diagnostics._0_is_declared_but_never_used.code, Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code, @@ -143306,7 +146300,7 @@ var errorCodes41 = [ Diagnostics.All_type_parameters_are_unused.code ]; registerCodeFix({ - errorCodes: errorCodes41, + errorCodes: errorCodes40, getCodeActions(context) { const { errorCode, sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); @@ -143392,7 +146386,7 @@ registerCodeFix({ const { sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles(); - return codeFixAll(context, errorCodes41, (changes, diag2) => { + return codeFixAll(context, errorCodes40, (changes, diag2) => { const token = getTokenAtPosition(sourceFile, diag2.start); switch (context.fixId) { case fixIdPrefix: @@ -143609,21 +146603,21 @@ function mayDeleteExpression(node) { } // src/services/codefixes/fixUnreachableCode.ts -var fixId33 = "fixUnreachableCode"; -var errorCodes42 = [Diagnostics.Unreachable_code_detected.code]; +var fixId32 = "fixUnreachableCode"; +var errorCodes41 = [Diagnostics.Unreachable_code_detected.code]; registerCodeFix({ - errorCodes: errorCodes42, + errorCodes: errorCodes41, getCodeActions(context) { const syntacticDiagnostics = context.program.getSyntacticDiagnostics(context.sourceFile, context.cancellationToken); if (syntacticDiagnostics.length) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); - return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unreachable_code, fixId33, Diagnostics.Remove_all_unreachable_code)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); + return [createCodeFixAction(fixId32, changes, Diagnostics.Remove_unreachable_code, fixId32, Diagnostics.Remove_all_unreachable_code)]; }, - fixIds: [fixId33], - getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start, diag2.length, diag2.code)) + fixIds: [fixId32], + getAllCodeActions: (context) => codeFixAll(context, errorCodes41, (changes, diag2) => doChange17(changes, diag2.file, diag2.start, diag2.length, diag2.code)) }); -function doChange18(changes, sourceFile, start2, length2, errorCode) { +function doChange17(changes, sourceFile, start2, length2, errorCode) { const token = getTokenAtPosition(sourceFile, start2); const statement = findAncestor(token, isStatement); if (statement.getStart(sourceFile) !== token.getStart(sourceFile)) { @@ -143673,18 +146667,18 @@ function lastWhere(a, pred) { } // src/services/codefixes/fixUnusedLabel.ts -var fixId34 = "fixUnusedLabel"; -var errorCodes43 = [Diagnostics.Unused_label.code]; +var fixId33 = "fixUnusedLabel"; +var errorCodes42 = [Diagnostics.Unused_label.code]; registerCodeFix({ - errorCodes: errorCodes43, + errorCodes: errorCodes42, getCodeActions(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId34, changes, Diagnostics.Remove_unused_label, fixId34, Diagnostics.Remove_all_unused_labels)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unused_label, fixId33, Diagnostics.Remove_all_unused_labels)]; }, - fixIds: [fixId34], - getAllCodeActions: (context) => codeFixAll(context, errorCodes43, (changes, diag2) => doChange19(changes, diag2.file, diag2.start)) + fixIds: [fixId33], + getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start)) }); -function doChange19(changes, sourceFile, start2) { +function doChange18(changes, sourceFile, start2) { const token = getTokenAtPosition(sourceFile, start2); const labeledStatement = cast(token.parent, isLabeledStatement); const pos = token.getStart(sourceFile); @@ -143701,13 +146695,13 @@ function doChange19(changes, sourceFile, start2) { // src/services/codefixes/fixJSDocTypes.ts var fixIdPlain = "fixJSDocTypes_plain"; var fixIdNullable = "fixJSDocTypes_nullable"; -var errorCodes44 = [ +var errorCodes43 = [ Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code, Diagnostics._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code, Diagnostics._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code ]; registerCodeFix({ - errorCodes: errorCodes44, + errorCodes: errorCodes43, getCodeActions(context) { const { sourceFile } = context; const checker = context.program.getTypeChecker(); @@ -143721,26 +146715,26 @@ registerCodeFix({ actions2.push(fix(type, fixIdNullable, Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)); } return actions2; - function fix(type2, fixId52, fixAllDescription) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, sourceFile, typeNode, type2, checker)); - return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId52, fixAllDescription); + function fix(type2, fixId51, fixAllDescription) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, sourceFile, typeNode, type2, checker)); + return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId51, fixAllDescription); } }, fixIds: [fixIdPlain, fixIdNullable], getAllCodeActions(context) { - const { fixId: fixId52, program, sourceFile } = context; + const { fixId: fixId51, program, sourceFile } = context; const checker = program.getTypeChecker(); - return codeFixAll(context, errorCodes44, (changes, err) => { + return codeFixAll(context, errorCodes43, (changes, err) => { const info = getInfo11(err.file, err.start, checker); if (!info) return; const { typeNode, type } = info; - const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId52 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; - doChange20(changes, sourceFile, typeNode, fixedType, checker); + const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId51 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; + doChange19(changes, sourceFile, typeNode, fixedType, checker); }); } }); -function doChange20(changes, sourceFile, oldTypeNode, newType, checker) { +function doChange19(changes, sourceFile, oldTypeNode, newType, checker) { changes.replaceNode(sourceFile, oldTypeNode, checker.typeToTypeNode( newType, /*enclosingDeclaration*/ @@ -143791,28 +146785,28 @@ function getType(checker, node) { } // src/services/codefixes/fixMissingCallParentheses.ts -var fixId35 = "fixMissingCallParentheses"; -var errorCodes45 = [ +var fixId34 = "fixMissingCallParentheses"; +var errorCodes44 = [ Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code ]; registerCodeFix({ - errorCodes: errorCodes45, - fixIds: [fixId35], + errorCodes: errorCodes44, + fixIds: [fixId34], getCodeActions(context) { const { sourceFile, span } = context; const callName = getCallName(sourceFile, span.start); if (!callName) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, context.sourceFile, callName)); - return [createCodeFixAction(fixId35, changes, Diagnostics.Add_missing_call_parentheses, fixId35, Diagnostics.Add_all_missing_call_parentheses)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, context.sourceFile, callName)); + return [createCodeFixAction(fixId34, changes, Diagnostics.Add_missing_call_parentheses, fixId34, Diagnostics.Add_all_missing_call_parentheses)]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes45, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes44, (changes, diag2) => { const callName = getCallName(diag2.file, diag2.start); if (callName) - doChange21(changes, diag2.file, callName); + doChange20(changes, diag2.file, callName); }) }); -function doChange21(changes, sourceFile, name) { +function doChange20(changes, sourceFile, name) { changes.replaceNodeWithText(sourceFile, name, `${name.text}()`); } function getCallName(sourceFile, start2) { @@ -143831,30 +146825,30 @@ function getCallName(sourceFile, start2) { } // src/services/codefixes/fixAwaitInSyncFunction.ts -var fixId36 = "fixAwaitInSyncFunction"; -var errorCodes46 = [ +var fixId35 = "fixAwaitInSyncFunction"; +var errorCodes45 = [ Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code ]; registerCodeFix({ - errorCodes: errorCodes46, + errorCodes: errorCodes45, getCodeActions(context) { const { sourceFile, span } = context; const nodes = getNodes3(sourceFile, span.start); if (!nodes) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange22(t, sourceFile, nodes)); - return [createCodeFixAction(fixId36, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId36, Diagnostics.Add_all_missing_async_modifiers)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, sourceFile, nodes)); + return [createCodeFixAction(fixId35, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId35, Diagnostics.Add_all_missing_async_modifiers)]; }, - fixIds: [fixId36], + fixIds: [fixId35], getAllCodeActions: function getAllCodeActionsToFixAwaitInSyncFunction(context) { const seen = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes46, (changes, diag2) => { + return codeFixAll(context, errorCodes45, (changes, diag2) => { const nodes = getNodes3(diag2.file, diag2.start); if (!nodes || !addToSeen(seen, getNodeId(nodes.insertBefore))) return; - doChange22(changes, context.sourceFile, nodes); + doChange21(changes, context.sourceFile, nodes); }); } }); @@ -143893,7 +146887,7 @@ function getNodes3(sourceFile, start2) { returnType: getReturnType(containingFunction) }; } -function doChange22(changes, sourceFile, { insertBefore, returnType }) { +function doChange21(changes, sourceFile, { insertBefore, returnType }) { if (returnType) { const entityName = getEntityNameFromTypeNode(returnType); if (!entityName || entityName.kind !== 79 /* Identifier */ || entityName.text !== "Promise") { @@ -143904,22 +146898,22 @@ function doChange22(changes, sourceFile, { insertBefore, returnType }) { } // src/services/codefixes/fixPropertyOverrideAccessor.ts -var errorCodes47 = [ +var errorCodes46 = [ Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code, Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code ]; -var fixId37 = "fixPropertyOverrideAccessor"; +var fixId36 = "fixPropertyOverrideAccessor"; registerCodeFix({ - errorCodes: errorCodes47, + errorCodes: errorCodes46, getCodeActions(context) { - const edits = doChange23(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); + const edits = doChange22(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); if (edits) { - return [createCodeFixAction(fixId37, edits, Diagnostics.Generate_get_and_set_accessors, fixId37, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; + return [createCodeFixAction(fixId36, edits, Diagnostics.Generate_get_and_set_accessors, fixId36, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; } }, - fixIds: [fixId37], - getAllCodeActions: (context) => codeFixAll(context, errorCodes47, (changes, diag2) => { - const edits = doChange23(diag2.file, diag2.start, diag2.length, diag2.code, context); + fixIds: [fixId36], + getAllCodeActions: (context) => codeFixAll(context, errorCodes46, (changes, diag2) => { + const edits = doChange22(diag2.file, diag2.start, diag2.length, diag2.code, context); if (edits) { for (const edit of edits) { changes.pushRaw(context.sourceFile, edit); @@ -143927,7 +146921,7 @@ registerCodeFix({ } }) }); -function doChange23(file, start2, length2, code, context) { +function doChange22(file, start2, length2, code, context) { let startPosition; let endPosition; if (code === Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code) { @@ -143956,8 +146950,8 @@ function doChange23(file, start2, length2, code, context) { } // src/services/codefixes/inferFromUsage.ts -var fixId38 = "inferFromUsage"; -var errorCodes48 = [ +var fixId37 = "inferFromUsage"; +var errorCodes47 = [ // Variable declarations Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code, // Variable uses @@ -143991,13 +146985,13 @@ var errorCodes48 = [ Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code ]; registerCodeFix({ - errorCodes: errorCodes48, + errorCodes: errorCodes47, getCodeActions(context) { const { sourceFile, program, span: { start: start2 }, errorCode, cancellationToken, host, preferences } = context; const token = getTokenAtPosition(sourceFile, start2); let declaration; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => { - declaration = doChange24( + declaration = doChange23( changes2, sourceFile, token, @@ -144011,14 +147005,14 @@ registerCodeFix({ ); }); const name = declaration && getNameOfDeclaration(declaration); - return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId38, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId38, Diagnostics.Infer_all_types_from_usage)]; + return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId37, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId37, Diagnostics.Infer_all_types_from_usage)]; }, - fixIds: [fixId38], + fixIds: [fixId37], getAllCodeActions(context) { const { sourceFile, program, cancellationToken, host, preferences } = context; const markSeen = nodeSeenTracker(); - return codeFixAll(context, errorCodes48, (changes, err) => { - doChange24(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); + return codeFixAll(context, errorCodes47, (changes, err) => { + doChange23(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); }); } }); @@ -144057,7 +147051,7 @@ function mapSuggestionDiagnostic(errorCode) { } return errorCode; } -function doChange24(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { +function doChange23(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { if (!isParameterPropertyModifier(token.kind) && token.kind !== 79 /* Identifier */ && token.kind !== 25 /* DotDotDotToken */ && token.kind !== 108 /* ThisKeyword */) { return void 0; } @@ -144953,13 +147947,13 @@ function inferTypeFromReferences(program, references, cancellationToken) { } // src/services/codefixes/fixReturnTypeInAsyncFunction.ts -var fixId39 = "fixReturnTypeInAsyncFunction"; -var errorCodes49 = [ +var fixId38 = "fixReturnTypeInAsyncFunction"; +var errorCodes48 = [ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code ]; registerCodeFix({ - errorCodes: errorCodes49, - fixIds: [fixId39], + errorCodes: errorCodes48, + fixIds: [fixId38], getCodeActions: function getCodeActionsToFixReturnTypeInAsyncFunction(context) { const { sourceFile, program, span } = context; const checker = program.getTypeChecker(); @@ -144968,23 +147962,23 @@ registerCodeFix({ return void 0; } const { returnTypeNode, returnType, promisedTypeNode, promisedType } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, sourceFile, returnTypeNode, promisedTypeNode)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange24(t, sourceFile, returnTypeNode, promisedTypeNode)); return [createCodeFixAction( - fixId39, + fixId38, changes, [ Diagnostics.Replace_0_with_Promise_1, checker.typeToString(returnType), checker.typeToString(promisedType) ], - fixId39, + fixId38, Diagnostics.Fix_all_incorrect_return_type_of_an_async_functions )]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes49, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes48, (changes, diag2) => { const info = getInfo12(diag2.file, context.program.getTypeChecker(), diag2.start); if (info) { - doChange25(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); + doChange24(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); } }) }); @@ -145011,19 +148005,19 @@ function getInfo12(sourceFile, checker, pos) { return { returnTypeNode, returnType, promisedTypeNode, promisedType }; } } -function doChange25(changes, sourceFile, returnTypeNode, promisedTypeNode) { +function doChange24(changes, sourceFile, returnTypeNode, promisedTypeNode) { changes.replaceNode(sourceFile, returnTypeNode, factory.createTypeReferenceNode("Promise", [promisedTypeNode])); } // src/services/codefixes/disableJsDiagnostics.ts var fixName4 = "disableJsDiagnostics"; -var fixId40 = "disableJsDiagnostics"; -var errorCodes50 = mapDefined(Object.keys(Diagnostics), (key) => { +var fixId39 = "disableJsDiagnostics"; +var errorCodes49 = mapDefined(Object.keys(Diagnostics), (key) => { const diag2 = Diagnostics[key]; return diag2.category === 1 /* Error */ ? diag2.code : void 0; }); registerCodeFix({ - errorCodes: errorCodes50, + errorCodes: errorCodes49, getCodeActions: function getCodeActionsToDisableJsDiagnostics(context) { const { sourceFile, program, span, host, formatContext } = context; if (!isInJSFile(sourceFile) || !isCheckJsEnabledForFile(sourceFile, program.getCompilerOptions())) { @@ -145041,14 +148035,14 @@ registerCodeFix({ ) ]; if (ts_textChanges_exports.isValidLocationToAddComment(sourceFile, span.start)) { - fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId40, Diagnostics.Add_ts_ignore_to_all_error_messages)); + fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId39, Diagnostics.Add_ts_ignore_to_all_error_messages)); } return fixes; }, - fixIds: [fixId40], + fixIds: [fixId39], getAllCodeActions: (context) => { const seenLines = /* @__PURE__ */ new Set(); - return codeFixAll(context, errorCodes50, (changes, diag2) => { + return codeFixAll(context, errorCodes49, (changes, diag2) => { if (ts_textChanges_exports.isValidLocationToAddComment(diag2.file, diag2.start)) { makeChange8(changes, diag2.file, diag2.start, seenLines); } @@ -145668,18 +148662,17 @@ function findJsonProperty(obj, name) { } function tryGetAutoImportableReferenceFromTypeNode(importTypeNode, scriptTarget) { let symbols; - const typeNode = visitNode(importTypeNode, visit); + const typeNode = visitNode(importTypeNode, visit, isTypeNode); if (symbols && typeNode) { return { typeNode, symbols }; } function visit(node) { - var _a2; if (isLiteralImportTypeNode(node) && node.qualifier) { const firstIdentifier = getFirstIdentifier(node.qualifier); const name = getNameForExportedSymbol(firstIdentifier.symbol, scriptTarget); const qualifier = name !== firstIdentifier.text ? replaceFirstIdentifierOfEntityName(node.qualifier, factory.createIdentifier(name)) : node.qualifier; symbols = append(symbols, firstIdentifier.symbol); - const typeArguments = (_a2 = node.typeArguments) == null ? void 0 : _a2.map(visit); + const typeArguments = visitNodes2(node.typeArguments, visit, isTypeNode); return factory.createTypeReferenceNode(qualifier, typeArguments); } return visitEachChild(node, visit, nullTransformationContext); @@ -145817,9 +148810,7 @@ function generateGetAccessor(fieldName, accessorName, type, modifiers, isStatic2 return factory.createGetAccessorDeclaration( modifiers, accessorName, - /*parameters*/ - void 0, - // TODO: GH#18217 + [], type, factory.createBlock( [ @@ -146030,9 +149021,9 @@ var fixName6 = "strictClassInitialization"; var fixIdAddDefiniteAssignmentAssertions = "addMissingPropertyDefiniteAssignmentAssertions"; var fixIdAddUndefinedType = "addMissingPropertyUndefinedType"; var fixIdAddInitializer = "addMissingPropertyInitializer"; -var errorCodes51 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; +var errorCodes50 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; registerCodeFix({ - errorCodes: errorCodes51, + errorCodes: errorCodes50, getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) { const info = getInfo13(context.sourceFile, context.span.start); if (!info) @@ -146045,7 +149036,7 @@ registerCodeFix({ }, fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes51, (changes, diag2) => { + return codeFixAll(context, errorCodes50, (changes, diag2) => { const info = getInfo13(diag2.file, diag2.start); if (!info) return; @@ -146175,27 +149166,27 @@ function getDefaultValueFromType(checker, type) { } // src/services/codefixes/requireInTs.ts -var fixId41 = "requireInTs"; -var errorCodes52 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; +var fixId40 = "requireInTs"; +var errorCodes51 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; registerCodeFix({ - errorCodes: errorCodes52, + errorCodes: errorCodes51, getCodeActions(context) { const info = getInfo14(context.sourceFile, context.program, context.span.start); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, context.sourceFile, info)); - return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_require_to_import, fixId41, Diagnostics.Convert_all_require_to_import)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, context.sourceFile, info)); + return [createCodeFixAction(fixId40, changes, Diagnostics.Convert_require_to_import, fixId40, Diagnostics.Convert_all_require_to_import)]; }, - fixIds: [fixId41], - getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { + fixIds: [fixId40], + getAllCodeActions: (context) => codeFixAll(context, errorCodes51, (changes, diag2) => { const info = getInfo14(diag2.file, context.program, diag2.start); if (info) { - doChange26(changes, context.sourceFile, info); + doChange25(changes, context.sourceFile, info); } }) }); -function doChange26(changes, sourceFile, info) { +function doChange25(changes, sourceFile, info) { const { allowSyntheticDefaults, defaultImportName, namedImports, statement, required } = info; changes.replaceNode(sourceFile, statement, defaultImportName && !allowSyntheticDefaults ? factory.createImportEqualsDeclaration( /*modifiers*/ @@ -146259,23 +149250,23 @@ function tryCreateNamedImportsFromObjectBindingPattern(node) { } // src/services/codefixes/useDefaultImport.ts -var fixId42 = "useDefaultImport"; -var errorCodes53 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; +var fixId41 = "useDefaultImport"; +var errorCodes52 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; registerCodeFix({ - errorCodes: errorCodes53, + errorCodes: errorCodes52, getCodeActions(context) { const { sourceFile, span: { start: start2 } } = context; const info = getInfo15(sourceFile, start2); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, info, context.preferences)); - return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_default_import, fixId42, Diagnostics.Convert_all_to_default_imports)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, sourceFile, info, context.preferences)); + return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_to_default_import, fixId41, Diagnostics.Convert_all_to_default_imports)]; }, - fixIds: [fixId42], - getAllCodeActions: (context) => codeFixAll(context, errorCodes53, (changes, diag2) => { + fixIds: [fixId41], + getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { const info = getInfo15(diag2.file, diag2.start); if (info) - doChange27(changes, diag2.file, info, context.preferences); + doChange26(changes, diag2.file, info, context.preferences); }) }); function getInfo15(sourceFile, pos) { @@ -146290,7 +149281,7 @@ function getInfo15(sourceFile, pos) { return { importNode, name, moduleSpecifier: importNode.moduleSpecifier }; } } -function doChange27(changes, sourceFile, info, preferences) { +function doChange26(changes, sourceFile, info, preferences) { changes.replaceNode(sourceFile, info.importNode, makeImport( info.name, /*namedImports*/ @@ -146301,21 +149292,21 @@ function doChange27(changes, sourceFile, info, preferences) { } // src/services/codefixes/useBigintLiteral.ts -var fixId43 = "useBigintLiteral"; -var errorCodes54 = [ +var fixId42 = "useBigintLiteral"; +var errorCodes53 = [ Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code ]; registerCodeFix({ - errorCodes: errorCodes54, + errorCodes: errorCodes53, getCodeActions: function getCodeActionsToUseBigintLiteral(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange9(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId43, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId43, Diagnostics.Convert_all_to_bigint_numeric_literals)]; + return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId42, Diagnostics.Convert_all_to_bigint_numeric_literals)]; } }, - fixIds: [fixId43], + fixIds: [fixId42], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes54, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes53, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); } }); function makeChange9(changeTracker, sourceFile, span) { @@ -146329,18 +149320,18 @@ function makeChange9(changeTracker, sourceFile, span) { // src/services/codefixes/fixAddModuleReferTypeMissingTypeof.ts var fixIdAddMissingTypeof = "fixAddModuleReferTypeMissingTypeof"; -var fixId44 = fixIdAddMissingTypeof; -var errorCodes55 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; +var fixId43 = fixIdAddMissingTypeof; +var errorCodes54 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; registerCodeFix({ - errorCodes: errorCodes55, + errorCodes: errorCodes54, getCodeActions: function getCodeActionsToAddMissingTypeof(context) { const { sourceFile, span } = context; const importType = getImportTypeNode(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, importType)); - return [createCodeFixAction(fixId44, changes, Diagnostics.Add_missing_typeof, fixId44, Diagnostics.Add_missing_typeof)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, importType)); + return [createCodeFixAction(fixId43, changes, Diagnostics.Add_missing_typeof, fixId43, Diagnostics.Add_missing_typeof)]; }, - fixIds: [fixId44], - getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => doChange28(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) + fixIds: [fixId43], + getAllCodeActions: (context) => codeFixAll(context, errorCodes54, (changes, diag2) => doChange27(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) }); function getImportTypeNode(sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); @@ -146348,7 +149339,7 @@ function getImportTypeNode(sourceFile, pos) { Debug.assert(token.parent.kind === 202 /* ImportType */, "Token parent should be an ImportType"); return token.parent; } -function doChange28(changes, sourceFile, importType) { +function doChange27(changes, sourceFile, importType) { const newTypeNode = factory.updateImportTypeNode( importType, importType.argument, @@ -146363,23 +149354,23 @@ function doChange28(changes, sourceFile, importType) { // src/services/codefixes/wrapJsxInFragment.ts var fixID2 = "wrapJsxInFragment"; -var errorCodes56 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; +var errorCodes55 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; registerCodeFix({ - errorCodes: errorCodes56, + errorCodes: errorCodes55, getCodeActions: function getCodeActionsToWrapJsxInFragment(context) { const { sourceFile, span } = context; const node = findNodeToFix(sourceFile, span.start); if (!node) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, node)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, node)); return [createCodeFixAction(fixID2, changes, Diagnostics.Wrap_in_JSX_fragment, fixID2, Diagnostics.Wrap_all_unparented_JSX_in_JSX_fragment)]; }, fixIds: [fixID2], - getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => { const node = findNodeToFix(context.sourceFile, diag2.start); if (!node) return void 0; - doChange29(changes, context.sourceFile, node); + doChange28(changes, context.sourceFile, node); }) }); function findNodeToFix(sourceFile, pos) { @@ -146395,7 +149386,7 @@ function findNodeToFix(sourceFile, pos) { return void 0; return binaryExpr; } -function doChange29(changeTracker, sf, node) { +function doChange28(changeTracker, sf, node) { const jsx = flattenInvalidBinaryExpr(node); if (jsx) changeTracker.replaceNode(sf, node, factory.createJsxFragment(factory.createJsxOpeningFragment(), jsx, factory.createJsxJsxClosingFragment())); @@ -146420,24 +149411,24 @@ function flattenInvalidBinaryExpr(node) { } // src/services/codefixes/convertToMappedObjectType.ts -var fixId45 = "fixConvertToMappedObjectType"; -var errorCodes57 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; +var fixId44 = "fixConvertToMappedObjectType"; +var errorCodes56 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; registerCodeFix({ - errorCodes: errorCodes57, + errorCodes: errorCodes56, getCodeActions: function getCodeActionsToConvertToMappedTypeObject(context) { const { sourceFile, span } = context; const info = getInfo16(sourceFile, span.start); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, info)); const name = idText(info.container.name); - return [createCodeFixAction(fixId45, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId45, [Diagnostics.Convert_0_to_mapped_object_type, name])]; + return [createCodeFixAction(fixId44, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId44, [Diagnostics.Convert_0_to_mapped_object_type, name])]; }, - fixIds: [fixId45], - getAllCodeActions: (context) => codeFixAll(context, errorCodes57, (changes, diag2) => { + fixIds: [fixId44], + getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { const info = getInfo16(diag2.file, diag2.start); if (info) - doChange30(changes, diag2.file, info); + doChange29(changes, diag2.file, info); }) }); function getInfo16(sourceFile, pos) { @@ -146453,7 +149444,7 @@ function getInfo16(sourceFile, pos) { function createTypeAliasFromInterface(declaration, type) { return factory.createTypeAliasDeclaration(declaration.modifiers, declaration.name, declaration.typeParameters, type); } -function doChange30(changes, sourceFile, { indexSignature, container }) { +function doChange29(changes, sourceFile, { indexSignature, container }) { const members = isInterfaceDeclaration(container) ? container.members : container.type.members; const otherMembers = members.filter((member) => !isIndexSignatureDeclaration(member)); const parameter = first(indexSignature.parameters); @@ -146482,12 +149473,12 @@ function doChange30(changes, sourceFile, { indexSignature, container }) { } // src/services/codefixes/removeAccidentalCallParentheses.ts -var fixId46 = "removeAccidentalCallParentheses"; -var errorCodes58 = [ +var fixId45 = "removeAccidentalCallParentheses"; +var errorCodes57 = [ Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code ]; registerCodeFix({ - errorCodes: errorCodes58, + errorCodes: errorCodes57, getCodeActions(context) { const callExpression = findAncestor(getTokenAtPosition(context.sourceFile, context.span.start), isCallExpression); if (!callExpression) { @@ -146496,27 +149487,27 @@ registerCodeFix({ const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { t.deleteRange(context.sourceFile, { pos: callExpression.expression.end, end: callExpression.end }); }); - return [createCodeFixActionWithoutFixAll(fixId46, changes, Diagnostics.Remove_parentheses)]; + return [createCodeFixActionWithoutFixAll(fixId45, changes, Diagnostics.Remove_parentheses)]; }, - fixIds: [fixId46] + fixIds: [fixId45] }); // src/services/codefixes/removeUnnecessaryAwait.ts -var fixId47 = "removeUnnecessaryAwait"; -var errorCodes59 = [ +var fixId46 = "removeUnnecessaryAwait"; +var errorCodes58 = [ Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code ]; registerCodeFix({ - errorCodes: errorCodes59, + errorCodes: errorCodes58, getCodeActions: function getCodeActionsToRemoveUnnecessaryAwait(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange10(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId47, changes, Diagnostics.Remove_unnecessary_await, fixId47, Diagnostics.Remove_all_unnecessary_uses_of_await)]; + return [createCodeFixAction(fixId46, changes, Diagnostics.Remove_unnecessary_await, fixId46, Diagnostics.Remove_all_unnecessary_uses_of_await)]; } }, - fixIds: [fixId47], + fixIds: [fixId46], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes59, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes58, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); } }); function makeChange10(changeTracker, sourceFile, span) { @@ -146544,20 +149535,20 @@ function makeChange10(changeTracker, sourceFile, span) { } // src/services/codefixes/splitTypeOnlyImport.ts -var errorCodes60 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; -var fixId48 = "splitTypeOnlyImport"; +var errorCodes59 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; +var fixId47 = "splitTypeOnlyImport"; registerCodeFix({ - errorCodes: errorCodes60, - fixIds: [fixId48], + errorCodes: errorCodes59, + fixIds: [fixId47], getCodeActions: function getCodeActionsToSplitTypeOnlyImport(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { return splitTypeOnlyImport(t, getImportDeclaration2(context.sourceFile, context.span), context); }); if (changes.length) { - return [createCodeFixAction(fixId48, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId48, Diagnostics.Split_all_invalid_type_only_imports)]; + return [createCodeFixAction(fixId47, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId47, Diagnostics.Split_all_invalid_type_only_imports)]; } }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes60, (changes, error) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes59, (changes, error) => { splitTypeOnlyImport(changes, getImportDeclaration2(context.sourceFile, error), context); }) }); @@ -146598,34 +149589,34 @@ function splitTypeOnlyImport(changes, importDeclaration, context) { } // src/services/codefixes/convertConstToLet.ts -var fixId49 = "fixConvertConstToLet"; -var errorCodes61 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; +var fixId48 = "fixConvertConstToLet"; +var errorCodes60 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; registerCodeFix({ - errorCodes: errorCodes61, + errorCodes: errorCodes60, getCodeActions: function getCodeActionsToConvertConstToLet(context) { const { sourceFile, span, program } = context; const info = getInfo17(sourceFile, span.start, program); if (info === void 0) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info.token)); - return [createCodeFixActionMaybeFixAll(fixId49, changes, Diagnostics.Convert_const_to_let, fixId49, Diagnostics.Convert_all_const_to_let)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info.token)); + return [createCodeFixActionMaybeFixAll(fixId48, changes, Diagnostics.Convert_const_to_let, fixId48, Diagnostics.Convert_all_const_to_let)]; }, getAllCodeActions: (context) => { const { program } = context; const seen = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes61, (diag2) => { + eachDiagnostic(context, errorCodes60, (diag2) => { const info = getInfo17(diag2.file, diag2.start, program); if (info) { if (addToSeen(seen, getSymbolId(info.symbol))) { - return doChange31(changes, diag2.file, info.token); + return doChange30(changes, diag2.file, info.token); } } return void 0; }); })); }, - fixIds: [fixId49] + fixIds: [fixId48] }); function getInfo17(sourceFile, pos, program) { var _a2; @@ -146641,64 +149632,64 @@ function getInfo17(sourceFile, pos, program) { return; return { symbol, token: constToken }; } -function doChange31(changes, sourceFile, token) { +function doChange30(changes, sourceFile, token) { changes.replaceNode(sourceFile, token, factory.createToken(119 /* LetKeyword */)); } // src/services/codefixes/fixExpectedComma.ts -var fixId50 = "fixExpectedComma"; +var fixId49 = "fixExpectedComma"; var expectedErrorCode = Diagnostics._0_expected.code; -var errorCodes62 = [expectedErrorCode]; +var errorCodes61 = [expectedErrorCode]; registerCodeFix({ - errorCodes: errorCodes62, + errorCodes: errorCodes61, getCodeActions(context) { const { sourceFile } = context; const info = getInfo18(sourceFile, context.span.start, context.errorCode); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info)); return [createCodeFixAction( - fixId50, + fixId49, changes, [Diagnostics.Change_0_to_1, ";", ","], - fixId50, + fixId49, [Diagnostics.Change_0_to_1, ";", ","] )]; }, - fixIds: [fixId50], - getAllCodeActions: (context) => codeFixAll(context, errorCodes62, (changes, diag2) => { + fixIds: [fixId49], + getAllCodeActions: (context) => codeFixAll(context, errorCodes61, (changes, diag2) => { const info = getInfo18(diag2.file, diag2.start, diag2.code); if (info) - doChange32(changes, context.sourceFile, info); + doChange31(changes, context.sourceFile, info); }) }); function getInfo18(sourceFile, pos, _) { const node = getTokenAtPosition(sourceFile, pos); return node.kind === 26 /* SemicolonToken */ && node.parent && (isObjectLiteralExpression(node.parent) || isArrayLiteralExpression(node.parent)) ? { node } : void 0; } -function doChange32(changes, sourceFile, { node }) { +function doChange31(changes, sourceFile, { node }) { const newNode = factory.createToken(27 /* CommaToken */); changes.replaceNode(sourceFile, node, newNode); } // src/services/codefixes/fixAddVoidToPromise.ts var fixName7 = "addVoidToPromise"; -var fixId51 = "addVoidToPromise"; -var errorCodes63 = [ +var fixId50 = "addVoidToPromise"; +var errorCodes62 = [ Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code, Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code ]; registerCodeFix({ - errorCodes: errorCodes63, - fixIds: [fixId51], + errorCodes: errorCodes62, + fixIds: [fixId50], getCodeActions(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange11(t, context.sourceFile, context.span, context.program)); if (changes.length > 0) { - return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId51, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; + return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId50, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; } }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes63, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); + return codeFixAll(context, errorCodes62, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); } }); function makeChange11(changes, sourceFile, span, program, seen) { @@ -146870,9 +149861,9 @@ function resolvingModuleSpecifiers(logPrefix, host, resolver, program, position, (_b = host.log) == null ? void 0 : _b.call(host, `${logPrefix}: response is ${skippedAny ? "incomplete" : "complete"}`); (_c = host.log) == null ? void 0 : _c.call(host, `${logPrefix}: ${timestamp() - start2}`); return result; - function tryResolve(exportInfo, symbolName2, isFromAmbientModule) { + function tryResolve(exportInfo, isFromAmbientModule) { if (isFromAmbientModule) { - const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite); + const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite); if (result3) { ambientCount++; } @@ -146880,7 +149871,7 @@ function resolvingModuleSpecifiers(logPrefix, host, resolver, program, position, } const shouldResolveModuleSpecifier = needsFullResolution || preferences.allowIncompleteCompletions && resolvedCount < moduleSpecifierResolutionLimit; const shouldGetModuleSpecifierFromCache = !shouldResolveModuleSpecifier && preferences.allowIncompleteCompletions && cacheAttemptCount < moduleSpecifierResolutionCacheAttemptLimit; - const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; + const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; if (!shouldResolveModuleSpecifier && !shouldGetModuleSpecifierFromCache || shouldGetModuleSpecifierFromCache && !result2) { skippedAny = true; } @@ -146907,7 +149898,7 @@ function getCompletionsAtPosition(host, program, log, sourceFile, position, pref const compilerOptions = program.getCompilerOptions(); const incompleteCompletionsCache = preferences.allowIncompleteCompletions ? (_a2 = host.getIncompleteCompletionsCache) == null ? void 0 : _a2.call(host) : void 0; if (incompleteCompletionsCache && completionKind === 3 /* TriggerForIncompleteCompletions */ && previousToken && isIdentifier(previousToken)) { - const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken); + const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken, position); if (incompleteContinuation) { return incompleteContinuation; } @@ -146976,10 +149967,11 @@ function compareCompletionEntries(entryInArray, entryToInsert) { function completionEntryDataIsResolved(data) { return !!(data == null ? void 0 : data.moduleSpecifier); } -function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken) { +function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken, position) { const previousResponse = cache.get(); if (!previousResponse) return void 0; + const touchNode = getTouchingPropertyName(file, position); const lowerCaseTokenText = location.text.toLowerCase(); const exportMap = getExportInfoMap(file, host, program, preferences, cancellationToken); const newEntries = resolvingModuleSpecifiers( @@ -147003,7 +149995,7 @@ function continuePreviousIncompleteResponse(cache, file, location, program, host } const { origin } = Debug.checkDefined(getAutoImportSymbolFromCompletionEntryData(entry.name, entry.data, program, host)); const info = exportMap.get(file.path, entry.data.exportMapKey); - const result = info && context.tryResolve(info, entry.name, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); + const result = info && context.tryResolve(info, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); if (result === "skipped") return entry; if (!result || result === "failed") { @@ -147028,6 +150020,7 @@ function continuePreviousIncompleteResponse(cache, file, location, program, host ); previousResponse.entries = newEntries; previousResponse.flags = (previousResponse.flags || 0) | 4 /* IsContinuation */; + previousResponse.optionalReplacementSpan = getOptionalReplacementSpan(touchNode); return previousResponse; } function jsdocCompletionInfo(entries) { @@ -147122,6 +150115,7 @@ function completionInfoFromData(sourceFile, host, program, compilerOptions, log, void 0, contextToken, location, + position, sourceFile, host, program, @@ -147235,10 +150229,10 @@ function getExhaustiveCaseSnippets(caseBlock, sourceFile, preferences, options, } else if (!tracker.hasValue(type.value)) { switch (typeof type.value) { case "object": - elements.push(factory.createBigIntLiteral(type.value)); + elements.push(type.value.negative ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createBigIntLiteral({ negative: false, base10Value: type.value.base10Value })) : factory.createBigIntLiteral(type.value)); break; case "number": - elements.push(factory.createNumericLiteral(type.value)); + elements.push(type.value < 0 ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createNumericLiteral(-type.value)) : factory.createNumericLiteral(type.value)); break; case "string": elements.push(factory.createStringLiteral(type.value, quotePreference === 0 /* Single */)); @@ -147250,7 +150244,7 @@ function getExhaustiveCaseSnippets(caseBlock, sourceFile, preferences, options, return void 0; } const newClauses = map(elements, (element) => factory.createCaseClause(element, [])); - const newLineChar = getNewLineCharacter(options, maybeBind(host, host.getNewLine)); + const newLineChar = getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options); const printer = createSnippetPrinter({ removeComments: true, module: options.module, @@ -147447,7 +150441,7 @@ function completionNameForLiteral(sourceFile, preferences, literal) { function createCompletionEntryForLiteral(sourceFile, preferences, literal) { return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority }; } -function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { +function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, position, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { let insertText; let replacementSpan = getReplacementSpanForContextToken(replacementToken); let data; @@ -147505,7 +150499,7 @@ function createCompletionEntry(symbol, sortText, replacementToken, contextToken, } if (preferences.includeCompletionsWithClassMemberSnippets && preferences.includeCompletionsWithInsertText && completionKind === CompletionKind.MemberLike && isClassLikeMemberCompletion(symbol, location, sourceFile)) { let importAdder; - ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext)); + ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext)); sortText = SortText.ClassMemberSnippets; if (importAdder == null ? void 0 : importAdder.hasFixes()) { hasAction = true; @@ -147569,7 +150563,7 @@ function isClassLikeMemberCompletion(symbol, location, sourceFile) { const memberFlags = 106500 /* ClassMember */ & 900095 /* EnumMemberExcludes */; return !!(symbol.flags & memberFlags) && (isClassLike(location) || location.parent && location.parent.parent && isClassElement(location.parent) && location === location.parent.name && location.parent.getLastToken(sourceFile) === location.parent.name && isClassLike(location.parent.parent) || location.parent && isSyntaxList(location) && isClassLike(location.parent)); } -function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext) { +function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext) { const classLikeDeclaration = findAncestor(location, isClassLike); if (!classLikeDeclaration) { return { insertText: name }; @@ -147584,7 +150578,7 @@ function getEntryForMemberCompletion(host, program, options, preferences, name, module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); const importAdder = ts_codefix_exports.createImportAdder(sourceFile, program, preferences, host); let body; @@ -147605,7 +150599,7 @@ function getEntryForMemberCompletion(host, program, options, preferences, name, ); } let modifiers = 0 /* None */; - const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken); + const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken, sourceFile, position); const isAbstract = !!(presentModifiers & 256 /* Abstract */); const completionNodes = []; ts_codefix_exports.addNewNodeForMemberSymbol( @@ -147660,8 +150654,8 @@ function getEntryForMemberCompletion(host, program, options, preferences, name, } return { insertText, isSnippet, importAdder, replacementSpan }; } -function getPresentModifiers(contextToken) { - if (!contextToken) { +function getPresentModifiers(contextToken, sourceFile, position) { + if (!contextToken || getLineAndCharacterOfPosition(sourceFile, position).line > getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line) { return { modifiers: 0 /* None */ }; } let modifiers = 0 /* None */; @@ -147681,8 +150675,11 @@ function isModifierLike2(node) { if (isModifier(node)) { return node.kind; } - if (isIdentifier(node) && node.originalKeywordKind && isModifierKind(node.originalKeywordKind)) { - return node.originalKeywordKind; + if (isIdentifier(node)) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind && isModifierKind(originalKeywordKind)) { + return originalKeywordKind; + } } return void 0; } @@ -147699,7 +150696,7 @@ function getEntryForObjectLiteralMethodCompletion(symbol, name, enclosingDeclara module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); if (formatContext) { insertText = printer.printAndFormatSnippetList(16 /* CommaDelimited */ | 64 /* AllowTrailingComma */, factory.createNodeArray( @@ -148024,7 +151021,7 @@ function getSourceFromOrigin(origin) { return "TypeOnlyAlias/" /* TypeOnlyAlias */; } } -function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { +function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, position, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { var _a2; const start2 = timestamp(); const variableDeclaration = getVariableDeclaration(location); @@ -148047,6 +151044,7 @@ function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, con replacementToken, contextToken, location, + position, sourceFile, host, program, @@ -148290,6 +151288,7 @@ function getCompletionEntryCodeActionsAndSourceDisplay(name, location, contextTo name, symbol, location, + position, contextToken, formatContext ); @@ -148330,7 +151329,7 @@ function getCompletionEntryCodeActionsAndSourceDisplay(name, location, contextTo targetSymbol, moduleSymbol, sourceFile, - getNameForExportedSymbol(symbol, getEmitScriptTarget(compilerOptions), isJsxOpeningTagName), + name, isJsxOpeningTagName, host, program, @@ -148670,6 +151669,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, case 347 /* JSDocTypeTag */: case 349 /* JSDocTypedefTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return true; case 348 /* JSDocTemplateTag */: return !!tag.constraint; @@ -148812,7 +151812,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, moduleSymbol, symbol: firstAccessibleSymbol, targetFlags: skipAlias(firstAccessibleSymbol, typeChecker).flags - }], firstAccessibleSymbol.name, position, isValidTypeOnlyAliasUseSite(location)) || {}; + }], position, isValidTypeOnlyAliasUseSite(location)) || {}; if (moduleSpecifier) { const origin = { kind: getNullableSymbolOriginInfoKind(6 /* SymbolMemberExport */), @@ -148908,7 +151908,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, symbolToSortTextMap[getSymbolId(symbol)] = SortText.GlobalsOrKeywords; } if (typeOnlyAliasNeedsPromotion && !(symbol.flags & 111551 /* Value */)) { - const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportOrExportDeclaration); + const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportDeclaration); if (typeOnlyAliasDeclaration) { const origin = { kind: 64 /* TypeOnlyAlias */, declaration: typeOnlyAliasDeclaration }; symbolToOriginInfoMap[i] = origin; @@ -149038,7 +152038,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, if (!firstImportableExportInfo) { return; } - const result = context.tryResolve(info, symbolName2, isFromAmbientModule) || {}; + const result = context.tryResolve(info, isFromAmbientModule) || {}; if (result === "failed") return; let exportInfo2 = firstImportableExportInfo, moduleSpecifier; @@ -149881,7 +152881,8 @@ function isFunctionLikeBodyKeyword(kind) { return kind === 132 /* AsyncKeyword */ || kind === 133 /* AwaitKeyword */ || kind === 128 /* AsKeyword */ || kind === 150 /* SatisfiesKeyword */ || kind === 154 /* TypeKeyword */ || !isContextualKeyword(kind) && !isClassMemberCompletionKeyword(kind); } function keywordForNode(node) { - return isIdentifier(node) ? node.originalKeywordKind || 0 /* Unknown */ : node.kind; + var _a2; + return isIdentifier(node) ? (_a2 = identifierToKeywordKind(node)) != null ? _a2 : 0 /* Unknown */ : node.kind; } function getContextualKeywords(contextToken, position) { const entries = []; @@ -149927,8 +152928,9 @@ function getPropertiesForCompletion(type, checker) { return type.isUnion() ? Debug.checkEachDefined(checker.getAllPossiblePropertiesOfTypes(type.types), "getAllPossiblePropertiesOfTypes() should all be defined") : Debug.checkEachDefined(type.getApparentProperties(), "getApparentProperties() should all be defined"); } function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken, location, position) { + var _a2; switch (location.kind) { - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return tryCast(location.parent, isObjectTypeDeclaration); case 1 /* EndOfFileToken */: const cls = tryCast(lastOrUndefined(cast(location.parent, isSourceFile).statements), isObjectTypeDeclaration); @@ -149937,8 +152939,8 @@ function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken } break; case 79 /* Identifier */: { - const originalKeywordKind = location.originalKeywordKind; - if (originalKeywordKind && isKeyword(originalKeywordKind)) { + const originalKeywordKind = identifierToKeywordKind(location); + if (originalKeywordKind) { return void 0; } if (isPropertyDeclaration(location.parent) && location.parent.initializer === location) { @@ -149964,14 +152966,14 @@ function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken case 27 /* CommaToken */: return tryCast(contextToken.parent, isObjectTypeDeclaration); default: - if (!isFromObjectTypeDeclaration(contextToken)) { - if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line && isObjectTypeDeclaration(location)) { + if (isObjectTypeDeclaration(location)) { + if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line) { return location; } - return void 0; + const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; + return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword((_a2 = identifierToKeywordKind(contextToken)) != null ? _a2 : 0 /* Unknown */) ? contextToken.parent.parent : void 0; } - const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; - return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword(stringToToken(contextToken.text)) ? contextToken.parent.parent : void 0; + return void 0; } } function tryGetTypeLiteralNode(node) { @@ -150274,10 +153276,10 @@ function getStringLiteralCompletions(sourceFile, position, contextToken, options if (!contextToken || !isStringLiteralLike(contextToken)) return void 0; const entries = getStringLiteralCompletionEntries(sourceFile, contextToken, position, program.getTypeChecker(), options, host, preferences); - return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences); + return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences, position); } } -function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences) { +function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences, position) { if (completion === void 0) { return void 0; } @@ -150293,6 +153295,7 @@ function convertStringLiteralCompletions(completion, contextToken, sourceFile, h contextToken, contextToken, sourceFile, + position, sourceFile, host, program, @@ -150933,7 +153936,7 @@ function removeLeadingDirectorySeparator(path) { } function getAmbientModuleCompletions(fragment, fragmentDirectory, checker) { const ambientModules = checker.getAmbientModules().map((sym) => stripQuotes(sym.name)); - const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment)); + const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment) && moduleName.indexOf("*") < 0); if (fragmentDirectory !== void 0) { const moduleNameWithSeparator = ensureTrailingDirectorySeparator(fragmentDirectory); return nonRelativeModuleNames.map((nonRelativeModuleName) => removePrefix(nonRelativeModuleName, moduleNameWithSeparator)); @@ -152908,7 +155911,7 @@ var Core; } } if (!isForRenameWithPrefixAndSuffixText(state.options) || alwaysGetReferences) { - const isDefaultExport = referenceLocation.originalKeywordKind === 88 /* DefaultKeyword */ || exportSpecifier.name.originalKeywordKind === 88 /* DefaultKeyword */; + const isDefaultExport = referenceLocation.escapedText === "default" || exportSpecifier.name.escapedText === "default"; const exportKind = isDefaultExport ? 1 /* Default */ : 0 /* Named */; const exportSymbol = Debug.checkDefined(exportSpecifier.symbol); const exportInfo = getExportInfo(exportSymbol, exportKind, state.checker); @@ -154346,6 +157349,7 @@ var jsDocTagNames = [ "readonly", "requires", "returns", + "satisfies", "see", "since", "static", @@ -154455,6 +157459,7 @@ function getCommentDisplayParts(tag, checker) { } return displayParts; case 347 /* JSDocTypeTag */: + case 353 /* JSDocSatisfiesTag */: return withNode(tag.typeExpression); case 349 /* JSDocTypedefTag */: case 341 /* JSDocCallbackTag */: @@ -154691,6 +157696,7 @@ __export(ts_OrganizeImports_exports, { detectSorting: () => detectSorting, getImportDeclarationInsertionIndex: () => getImportDeclarationInsertionIndex, getImportSpecifierInsertionIndex: () => getImportSpecifierInsertionIndex, + getOrganizeImportsComparer: () => getOrganizeImportsComparer, organizeImports: () => organizeImports }); @@ -154700,18 +157706,21 @@ function organizeImports(sourceFile, formatContext, host, program, preferences, const shouldSort = mode === "SortAndCombine" /* SortAndCombine */ || mode === "All" /* All */; const shouldCombine = shouldSort; const shouldRemove = mode === "RemoveUnused" /* RemoveUnused */ || mode === "All" /* All */; - const maybeRemove = shouldRemove ? removeUnusedImports : identity; - const maybeCoalesce = shouldCombine ? coalesceImports : identity; const topLevelImportGroupDecls = groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)); - const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : shouldSort && detectSortingWorker(topLevelImportGroupDecls) === 2 /* CaseInsensitive */; + const comparer = getOrganizeImportsComparerWithDetection(preferences, shouldSort ? () => detectSortingWorker(topLevelImportGroupDecls, preferences) === 2 /* CaseInsensitive */ : void 0); const processImportsOfSameModuleSpecifier = (importGroup) => { - const processedDeclarations = maybeCoalesce(maybeRemove(importGroup, sourceFile, program), ignoreCase, sourceFile); - return shouldSort ? stableSort(processedDeclarations, (s1, s2) => compareImportsOrRequireStatements(s1, s2)) : processedDeclarations; + if (shouldRemove) + importGroup = removeUnusedImports(importGroup, sourceFile, program); + if (shouldCombine) + importGroup = coalesceImportsWorker(importGroup, comparer, sourceFile); + if (shouldSort) + importGroup = stableSort(importGroup, (s1, s2) => compareImportsOrRequireStatements(s1, s2, comparer)); + return importGroup; }; topLevelImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const topLevelExportDecls = sourceFile.statements.filter(isExportDeclaration); - organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } for (const ambientModule of sourceFile.statements.filter(isAmbientModule)) { if (!ambientModule.body) @@ -154720,7 +157729,7 @@ function organizeImports(sourceFile, formatContext, host, program, preferences, ambientModuleImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const ambientModuleExportDecls = ambientModule.body.statements.filter(isExportDeclaration); - organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } } return changeTracker.getChanges(); @@ -154730,7 +157739,7 @@ function organizeImports(sourceFile, formatContext, host, program, preferences, } suppressLeadingTrivia(oldImportDecls[0]); const oldImportGroups = shouldCombine ? group(oldImportDecls, (importDecl) => getExternalModuleName2(importDecl.moduleSpecifier)) : [oldImportDecls]; - const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiers2(group1[0].moduleSpecifier, group2[0].moduleSpecifier)) : oldImportGroups; + const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiersWorker(group1[0].moduleSpecifier, group2[0].moduleSpecifier, comparer)) : oldImportGroups; const newImportDecls = flatMap(sortedImportGroups, (importGroup) => getExternalModuleName2(importGroup[0].moduleSpecifier) ? coalesce(importGroup) : importGroup); if (newImportDecls.length === 0) { changeTracker.deleteNodes( @@ -154853,12 +157862,14 @@ function getExternalModuleName2(specifier) { return specifier !== void 0 && isStringLiteralLike(specifier) ? specifier.text : void 0; } function coalesceImports(importGroup, ignoreCase, sourceFile) { - var _a2, _b, _c, _d; + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceImportsWorker(importGroup, comparer, sourceFile); +} +function coalesceImportsWorker(importGroup, comparer, sourceFile) { if (importGroup.length === 0) { return importGroup; } const { importWithoutClause, typeOnlyImports, regularImports } = getCategorizedImports(importGroup); - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; const coalescedImports = []; if (importWithoutClause) { coalescedImports.push(importWithoutClause); @@ -154873,7 +157884,7 @@ function coalesceImports(importGroup, ignoreCase, sourceFile) { ); continue; } - const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => compareIdentifiers(i1.importClause.namedBindings.name, i2.importClause.namedBindings.name)); + const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => comparer(i1.importClause.namedBindings.name.text, i2.importClause.namedBindings.name.text)); for (const namespaceImport of sortedNamespaceImports) { coalescedImports.push( updateImportDeclarationAndClause( @@ -154884,7 +157895,10 @@ function coalesceImports(importGroup, ignoreCase, sourceFile) { ) ); } - if (defaultImports.length === 0 && namedImports.length === 0) { + const firstDefaultImport = firstOrUndefined(defaultImports); + const firstNamedImport = firstOrUndefined(namedImports); + const importDecl = firstDefaultImport != null ? firstDefaultImport : firstNamedImport; + if (!importDecl) { continue; } let newDefaultImport; @@ -154905,12 +157919,11 @@ function coalesceImports(importGroup, ignoreCase, sourceFile) { } newImportSpecifiers.push(...getNewImportSpecifiers(namedImports)); const sortedImportSpecifiers = factory.createNodeArray( - sortSpecifiers(newImportSpecifiers, ignoreCase), - (_b = (_a2 = namedImports[0]) == null ? void 0 : _a2.importClause.namedBindings) == null ? void 0 : _b.elements.hasTrailingComma + sortSpecifiers(newImportSpecifiers, comparer), + firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings.elements.hasTrailingComma ); - const importDecl = defaultImports.length > 0 ? defaultImports[0] : namedImports[0]; - const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : namedImports.length === 0 ? factory.createNamedImports(sortedImportSpecifiers) : factory.updateNamedImports(namedImports[0].importClause.namedBindings, sortedImportSpecifiers); - if (sourceFile && newNamedImports && ((_c = namedImports[0]) == null ? void 0 : _c.importClause.namedBindings) && !rangeIsOnSingleLine(namedImports[0].importClause.namedBindings, sourceFile)) { + const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : firstNamedImport ? factory.updateNamedImports(firstNamedImport.importClause.namedBindings, sortedImportSpecifiers) : factory.createNamedImports(sortedImportSpecifiers); + if (sourceFile && newNamedImports && (firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings) && !rangeIsOnSingleLine(firstNamedImport.importClause.namedBindings, sourceFile)) { setEmitFlags(newNamedImports, 2 /* MultiLine */); } if (isTypeOnly && newDefaultImport && newNamedImports) { @@ -154924,7 +157937,7 @@ function coalesceImports(importGroup, ignoreCase, sourceFile) { ); coalescedImports.push( updateImportDeclarationAndClause( - (_d = namedImports[0]) != null ? _d : importDecl, + firstNamedImport != null ? firstNamedImport : importDecl, /*name*/ void 0, newNamedImports @@ -154967,6 +157980,10 @@ function getCategorizedImports(importGroup) { }; } function coalesceExports(exportGroup, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceExportsWorker(exportGroup, comparer); +} +function coalesceExportsWorker(exportGroup, comparer) { if (exportGroup.length === 0) { return exportGroup; } @@ -154981,7 +157998,7 @@ function coalesceExports(exportGroup, ignoreCase) { } const newExportSpecifiers = []; newExportSpecifiers.push(...flatMap(exportGroup2, (i) => i.exportClause && isNamedExports(i.exportClause) ? i.exportClause.elements : emptyArray)); - const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, ignoreCase); + const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, comparer); const exportDecl = exportGroup2[0]; coalescedExports.push( factory.updateExportDeclaration( @@ -155025,25 +158042,21 @@ function updateImportDeclarationAndClause(importDeclaration, name, namedBindings importDeclaration.assertClause ); } -function sortSpecifiers(specifiers, ignoreCase) { - return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); +function sortSpecifiers(specifiers, comparer) { + return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); } -function compareImportOrExportSpecifiers(s1, s2, ignoreCase) { - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; - return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || compareIdentifiers(s1.name, s2.name); -} -function compareIdentifiersCaseSensitive(s1, s2) { - return compareStringsCaseSensitive(s1.text, s2.text); -} -function compareIdentifiersCaseInsensitive(s1, s2) { - return compareStringsCaseInsensitiveEslintCompatible(s1.text, s2.text); +function compareImportOrExportSpecifiers(s1, s2, comparer) { + return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || comparer(s1.name.text, s2.name.text); } function compareModuleSpecifiers2(m1, m2, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(!!ignoreCase); + return compareModuleSpecifiersWorker(m1, m2, comparer); +} +function compareModuleSpecifiersWorker(m1, m2, comparer) { const name1 = m1 === void 0 ? void 0 : getExternalModuleName2(m1); const name2 = m2 === void 0 ? void 0 : getExternalModuleName2(m2); - const compareStrings = ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; return compareBooleans(name1 === void 0, name2 === void 0) || compareBooleans(isExternalModuleNameRelative(name1), isExternalModuleNameRelative(name2)) || // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion - compareStrings(name1, name2); + comparer(name1, name2); } function getModuleSpecifierExpression(declaration) { var _a2; @@ -155056,24 +158069,40 @@ function getModuleSpecifierExpression(declaration) { return declaration.declarationList.declarations[0].initializer.arguments[0]; } } -function detectSorting(sourceFile) { +function detectSorting(sourceFile, preferences) { return detectSortingWorker( - groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)) + groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)), + preferences ); } -function detectSortingWorker(importGroups) { +function detectSortingWorker(importGroups, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); let sortState = 3 /* Both */; + let seenUnsortedGroup = false; for (const importGroup of importGroups) { if (importGroup.length > 1) { - sortState &= detectSortCaseSensitivity( + const moduleSpecifierSort = detectSortCaseSensitivity( importGroup, - /*useEslintOrdering*/ - true, (i) => { var _a2, _b; return (_b = (_a2 = tryCast(i.moduleSpecifier, isStringLiteral)) == null ? void 0 : _a2.text) != null ? _b : ""; - } + }, + collateCaseSensitive, + collateCaseInsensitive ); + if (moduleSpecifierSort) { + sortState &= moduleSpecifierSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -155086,7 +158115,11 @@ function detectSortingWorker(importGroups) { } ); if (declarationWithNamedImports) { - sortState &= detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements); + const namedImportSort = detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements, preferences); + if (namedImportSort) { + sortState &= namedImportSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -155095,37 +158128,73 @@ function detectSortingWorker(importGroups) { return sortState; } } - return sortState; + return seenUnsortedGroup ? 0 /* None */ : sortState; } -function detectImportDeclarationSorting(imports) { +function detectImportDeclarationSorting(imports, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); return detectSortCaseSensitivity( imports, - /*useEslintOrdering*/ - true, - (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "" + (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "", + collateCaseSensitive, + collateCaseInsensitive ); } -var detectImportSpecifierSorting = memoizeWeak((specifiers) => { +var ImportSpecifierSortingCache = class { + has([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return false; + return this._cache.has(specifiers); + } + get([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return void 0; + return this._cache.get(specifiers); + } + set([specifiers, preferences], value) { + var _a2; + if (this._lastPreferences !== preferences) { + this._lastPreferences = preferences; + this._cache = void 0; + } + (_a2 = this._cache) != null ? _a2 : this._cache = /* @__PURE__ */ new WeakMap(); + this._cache.set(specifiers, value); + } +}; +var detectImportSpecifierSorting = memoizeCached((specifiers, preferences) => { if (!arrayIsSorted(specifiers, (s1, s2) => compareBooleans(s1.isTypeOnly, s2.isTypeOnly))) { return 0 /* None */; } - return detectSortCaseSensitivity( - specifiers, - /*useEslintOrdering*/ - true, - (specifier) => specifier.name.text + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false ); -}); -function getImportDeclarationInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, ignoreCase)); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); + return detectSortCaseSensitivity(specifiers, (specifier) => specifier.name.text, collateCaseSensitive, collateCaseInsensitive); +}, new ImportSpecifierSortingCache()); +function getImportDeclarationInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, comparer)); return index < 0 ? ~index : index; } -function getImportSpecifierInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); +function getImportSpecifierInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); return index < 0 ? ~index : index; } -function compareImportsOrRequireStatements(s1, s2, ignoreCase) { - return compareModuleSpecifiers2(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), ignoreCase) || compareImportKind(s1, s2); +function compareImportsOrRequireStatements(s1, s2, comparer) { + return compareModuleSpecifiersWorker(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), comparer) || compareImportKind(s1, s2); } function compareImportKind(s1, s2) { return compareValues(getImportKindOrder(s1), getImportKindOrder(s2)); @@ -155168,6 +158237,44 @@ function tryGetNamedBindingElements(namedImport) { var _a2; return ((_a2 = namedImport.importClause) == null ? void 0 : _a2.namedBindings) && isNamedImports(namedImport.importClause.namedBindings) ? namedImport.importClause.namedBindings.elements : void 0; } +function getOrganizeImportsOrdinalStringComparer(ignoreCase) { + return ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; +} +function getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) { + var _a2, _b, _c; + const resolvedLocale = getOrganizeImportsLocale(preferences); + const caseFirst = (_a2 = preferences.organizeImportsCaseFirst) != null ? _a2 : false; + const numeric = (_b = preferences.organizeImportsNumericCollation) != null ? _b : false; + const accents = (_c = preferences.organizeImportsAccentCollation) != null ? _c : true; + const sensitivity = ignoreCase ? accents ? "accent" : "base" : accents ? "variant" : "case"; + const collator = new Intl.Collator(resolvedLocale, { + usage: "sort", + caseFirst: caseFirst || "false", + sensitivity, + numeric + }); + return collator.compare; +} +function getOrganizeImportsLocale(preferences) { + let locale = preferences.organizeImportsLocale; + if (locale === "auto") + locale = getUILocale(); + if (locale === void 0) + locale = "en"; + const supportedLocales = Intl.Collator.supportedLocalesOf(locale); + const resolvedLocale = supportedLocales.length ? supportedLocales[0] : "en"; + return resolvedLocale; +} +function getOrganizeImportsComparer(preferences, ignoreCase) { + var _a2; + const collation = (_a2 = preferences.organizeImportsCollation) != null ? _a2 : "ordinal"; + return collation === "unicode" ? getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) : getOrganizeImportsOrdinalStringComparer(ignoreCase); +} +function getOrganizeImportsComparerWithDetection(preferences, detectIgnoreCase) { + var _a2; + const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : (_a2 = detectIgnoreCase == null ? void 0 : detectIgnoreCase()) != null ? _a2 : false; + return getOrganizeImportsComparer(preferences, ignoreCase); +} // src/services/_namespaces/ts.OutliningElementsCollector.ts var ts_OutliningElementsCollector_exports = {}; @@ -155626,7 +158733,7 @@ registerRefactor(refactorName, { Debug.assert(actionName2 === defaultToNamedAction.name || actionName2 === namedToDefaultAction.name, "Unexpected action name"); const info = getInfo19(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, info, t, context.cancellationToken)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(context.file, context.program, info, t, context.cancellationToken)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -155679,7 +158786,7 @@ function getInfo19(context, considerPartialSpans = true) { return void 0; } } -function doChange33(exportingSourceFile, program, info, changes, cancellationToken) { +function doChange32(exportingSourceFile, program, info, changes, cancellationToken) { changeExport(exportingSourceFile, info, changes, program.getTypeChecker()); changeImports(program, info, changes, cancellationToken); } @@ -155874,7 +158981,7 @@ registerRefactor(refactorName2, { Debug.assert(some(getOwnValues(actions), (action) => action.name === actionName2), "Unexpected action name"); const info = getImportConversionInfo(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, t, info)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, t, info)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -155905,7 +159012,7 @@ function getImportConversionInfo(context, considerPartialSpans = true) { function getShouldUseDefault(program, importClause) { return getAllowSyntheticDefaultImports(program.getCompilerOptions()) && isExportEqualsModule(importClause.parent.moduleSpecifier, program.getTypeChecker()); } -function doChange34(sourceFile, program, changes, info) { +function doChange33(sourceFile, program, changes, info) { const checker = program.getTypeChecker(); if (info.convertTo === 0 /* Named */) { doChangeNamespaceToNamed(sourceFile, checker, changes, info.import, getAllowSyntheticDefaultImports(program.getCompilerOptions())); @@ -156378,7 +159485,7 @@ registerRefactor(refactorName4, { getEditsForAction: function getRefactorEditsToMoveToNewFile(context, actionName2) { Debug.assert(actionName2 === refactorName4, "Wrong refactor invoked"); const statements = Debug.checkDefined(getStatementsToMove(context)); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(context.file, context.program, statements, t, context.host, context.preferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, statements, t, context.host, context.preferences)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -156403,7 +159510,7 @@ function getRangeToMove(context) { afterLast: afterEndNodeIndex === -1 ? void 0 : statements[afterEndNodeIndex] }; } -function doChange35(oldFile, program, toMove, changes, host, preferences) { +function doChange34(oldFile, program, toMove, changes, host, preferences) { const checker = program.getTypeChecker(); const usage = getUsageInfo(oldFile, toMove.all, checker); const currentDirectory = getDirectoryPath(oldFile.fileName); @@ -156484,7 +159591,8 @@ function getNewStatementsAndRemoveFromOldFile(oldFile, usage, changes, toMove, p oldFile, importsFromNewFile, /*blankLineBetween*/ - true + true, + preferences ); } deleteUnusedOldImports(oldFile, toMove.all, changes, usage.unusedImportsFromOldFile, checker); @@ -157778,12 +160886,12 @@ function getRefactorEditsToConvertParametersToDestructuredObject(context, action return void 0; const groupedReferences = getGroupedReferences(functionDeclaration, program, cancellationToken); if (groupedReferences.valid) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange36(file, program, host, t, functionDeclaration, groupedReferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(file, program, host, t, functionDeclaration, groupedReferences)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return { edits: [] }; } -function doChange36(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { +function doChange35(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { const signature = groupedReferences.signature; const newFunctionDeclarationParams = map(createNewParameters(functionDeclaration, program, host), (param) => getSynthesizedDeepClone(param)); if (signature) { @@ -158547,7 +161655,7 @@ function getRefactorEditsToConvertToOptionalChain(context, actionName2) { Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); const edits = ts_textChanges_exports.ChangeTracker.with( context, - (t) => doChange37(context.file, context.program.getTypeChecker(), t, info, actionName2) + (t) => doChange36(context.file, context.program.getTypeChecker(), t, info, actionName2) ); return { edits, renameFilename: void 0, renameLocation: void 0 }; } @@ -158703,7 +161811,7 @@ function convertOccurrences(checker, toConvert, occurrences) { } return toConvert; } -function doChange37(sourceFile, checker, changes, info, _actionName) { +function doChange36(sourceFile, checker, changes, info, _actionName) { const { finalExpression, occurrences, expression } = info; const firstOccurrence = occurrences[occurrences.length - 1]; const convertedChain = convertOccurrences(checker, finalExpression, occurrences); @@ -159655,7 +162763,7 @@ function extractConstantInScope(node, scope, { substitutions }, rangeFacts, cont 111551 /* Value */, /*excludeGlobals*/ false - ) && !isPrivateIdentifier(node.name) && !isKeyword(node.name.originalKeywordKind) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); + ) && !isPrivateIdentifier(node.name) && !identifierToKeywordKind(node.name) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); const isJS = isInJSFile(scope); let variableType = isJS || !checker.isContextSensitive(node) ? void 0 : checker.typeToTypeNode(checker.getContextualType(node), scope, 1 /* NoTruncation */); let initializer = transformConstantInitializer(skipParentheses(node), substitutions); @@ -159892,7 +163000,7 @@ function transformFunctionBody(body, exposedVariableDeclarations, writes, substi let ignoreReturns = false; const statements = factory.createNodeArray(isBlock(body) ? body.statements.slice(0) : [isStatement(body) ? body : factory.createReturnStatement(skipParentheses(body))]); if (hasWritesOrVariableDeclarations || substitutions.size) { - const rewrittenStatements = visitNodes2(statements, visitor).slice(); + const rewrittenStatements = visitNodes2(statements, visitor, isStatement).slice(); if (hasWritesOrVariableDeclarations && !hasReturn2 && isStatement(body)) { const assignments = getPropertyAssignmentsForWritesAndVariableDeclarations(exposedVariableDeclarations, writes); if (assignments.length === 1) { @@ -159920,7 +163028,7 @@ function transformFunctionBody(body, exposedVariableDeclarations, writes, substi if (!returnValueProperty) { returnValueProperty = "__return"; } - assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor))); + assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor, isExpression))); } if (assignments.length === 1) { return factory.createReturnStatement(assignments[0].name); @@ -160408,7 +163516,7 @@ registerRefactor(refactorName12, { function getRefactorEditsToInferReturnType(context) { const info = getInfo21(context); if (info && !isRefactorErrorInfo(info)) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange38(context.file, t, info.declaration, info.returnTypeNode)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange37(context.file, t, info.declaration, info.returnTypeNode)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return void 0; @@ -160433,7 +163541,7 @@ function getRefactorActionsToInferReturnType(context) { } return emptyArray; } -function doChange38(sourceFile, changes, declaration, typeNode) { +function doChange37(sourceFile, changes, declaration, typeNode) { const closeParen = findChildOfKind(declaration, 21 /* CloseParenToken */, sourceFile); const needParens = isArrowFunction(declaration) && closeParen === void 0; const endNode2 = needParens ? first(declaration.parameters) : closeParen; @@ -160525,7 +163633,7 @@ function getRenameInfoForNode(node, typeChecker, sourceFile, program, preference if (declarations.some((declaration) => isDefinedInLibraryFile(program, declaration))) { return getRenameInfoError(Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library); } - if (isIdentifier(node) && node.originalKeywordKind === 88 /* DefaultKeyword */ && symbol.parent && symbol.parent.flags & 1536 /* Module */) { + if (isIdentifier(node) && node.escapedText === "default" && symbol.parent && symbol.parent.flags & 1536 /* Module */) { return void 0; } if (isStringLiteralLike(node) && tryGetImportFromModuleSpecifier(node)) { @@ -162733,7 +165841,6 @@ function updateJSDocHost(parent2) { } const jsDocNode = parent2.parent.kind === 169 /* PropertyDeclaration */ ? parent2.parent : parent2.parent.parent; jsDocNode.jsDoc = parent2.jsDoc; - jsDocNode.jsDocCache = parent2.jsDocCache; return jsDocNode; } function tryMergeJsdocTags(oldTag, newTag) { @@ -162939,6 +166046,7 @@ function assignPositionsToNodeArray(nodes, visitor, test, start2, count) { if (!visited) { return visited; } + Debug.assert(nodes); const nodeArray = visited === nodes ? factory.createNodeArray(visited.slice(0)) : visited; setTextRangePosEnd(nodeArray, getPos2(nodes), getEnd(nodes)); return nodeArray; @@ -166111,7 +169219,7 @@ function createDeprecation(name, options = {}) { const errorAfter = typeof options.errorAfter === "string" ? new Version(options.errorAfter) : options.errorAfter; const warnAfter = typeof options.warnAfter === "string" ? new Version(options.warnAfter) : options.warnAfter; const since = typeof options.since === "string" ? new Version(options.since) : (_b = options.since) != null ? _b : warnAfter; - const error = options.error || errorAfter && version2.compareTo(errorAfter) <= 0; + const error = options.error || errorAfter && version2.compareTo(errorAfter) >= 0; const warn = !warnAfter || version2.compareTo(warnAfter) >= 0; return error ? createErrorDeprecation(name, errorAfter, since, options.message) : warn ? createWarningDeprecation(name, errorAfter, since, options.message) : noop; } @@ -166172,1276 +169280,37 @@ function buildOverload(name) { }; } -// src/deprecatedCompat/4.0/nodeFactoryTopLevelExports.ts -var factoryDeprecation = { since: "4.0", warnAfter: "4.1", message: "Use the appropriate method on 'ts.factory' or the 'factory' supplied by your transformation context instead." }; -var createNodeArray = deprecate(factory.createNodeArray, factoryDeprecation); -var createNumericLiteral = deprecate(factory.createNumericLiteral, factoryDeprecation); -var createBigIntLiteral = deprecate(factory.createBigIntLiteral, factoryDeprecation); -var createStringLiteral = deprecate(factory.createStringLiteral, factoryDeprecation); -var createStringLiteralFromNode = deprecate(factory.createStringLiteralFromNode, factoryDeprecation); -var createRegularExpressionLiteral = deprecate(factory.createRegularExpressionLiteral, factoryDeprecation); -var createLoopVariable = deprecate(factory.createLoopVariable, factoryDeprecation); -var createUniqueName = deprecate(factory.createUniqueName, factoryDeprecation); -var createPrivateIdentifier = deprecate(factory.createPrivateIdentifier, factoryDeprecation); -var createSuper = deprecate(factory.createSuper, factoryDeprecation); -var createThis = deprecate(factory.createThis, factoryDeprecation); -var createNull = deprecate(factory.createNull, factoryDeprecation); -var createTrue = deprecate(factory.createTrue, factoryDeprecation); -var createFalse = deprecate(factory.createFalse, factoryDeprecation); -var createModifier = deprecate(factory.createModifier, factoryDeprecation); -var createModifiersFromModifierFlags = deprecate(factory.createModifiersFromModifierFlags, factoryDeprecation); -var createQualifiedName = deprecate(factory.createQualifiedName, factoryDeprecation); -var updateQualifiedName = deprecate(factory.updateQualifiedName, factoryDeprecation); -var createComputedPropertyName = deprecate(factory.createComputedPropertyName, factoryDeprecation); -var updateComputedPropertyName = deprecate(factory.updateComputedPropertyName, factoryDeprecation); -var createTypeParameterDeclaration = deprecate(factory.createTypeParameterDeclaration, factoryDeprecation); -var updateTypeParameterDeclaration = deprecate(factory.updateTypeParameterDeclaration, factoryDeprecation); -var createParameter = deprecate(factory.createParameterDeclaration, factoryDeprecation); -var updateParameter = deprecate(factory.updateParameterDeclaration, factoryDeprecation); -var createDecorator = deprecate(factory.createDecorator, factoryDeprecation); -var updateDecorator = deprecate(factory.updateDecorator, factoryDeprecation); -var createProperty = deprecate(factory.createPropertyDeclaration, factoryDeprecation); -var updateProperty = deprecate(factory.updatePropertyDeclaration, factoryDeprecation); -var createMethod = deprecate(factory.createMethodDeclaration, factoryDeprecation); -var updateMethod = deprecate(factory.updateMethodDeclaration, factoryDeprecation); -var createConstructor = deprecate(factory.createConstructorDeclaration, factoryDeprecation); -var updateConstructor = deprecate(factory.updateConstructorDeclaration, factoryDeprecation); -var createGetAccessor = deprecate(factory.createGetAccessorDeclaration, factoryDeprecation); -var updateGetAccessor = deprecate(factory.updateGetAccessorDeclaration, factoryDeprecation); -var createSetAccessor = deprecate(factory.createSetAccessorDeclaration, factoryDeprecation); -var updateSetAccessor = deprecate(factory.updateSetAccessorDeclaration, factoryDeprecation); -var createCallSignature = deprecate(factory.createCallSignature, factoryDeprecation); -var updateCallSignature = deprecate(factory.updateCallSignature, factoryDeprecation); -var createConstructSignature = deprecate(factory.createConstructSignature, factoryDeprecation); -var updateConstructSignature = deprecate(factory.updateConstructSignature, factoryDeprecation); -var updateIndexSignature = deprecate(factory.updateIndexSignature, factoryDeprecation); -var createKeywordTypeNode = deprecate(factory.createKeywordTypeNode, factoryDeprecation); -var createTypePredicateNodeWithModifier = deprecate(factory.createTypePredicateNode, factoryDeprecation); -var updateTypePredicateNodeWithModifier = deprecate(factory.updateTypePredicateNode, factoryDeprecation); -var createTypeReferenceNode = deprecate(factory.createTypeReferenceNode, factoryDeprecation); -var updateTypeReferenceNode = deprecate(factory.updateTypeReferenceNode, factoryDeprecation); -var createFunctionTypeNode = deprecate(factory.createFunctionTypeNode, factoryDeprecation); -var updateFunctionTypeNode = deprecate(factory.updateFunctionTypeNode, factoryDeprecation); -var createConstructorTypeNode = deprecate((typeParameters, parameters, type) => { - return factory.createConstructorTypeNode( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); -}, factoryDeprecation); -var updateConstructorTypeNode = deprecate((node, typeParameters, parameters, type) => { - return factory.updateConstructorTypeNode(node, node.modifiers, typeParameters, parameters, type); -}, factoryDeprecation); -var createTypeQueryNode = deprecate(factory.createTypeQueryNode, factoryDeprecation); -var updateTypeQueryNode = deprecate(factory.updateTypeQueryNode, factoryDeprecation); -var createTypeLiteralNode = deprecate(factory.createTypeLiteralNode, factoryDeprecation); -var updateTypeLiteralNode = deprecate(factory.updateTypeLiteralNode, factoryDeprecation); -var createArrayTypeNode = deprecate(factory.createArrayTypeNode, factoryDeprecation); -var updateArrayTypeNode = deprecate(factory.updateArrayTypeNode, factoryDeprecation); -var createTupleTypeNode = deprecate(factory.createTupleTypeNode, factoryDeprecation); -var updateTupleTypeNode = deprecate(factory.updateTupleTypeNode, factoryDeprecation); -var createOptionalTypeNode = deprecate(factory.createOptionalTypeNode, factoryDeprecation); -var updateOptionalTypeNode = deprecate(factory.updateOptionalTypeNode, factoryDeprecation); -var createRestTypeNode = deprecate(factory.createRestTypeNode, factoryDeprecation); -var updateRestTypeNode = deprecate(factory.updateRestTypeNode, factoryDeprecation); -var createUnionTypeNode = deprecate(factory.createUnionTypeNode, factoryDeprecation); -var updateUnionTypeNode = deprecate(factory.updateUnionTypeNode, factoryDeprecation); -var createIntersectionTypeNode = deprecate(factory.createIntersectionTypeNode, factoryDeprecation); -var updateIntersectionTypeNode = deprecate(factory.updateIntersectionTypeNode, factoryDeprecation); -var createConditionalTypeNode = deprecate(factory.createConditionalTypeNode, factoryDeprecation); -var updateConditionalTypeNode = deprecate(factory.updateConditionalTypeNode, factoryDeprecation); -var createInferTypeNode = deprecate(factory.createInferTypeNode, factoryDeprecation); -var updateInferTypeNode = deprecate(factory.updateInferTypeNode, factoryDeprecation); -var createImportTypeNode = deprecate(factory.createImportTypeNode, factoryDeprecation); -var updateImportTypeNode = deprecate(factory.updateImportTypeNode, factoryDeprecation); -var createParenthesizedType = deprecate(factory.createParenthesizedType, factoryDeprecation); -var updateParenthesizedType = deprecate(factory.updateParenthesizedType, factoryDeprecation); -var createThisTypeNode = deprecate(factory.createThisTypeNode, factoryDeprecation); -var updateTypeOperatorNode = deprecate(factory.updateTypeOperatorNode, factoryDeprecation); -var createIndexedAccessTypeNode = deprecate(factory.createIndexedAccessTypeNode, factoryDeprecation); -var updateIndexedAccessTypeNode = deprecate(factory.updateIndexedAccessTypeNode, factoryDeprecation); -var createMappedTypeNode = deprecate(factory.createMappedTypeNode, factoryDeprecation); -var updateMappedTypeNode = deprecate(factory.updateMappedTypeNode, factoryDeprecation); -var createLiteralTypeNode = deprecate(factory.createLiteralTypeNode, factoryDeprecation); -var updateLiteralTypeNode = deprecate(factory.updateLiteralTypeNode, factoryDeprecation); -var createObjectBindingPattern = deprecate(factory.createObjectBindingPattern, factoryDeprecation); -var updateObjectBindingPattern = deprecate(factory.updateObjectBindingPattern, factoryDeprecation); -var createArrayBindingPattern = deprecate(factory.createArrayBindingPattern, factoryDeprecation); -var updateArrayBindingPattern = deprecate(factory.updateArrayBindingPattern, factoryDeprecation); -var createBindingElement = deprecate(factory.createBindingElement, factoryDeprecation); -var updateBindingElement = deprecate(factory.updateBindingElement, factoryDeprecation); -var createArrayLiteral = deprecate(factory.createArrayLiteralExpression, factoryDeprecation); -var updateArrayLiteral = deprecate(factory.updateArrayLiteralExpression, factoryDeprecation); -var createObjectLiteral = deprecate(factory.createObjectLiteralExpression, factoryDeprecation); -var updateObjectLiteral = deprecate(factory.updateObjectLiteralExpression, factoryDeprecation); -var createPropertyAccess = deprecate(factory.createPropertyAccessExpression, factoryDeprecation); -var updatePropertyAccess = deprecate(factory.updatePropertyAccessExpression, factoryDeprecation); -var createPropertyAccessChain = deprecate(factory.createPropertyAccessChain, factoryDeprecation); -var updatePropertyAccessChain = deprecate(factory.updatePropertyAccessChain, factoryDeprecation); -var createElementAccess = deprecate(factory.createElementAccessExpression, factoryDeprecation); -var updateElementAccess = deprecate(factory.updateElementAccessExpression, factoryDeprecation); -var createElementAccessChain = deprecate(factory.createElementAccessChain, factoryDeprecation); -var updateElementAccessChain = deprecate(factory.updateElementAccessChain, factoryDeprecation); -var createCall = deprecate(factory.createCallExpression, factoryDeprecation); -var updateCall = deprecate(factory.updateCallExpression, factoryDeprecation); -var createCallChain = deprecate(factory.createCallChain, factoryDeprecation); -var updateCallChain = deprecate(factory.updateCallChain, factoryDeprecation); -var createNew = deprecate(factory.createNewExpression, factoryDeprecation); -var updateNew = deprecate(factory.updateNewExpression, factoryDeprecation); -var createTypeAssertion = deprecate(factory.createTypeAssertion, factoryDeprecation); -var updateTypeAssertion = deprecate(factory.updateTypeAssertion, factoryDeprecation); -var createParen = deprecate(factory.createParenthesizedExpression, factoryDeprecation); -var updateParen = deprecate(factory.updateParenthesizedExpression, factoryDeprecation); -var createFunctionExpression = deprecate(factory.createFunctionExpression, factoryDeprecation); -var updateFunctionExpression = deprecate(factory.updateFunctionExpression, factoryDeprecation); -var createDelete = deprecate(factory.createDeleteExpression, factoryDeprecation); -var updateDelete = deprecate(factory.updateDeleteExpression, factoryDeprecation); -var createTypeOf = deprecate(factory.createTypeOfExpression, factoryDeprecation); -var updateTypeOf = deprecate(factory.updateTypeOfExpression, factoryDeprecation); -var createVoid = deprecate(factory.createVoidExpression, factoryDeprecation); -var updateVoid = deprecate(factory.updateVoidExpression, factoryDeprecation); -var createAwait = deprecate(factory.createAwaitExpression, factoryDeprecation); -var updateAwait = deprecate(factory.updateAwaitExpression, factoryDeprecation); -var createPrefix = deprecate(factory.createPrefixUnaryExpression, factoryDeprecation); -var updatePrefix = deprecate(factory.updatePrefixUnaryExpression, factoryDeprecation); -var createPostfix = deprecate(factory.createPostfixUnaryExpression, factoryDeprecation); -var updatePostfix = deprecate(factory.updatePostfixUnaryExpression, factoryDeprecation); -var createBinary = deprecate(factory.createBinaryExpression, factoryDeprecation); -var updateConditional = deprecate(factory.updateConditionalExpression, factoryDeprecation); -var createTemplateExpression = deprecate(factory.createTemplateExpression, factoryDeprecation); -var updateTemplateExpression = deprecate(factory.updateTemplateExpression, factoryDeprecation); -var createTemplateHead = deprecate(factory.createTemplateHead, factoryDeprecation); -var createTemplateMiddle = deprecate(factory.createTemplateMiddle, factoryDeprecation); -var createTemplateTail = deprecate(factory.createTemplateTail, factoryDeprecation); -var createNoSubstitutionTemplateLiteral = deprecate(factory.createNoSubstitutionTemplateLiteral, factoryDeprecation); -var updateYield = deprecate(factory.updateYieldExpression, factoryDeprecation); -var createSpread = deprecate(factory.createSpreadElement, factoryDeprecation); -var updateSpread = deprecate(factory.updateSpreadElement, factoryDeprecation); -var createOmittedExpression = deprecate(factory.createOmittedExpression, factoryDeprecation); -var createAsExpression = deprecate(factory.createAsExpression, factoryDeprecation); -var updateAsExpression = deprecate(factory.updateAsExpression, factoryDeprecation); -var createNonNullExpression = deprecate(factory.createNonNullExpression, factoryDeprecation); -var updateNonNullExpression = deprecate(factory.updateNonNullExpression, factoryDeprecation); -var createNonNullChain = deprecate(factory.createNonNullChain, factoryDeprecation); -var updateNonNullChain = deprecate(factory.updateNonNullChain, factoryDeprecation); -var createMetaProperty = deprecate(factory.createMetaProperty, factoryDeprecation); -var updateMetaProperty = deprecate(factory.updateMetaProperty, factoryDeprecation); -var createTemplateSpan = deprecate(factory.createTemplateSpan, factoryDeprecation); -var updateTemplateSpan = deprecate(factory.updateTemplateSpan, factoryDeprecation); -var createSemicolonClassElement = deprecate(factory.createSemicolonClassElement, factoryDeprecation); -var createBlock = deprecate(factory.createBlock, factoryDeprecation); -var updateBlock = deprecate(factory.updateBlock, factoryDeprecation); -var createVariableStatement = deprecate(factory.createVariableStatement, factoryDeprecation); -var updateVariableStatement = deprecate(factory.updateVariableStatement, factoryDeprecation); -var createEmptyStatement = deprecate(factory.createEmptyStatement, factoryDeprecation); -var createExpressionStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); -var updateExpressionStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); -var createStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); -var updateStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); -var createIf = deprecate(factory.createIfStatement, factoryDeprecation); -var updateIf = deprecate(factory.updateIfStatement, factoryDeprecation); -var createDo = deprecate(factory.createDoStatement, factoryDeprecation); -var updateDo = deprecate(factory.updateDoStatement, factoryDeprecation); -var createWhile = deprecate(factory.createWhileStatement, factoryDeprecation); -var updateWhile = deprecate(factory.updateWhileStatement, factoryDeprecation); -var createFor = deprecate(factory.createForStatement, factoryDeprecation); -var updateFor = deprecate(factory.updateForStatement, factoryDeprecation); -var createForIn = deprecate(factory.createForInStatement, factoryDeprecation); -var updateForIn = deprecate(factory.updateForInStatement, factoryDeprecation); -var createForOf = deprecate(factory.createForOfStatement, factoryDeprecation); -var updateForOf = deprecate(factory.updateForOfStatement, factoryDeprecation); -var createContinue = deprecate(factory.createContinueStatement, factoryDeprecation); -var updateContinue = deprecate(factory.updateContinueStatement, factoryDeprecation); -var createBreak = deprecate(factory.createBreakStatement, factoryDeprecation); -var updateBreak = deprecate(factory.updateBreakStatement, factoryDeprecation); -var createReturn = deprecate(factory.createReturnStatement, factoryDeprecation); -var updateReturn = deprecate(factory.updateReturnStatement, factoryDeprecation); -var createWith = deprecate(factory.createWithStatement, factoryDeprecation); -var updateWith = deprecate(factory.updateWithStatement, factoryDeprecation); -var createSwitch = deprecate(factory.createSwitchStatement, factoryDeprecation); -var updateSwitch = deprecate(factory.updateSwitchStatement, factoryDeprecation); -var createLabel = deprecate(factory.createLabeledStatement, factoryDeprecation); -var updateLabel = deprecate(factory.updateLabeledStatement, factoryDeprecation); -var createThrow = deprecate(factory.createThrowStatement, factoryDeprecation); -var updateThrow = deprecate(factory.updateThrowStatement, factoryDeprecation); -var createTry = deprecate(factory.createTryStatement, factoryDeprecation); -var updateTry = deprecate(factory.updateTryStatement, factoryDeprecation); -var createDebuggerStatement = deprecate(factory.createDebuggerStatement, factoryDeprecation); -var createVariableDeclarationList = deprecate(factory.createVariableDeclarationList, factoryDeprecation); -var updateVariableDeclarationList = deprecate(factory.updateVariableDeclarationList, factoryDeprecation); -var createFunctionDeclaration = deprecate(factory.createFunctionDeclaration, factoryDeprecation); -var updateFunctionDeclaration = deprecate(factory.updateFunctionDeclaration, factoryDeprecation); -var createClassDeclaration = deprecate(factory.createClassDeclaration, factoryDeprecation); -var updateClassDeclaration = deprecate(factory.updateClassDeclaration, factoryDeprecation); -var createInterfaceDeclaration = deprecate(factory.createInterfaceDeclaration, factoryDeprecation); -var updateInterfaceDeclaration = deprecate(factory.updateInterfaceDeclaration, factoryDeprecation); -var createTypeAliasDeclaration = deprecate(factory.createTypeAliasDeclaration, factoryDeprecation); -var updateTypeAliasDeclaration = deprecate(factory.updateTypeAliasDeclaration, factoryDeprecation); -var createEnumDeclaration = deprecate(factory.createEnumDeclaration, factoryDeprecation); -var updateEnumDeclaration = deprecate(factory.updateEnumDeclaration, factoryDeprecation); -var createModuleDeclaration = deprecate(factory.createModuleDeclaration, factoryDeprecation); -var updateModuleDeclaration = deprecate(factory.updateModuleDeclaration, factoryDeprecation); -var createModuleBlock = deprecate(factory.createModuleBlock, factoryDeprecation); -var updateModuleBlock = deprecate(factory.updateModuleBlock, factoryDeprecation); -var createCaseBlock = deprecate(factory.createCaseBlock, factoryDeprecation); -var updateCaseBlock = deprecate(factory.updateCaseBlock, factoryDeprecation); -var createNamespaceExportDeclaration = deprecate(factory.createNamespaceExportDeclaration, factoryDeprecation); -var updateNamespaceExportDeclaration = deprecate(factory.updateNamespaceExportDeclaration, factoryDeprecation); -var createImportEqualsDeclaration = deprecate(factory.createImportEqualsDeclaration, factoryDeprecation); -var updateImportEqualsDeclaration = deprecate(factory.updateImportEqualsDeclaration, factoryDeprecation); -var createImportDeclaration = deprecate(factory.createImportDeclaration, factoryDeprecation); -var updateImportDeclaration = deprecate(factory.updateImportDeclaration, factoryDeprecation); -var createNamespaceImport = deprecate(factory.createNamespaceImport, factoryDeprecation); -var updateNamespaceImport = deprecate(factory.updateNamespaceImport, factoryDeprecation); -var createNamedImports = deprecate(factory.createNamedImports, factoryDeprecation); -var updateNamedImports = deprecate(factory.updateNamedImports, factoryDeprecation); -var createImportSpecifier = deprecate(factory.createImportSpecifier, factoryDeprecation); -var updateImportSpecifier = deprecate(factory.updateImportSpecifier, factoryDeprecation); -var createExportAssignment2 = deprecate(factory.createExportAssignment, factoryDeprecation); -var updateExportAssignment = deprecate(factory.updateExportAssignment, factoryDeprecation); -var createNamedExports = deprecate(factory.createNamedExports, factoryDeprecation); -var updateNamedExports = deprecate(factory.updateNamedExports, factoryDeprecation); -var createExportSpecifier = deprecate(factory.createExportSpecifier, factoryDeprecation); -var updateExportSpecifier = deprecate(factory.updateExportSpecifier, factoryDeprecation); -var createExternalModuleReference = deprecate(factory.createExternalModuleReference, factoryDeprecation); -var updateExternalModuleReference = deprecate(factory.updateExternalModuleReference, factoryDeprecation); -var createJSDocTypeExpression = deprecate(factory.createJSDocTypeExpression, factoryDeprecation); -var createJSDocTypeTag = deprecate(factory.createJSDocTypeTag, factoryDeprecation); -var createJSDocReturnTag = deprecate(factory.createJSDocReturnTag, factoryDeprecation); -var createJSDocThisTag = deprecate(factory.createJSDocThisTag, factoryDeprecation); -var createJSDocComment = deprecate(factory.createJSDocComment, factoryDeprecation); -var createJSDocParameterTag = deprecate(factory.createJSDocParameterTag, factoryDeprecation); -var createJSDocClassTag = deprecate(factory.createJSDocClassTag, factoryDeprecation); -var createJSDocAugmentsTag = deprecate(factory.createJSDocAugmentsTag, factoryDeprecation); -var createJSDocEnumTag = deprecate(factory.createJSDocEnumTag, factoryDeprecation); -var createJSDocTemplateTag = deprecate(factory.createJSDocTemplateTag, factoryDeprecation); -var createJSDocTypedefTag = deprecate(factory.createJSDocTypedefTag, factoryDeprecation); -var createJSDocCallbackTag = deprecate(factory.createJSDocCallbackTag, factoryDeprecation); -var createJSDocSignature = deprecate(factory.createJSDocSignature, factoryDeprecation); -var createJSDocPropertyTag = deprecate(factory.createJSDocPropertyTag, factoryDeprecation); -var createJSDocTypeLiteral = deprecate(factory.createJSDocTypeLiteral, factoryDeprecation); -var createJSDocImplementsTag = deprecate(factory.createJSDocImplementsTag, factoryDeprecation); -var createJSDocAuthorTag = deprecate(factory.createJSDocAuthorTag, factoryDeprecation); -var createJSDocPublicTag = deprecate(factory.createJSDocPublicTag, factoryDeprecation); -var createJSDocPrivateTag = deprecate(factory.createJSDocPrivateTag, factoryDeprecation); -var createJSDocProtectedTag = deprecate(factory.createJSDocProtectedTag, factoryDeprecation); -var createJSDocReadonlyTag = deprecate(factory.createJSDocReadonlyTag, factoryDeprecation); -var createJSDocTag = deprecate(factory.createJSDocUnknownTag, factoryDeprecation); -var createJsxElement = deprecate(factory.createJsxElement, factoryDeprecation); -var updateJsxElement = deprecate(factory.updateJsxElement, factoryDeprecation); -var createJsxSelfClosingElement = deprecate(factory.createJsxSelfClosingElement, factoryDeprecation); -var updateJsxSelfClosingElement = deprecate(factory.updateJsxSelfClosingElement, factoryDeprecation); -var createJsxOpeningElement = deprecate(factory.createJsxOpeningElement, factoryDeprecation); -var updateJsxOpeningElement = deprecate(factory.updateJsxOpeningElement, factoryDeprecation); -var createJsxClosingElement = deprecate(factory.createJsxClosingElement, factoryDeprecation); -var updateJsxClosingElement = deprecate(factory.updateJsxClosingElement, factoryDeprecation); -var createJsxFragment = deprecate(factory.createJsxFragment, factoryDeprecation); -var createJsxText = deprecate(factory.createJsxText, factoryDeprecation); -var updateJsxText = deprecate(factory.updateJsxText, factoryDeprecation); -var createJsxOpeningFragment = deprecate(factory.createJsxOpeningFragment, factoryDeprecation); -var createJsxJsxClosingFragment = deprecate(factory.createJsxJsxClosingFragment, factoryDeprecation); -var updateJsxFragment = deprecate(factory.updateJsxFragment, factoryDeprecation); -var createJsxAttribute = deprecate(factory.createJsxAttribute, factoryDeprecation); -var updateJsxAttribute = deprecate(factory.updateJsxAttribute, factoryDeprecation); -var createJsxAttributes = deprecate(factory.createJsxAttributes, factoryDeprecation); -var updateJsxAttributes = deprecate(factory.updateJsxAttributes, factoryDeprecation); -var createJsxSpreadAttribute = deprecate(factory.createJsxSpreadAttribute, factoryDeprecation); -var updateJsxSpreadAttribute = deprecate(factory.updateJsxSpreadAttribute, factoryDeprecation); -var createJsxExpression = deprecate(factory.createJsxExpression, factoryDeprecation); -var updateJsxExpression = deprecate(factory.updateJsxExpression, factoryDeprecation); -var createCaseClause = deprecate(factory.createCaseClause, factoryDeprecation); -var updateCaseClause = deprecate(factory.updateCaseClause, factoryDeprecation); -var createDefaultClause = deprecate(factory.createDefaultClause, factoryDeprecation); -var updateDefaultClause = deprecate(factory.updateDefaultClause, factoryDeprecation); -var createHeritageClause = deprecate(factory.createHeritageClause, factoryDeprecation); -var updateHeritageClause = deprecate(factory.updateHeritageClause, factoryDeprecation); -var createCatchClause = deprecate(factory.createCatchClause, factoryDeprecation); -var updateCatchClause = deprecate(factory.updateCatchClause, factoryDeprecation); -var createPropertyAssignment = deprecate(factory.createPropertyAssignment, factoryDeprecation); -var updatePropertyAssignment = deprecate(factory.updatePropertyAssignment, factoryDeprecation); -var createShorthandPropertyAssignment = deprecate(factory.createShorthandPropertyAssignment, factoryDeprecation); -var updateShorthandPropertyAssignment = deprecate(factory.updateShorthandPropertyAssignment, factoryDeprecation); -var createSpreadAssignment = deprecate(factory.createSpreadAssignment, factoryDeprecation); -var updateSpreadAssignment = deprecate(factory.updateSpreadAssignment, factoryDeprecation); -var createEnumMember = deprecate(factory.createEnumMember, factoryDeprecation); -var updateEnumMember = deprecate(factory.updateEnumMember, factoryDeprecation); -var updateSourceFileNode = deprecate(factory.updateSourceFile, factoryDeprecation); -var createNotEmittedStatement = deprecate(factory.createNotEmittedStatement, factoryDeprecation); -var createPartiallyEmittedExpression = deprecate(factory.createPartiallyEmittedExpression, factoryDeprecation); -var updatePartiallyEmittedExpression = deprecate(factory.updatePartiallyEmittedExpression, factoryDeprecation); -var createCommaList = deprecate(factory.createCommaListExpression, factoryDeprecation); -var updateCommaList = deprecate(factory.updateCommaListExpression, factoryDeprecation); -var createBundle = deprecate(factory.createBundle, factoryDeprecation); -var updateBundle = deprecate(factory.updateBundle, factoryDeprecation); -var createImmediatelyInvokedFunctionExpression = deprecate(factory.createImmediatelyInvokedFunctionExpression, factoryDeprecation); -var createImmediatelyInvokedArrowFunction = deprecate(factory.createImmediatelyInvokedArrowFunction, factoryDeprecation); -var createVoidZero = deprecate(factory.createVoidZero, factoryDeprecation); -var createExportDefault = deprecate(factory.createExportDefault, factoryDeprecation); -var createExternalModuleExport = deprecate(factory.createExternalModuleExport, factoryDeprecation); -var createNamespaceExport = deprecate(factory.createNamespaceExport, factoryDeprecation); -var updateNamespaceExport = deprecate(factory.updateNamespaceExport, factoryDeprecation); -var createToken = deprecate(function createToken2(kind) { - return factory.createToken(kind); -}, factoryDeprecation); -var createIdentifier = deprecate(function createIdentifier2(text) { - return factory.createIdentifier( - text, - /*typeArguments*/ - void 0, - /*originalKeywordKind*/ - void 0 - ); -}, factoryDeprecation); -var createTempVariable = deprecate(function createTempVariable2(recordTempVariable) { - return factory.createTempVariable( - recordTempVariable, - /*reserveInNestedScopes*/ - void 0 - ); -}, factoryDeprecation); -var getGeneratedNameForNode = deprecate(function getGeneratedNameForNode2(node) { - return factory.getGeneratedNameForNode( - node, - /*flags*/ - void 0 - ); -}, factoryDeprecation); -var createOptimisticUniqueName = deprecate(function createOptimisticUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */); -}, factoryDeprecation); -var createFileLevelUniqueName = deprecate(function createFileLevelUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */ | 32 /* FileLevel */); -}, factoryDeprecation); -var createIndexSignature = deprecate(function createIndexSignature2(decorators, modifiers, parameters, type) { - return factory.createIndexSignature(decorators, modifiers, parameters, type); -}, factoryDeprecation); -var createTypePredicateNode = deprecate(function createTypePredicateNode2(parameterName, type) { - return factory.createTypePredicateNode( - /*assertsModifier*/ - void 0, - parameterName, - type - ); -}, factoryDeprecation); -var updateTypePredicateNode = deprecate(function updateTypePredicateNode2(node, parameterName, type) { - return factory.updateTypePredicateNode( - node, - /*assertsModifier*/ - void 0, - parameterName, - type - ); -}, factoryDeprecation); -var createLiteral = deprecate(function createLiteral2(value) { - if (typeof value === "number") { - return factory.createNumericLiteral(value); +// src/deprecatedCompat/5.0/identifierProperties.ts +addObjectAllocatorPatcher((objectAllocator2) => { + const Identifier73 = objectAllocator2.getIdentifierConstructor(); + if (!hasProperty(Identifier73.prototype, "originalKeywordKind")) { + Object.defineProperty(Identifier73.prototype, "originalKeywordKind", { + get: deprecate(function() { + return identifierToKeywordKind(this); + }, { + name: "originalKeywordKind", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use 'identifierToKeywordKind(identifier)' instead." + }) + }); } - if (typeof value === "object" && "base10Value" in value) { - return factory.createBigIntLiteral(value); + if (!hasProperty(Identifier73.prototype, "isInJSDocNamespace")) { + Object.defineProperty(Identifier73.prototype, "isInJSDocNamespace", { + get: deprecate(function() { + return this.flags & 2048 /* IdentifierIsInJSDocNamespace */ ? true : void 0; + }, { + name: "isInJSDocNamespace", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use '.parent' or the surrounding context to determine this instead." + }) + }); } - if (typeof value === "boolean") { - return value ? factory.createTrue() : factory.createFalse(); - } - if (typeof value === "string") { - return factory.createStringLiteral( - value, - /*isSingleQuote*/ - void 0 - ); - } - return factory.createStringLiteralFromNode(value); -}, { since: "4.0", warnAfter: "4.1", message: "Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead." }); -var createMethodSignature = deprecate(function createMethodSignature2(typeParameters, parameters, type, name, questionToken) { - return factory.createMethodSignature( - /*modifiers*/ - void 0, - name, - questionToken, - typeParameters, - parameters, - type - ); -}, factoryDeprecation); -var updateMethodSignature = deprecate(function updateMethodSignature2(node, typeParameters, parameters, type, name, questionToken) { - return factory.updateMethodSignature(node, node.modifiers, name, questionToken, typeParameters, parameters, type); -}, factoryDeprecation); -var createTypeOperatorNode = deprecate(function createTypeOperatorNode2(operatorOrType, type) { - let operator; - if (type) { - operator = operatorOrType; - } else { - type = operatorOrType; - operator = 141 /* KeyOfKeyword */; - } - return factory.createTypeOperatorNode(operator, type); -}, factoryDeprecation); -var createTaggedTemplate = deprecate(function createTaggedTemplate2(tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.createTaggedTemplateExpression(tag, typeArguments, template); -}, factoryDeprecation); -var updateTaggedTemplate = deprecate(function updateTaggedTemplate2(node, tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.updateTaggedTemplateExpression(node, tag, typeArguments, template); -}, factoryDeprecation); -var updateBinary = deprecate(function updateBinary2(node, left, right, operator = node.operatorToken) { - if (typeof operator === "number") { - operator = operator === node.operatorToken.kind ? node.operatorToken : factory.createToken(operator); - } - return factory.updateBinaryExpression(node, left, operator, right); -}, factoryDeprecation); -var createConditional = deprecate(function createConditional2(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) { - return arguments.length === 5 ? factory.createConditionalExpression(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) : arguments.length === 3 ? factory.createConditionalExpression(condition, factory.createToken(57 /* QuestionToken */), questionTokenOrWhenTrue, factory.createToken(58 /* ColonToken */), whenTrueOrWhenFalse) : Debug.fail("Argument count mismatch"); -}, factoryDeprecation); -var createYield = deprecate(function createYield2(asteriskTokenOrExpression, expression) { - let asteriskToken; - if (expression) { - asteriskToken = asteriskTokenOrExpression; - } else { - expression = asteriskTokenOrExpression; - } - return factory.createYieldExpression(asteriskToken, expression); -}, factoryDeprecation); -var createClassExpression = deprecate(function createClassExpression2(modifiers, name, typeParameters, heritageClauses, members) { - return factory.createClassExpression( - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); -}, factoryDeprecation); -var updateClassExpression = deprecate(function updateClassExpression2(node, modifiers, name, typeParameters, heritageClauses, members) { - return factory.updateClassExpression( - node, - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); -}, factoryDeprecation); -var createPropertySignature = deprecate(function createPropertySignature2(modifiers, name, questionToken, type, initializer) { - const node = factory.createPropertySignature(modifiers, name, questionToken, type); - node.initializer = initializer; - return node; -}, factoryDeprecation); -var updatePropertySignature = deprecate(function updatePropertySignature2(node, modifiers, name, questionToken, type, initializer) { - let updated = factory.updatePropertySignature(node, modifiers, name, questionToken, type); - if (node.initializer !== initializer) { - if (updated === node) { - updated = factory.cloneNode(node); - } - updated.initializer = initializer; - } - return updated; -}, factoryDeprecation); -var createExpressionWithTypeArguments = deprecate(function createExpressionWithTypeArguments2(typeArguments, expression) { - return factory.createExpressionWithTypeArguments(expression, typeArguments); -}, factoryDeprecation); -var updateExpressionWithTypeArguments = deprecate(function updateExpressionWithTypeArguments2(node, typeArguments, expression) { - return factory.updateExpressionWithTypeArguments(node, expression, typeArguments); -}, factoryDeprecation); -var createArrowFunction = deprecate(function createArrowFunction2(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 6 ? factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 5 ? factory.createArrowFunction( - modifiers, - typeParameters, - parameters, - type, - /*equalsGreaterThanToken*/ - void 0, - equalsGreaterThanTokenOrBody - ) : Debug.fail("Argument count mismatch"); -}, factoryDeprecation); -var updateArrowFunction = deprecate(function updateArrowFunction2(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 7 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 6 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, node.equalsGreaterThanToken, equalsGreaterThanTokenOrBody) : Debug.fail("Argument count mismatch"); -}, factoryDeprecation); -var createVariableDeclaration = deprecate(function createVariableDeclaration2(name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 4 ? factory.createVariableDeclaration(name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length >= 1 && arguments.length <= 3 ? factory.createVariableDeclaration( - name, - /*exclamationToken*/ - void 0, - exclamationTokenOrType, - typeOrInitializer - ) : Debug.fail("Argument count mismatch"); -}, factoryDeprecation); -var updateVariableDeclaration = deprecate(function updateVariableDeclaration2(node, name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 5 ? factory.updateVariableDeclaration(node, name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length === 4 ? factory.updateVariableDeclaration(node, name, node.exclamationToken, exclamationTokenOrType, typeOrInitializer) : Debug.fail("Argument count mismatch"); -}, factoryDeprecation); -var createImportClause = deprecate(function createImportClause2(name, namedBindings, isTypeOnly = false) { - return factory.createImportClause(isTypeOnly, name, namedBindings); -}, factoryDeprecation); -var updateImportClause = deprecate(function updateImportClause2(node, name, namedBindings, isTypeOnly) { - return factory.updateImportClause(node, isTypeOnly, name, namedBindings); -}, factoryDeprecation); -var createExportDeclaration = deprecate(function createExportDeclaration2(decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly = false) { - return factory.createExportDeclaration(decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier); -}, factoryDeprecation); -var updateExportDeclaration = deprecate(function updateExportDeclaration2(node, decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly) { - return factory.updateExportDeclaration(node, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, node.assertClause); -}, factoryDeprecation); -var createJSDocParamTag = deprecate(function createJSDocParamTag2(name, isBracketed, typeExpression, comment) { - return factory.createJSDocParameterTag( - /*tagName*/ - void 0, - name, - isBracketed, - typeExpression, - /*isNameFirst*/ - false, - comment ? factory.createNodeArray([factory.createJSDocText(comment)]) : void 0 - ); -}, factoryDeprecation); -var createComma = deprecate(function createComma2(left, right) { - return factory.createComma(left, right); -}, factoryDeprecation); -var createLessThan = deprecate(function createLessThan2(left, right) { - return factory.createLessThan(left, right); -}, factoryDeprecation); -var createAssignment = deprecate(function createAssignment2(left, right) { - return factory.createAssignment(left, right); -}, factoryDeprecation); -var createStrictEquality = deprecate(function createStrictEquality2(left, right) { - return factory.createStrictEquality(left, right); -}, factoryDeprecation); -var createStrictInequality = deprecate(function createStrictInequality2(left, right) { - return factory.createStrictInequality(left, right); -}, factoryDeprecation); -var createAdd = deprecate(function createAdd2(left, right) { - return factory.createAdd(left, right); -}, factoryDeprecation); -var createSubtract = deprecate(function createSubtract2(left, right) { - return factory.createSubtract(left, right); -}, factoryDeprecation); -var createLogicalAnd = deprecate(function createLogicalAnd2(left, right) { - return factory.createLogicalAnd(left, right); -}, factoryDeprecation); -var createLogicalOr = deprecate(function createLogicalOr2(left, right) { - return factory.createLogicalOr(left, right); -}, factoryDeprecation); -var createPostfixIncrement = deprecate(function createPostfixIncrement2(operand) { - return factory.createPostfixIncrement(operand); -}, factoryDeprecation); -var createLogicalNot = deprecate(function createLogicalNot2(operand) { - return factory.createLogicalNot(operand); -}, factoryDeprecation); -var createNode2 = deprecate(function createNode3(kind, pos = 0, end = 0) { - return setTextRangePosEnd( - kind === 308 /* SourceFile */ ? parseBaseNodeFactory.createBaseSourceFileNode(kind) : kind === 79 /* Identifier */ ? parseBaseNodeFactory.createBaseIdentifierNode(kind) : kind === 80 /* PrivateIdentifier */ ? parseBaseNodeFactory.createBasePrivateIdentifierNode(kind) : !isNodeKind(kind) ? parseBaseNodeFactory.createBaseTokenNode(kind) : parseBaseNodeFactory.createBaseNode(kind), - pos, - end - ); -}, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory` method instead." }); -var getMutableClone = deprecate(function getMutableClone2(node) { - const clone2 = factory.cloneNode(node); - setTextRange(clone2, node); - setParent(clone2, node.parent); - return clone2; -}, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`." }); - -// src/deprecatedCompat/4.0/renamedNodeTests.ts -var isTypeAssertion = deprecate(function isTypeAssertion2(node) { - return node.kind === 213 /* TypeAssertionExpression */; -}, { - since: "4.0", - warnAfter: "4.1", - message: "Use `isTypeAssertionExpression` instead." }); -// src/deprecatedCompat/4.2/renamedNodeTests.ts -var isIdentifierOrPrivateIdentifier = deprecate(function isIdentifierOrPrivateIdentifier2(node) { - return isMemberName(node); -}, { - since: "4.2", - warnAfter: "4.3", - message: "Use `isMemberName` instead." -}); - -// src/deprecatedCompat/4.2/abstractConstructorTypes.ts -function patchNodeFactory(factory2) { - const { - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2 - } = factory2; - factory2.createConstructorTypeNode = buildOverload("createConstructorTypeNode").overload({ - 0(modifiers, typeParameters, parameters, type) { - return createConstructorTypeNode2(modifiers, typeParameters, parameters, type); - }, - 1(typeParameters, parameters, type) { - return createConstructorTypeNode2( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); - } - }).bind({ - 0: (args) => args.length === 4, - 1: (args) => args.length === 3 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateConstructorTypeNode = buildOverload("updateConstructorTypeNode").overload({ - 0(node, modifiers, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, modifiers, typeParameters, parameters, type); - }, - 1(node, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, node.modifiers, typeParameters, parameters, type); - } - }).bind({ - 0: (args) => args.length === 5, - 1: (args) => args.length === 4 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); -} -addNodeFactoryPatcher(patchNodeFactory); -patchNodeFactory(factory); - -// src/deprecatedCompat/4.6/importTypeAssertions.ts -function patchNodeFactory2(factory2) { - const { - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2 - } = factory2; - factory2.createImportTypeNode = buildOverload("createImportTypeNode").overload({ - 0(argument, assertions, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(argument, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2( - argument, - /*assertions*/ - void 0, - qualifier, - typeArguments, - isTypeOf - ); - } - }).bind({ - 0: ([, assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); - factory2.updateImportTypeNode = buildOverload("updateImportTypeNode").overload({ - 0(node, argument, assertions, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(node, argument, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, node.assertions, qualifier, typeArguments, isTypeOf); - } - }).bind({ - 0: ([, , assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, , qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); -} -addNodeFactoryPatcher(patchNodeFactory2); -patchNodeFactory2(factory); - -// src/deprecatedCompat/4.7/typeParameterModifiers.ts -function patchNodeFactory3(factory2) { - const { - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2 - } = factory2; - factory2.createTypeParameterDeclaration = buildOverload("createTypeParameterDeclaration").overload({ - 0(modifiers, name, constraint, defaultType) { - return createTypeParameterDeclaration2(modifiers, name, constraint, defaultType); - }, - 1(name, constraint, defaultType) { - return createTypeParameterDeclaration2( - /*modifiers*/ - void 0, - name, - constraint, - defaultType - ); - } - }).bind({ - 0: ([modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateTypeParameterDeclaration = buildOverload("updateTypeParameterDeclaration").overload({ - 0(node, modifiers, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType); - }, - 1(node, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, node.modifiers, name, constraint, defaultType); - } - }).bind({ - 0: ([, modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([, name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); -} -addNodeFactoryPatcher(patchNodeFactory3); -patchNodeFactory3(factory); - -// src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts -var MUST_MERGE = { since: "4.8", warnAfter: "4.9.0-0", message: "Decorators have been combined with modifiers. Callers should switch to an overload that does not accept a 'decorators' parameter." }; -var DISALLOW_DECORATORS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators are no longer supported for this function. Callers should switch to an overload that does not accept a 'decorators' parameter.` }; -var DISALLOW_DECORATORS_AND_MODIFIERS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators and modifiers are no longer supported for this function. Callers should switch to an overload that does not accept the 'decorators' and 'modifiers' parameters.` }; -function patchNodeFactory4(factory2) { - const { - createParameterDeclaration, - updateParameterDeclaration, - createPropertyDeclaration, - updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodDeclaration, - updateMethodDeclaration, - createConstructorDeclaration, - updateConstructorDeclaration, - createGetAccessorDeclaration, - updateGetAccessorDeclaration, - createSetAccessorDeclaration, - updateSetAccessorDeclaration, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, - createClassStaticBlockDeclaration, - updateClassStaticBlockDeclaration, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3 - } = factory2; - factory2.createParameterDeclaration = buildOverload("createParameterDeclaration").overload({ - 0(modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateParameterDeclaration = buildOverload("updateParameterDeclaration").overload({ - 0(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(node, decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, , dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createPropertyDeclaration = buildOverload("createPropertyDeclaration").overload({ - 0(modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updatePropertyDeclaration = buildOverload("updatePropertyDeclaration").overload({ - 0(node, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(node, decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, , name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createMethodDeclaration = buildOverload("createMethodDeclaration").overload({ - 0(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateMethodDeclaration = buildOverload("updateMethodDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(node, decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createConstructorDeclaration = buildOverload("createConstructorDeclaration").overload({ - 0(modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - }, - 1(_decorators, modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - } - }).bind({ - 0: ([modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateConstructorDeclaration = buildOverload("updateConstructorDeclaration").overload({ - 0(node, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - }, - 1(node, _decorators, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - } - }).bind({ - 0: ([, modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createGetAccessorDeclaration = buildOverload("createGetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(modifiers, name, parameters, type, body); - }, - 1(decorators, modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateGetAccessorDeclaration = buildOverload("updateGetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, modifiers, name, parameters, type, body); - }, - 1(node, decorators, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, , name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createSetAccessorDeclaration = buildOverload("createSetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, body) { - return createSetAccessorDeclaration(modifiers, name, parameters, body); - }, - 1(decorators, modifiers, name, parameters, body) { - return createSetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateSetAccessorDeclaration = buildOverload("updateSetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, modifiers, name, parameters, body); - }, - 1(node, decorators, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, , name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, , modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createIndexSignature = buildOverload("createIndexSignature").overload({ - 0(modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - }, - 1(_decorators, modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - } - }).bind({ - 0: ([modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateIndexSignature = buildOverload("updateIndexSignature").overload({ - 0(node, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - }, - 1(node, _decorators, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - } - }).bind({ - 0: ([, modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassStaticBlockDeclaration = buildOverload("createClassStaticBlockDeclaration").overload({ - 0(body) { - return createClassStaticBlockDeclaration(body); - }, - 1(_decorators, _modifiers, body) { - return createClassStaticBlockDeclaration(body); - } - }).bind({ - 0: ([body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.updateClassStaticBlockDeclaration = buildOverload("updateClassStaticBlockDeclaration").overload({ - 0(node, body) { - return updateClassStaticBlockDeclaration(node, body); - }, - 1(node, _decorators, _modifiers, body) { - return updateClassStaticBlockDeclaration(node, body); - } - }).bind({ - 0: ([, body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.createClassExpression = buildOverload("createClassExpression").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateClassExpression = buildOverload("updateClassExpression").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createFunctionDeclaration = buildOverload("createFunctionDeclaration").overload({ - 0(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(_decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateFunctionDeclaration = buildOverload("updateFunctionDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(node, _decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassDeclaration = buildOverload("createClassDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: () => true - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateClassDeclaration = buildOverload("updateClassDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createInterfaceDeclaration = buildOverload("createInterfaceDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(_decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateInterfaceDeclaration = buildOverload("updateInterfaceDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, _decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([, decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createTypeAliasDeclaration = buildOverload("createTypeAliasDeclaration").overload({ - 0(modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - }, - 1(_decorators, modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateTypeAliasDeclaration = buildOverload("updateTypeAliasDeclaration").overload({ - 0(node, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - }, - 1(node, _decorators, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createEnumDeclaration = buildOverload("createEnumDeclaration").overload({ - 0(modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - }, - 1(_decorators, modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - } - }).bind({ - 0: ([modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateEnumDeclaration = buildOverload("updateEnumDeclaration").overload({ - 0(node, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - }, - 1(node, _decorators, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - } - }).bind({ - 0: ([, modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([, decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createModuleDeclaration = buildOverload("createModuleDeclaration").overload({ - 0(modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - }, - 1(_decorators, modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - } - }).bind({ - 0: ([modifiers, name, body, flags, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name !== void 0 && !isArray(name)) && (body === void 0 || isModuleBody(body)) && (flags === void 0 || typeof flags === "number"), - 1: ([decorators, modifiers, name, body, flags]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || typeof body === "object") && (flags === void 0 || typeof flags === "number") - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateModuleDeclaration = buildOverload("updateModuleDeclaration").overload({ - 0(node, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - }, - 1(node, _decorators, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - } - }).bind({ - 0: ([, modifiers, name, body, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (body === void 0 || isModuleBody(body)), - 1: ([, decorators, modifiers, name, body]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || isModuleBody(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportEqualsDeclaration = buildOverload("createImportEqualsDeclaration").overload({ - 0(modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - }, - 1(_decorators, modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportEqualsDeclaration = buildOverload("updateImportEqualsDeclaration").overload({ - 0(node, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - }, - 1(node, _decorators, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([, decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportDeclaration = buildOverload("createImportDeclaration").overload({ - 0(modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportDeclaration = buildOverload("updateImportDeclaration").overload({ - 0(node, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportAssignment = buildOverload("createExportAssignment").overload({ - 0(modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - }, - 1(_decorators, modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - } - }).bind({ - 0: ([modifiers, isExportEquals, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && typeof expression === "object", - 1: ([decorators, modifiers, isExportEquals, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportAssignment = buildOverload("updateExportAssignment").overload({ - 0(node, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - }, - 1(node, _decorators, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - } - }).bind({ - 0: ([, modifiers, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (expression !== void 0 && !isArray(expression)), - 1: ([, decorators, modifiers, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportDeclaration = buildOverload("createExportDeclaration").overload({ - 0(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportDeclaration = buildOverload("updateExportDeclaration").overload({ - 0(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); -} -addNodeFactoryPatcher(patchNodeFactory4); -patchNodeFactory4(factory); - // src/server/utilitiesPublic.ts var LogLevel2 = /* @__PURE__ */ ((LogLevel3) => { LogLevel3[LogLevel3["terse"] = 0] = "terse"; @@ -171057,13 +172926,8 @@ var _ProjectService = class { this.session = opts.session; if (opts.serverMode !== void 0) { this.serverMode = opts.serverMode; - this.syntaxOnly = this.serverMode === 2 /* Syntactic */; - } else if (opts.syntaxOnly) { - this.serverMode = 2 /* Syntactic */; - this.syntaxOnly = true; } else { this.serverMode = 0 /* Semantic */; - this.syntaxOnly = false; } if (this.host.realpath) { this.realpathToScriptInfos = createMultiMap(); @@ -173602,7 +175466,7 @@ Dynamic files must always be opened with service's current directory or service excludedFiles.push(normalizedNames[i]); } else { let exclude = false; - if (typeAcquisition.enable || typeAcquisition.enableAutoDiscovery) { + if (typeAcquisition.enable) { const baseName = getBaseFileName(toFileNameLowerCase(normalizedNames[i])); if (fileExtensionIs(baseName, "js")) { const inferredTypingName = removeFileExtension(baseName); @@ -173631,10 +175495,6 @@ Dynamic files must always be opened with service's current directory or service return excludedFiles; } openExternalProject(proj) { - if (proj.typingOptions && !proj.typeAcquisition) { - const typeAcquisition = convertEnableAutoDiscoveryToEnable(proj.typingOptions); - proj.typeAcquisition = typeAcquisition; - } proj.typeAcquisition = proj.typeAcquisition || {}; proj.typeAcquisition.include = proj.typeAcquisition.include || []; proj.typeAcquisition.exclude = proj.typeAcquisition.exclude || []; @@ -174152,7 +176012,7 @@ function formatDiagnosticToProtocol(diag2, includeFileName) { function allEditsBeforePos(edits, pos) { return edits.every((edit) => textSpanEnd(edit.span) < pos); } -var CommandNames = ts_server_protocol_exports.CommandTypes; +var CommandNames = CommandTypes; function formatMessage2(msg, logger, byteLength, newLine) { const verboseLogging = logger.hasLevel(3 /* verbose */); const json = JSON.stringify(msg); @@ -174513,96 +176373,97 @@ function getMappedContextSpanForProject(documentSpan, project) { return getMappedContextSpan(documentSpan, project.getSourceMapper(), (p) => project.projectService.fileExists(p)); } var invalidPartialSemanticModeCommands = [ - CommandNames.OpenExternalProject, - CommandNames.OpenExternalProjects, - CommandNames.CloseExternalProject, - CommandNames.SynchronizeProjectList, - CommandNames.EmitOutput, - CommandNames.CompileOnSaveAffectedFileList, - CommandNames.CompileOnSaveEmitFile, - CommandNames.CompilerOptionsDiagnosticsFull, - CommandNames.EncodedSemanticClassificationsFull, - CommandNames.SemanticDiagnosticsSync, - CommandNames.SuggestionDiagnosticsSync, - CommandNames.GeterrForProject, - CommandNames.Reload, - CommandNames.ReloadProjects, - CommandNames.GetCodeFixes, - CommandNames.GetCodeFixesFull, - CommandNames.GetCombinedCodeFix, - CommandNames.GetCombinedCodeFixFull, - CommandNames.ApplyCodeActionCommand, - CommandNames.GetSupportedCodeFixes, - CommandNames.GetApplicableRefactors, - CommandNames.GetEditsForRefactor, - CommandNames.GetEditsForRefactorFull, - CommandNames.OrganizeImports, - CommandNames.OrganizeImportsFull, - CommandNames.GetEditsForFileRename, - CommandNames.GetEditsForFileRenameFull, - CommandNames.PrepareCallHierarchy, - CommandNames.ProvideCallHierarchyIncomingCalls, - CommandNames.ProvideCallHierarchyOutgoingCalls + "openExternalProject" /* OpenExternalProject */, + "openExternalProjects" /* OpenExternalProjects */, + "closeExternalProject" /* CloseExternalProject */, + "synchronizeProjectList" /* SynchronizeProjectList */, + "emit-output" /* EmitOutput */, + "compileOnSaveAffectedFileList" /* CompileOnSaveAffectedFileList */, + "compileOnSaveEmitFile" /* CompileOnSaveEmitFile */, + "compilerOptionsDiagnostics-full" /* CompilerOptionsDiagnosticsFull */, + "encodedSemanticClassifications-full" /* EncodedSemanticClassificationsFull */, + "semanticDiagnosticsSync" /* SemanticDiagnosticsSync */, + "suggestionDiagnosticsSync" /* SuggestionDiagnosticsSync */, + "geterrForProject" /* GeterrForProject */, + "reload" /* Reload */, + "reloadProjects" /* ReloadProjects */, + "getCodeFixes" /* GetCodeFixes */, + "getCodeFixes-full" /* GetCodeFixesFull */, + "getCombinedCodeFix" /* GetCombinedCodeFix */, + "getCombinedCodeFix-full" /* GetCombinedCodeFixFull */, + "applyCodeActionCommand" /* ApplyCodeActionCommand */, + "getSupportedCodeFixes" /* GetSupportedCodeFixes */, + "getApplicableRefactors" /* GetApplicableRefactors */, + "getEditsForRefactor" /* GetEditsForRefactor */, + "getEditsForRefactor-full" /* GetEditsForRefactorFull */, + "organizeImports" /* OrganizeImports */, + "organizeImports-full" /* OrganizeImportsFull */, + "getEditsForFileRename" /* GetEditsForFileRename */, + "getEditsForFileRename-full" /* GetEditsForFileRenameFull */, + "prepareCallHierarchy" /* PrepareCallHierarchy */, + "provideCallHierarchyIncomingCalls" /* ProvideCallHierarchyIncomingCalls */, + "provideCallHierarchyOutgoingCalls" /* ProvideCallHierarchyOutgoingCalls */ ]; var invalidSyntacticModeCommands = [ ...invalidPartialSemanticModeCommands, - CommandNames.Definition, - CommandNames.DefinitionFull, - CommandNames.DefinitionAndBoundSpan, - CommandNames.DefinitionAndBoundSpanFull, - CommandNames.TypeDefinition, - CommandNames.Implementation, - CommandNames.ImplementationFull, - CommandNames.References, - CommandNames.ReferencesFull, - CommandNames.Rename, - CommandNames.RenameLocationsFull, - CommandNames.RenameInfoFull, - CommandNames.Quickinfo, - CommandNames.QuickinfoFull, - CommandNames.CompletionInfo, - CommandNames.Completions, - CommandNames.CompletionsFull, - CommandNames.CompletionDetails, - CommandNames.CompletionDetailsFull, - CommandNames.SignatureHelp, - CommandNames.SignatureHelpFull, - CommandNames.Navto, - CommandNames.NavtoFull, - CommandNames.Occurrences, - CommandNames.DocumentHighlights, - CommandNames.DocumentHighlightsFull + "definition" /* Definition */, + "definition-full" /* DefinitionFull */, + "definitionAndBoundSpan" /* DefinitionAndBoundSpan */, + "definitionAndBoundSpan-full" /* DefinitionAndBoundSpanFull */, + "typeDefinition" /* TypeDefinition */, + "implementation" /* Implementation */, + "implementation-full" /* ImplementationFull */, + "references" /* References */, + "references-full" /* ReferencesFull */, + "rename" /* Rename */, + "renameLocations-full" /* RenameLocationsFull */, + "rename-full" /* RenameInfoFull */, + "quickinfo" /* Quickinfo */, + "quickinfo-full" /* QuickinfoFull */, + "completionInfo" /* CompletionInfo */, + "completions" /* Completions */, + "completions-full" /* CompletionsFull */, + "completionEntryDetails" /* CompletionDetails */, + "completionEntryDetails-full" /* CompletionDetailsFull */, + "signatureHelp" /* SignatureHelp */, + "signatureHelp-full" /* SignatureHelpFull */, + "navto" /* Navto */, + "navto-full" /* NavtoFull */, + "occurrences" /* Occurrences */, + "documentHighlights" /* DocumentHighlights */, + "documentHighlights-full" /* DocumentHighlightsFull */ ]; var Session3 = class { constructor(opts) { this.changeSeq = 0; this.handlers = new Map(Object.entries({ - [CommandNames.Status]: () => { + // TODO(jakebailey): correctly type the handlers + ["status" /* Status */]: () => { const response = { version }; return this.requiredResponse(response); }, - [CommandNames.OpenExternalProject]: (request) => { + ["openExternalProject" /* OpenExternalProject */]: (request) => { this.projectService.openExternalProject(request.arguments); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.OpenExternalProjects]: (request) => { + ["openExternalProjects" /* OpenExternalProjects */]: (request) => { this.projectService.openExternalProjects(request.arguments.projects); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.CloseExternalProject]: (request) => { + ["closeExternalProject" /* CloseExternalProject */]: (request) => { this.projectService.closeExternalProject(request.arguments.projectFileName); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.SynchronizeProjectList]: (request) => { + ["synchronizeProjectList" /* SynchronizeProjectList */]: (request) => { const result = this.projectService.synchronizeProjectList(request.arguments.knownProjects, request.arguments.includeProjectReferenceRedirectInfo); if (!result.some((p) => p.projectErrors && p.projectErrors.length !== 0)) { return this.requiredResponse(result); @@ -174624,7 +176485,7 @@ var Session3 = class { }); return this.requiredResponse(converted); }, - [CommandNames.UpdateOpen]: (request) => { + ["updateOpen" /* UpdateOpen */]: (request) => { this.changeSeq++; this.projectService.applyChangesInOpenFiles( request.arguments.openFiles && mapIterator(request.arguments.openFiles, (file) => ({ @@ -174649,7 +176510,7 @@ var Session3 = class { true ); }, - [CommandNames.ApplyChangedToOpenFiles]: (request) => { + ["applyChangedToOpenFiles" /* ApplyChangedToOpenFiles */]: (request) => { this.changeSeq++; this.projectService.applyChangesInOpenFiles( request.arguments.openFiles, @@ -174665,93 +176526,93 @@ var Session3 = class { true ); }, - [CommandNames.Exit]: () => { + ["exit" /* Exit */]: () => { this.exit(); return this.notRequired(); }, - [CommandNames.Definition]: (request) => { + ["definition" /* Definition */]: (request) => { return this.requiredResponse(this.getDefinition( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DefinitionFull]: (request) => { + ["definition-full" /* DefinitionFull */]: (request) => { return this.requiredResponse(this.getDefinition( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.DefinitionAndBoundSpan]: (request) => { + ["definitionAndBoundSpan" /* DefinitionAndBoundSpan */]: (request) => { return this.requiredResponse(this.getDefinitionAndBoundSpan( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DefinitionAndBoundSpanFull]: (request) => { + ["definitionAndBoundSpan-full" /* DefinitionAndBoundSpanFull */]: (request) => { return this.requiredResponse(this.getDefinitionAndBoundSpan( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.FindSourceDefinition]: (request) => { + ["findSourceDefinition" /* FindSourceDefinition */]: (request) => { return this.requiredResponse(this.findSourceDefinition(request.arguments)); }, - [CommandNames.EmitOutput]: (request) => { + ["emit-output" /* EmitOutput */]: (request) => { return this.requiredResponse(this.getEmitOutput(request.arguments)); }, - [CommandNames.TypeDefinition]: (request) => { + ["typeDefinition" /* TypeDefinition */]: (request) => { return this.requiredResponse(this.getTypeDefinition(request.arguments)); }, - [CommandNames.Implementation]: (request) => { + ["implementation" /* Implementation */]: (request) => { return this.requiredResponse(this.getImplementation( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ImplementationFull]: (request) => { + ["implementation-full" /* ImplementationFull */]: (request) => { return this.requiredResponse(this.getImplementation( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.References]: (request) => { + ["references" /* References */]: (request) => { return this.requiredResponse(this.getReferences( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ReferencesFull]: (request) => { + ["references-full" /* ReferencesFull */]: (request) => { return this.requiredResponse(this.getReferences( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Rename]: (request) => { + ["rename" /* Rename */]: (request) => { return this.requiredResponse(this.getRenameLocations( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.RenameLocationsFull]: (request) => { + ["renameLocations-full" /* RenameLocationsFull */]: (request) => { return this.requiredResponse(this.getRenameLocations( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.RenameInfoFull]: (request) => { + ["rename-full" /* RenameInfoFull */]: (request) => { return this.requiredResponse(this.getRenameInfo(request.arguments)); }, - [CommandNames.Open]: (request) => { + ["open" /* Open */]: (request) => { this.openClientFile( toNormalizedPath(request.arguments.file), request.arguments.fileContent, @@ -174761,451 +176622,451 @@ var Session3 = class { ); return this.notRequired(); }, - [CommandNames.Quickinfo]: (request) => { + ["quickinfo" /* Quickinfo */]: (request) => { return this.requiredResponse(this.getQuickInfoWorker( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.QuickinfoFull]: (request) => { + ["quickinfo-full" /* QuickinfoFull */]: (request) => { return this.requiredResponse(this.getQuickInfoWorker( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetOutliningSpans]: (request) => { + ["getOutliningSpans" /* GetOutliningSpans */]: (request) => { return this.requiredResponse(this.getOutliningSpans( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetOutliningSpansFull]: (request) => { + ["outliningSpans" /* GetOutliningSpansFull */]: (request) => { return this.requiredResponse(this.getOutliningSpans( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.TodoComments]: (request) => { + ["todoComments" /* TodoComments */]: (request) => { return this.requiredResponse(this.getTodoComments(request.arguments)); }, - [CommandNames.Indentation]: (request) => { + ["indentation" /* Indentation */]: (request) => { return this.requiredResponse(this.getIndentation(request.arguments)); }, - [CommandNames.NameOrDottedNameSpan]: (request) => { + ["nameOrDottedNameSpan" /* NameOrDottedNameSpan */]: (request) => { return this.requiredResponse(this.getNameOrDottedNameSpan(request.arguments)); }, - [CommandNames.BreakpointStatement]: (request) => { + ["breakpointStatement" /* BreakpointStatement */]: (request) => { return this.requiredResponse(this.getBreakpointStatement(request.arguments)); }, - [CommandNames.BraceCompletion]: (request) => { + ["braceCompletion" /* BraceCompletion */]: (request) => { return this.requiredResponse(this.isValidBraceCompletion(request.arguments)); }, - [CommandNames.DocCommentTemplate]: (request) => { + ["docCommentTemplate" /* DocCommentTemplate */]: (request) => { return this.requiredResponse(this.getDocCommentTemplate(request.arguments)); }, - [CommandNames.GetSpanOfEnclosingComment]: (request) => { + ["getSpanOfEnclosingComment" /* GetSpanOfEnclosingComment */]: (request) => { return this.requiredResponse(this.getSpanOfEnclosingComment(request.arguments)); }, - [CommandNames.FileReferences]: (request) => { + ["fileReferences" /* FileReferences */]: (request) => { return this.requiredResponse(this.getFileReferences( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.FileReferencesFull]: (request) => { + ["fileReferences-full" /* FileReferencesFull */]: (request) => { return this.requiredResponse(this.getFileReferences( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Format]: (request) => { + ["format" /* Format */]: (request) => { return this.requiredResponse(this.getFormattingEditsForRange(request.arguments)); }, - [CommandNames.Formatonkey]: (request) => { + ["formatonkey" /* Formatonkey */]: (request) => { return this.requiredResponse(this.getFormattingEditsAfterKeystroke(request.arguments)); }, - [CommandNames.FormatFull]: (request) => { + ["format-full" /* FormatFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsForDocumentFull(request.arguments)); }, - [CommandNames.FormatonkeyFull]: (request) => { + ["formatonkey-full" /* FormatonkeyFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsAfterKeystrokeFull(request.arguments)); }, - [CommandNames.FormatRangeFull]: (request) => { + ["formatRange-full" /* FormatRangeFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsForRangeFull(request.arguments)); }, - [CommandNames.CompletionInfo]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.CompletionInfo)); + ["completionInfo" /* CompletionInfo */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completionInfo" /* CompletionInfo */)); }, - [CommandNames.Completions]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.Completions)); + ["completions" /* Completions */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completions" /* Completions */)); }, - [CommandNames.CompletionsFull]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.CompletionsFull)); + ["completions-full" /* CompletionsFull */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completions-full" /* CompletionsFull */)); }, - [CommandNames.CompletionDetails]: (request) => { + ["completionEntryDetails" /* CompletionDetails */]: (request) => { return this.requiredResponse(this.getCompletionEntryDetails( request.arguments, /*fullResult*/ false )); }, - [CommandNames.CompletionDetailsFull]: (request) => { + ["completionEntryDetails-full" /* CompletionDetailsFull */]: (request) => { return this.requiredResponse(this.getCompletionEntryDetails( request.arguments, /*fullResult*/ true )); }, - [CommandNames.CompileOnSaveAffectedFileList]: (request) => { + ["compileOnSaveAffectedFileList" /* CompileOnSaveAffectedFileList */]: (request) => { return this.requiredResponse(this.getCompileOnSaveAffectedFileList(request.arguments)); }, - [CommandNames.CompileOnSaveEmitFile]: (request) => { + ["compileOnSaveEmitFile" /* CompileOnSaveEmitFile */]: (request) => { return this.requiredResponse(this.emitFile(request.arguments)); }, - [CommandNames.SignatureHelp]: (request) => { + ["signatureHelp" /* SignatureHelp */]: (request) => { return this.requiredResponse(this.getSignatureHelpItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.SignatureHelpFull]: (request) => { + ["signatureHelp-full" /* SignatureHelpFull */]: (request) => { return this.requiredResponse(this.getSignatureHelpItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CompilerOptionsDiagnosticsFull]: (request) => { + ["compilerOptionsDiagnostics-full" /* CompilerOptionsDiagnosticsFull */]: (request) => { return this.requiredResponse(this.getCompilerOptionsDiagnostics(request.arguments)); }, - [CommandNames.EncodedSyntacticClassificationsFull]: (request) => { + ["encodedSyntacticClassifications-full" /* EncodedSyntacticClassificationsFull */]: (request) => { return this.requiredResponse(this.getEncodedSyntacticClassifications(request.arguments)); }, - [CommandNames.EncodedSemanticClassificationsFull]: (request) => { + ["encodedSemanticClassifications-full" /* EncodedSemanticClassificationsFull */]: (request) => { return this.requiredResponse(this.getEncodedSemanticClassifications(request.arguments)); }, - [CommandNames.Cleanup]: () => { + ["cleanup" /* Cleanup */]: () => { this.cleanup(); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.SemanticDiagnosticsSync]: (request) => { + ["semanticDiagnosticsSync" /* SemanticDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSemanticDiagnosticsSync(request.arguments)); }, - [CommandNames.SyntacticDiagnosticsSync]: (request) => { + ["syntacticDiagnosticsSync" /* SyntacticDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSyntacticDiagnosticsSync(request.arguments)); }, - [CommandNames.SuggestionDiagnosticsSync]: (request) => { + ["suggestionDiagnosticsSync" /* SuggestionDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSuggestionDiagnosticsSync(request.arguments)); }, - [CommandNames.Geterr]: (request) => { + ["geterr" /* Geterr */]: (request) => { this.errorCheck.startNew((next) => this.getDiagnostics(next, request.arguments.delay, request.arguments.files)); return this.notRequired(); }, - [CommandNames.GeterrForProject]: (request) => { + ["geterrForProject" /* GeterrForProject */]: (request) => { this.errorCheck.startNew((next) => this.getDiagnosticsForProject(next, request.arguments.delay, request.arguments.file)); return this.notRequired(); }, - [CommandNames.Change]: (request) => { + ["change" /* Change */]: (request) => { this.change(request.arguments); return this.notRequired(); }, - [CommandNames.Configure]: (request) => { + ["configure" /* Configure */]: (request) => { this.projectService.setHostConfiguration(request.arguments); this.doOutput( /*info*/ void 0, - CommandNames.Configure, + "configure" /* Configure */, request.seq, /*success*/ true ); return this.notRequired(); }, - [CommandNames.Reload]: (request) => { + ["reload" /* Reload */]: (request) => { this.reload(request.arguments, request.seq); return this.requiredResponse({ reloadFinished: true }); }, - [CommandNames.Saveto]: (request) => { + ["saveto" /* Saveto */]: (request) => { const savetoArgs = request.arguments; this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile); return this.notRequired(); }, - [CommandNames.Close]: (request) => { + ["close" /* Close */]: (request) => { const closeArgs = request.arguments; this.closeClientFile(closeArgs.file); return this.notRequired(); }, - [CommandNames.Navto]: (request) => { + ["navto" /* Navto */]: (request) => { return this.requiredResponse(this.getNavigateToItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavtoFull]: (request) => { + ["navto-full" /* NavtoFull */]: (request) => { return this.requiredResponse(this.getNavigateToItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Brace]: (request) => { + ["brace" /* Brace */]: (request) => { return this.requiredResponse(this.getBraceMatching( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.BraceFull]: (request) => { + ["brace-full" /* BraceFull */]: (request) => { return this.requiredResponse(this.getBraceMatching( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.NavBar]: (request) => { + ["navbar" /* NavBar */]: (request) => { return this.requiredResponse(this.getNavigationBarItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavBarFull]: (request) => { + ["navbar-full" /* NavBarFull */]: (request) => { return this.requiredResponse(this.getNavigationBarItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.NavTree]: (request) => { + ["navtree" /* NavTree */]: (request) => { return this.requiredResponse(this.getNavigationTree( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavTreeFull]: (request) => { + ["navtree-full" /* NavTreeFull */]: (request) => { return this.requiredResponse(this.getNavigationTree( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Occurrences]: (request) => { + ["occurrences" /* Occurrences */]: (request) => { return this.requiredResponse(this.getOccurrences(request.arguments)); }, - [CommandNames.DocumentHighlights]: (request) => { + ["documentHighlights" /* DocumentHighlights */]: (request) => { return this.requiredResponse(this.getDocumentHighlights( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DocumentHighlightsFull]: (request) => { + ["documentHighlights-full" /* DocumentHighlightsFull */]: (request) => { return this.requiredResponse(this.getDocumentHighlights( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CompilerOptionsForInferredProjects]: (request) => { + ["compilerOptionsForInferredProjects" /* CompilerOptionsForInferredProjects */]: (request) => { this.setCompilerOptionsForInferredProjects(request.arguments); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.ProjectInfo]: (request) => { + ["projectInfo" /* ProjectInfo */]: (request) => { return this.requiredResponse(this.getProjectInfo(request.arguments)); }, - [CommandNames.ReloadProjects]: () => { + ["reloadProjects" /* ReloadProjects */]: () => { this.projectService.reloadProjects(); return this.notRequired(); }, - [CommandNames.JsxClosingTag]: (request) => { + ["jsxClosingTag" /* JsxClosingTag */]: (request) => { return this.requiredResponse(this.getJsxClosingTag(request.arguments)); }, - [CommandNames.GetCodeFixes]: (request) => { + ["getCodeFixes" /* GetCodeFixes */]: (request) => { return this.requiredResponse(this.getCodeFixes( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetCodeFixesFull]: (request) => { + ["getCodeFixes-full" /* GetCodeFixesFull */]: (request) => { return this.requiredResponse(this.getCodeFixes( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetCombinedCodeFix]: (request) => { + ["getCombinedCodeFix" /* GetCombinedCodeFix */]: (request) => { return this.requiredResponse(this.getCombinedCodeFix( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetCombinedCodeFixFull]: (request) => { + ["getCombinedCodeFix-full" /* GetCombinedCodeFixFull */]: (request) => { return this.requiredResponse(this.getCombinedCodeFix( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ApplyCodeActionCommand]: (request) => { + ["applyCodeActionCommand" /* ApplyCodeActionCommand */]: (request) => { return this.requiredResponse(this.applyCodeActionCommand(request.arguments)); }, - [CommandNames.GetSupportedCodeFixes]: (request) => { + ["getSupportedCodeFixes" /* GetSupportedCodeFixes */]: (request) => { return this.requiredResponse(this.getSupportedCodeFixes(request.arguments)); }, - [CommandNames.GetApplicableRefactors]: (request) => { + ["getApplicableRefactors" /* GetApplicableRefactors */]: (request) => { return this.requiredResponse(this.getApplicableRefactors(request.arguments)); }, - [CommandNames.GetEditsForRefactor]: (request) => { + ["getEditsForRefactor" /* GetEditsForRefactor */]: (request) => { return this.requiredResponse(this.getEditsForRefactor( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetEditsForRefactorFull]: (request) => { + ["getEditsForRefactor-full" /* GetEditsForRefactorFull */]: (request) => { return this.requiredResponse(this.getEditsForRefactor( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.OrganizeImports]: (request) => { + ["organizeImports" /* OrganizeImports */]: (request) => { return this.requiredResponse(this.organizeImports( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.OrganizeImportsFull]: (request) => { + ["organizeImports-full" /* OrganizeImportsFull */]: (request) => { return this.requiredResponse(this.organizeImports( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetEditsForFileRename]: (request) => { + ["getEditsForFileRename" /* GetEditsForFileRename */]: (request) => { return this.requiredResponse(this.getEditsForFileRename( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetEditsForFileRenameFull]: (request) => { + ["getEditsForFileRename-full" /* GetEditsForFileRenameFull */]: (request) => { return this.requiredResponse(this.getEditsForFileRename( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ConfigurePlugin]: (request) => { + ["configurePlugin" /* ConfigurePlugin */]: (request) => { this.configurePlugin(request.arguments); this.doOutput( /*info*/ void 0, - CommandNames.ConfigurePlugin, + "configurePlugin" /* ConfigurePlugin */, request.seq, /*success*/ true ); return this.notRequired(); }, - [CommandNames.SelectionRange]: (request) => { + ["selectionRange" /* SelectionRange */]: (request) => { return this.requiredResponse(this.getSmartSelectionRange( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.SelectionRangeFull]: (request) => { + ["selectionRange-full" /* SelectionRangeFull */]: (request) => { return this.requiredResponse(this.getSmartSelectionRange( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.PrepareCallHierarchy]: (request) => { + ["prepareCallHierarchy" /* PrepareCallHierarchy */]: (request) => { return this.requiredResponse(this.prepareCallHierarchy(request.arguments)); }, - [CommandNames.ProvideCallHierarchyIncomingCalls]: (request) => { + ["provideCallHierarchyIncomingCalls" /* ProvideCallHierarchyIncomingCalls */]: (request) => { return this.requiredResponse(this.provideCallHierarchyIncomingCalls(request.arguments)); }, - [CommandNames.ProvideCallHierarchyOutgoingCalls]: (request) => { + ["provideCallHierarchyOutgoingCalls" /* ProvideCallHierarchyOutgoingCalls */]: (request) => { return this.requiredResponse(this.provideCallHierarchyOutgoingCalls(request.arguments)); }, - [CommandNames.ToggleLineComment]: (request) => { + ["toggleLineComment" /* ToggleLineComment */]: (request) => { return this.requiredResponse(this.toggleLineComment( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ToggleLineCommentFull]: (request) => { + ["toggleLineComment-full" /* ToggleLineCommentFull */]: (request) => { return this.requiredResponse(this.toggleLineComment( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ToggleMultilineComment]: (request) => { + ["toggleMultilineComment" /* ToggleMultilineComment */]: (request) => { return this.requiredResponse(this.toggleMultilineComment( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ToggleMultilineCommentFull]: (request) => { + ["toggleMultilineComment-full" /* ToggleMultilineCommentFull */]: (request) => { return this.requiredResponse(this.toggleMultilineComment( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CommentSelection]: (request) => { + ["commentSelection" /* CommentSelection */]: (request) => { return this.requiredResponse(this.commentSelection( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.CommentSelectionFull]: (request) => { + ["commentSelection-full" /* CommentSelectionFull */]: (request) => { return this.requiredResponse(this.commentSelection( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.UncommentSelection]: (request) => { + ["uncommentSelection" /* UncommentSelection */]: (request) => { return this.requiredResponse(this.uncommentSelection( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.UncommentSelectionFull]: (request) => { + ["uncommentSelection-full" /* UncommentSelectionFull */]: (request) => { return this.requiredResponse(this.uncommentSelection( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ProvideInlayHints]: (request) => { + ["provideInlayHints" /* ProvideInlayHints */]: (request) => { return this.requiredResponse(this.provideInlayHints(request.arguments)); } })); @@ -175243,7 +177104,6 @@ var Session3 = class { pluginProbeLocations: opts.pluginProbeLocations, allowLocalPluginLoads: opts.allowLocalPluginLoads, typesMapLocation: opts.typesMapLocation, - syntaxOnly: opts.syntaxOnly, serverMode: opts.serverMode, session: this }; @@ -175436,18 +177296,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter event(body, eventName) { this.send(toEvent(eventName, body)); } - // For backwards-compatibility only. - /** @deprecated */ - output(info, cmdName, reqSeq, errorMsg) { - this.doOutput( - info, - cmdName, - reqSeq, - /*success*/ - !errorMsg, - errorMsg - ); - } + /** @internal */ doOutput(info, cmdName, reqSeq, success, message) { const res = { seq: 0, @@ -176455,7 +178304,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter ); if (completions === void 0) return void 0; - if (kind === ts_server_protocol_exports.CommandTypes.CompletionsFull) + if (kind === "completions-full" /* CompletionsFull */) return completions; const prefix = args.prefix || ""; const entries = mapDefined(completions.entries, (entry) => { @@ -176497,7 +178346,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter }; } }); - if (kind === ts_server_protocol_exports.CommandTypes.Completions) { + if (kind === "completions" /* Completions */) { if (completions.metadata) entries.metadata = completions.metadata; return entries; @@ -176649,7 +178498,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter this.doOutput( /*info*/ void 0, - CommandNames.Reload, + "reload" /* Reload */, reqSeq, /*success*/ true @@ -176920,10 +178769,10 @@ ${e.message}`; } return simplifiedResult ? codeActions.map((codeAction) => this.mapCodeFixAction(codeAction)) : codeActions; } - getCombinedCodeFix({ scope, fixId: fixId52 }, simplifiedResult) { + getCombinedCodeFix({ scope, fixId: fixId51 }, simplifiedResult) { Debug.assert(scope.type === "file"); const { file, project } = this.getFileAndProject(scope.args); - const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId52, this.getFormatOptions(file), this.getPreferences(file)); + const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId51, this.getFormatOptions(file), this.getPreferences(file)); if (simplifiedResult) { return { changes: this.mapTextChangesToCodeEdits(res.changes), commands: res.commands }; } else { @@ -176962,8 +178811,8 @@ ${e.message}`; mapCodeAction({ description: description2, changes, commands }) { return { description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands }; } - mapCodeFixAction({ fixName: fixName8, description: description2, changes, commands, fixId: fixId52, fixAllDescription }) { - return { fixName: fixName8, description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId52, fixAllDescription }; + mapCodeFixAction({ fixName: fixName8, description: description2, changes, commands, fixId: fixId51, fixAllDescription }) { + return { fixName: fixName8, description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId51, fixAllDescription }; } mapTextChangesToCodeEdits(textChanges2) { return textChanges2.map((change) => this.mapTextChangeToCodeEdit(change)); @@ -177213,7 +179062,7 @@ ${e.message}`; this.doOutput( /*info*/ void 0, - CommandNames.Unknown, + "unknown" /* Unknown */, request.seq, /*success*/ false, @@ -177298,7 +179147,7 @@ ${e.message}`; this.doOutput( /*info*/ void 0, - request ? request.command : CommandNames.Unknown, + request ? request.command : "unknown" /* Unknown */, request ? request.seq : 0, /*success*/ false, @@ -178800,12 +180649,11 @@ function findArgumentStringArray(argName) { return arg.split(",").filter((name) => name !== ""); } function start({ args, logger, cancellationToken, serverMode, unknownServerMode, startSession: startServer }, platform) { - const syntaxOnly = hasArgument("--syntaxOnly"); logger.info(`Starting TS Server`); logger.info(`Version: ${version}`); logger.info(`Arguments: ${args.join(" ")}`); logger.info(`Platform: ${platform} NodeVersion: ${getNodeMajorVersion()} CaseSensitive: ${sys.useCaseSensitiveFileNames}`); - logger.info(`ServerMode: ${serverMode} syntaxOnly: ${syntaxOnly} hasUnknownServerMode: ${unknownServerMode}`); + logger.info(`ServerMode: ${serverMode} hasUnknownServerMode: ${unknownServerMode}`); setStackTraceLimit(); if (Debug.isDebugging) { Debug.enableDebugInfo(); @@ -178825,7 +180673,6 @@ function start({ args, logger, cancellationToken, serverMode, unknownServerMode, useInferredProjectPerProjectRoot: hasArgument("--useInferredProjectPerProjectRoot"), suppressDiagnosticEvents: hasArgument("--suppressDiagnosticEvents"), noGetErrOnBackgroundUpdate: hasArgument("--noGetErrOnBackgroundUpdate"), - syntaxOnly, serverMode }, logger, @@ -178897,6 +180744,7 @@ start(initializeNodeSystem(), require("os").platform()); InferencePriority, InlayHintKind, InlayHints, + InternalEmitFlags, InternalSymbolName, InvalidatedProjectKind, JsDoc, @@ -178990,10 +180838,13 @@ start(initializeNodeSystem(), require("os").platform()); WatchFileKind, WatchLogLevel, WatchType, + accessPrivateIdentifier, addEmitFlags, addEmitHelper, addEmitHelpers, + addInternalEmitFlags, addNodeFactoryPatcher, + addObjectAllocatorPatcher, addRange, addRelatedInfo, addSyntheticLeadingComment, @@ -179064,6 +180915,7 @@ start(initializeNodeSystem(), require("os").platform()); changesAffectModuleResolution, changesAffectingProgramStructure, childIsDecorated, + classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper, classPrivateFieldInHelper, @@ -179112,6 +180964,7 @@ start(initializeNodeSystem(), require("os").platform()); compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules, + compose, computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition, computeLineOfPosition, @@ -179129,7 +180982,6 @@ start(initializeNodeSystem(), require("os").platform()); containsPath, convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable, convertJsonOption, convertToBase64, convertToObject, @@ -179150,41 +181002,17 @@ start(initializeNodeSystem(), require("os").platform()); createAccessorPropertyBackingField, createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector, - createAdd, - createArrayBindingPattern, - createArrayLiteral, - createArrayTypeNode, - createArrowFunction, - createAsExpression, - createAssignment, - createAwait, createBaseNodeFactory, - createBigIntLiteral, - createBinary, createBinaryExpressionTrampoline, - createBindingElement, createBindingHelper, - createBlock, - createBreak, createBuildInfo, createBuilderProgram, createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter, - createBundle, createCacheWithRedirects, createCacheableExportInfoMap, createCachedDirectoryStructureHost, - createCall, - createCallChain, - createCallSignature, - createCaseBlock, - createCaseClause, - createCatchClause, - createClassDeclaration, - createClassExpression, createClassifier, - createComma, - createCommaList, createCommentDirectivesMap, createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType, @@ -179192,212 +181020,73 @@ start(initializeNodeSystem(), require("os").platform()); createCompilerHost, createCompilerHostFromProgramHost, createCompilerHostWorker, - createComputedPropertyName, - createConditional, - createConditionalTypeNode, - createConstructSignature, - createConstructor, - createConstructorTypeNode, - createContinue, - createDebuggerStatement, - createDecorator, - createDefaultClause, - createDelete, createDetachedDiagnostic, createDiagnosticCollection, createDiagnosticForFileFromMessageChain, createDiagnosticForNode, createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile, createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter, - createDo, createDocumentPositionMapper, createDocumentRegistry, createDocumentRegistryInternal, - createElementAccess, - createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory, createEmptyExports, - createEmptyStatement, - createEnumDeclaration, - createEnumMember, - createExportAssignment, - createExportDeclaration, - createExportDefault, - createExportSpecifier, createExpressionForJsxElement, createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike, createExpressionForPropertyName, createExpressionFromEntityName, - createExpressionStatement, - createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport, - createExternalModuleReference, - createFalse, createFileDiagnostic, createFileDiagnosticFromMessageChain, - createFileLevelUniqueName, - createFor, - createForIn, - createForOf, createForOfBindingStatement, - createFunctionDeclaration, - createFunctionExpression, - createFunctionTypeNode, - createGetAccessor, createGetCanonicalFileName, createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker, - createHeritageClause, - createIdentifier, - createIf, - createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression, - createImportClause, - createImportDeclaration, - createImportEqualsDeclaration, - createImportSpecifier, - createImportTypeNode, createIncrementalCompilerHost, createIncrementalProgram, - createIndexSignature, - createIndexedAccessTypeNode, - createInferTypeNode, createInputFiles, createInputFilesWithFilePaths, createInputFilesWithFileTexts, - createInterfaceDeclaration, - createIntersectionTypeNode, - createJSDocAugmentsTag, - createJSDocAuthorTag, - createJSDocCallbackTag, - createJSDocClassTag, - createJSDocComment, - createJSDocEnumTag, - createJSDocImplementsTag, - createJSDocParamTag, - createJSDocParameterTag, - createJSDocPrivateTag, - createJSDocPropertyTag, - createJSDocProtectedTag, - createJSDocPublicTag, - createJSDocReadonlyTag, - createJSDocReturnTag, - createJSDocSignature, - createJSDocTag, - createJSDocTemplateTag, - createJSDocThisTag, - createJSDocTypeExpression, - createJSDocTypeLiteral, - createJSDocTypeTag, - createJSDocTypedefTag, - createJsxAttribute, - createJsxAttributes, - createJsxClosingElement, - createJsxElement, - createJsxExpression, createJsxFactoryExpression, - createJsxFragment, - createJsxJsxClosingFragment, - createJsxOpeningElement, - createJsxOpeningFragment, - createJsxSelfClosingElement, - createJsxSpreadAttribute, - createJsxText, - createKeywordTypeNode, - createLabel, createLanguageService, createLanguageServiceSourceFile, - createLessThan, - createLiteral, - createLiteralTypeNode, - createLogicalAnd, - createLogicalNot, - createLogicalOr, - createLoopVariable, - createMappedTypeNode, createMemberAccessForPropertyName, - createMetaProperty, - createMethod, - createMethodSignature, createModeAwareCache, createModeAwareCacheKey, - createModifier, - createModifiersFromModifierFlags, - createModuleBlock, - createModuleDeclaration, createModuleResolutionCache, createModuleResolutionLoader, createModuleSpecifierResolutionHost, createMultiMap, - createNamedExports, - createNamedImports, - createNamespaceExport, - createNamespaceExportDeclaration, - createNamespaceImport, - createNew, - createNoSubstitutionTemplateLiteral, - createNode, - createNodeArray, createNodeConverters, createNodeFactory, - createNonNullChain, - createNonNullExpression, - createNotEmittedStatement, - createNull, - createNumericLiteral, - createObjectBindingPattern, - createObjectLiteral, - createOmittedExpression, - createOptimisticUniqueName, createOptionNameMap, - createOptionalTypeNode, createOverload, createPackageJsonImportFilter, createPackageJsonInfo, - createParameter, - createParen, - createParenthesizedType, createParenthesizerRules, - createPartiallyEmittedExpression, createPatternMatcher, - createPostfix, - createPostfixIncrement, - createPrefix, createPrependNodes, createPrinter, - createPrivateIdentifier, createProgram, createProgramHost, - createProperty, - createPropertyAccess, - createPropertyAccessChain, - createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature, - createQualifiedName, createQueue, createRange, createRedirectedBuilderProgram, - createRegularExpressionLiteral, createResolutionCache, - createRestTypeNode, - createReturn, createRuntimeTypeSerializer, createScanner, createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement, createSet, - createSetAccessor, - createShorthandPropertyAssignment, createSolutionBuilder, createSolutionBuilderHost, createSolutionBuilderWithWatch, @@ -179406,27 +181095,10 @@ start(initializeNodeSystem(), require("os").platform()); createSourceFile, createSourceMapGenerator, createSourceMapSource, - createSpread, - createSpreadAssignment, - createStatement, - createStrictEquality, - createStrictInequality, - createStringLiteral, - createStringLiteralFromNode, - createSubtract, - createSuper, createSuperAccessVariableStatement, - createSwitch, createSymbolTable, createSymlinkCache, createSystemWatchFunctions, - createTaggedTemplate, - createTempVariable, - createTemplateExpression, - createTemplateHead, - createTemplateMiddle, - createTemplateSpan, - createTemplateTail, createTextChange, createTextChangeFromStartLength, createTextChangeRange, @@ -179438,36 +181110,12 @@ start(initializeNodeSystem(), require("os").platform()); createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent, createTextWriter, - createThis, - createThisTypeNode, - createThrow, - createToken, createTokenRange, - createTrue, - createTry, - createTupleTypeNode, - createTypeAliasDeclaration, - createTypeAssertion, createTypeChecker, - createTypeLiteralNode, - createTypeOf, - createTypeOperatorNode, - createTypeParameterDeclaration, - createTypePredicateNode, - createTypePredicateNodeWithModifier, - createTypeQueryNode, createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode, createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap, - createUnionTypeNode, - createUniqueName, createUnparsedSourceFile, - createVariableDeclaration, - createVariableDeclarationList, - createVariableStatement, - createVoid, - createVoidZero, createWatchCompilerHost, createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions, @@ -179475,10 +181123,7 @@ start(initializeNodeSystem(), require("os").platform()); createWatchHost, createWatchProgram, createWatchStatusReporter, - createWhile, - createWith, createWriteFileMeasuringIO, - createYield, declarationNameToString, decodeMappings, decodedTextSpanIntersectsWith, @@ -179525,6 +181170,7 @@ start(initializeNodeSystem(), require("os").platform()); equateStringsCaseInsensitive, equateStringsCaseSensitive, equateValues, + esDecorateHelper, escapeJsxAttributeString, escapeLeadingUnderscores, escapeNonAsciiString, @@ -179553,6 +181199,7 @@ start(initializeNodeSystem(), require("os").platform()); findAncestor, findBestPatternMatch, findChildOfKind, + findComputedPropertyNameCacheAssignment, findConfigFile, findContainingList, findDiagnosticForNode, @@ -179583,6 +181230,7 @@ start(initializeNodeSystem(), require("os").platform()); flatMapIterator, flatMapToMutable, flatten, + flattenCommaList, flattenDestructuringAssignment, flattenDestructuringBinding, flattenDiagnosticMessageText, @@ -179688,6 +181336,7 @@ start(initializeNodeSystem(), require("os").platform()); getDeclaredExpandoInitializer, getDecorators, getDefaultCompilerOptions, + getDefaultExportInfoWorker, getDefaultFormatCodeSettings, getDefaultLibFileName, getDefaultLibFilePath, @@ -179759,9 +181408,11 @@ start(initializeNodeSystem(), require("os").platform()); getFormatCodeSettingsForWriting, getFullWidth, getFunctionFlags, - getGeneratedNameForNode, getHeritageClause, getHostSignatureFromJSDoc, + getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference, + getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker, @@ -179773,7 +181424,9 @@ start(initializeNodeSystem(), require("os").platform()); getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes, + getInternalEmitFlags, getInvokedExpression, + getIsolatedModules, getJSDocAugmentsTag, getJSDocClassTag, getJSDocCommentRanges, @@ -179797,6 +181450,8 @@ start(initializeNodeSystem(), require("os").platform()); getJSDocReturnTag, getJSDocReturnType, getJSDocRoot, + getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag, getJSDocTags, getJSDocTagsNoCache, getJSDocTemplateTag, @@ -179851,7 +181506,6 @@ start(initializeNodeSystem(), require("os").platform()); getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost, - getMutableClone, getNameForExportedSymbol, getNameFromIndexInfo, getNameFromPropertyName, @@ -179925,6 +181579,7 @@ start(initializeNodeSystem(), require("os").platform()); getPossibleTypeArgumentsInfo, getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier, getProperties, getProperty, getPropertyArrayElementValue, @@ -180050,6 +181705,7 @@ start(initializeNodeSystem(), require("os").platform()); getWatchErrorSummaryDiagnosticMessage, getWatchFactory, group, + groupBy, guessIndentation, handleNoEmitOptions, hasAbstractModifier, @@ -180095,12 +181751,14 @@ start(initializeNodeSystem(), require("os").platform()); hostUsesCaseSensitiveFileNames, idText, identifierIsThisKeyword, + identifierToKeywordKind, identity, identitySourceMapConsumer, ignoreSourceNewlines, ignoredPaths, importDefaultHelper, importFromModuleSpecifier, + importNameElisionDisabled, importStarHelper, indexOfAnyCharCode, indexOfNode, @@ -180126,6 +181784,7 @@ start(initializeNodeSystem(), require("os").platform()); isAliasableExpression, isAmbientModule, isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition, isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport, @@ -180135,6 +181794,7 @@ start(initializeNodeSystem(), require("os").platform()); isArgumentExpressionOfElementAccess, isArray, isArrayBindingElement, + isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern, isArrayBindingPattern, isArrayLiteralExpression, @@ -180166,7 +181826,9 @@ start(initializeNodeSystem(), require("os").platform()); isBindableStaticElementAccessExpression, isBindableStaticNameExpression, isBindingElement, + isBindingElementOfBareOrAccessedRequire, isBindingName, + isBindingOrAssignmentElement, isBindingOrAssignmentPattern, isBindingPattern, isBlock, @@ -180207,6 +181869,7 @@ start(initializeNodeSystem(), require("os").platform()); isClassStaticBlockDeclaration, isCollapsedRange, isColonToken, + isCommaExpression, isCommaListExpression, isCommaSequence, isCommaToken, @@ -180240,6 +181903,7 @@ start(initializeNodeSystem(), require("os").platform()); isDecoratorTarget, isDefaultClause, isDefaultImport, + isDefaultModifier, isDefaultedExpandoInitializer, isDeleteExpression, isDeleteTarget, @@ -180263,6 +181927,7 @@ start(initializeNodeSystem(), require("os").platform()); isEmptyBindingPattern, isEmptyObjectLiteral, isEmptyStatement, + isEmptyStringLiteral, isEndOfDeclarationMarker, isEntityName, isEntityNameExpression, @@ -180279,6 +181944,7 @@ start(initializeNodeSystem(), require("os").platform()); isExportModifier, isExportName, isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier, isExportSpecifier, isExportsIdentifier, isExportsOrModuleExportsOrAlias, @@ -180333,7 +181999,6 @@ start(initializeNodeSystem(), require("os").platform()); isIdentifier, isIdentifierANonContextualKeyword, isIdentifierName, - isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode, isIdentifierPart, isIdentifierStart, @@ -180373,6 +182038,7 @@ start(initializeNodeSystem(), require("os").platform()); isInferTypeNode, isInfinityOrNaNString, isInitializedProperty, + isInitializedVariable, isInsideJsxElement, isInsideJsxElementOrAttribute, isInsideNodeModules, @@ -180422,6 +182088,8 @@ start(initializeNodeSystem(), require("os").platform()); isJSDocPublicTag, isJSDocReadonlyTag, isJSDocReturnTag, + isJSDocSatisfiesExpression, + isJSDocSatisfiesTag, isJSDocSeeTag, isJSDocSignature, isJSDocTag, @@ -180477,11 +182145,14 @@ start(initializeNodeSystem(), require("os").platform()); isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression, + isLiteralTypeLiteral, isLiteralTypeNode, isLocalName, isLogicalOperator, isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator, isMappedTypeNode, isMemberName, isMergeDeclarationMarker, @@ -180509,6 +182180,8 @@ start(initializeNodeSystem(), require("os").platform()); isNameOfModuleDeclaration, isNamedClassElement, isNamedDeclaration, + isNamedEvaluation, + isNamedEvaluationSource, isNamedExportBindings, isNamedExports, isNamedImportBindings, @@ -180533,6 +182206,7 @@ start(initializeNodeSystem(), require("os").platform()); isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword, + isNonExportDefaultModifier, isNonGlobalAmbientModule, isNonGlobalDeclaration, isNonNullAccess, @@ -180601,6 +182275,7 @@ start(initializeNodeSystem(), require("os").platform()); isPropertyName, isPropertyNameLiteral, isPropertySignature, + isProtoSetter, isPrototypeAccess, isPrototypePropertyAssignment, isPunctuation, @@ -180712,7 +182387,6 @@ start(initializeNodeSystem(), require("os").platform()); isTupleTypeNode, isTypeAlias, isTypeAliasDeclaration, - isTypeAssertion, isTypeAssertionExpression, isTypeDeclaration, isTypeElement, @@ -180722,8 +182396,9 @@ start(initializeNodeSystem(), require("os").platform()); isTypeLiteralNode, isTypeNode, isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression, + isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode, isTypeParameterDeclaration, @@ -180798,6 +182473,7 @@ start(initializeNodeSystem(), require("os").platform()); maybeBind, maybeSetLocalizedDiagnosticMessages, memoize, + memoizeCached, memoizeOne, memoizeWeak, metadataHelper, @@ -180823,6 +182499,7 @@ start(initializeNodeSystem(), require("os").platform()); mutateMapSkippingNewValues, needsParentheses, needsScopeMarker, + newPrivateEnvironment, noEmitNotification, noEmitSubstitution, noTransformers, @@ -180916,6 +182593,7 @@ start(initializeNodeSystem(), require("os").platform()); programContainsEsModules, programContainsModules, projectReferenceIsEqualTo, + propKeyHelper, propertyNamePart, pseudoBigIntToString, punctuationPart, @@ -180980,10 +182658,12 @@ start(initializeNodeSystem(), require("os").platform()); returnTrue, returnUndefined, returnsPromise, + runInitializersHelper, sameFlatMap, sameMap, sameMapping, scanShebangTrivia, + scanTokenAtPosition, scanner, screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations, @@ -180995,7 +182675,12 @@ start(initializeNodeSystem(), require("os").platform()); setConstantValue, setEachParent, setEmitFlags, + setFunctionNameHelper, setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference, + setIdentifierTypeArguments, + setInternalEmitFlags, setLocalizedDiagnosticMessages, setModuleDefaultHelper, setNodeFlags, @@ -181003,6 +182688,7 @@ start(initializeNodeSystem(), require("os").platform()); setOriginalNode, setParent, setParentRecursive, + setPrivateIdentifier, setResolvedModule, setResolvedTypeReferenceDirective, setSnippetElement, @@ -181043,6 +182729,7 @@ start(initializeNodeSystem(), require("os").platform()); skipTrivia, skipTypeChecking, skipTypeParentheses, + skipWhile, sliceAfter, some, sort, @@ -181137,6 +182824,7 @@ start(initializeNodeSystem(), require("os").platform()); transformES2020, transformES2021, transformES5, + transformESDecorators, transformESNext, transformGenerators, transformJsx, @@ -181163,6 +182851,7 @@ start(initializeNodeSystem(), require("os").platform()); tryGetDirectories, tryGetExtensionFromPath, tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks, @@ -181197,148 +182886,14 @@ start(initializeNodeSystem(), require("os").platform()); unreachableCodeIsError, unusedLabelIsError, unwrapInnermostStatementOfLabel, - updateArrayBindingPattern, - updateArrayLiteral, - updateArrayTypeNode, - updateArrowFunction, - updateAsExpression, - updateAwait, - updateBinary, - updateBindingElement, - updateBlock, - updateBreak, - updateBundle, - updateCall, - updateCallChain, - updateCallSignature, - updateCaseBlock, - updateCaseClause, - updateCatchClause, - updateClassDeclaration, - updateClassExpression, - updateCommaList, - updateComputedPropertyName, - updateConditional, - updateConditionalTypeNode, - updateConstructSignature, - updateConstructor, - updateConstructorTypeNode, - updateContinue, - updateDecorator, - updateDefaultClause, - updateDelete, - updateDo, - updateElementAccess, - updateElementAccessChain, - updateEnumDeclaration, - updateEnumMember, updateErrorForNoInputFiles, - updateExportAssignment, - updateExportDeclaration, - updateExportSpecifier, - updateExpressionStatement, - updateExpressionWithTypeArguments, - updateExternalModuleReference, - updateFor, - updateForIn, - updateForOf, - updateFunctionDeclaration, - updateFunctionExpression, - updateFunctionTypeNode, - updateGetAccessor, - updateHeritageClause, - updateIf, - updateImportClause, - updateImportDeclaration, - updateImportEqualsDeclaration, - updateImportSpecifier, - updateImportTypeNode, - updateIndexSignature, - updateIndexedAccessTypeNode, - updateInferTypeNode, - updateInterfaceDeclaration, - updateIntersectionTypeNode, - updateJsxAttribute, - updateJsxAttributes, - updateJsxClosingElement, - updateJsxElement, - updateJsxExpression, - updateJsxFragment, - updateJsxOpeningElement, - updateJsxSelfClosingElement, - updateJsxSpreadAttribute, - updateJsxText, - updateLabel, updateLanguageServiceSourceFile, - updateLiteralTypeNode, - updateMappedTypeNode, - updateMetaProperty, - updateMethod, - updateMethodSignature, updateMissingFilePathsWatch, - updateModuleBlock, - updateModuleDeclaration, - updateNamedExports, - updateNamedImports, - updateNamespaceExport, - updateNamespaceExportDeclaration, - updateNamespaceImport, - updateNew, - updateNonNullChain, - updateNonNullExpression, - updateObjectBindingPattern, - updateObjectLiteral, - updateOptionalTypeNode, updatePackageJsonWatch, - updateParameter, - updateParen, - updateParenthesizedType, - updatePartiallyEmittedExpression, - updatePostfix, - updatePrefix, - updateProperty, - updatePropertyAccess, - updatePropertyAccessChain, - updatePropertyAssignment, - updatePropertySignature, - updateQualifiedName, updateResolutionField, - updateRestTypeNode, - updateReturn, - updateSetAccessor, updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment, updateSourceFile, - updateSourceFileNode, - updateSpread, - updateSpreadAssignment, - updateStatement, - updateSwitch, - updateTaggedTemplate, - updateTemplateExpression, - updateTemplateSpan, - updateThrow, - updateTry, - updateTupleTypeNode, - updateTypeAliasDeclaration, - updateTypeAssertion, - updateTypeLiteralNode, - updateTypeOf, - updateTypeOperatorNode, - updateTypeParameterDeclaration, - updateTypePredicateNode, - updateTypePredicateNodeWithModifier, - updateTypeQueryNode, - updateTypeReferenceNode, - updateUnionTypeNode, - updateVariableDeclaration, - updateVariableDeclarationList, - updateVariableStatement, - updateVoid, updateWatchingWildcardDirectories, - updateWhile, - updateWith, - updateYield, usesExtensionsOnImports, usingSingleLineStringWriter, utf16EncodeAsString, @@ -181347,6 +182902,7 @@ start(initializeNodeSystem(), require("os").platform()); version, versionMajorMinor, visitArray, + visitCommaListElements, visitEachChild, visitFunctionBody, visitIterationBody, @@ -181355,6 +182911,8 @@ start(initializeNodeSystem(), require("os").platform()); visitNodes, visitParameterList, walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments, + walkUpOuterExpressions, walkUpParenthesizedExpressions, walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild, diff --git a/lib/tsserverlibrary.d.ts b/lib/tsserverlibrary.d.ts index 0884b106020..d37896300e8 100644 --- a/lib/tsserverlibrary.d.ts +++ b/lib/tsserverlibrary.d.ts @@ -87,9 +87,6 @@ declare namespace ts { readonly kind: ActionSet; } namespace protocol { - /** - * Declaration module describing the TypeScript Server protocol - */ enum CommandTypes { JsxClosingTag = "jsxClosingTag", Brace = "brace", @@ -1147,10 +1144,6 @@ declare namespace ts { * Compiler options for the project */ options: ExternalProjectCompilerOptions; - /** - * @deprecated typingOptions. Use typeAcquisition instead - */ - typingOptions?: TypeAcquisition; /** * Explicitly specified type acquisition for the project */ @@ -2802,7 +2795,59 @@ declare namespace ts { readonly includeInlayFunctionLikeReturnTypeHints?: boolean; readonly includeInlayEnumMemberValueHints?: boolean; readonly autoImportFileExcludePatterns?: string[]; + /** + * Indicates whether imports should be organized in a case-insensitive manner. + */ readonly organizeImportsIgnoreCase?: "auto" | boolean; + /** + * Indicates whether imports should be organized via an "ordinal" (binary) comparison using the numeric value + * of their code points, or via "unicode" collation (via the + * [Unicode Collation Algorithm](https://unicode.org/reports/tr10/#Scope)) using rules associated with the locale + * specified in {@link organizeImportsCollationLocale}. + * + * Default: `"ordinal"`. + */ + readonly organizeImportsCollation?: "ordinal" | "unicode"; + /** + * Indicates the locale to use for "unicode" collation. If not specified, the locale `"en"` is used as an invariant + * for the sake of consistent sorting. Use `"auto"` to use the detected UI locale. + * + * This preference is ignored if {@link organizeImportsCollation} is not `"unicode"`. + * + * Default: `"en"` + */ + readonly organizeImportsCollationLocale?: string; + /** + * Indicates whether numeric collation should be used for digit sequences in strings. When `true`, will collate + * strings such that `a1z < a2z < a100z`. When `false`, will collate strings such that `a1z < a100z < a2z`. + * + * This preference is ignored if {@link organizeImportsCollation} is not `"unicode"`. + * + * Default: `false` + */ + readonly organizeImportsNumericCollation?: boolean; + /** + * Indicates whether accents and other diacritic marks are considered unequal for the purpose of collation. When + * `true`, characters with accents and other diacritics will be collated in the order defined by the locale specified + * in {@link organizeImportsCollationLocale}. + * + * This preference is ignored if {@link organizeImportsCollation} is not `"unicode"`. + * + * Default: `true` + */ + readonly organizeImportsAccentCollation?: boolean; + /** + * Indicates whether upper case or lower case should sort first. When `false`, the default order for the locale + * specified in {@link organizeImportsCollationLocale} is used. + * + * This preference is ignored if {@link organizeImportsCollation} is not `"unicode"`. This preference is also + * ignored if we are using case-insensitive sorting, which occurs when {@link organizeImportsIgnoreCase} is `true`, + * or if {@link organizeImportsIgnoreCase} is `"auto"` and the auto-detected case sensitivity is determined to be + * case-insensitive. + * + * Default: `false` + */ + readonly organizeImportsCaseFirst?: "upper" | "lower" | false; /** * Indicates whether {@link ReferencesResponseItem.lineText} is supported. */ @@ -3005,10 +3050,6 @@ declare namespace ts { Info = "Info", Perf = "Perf" } - namespace Msg { - /** @deprecated Only here for backwards-compatibility. Prefer just `Msg`. */ - type Types = Msg; - } namespace Errors { function ThrowNoProject(): never; function ThrowProjectLanguageServiceDisabled(): never; @@ -3484,8 +3525,6 @@ declare namespace ts { pluginProbeLocations?: readonly string[]; allowLocalPluginLoads?: boolean; typesMapLocation?: string; - /** @deprecated use serverMode instead */ - syntaxOnly?: boolean; serverMode?: LanguageServiceMode; session: Session | undefined; } @@ -3557,8 +3596,6 @@ declare namespace ts { readonly allowLocalPluginLoads: boolean; private currentPluginConfigOverrides; readonly typesMapLocation: string | undefined; - /** @deprecated use serverMode instead */ - readonly syntaxOnly: boolean; readonly serverMode: LanguageServiceMode; /** Tracks projects that we have already sent telemetry for. */ private readonly seenProjects; @@ -3729,7 +3766,7 @@ declare namespace ts { private enableRequestedPluginsForProjectAsync; configurePlugin(args: protocol.ConfigurePluginRequestArguments): void; } - function formatMessage(msg: T, logger: Logger, byteLength: (s: string, encoding: string) => number, newLine: string): string; + function formatMessage(msg: T, logger: Logger, byteLength: (s: string, encoding: BufferEncoding) => number, newLine: string): string; interface ServerCancellationToken extends HostCancellationToken { setRequest(requestId: number): void; resetRequest(requestId: number): void; @@ -3739,7 +3776,9 @@ declare namespace ts { fileName: NormalizedPath; project: Project; } + /** @deprecated use ts.server.protocol.CommandTypes */ type CommandNames = protocol.CommandTypes; + /** @deprecated use ts.server.protocol.CommandTypes */ const CommandNames: any; type Event = (body: T, eventName: string) => void; interface EventSender { @@ -3751,8 +3790,14 @@ declare namespace ts { useSingleInferredProject: boolean; useInferredProjectPerProjectRoot: boolean; typingsInstaller: ITypingsInstaller; - byteLength: (buf: string, encoding?: string) => number; - hrtime: (start?: number[]) => number[]; + byteLength: (buf: string, encoding?: BufferEncoding) => number; + hrtime: (start?: [ + number, + number + ]) => [ + number, + number + ]; logger: Logger; /** * If falsy, all events are suppressed. @@ -3761,8 +3806,6 @@ declare namespace ts { eventHandler?: ProjectServiceEventHandler; /** Has no effect if eventHandler is also specified. */ suppressDiagnosticEvents?: boolean; - /** @deprecated use serverMode instead */ - syntaxOnly?: boolean; serverMode?: LanguageServiceMode; throttleWaitMilliseconds?: number; noGetErrOnBackgroundUpdate?: boolean; @@ -3781,7 +3824,7 @@ declare namespace ts { protected host: ServerHost; private readonly cancellationToken; protected readonly typingsInstaller: ITypingsInstaller; - protected byteLength: (buf: string, encoding?: string) => number; + protected byteLength: (buf: string, encoding?: BufferEncoding) => number; private hrtime; protected logger: Logger; protected canUseEvents: boolean; @@ -3799,9 +3842,6 @@ declare namespace ts { send(msg: protocol.Message): void; protected writeMessage(msg: protocol.Message): void; event(body: T, eventName: string): void; - /** @deprecated */ - output(info: any, cmdName: string, reqSeq?: number, errorMsg?: string): void; - private doOutput; private semanticCheck; private syntacticCheck; private suggestionCheck; @@ -4283,15 +4323,15 @@ declare namespace ts { ShorthandPropertyAssignment = 300, SpreadAssignment = 301, EnumMember = 302, - UnparsedPrologue = 303, - UnparsedPrepend = 304, - UnparsedText = 305, - UnparsedInternalText = 306, - UnparsedSyntheticReference = 307, + /** @deprecated */ UnparsedPrologue = 303, + /** @deprecated */ UnparsedPrepend = 304, + /** @deprecated */ UnparsedText = 305, + /** @deprecated */ UnparsedInternalText = 306, + /** @deprecated */ UnparsedSyntheticReference = 307, SourceFile = 308, Bundle = 309, - UnparsedSource = 310, - InputFiles = 311, + /** @deprecated */ UnparsedSource = 310, + /** @deprecated */ InputFiles = 311, JSDocTypeExpression = 312, JSDocNameReference = 313, JSDocMemberName = 314, @@ -4335,14 +4375,15 @@ declare namespace ts { JSDocSeeTag = 350, JSDocPropertyTag = 351, JSDocThrowsTag = 352, - SyntaxList = 353, - NotEmittedStatement = 354, - PartiallyEmittedExpression = 355, - CommaListExpression = 356, - MergeDeclarationMarker = 357, - EndOfDeclarationMarker = 358, - SyntheticReferenceExpression = 359, - Count = 360, + JSDocSatisfiesTag = 353, + SyntaxList = 354, + NotEmittedStatement = 355, + PartiallyEmittedExpression = 356, + CommaListExpression = 357, + MergeDeclarationMarker = 358, + EndOfDeclarationMarker = 359, + SyntheticReferenceExpression = 360, + Count = 361, FirstAssignment = 63, LastAssignment = 78, FirstCompoundAssignment = 64, @@ -4371,14 +4412,14 @@ declare namespace ts { LastStatement = 256, FirstNode = 163, FirstJSDocNode = 312, - LastJSDocNode = 352, + LastJSDocNode = 353, FirstJSDocTagNode = 330, - LastJSDocTagNode = 352 + LastJSDocTagNode = 353 } type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia; type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral; type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail; - type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken; + type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken; type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InferKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.OfKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.RequireKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword; type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword; type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword; @@ -4475,30 +4516,6 @@ declare namespace ts { getLastToken(sourceFile?: SourceFile): Node | undefined; forEachChild(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined): T | undefined; } - interface Node { - /** - * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them. - * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators. - * Use `ts.getDecorators()` to get the decorators of a `Node`. - * - * For example: - * ```ts - * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined; - * ``` - */ - readonly decorators?: undefined; - /** - * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them. - * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers. - * Use `ts.getModifiers()` to get the modifiers of a `Node`. - * - * For example: - * ```ts - * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined; - * ``` - */ - readonly modifiers?: NodeArray | undefined; - } interface JSDocContainer extends Node { _jsdocContainerBrand: any; } @@ -4530,6 +4547,9 @@ declare namespace ts { type ExclamationToken = PunctuationToken; type ColonToken = PunctuationToken; type EqualsToken = PunctuationToken; + type AmpersandAmpersandEqualsToken = PunctuationToken; + type BarBarEqualsToken = PunctuationToken; + type QuestionQuestionEqualsToken = PunctuationToken; type AsteriskToken = PunctuationToken; type EqualsGreaterThanToken = PunctuationToken; type PlusToken = PunctuationToken; @@ -4541,10 +4561,6 @@ declare namespace ts { type AssertKeyword = KeywordToken; type AwaitKeyword = KeywordToken; type CaseKeyword = KeywordToken; - /** @deprecated Use `AwaitKeyword` instead. */ - type AwaitKeywordToken = AwaitKeyword; - /** @deprecated Use `AssertsKeyword` instead. */ - type AssertsToken = AssertsKeyword; interface ModifierToken extends KeywordToken { } type AbstractKeyword = ModifierToken; @@ -4562,8 +4578,6 @@ declare namespace ts { type OutKeyword = ModifierToken; type OverrideKeyword = ModifierToken; type StaticKeyword = ModifierToken; - /** @deprecated Use `ReadonlyKeyword` instead. */ - type ReadonlyToken = ReadonlyKeyword; type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword; type ModifierLike = Modifier | Decorator; type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword; @@ -4584,12 +4598,16 @@ declare namespace ts { * Text of identifier, but if the identifier begins with two underscores, this will begin with three. */ readonly escapedText: __String; - readonly originalKeywordKind?: SyntaxKind; - isInJSDocNamespace?: boolean; } interface Identifier { readonly text: string; } + interface Identifier { + /** @deprecated Use `idKeyword(identifier)` instead. */ + readonly originalKeywordKind?: SyntaxKind; + /** @deprecated Use `.parent` or the surrounding context to determine this instead. */ + readonly isInJSDocNamespace?: boolean; + } interface TransientIdentifier extends Identifier { resolvedSymbol: Symbol; } @@ -4692,10 +4710,6 @@ declare namespace ts { readonly questionToken?: QuestionToken; readonly type?: TypeNode; } - interface PropertySignature { - /** @deprecated A property signature cannot have an initializer */ - readonly initializer?: Expression | undefined; - } interface PropertyDeclaration extends ClassElement, JSDocContainer { readonly kind: SyntaxKind.PropertyDeclaration; readonly parent: ClassLikeDeclaration; @@ -4721,12 +4735,6 @@ declare namespace ts { readonly name: PropertyName; readonly initializer: Expression; } - interface PropertyAssignment { - /** @deprecated A property assignment cannot have a question token */ - readonly questionToken?: QuestionToken | undefined; - /** @deprecated A property assignment cannot have an exclamation token */ - readonly exclamationToken?: ExclamationToken | undefined; - } interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer { readonly kind: SyntaxKind.ShorthandPropertyAssignment; readonly parent: ObjectLiteralExpression; @@ -4734,14 +4742,6 @@ declare namespace ts { readonly equalsToken?: EqualsToken; readonly objectAssignmentInitializer?: Expression; } - interface ShorthandPropertyAssignment { - /** @deprecated A shorthand property assignment cannot have modifiers */ - readonly modifiers?: NodeArray | undefined; - /** @deprecated A shorthand property assignment cannot have a question token */ - readonly questionToken?: QuestionToken | undefined; - /** @deprecated A shorthand property assignment cannot have an exclamation token */ - readonly exclamationToken?: ExclamationToken | undefined; - } interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer { readonly kind: SyntaxKind.SpreadAssignment; readonly parent: ObjectLiteralExpression; @@ -4780,7 +4780,7 @@ declare namespace ts { type FunctionLike = SignatureDeclaration; interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement, LocalsContainer { readonly kind: SyntaxKind.FunctionDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name?: Identifier; readonly body?: FunctionBody; } @@ -4800,7 +4800,7 @@ declare namespace ts { interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.Constructor; readonly parent: ClassLikeDeclaration; - readonly modifiers?: NodeArray | undefined; + readonly modifiers?: NodeArray | undefined; readonly body?: FunctionBody | undefined; } /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */ @@ -4826,7 +4826,7 @@ declare namespace ts { interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement, LocalsContainer { readonly kind: SyntaxKind.IndexSignature; readonly parent: ObjectTypeDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly type: TypeNode; } interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer, LocalsContainer { @@ -4864,10 +4864,6 @@ declare namespace ts { interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer { readonly kind: SyntaxKind.FunctionType; } - interface FunctionTypeNode { - /** @deprecated A function type cannot have modifiers */ - readonly modifiers?: NodeArray | undefined; - } interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer { readonly kind: SyntaxKind.ConstructorType; readonly modifiers?: NodeArray; @@ -5409,7 +5405,7 @@ declare namespace ts { interface DebuggerStatement extends Statement, FlowContainer { readonly kind: SyntaxKind.DebuggerStatement; } - interface MissingDeclaration extends DeclarationStatement { + interface MissingDeclaration extends DeclarationStatement, PrimaryExpression { readonly kind: SyntaxKind.MissingDeclaration; readonly name?: Identifier; } @@ -5420,7 +5416,7 @@ declare namespace ts { } interface VariableStatement extends Statement, FlowContainer { readonly kind: SyntaxKind.VariableStatement; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly declarationList: VariableDeclarationList; } interface ExpressionStatement extends Statement, FlowContainer { @@ -5557,7 +5553,7 @@ declare namespace ts { } interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.InterfaceDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly heritageClauses?: NodeArray; @@ -5571,7 +5567,7 @@ declare namespace ts { } interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.TypeAliasDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly type: TypeNode; @@ -5584,7 +5580,7 @@ declare namespace ts { } interface EnumDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.EnumDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly members: NodeArray; } @@ -5593,7 +5589,7 @@ declare namespace ts { interface ModuleDeclaration extends DeclarationStatement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.ModuleDeclaration; readonly parent: ModuleBody | SourceFile; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: ModuleName; readonly body?: ModuleBody | JSDocNamespaceDeclaration; } @@ -5621,7 +5617,7 @@ declare namespace ts { interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ImportEqualsDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly isTypeOnly: boolean; readonly moduleReference: ModuleReference; @@ -5634,7 +5630,7 @@ declare namespace ts { interface ImportDeclaration extends Statement { readonly kind: SyntaxKind.ImportDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly importClause?: ImportClause; /** If this is not a StringLiteral it will be a grammar error. */ readonly moduleSpecifier: Expression; @@ -5679,7 +5675,7 @@ declare namespace ts { interface ExportDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ExportDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly isTypeOnly: boolean; /** Will not be assigned in the case of `export * from "foo";` */ readonly exportClause?: NamedExportBindings; @@ -5713,8 +5709,8 @@ declare namespace ts { readonly name: Identifier; } type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier; - type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier; - type TypeOnlyAliasDeclaration = ImportClause & { + type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier | ExportDeclaration | NamespaceExport; + type TypeOnlyImportDeclaration = ImportClause & { readonly isTypeOnly: true; readonly name: Identifier; } | ImportEqualsDeclaration & { @@ -5731,7 +5727,8 @@ declare namespace ts { readonly isTypeOnly: true; }; }; - }) | ExportSpecifier & ({ + }); + type TypeOnlyExportDeclaration = ExportSpecifier & ({ readonly isTypeOnly: true; } | { readonly parent: NamedExports & { @@ -5739,7 +5736,14 @@ declare namespace ts { readonly isTypeOnly: true; }; }; - }); + }) | ExportDeclaration & { + readonly isTypeOnly: true; + } | NamespaceExport & { + readonly parent: ExportDeclaration & { + readonly isTypeOnly: true; + }; + }; + type TypeOnlyAliasDeclaration = TypeOnlyImportDeclaration | TypeOnlyExportDeclaration; /** * This is either an `export =` or an `export default` declaration. * Unless `isExportEquals` is set, this node was parsed as an `export default`. @@ -5747,7 +5751,7 @@ declare namespace ts { interface ExportAssignment extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ExportAssignment; readonly parent: SourceFile; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly isExportEquals?: boolean; readonly expression: Expression; } @@ -5967,6 +5971,10 @@ declare namespace ts { /** If true, then this type literal represents an *array* of its type. */ readonly isArrayType: boolean; } + interface JSDocSatisfiesTag extends JSDocTag { + readonly kind: SyntaxKind.JSDocSatisfiesTag; + readonly typeExpression: JSDocTypeExpression; + } enum FlowFlags { Unreachable = 1, Start = 2, @@ -6092,9 +6100,10 @@ declare namespace ts { } interface Bundle extends Node { readonly kind: SyntaxKind.Bundle; - readonly prepends: readonly (InputFiles | UnparsedSource)[]; + /** @deprecated */ readonly prepends: readonly (InputFiles | UnparsedSource)[]; readonly sourceFiles: readonly SourceFile[]; } + /** @deprecated */ interface InputFiles extends Node { readonly kind: SyntaxKind.InputFiles; javascriptPath?: string; @@ -6106,6 +6115,7 @@ declare namespace ts { declarationMapPath?: string; declarationMapText?: string; } + /** @deprecated */ interface UnparsedSource extends Node { readonly kind: SyntaxKind.UnparsedSource; fileName: string; @@ -6121,28 +6131,35 @@ declare namespace ts { readonly syntheticReferences?: readonly UnparsedSyntheticReference[]; readonly texts: readonly UnparsedSourceText[]; } + /** @deprecated */ type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike; + /** @deprecated */ type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference; + /** @deprecated */ interface UnparsedSection extends Node { readonly kind: SyntaxKind; readonly parent: UnparsedSource; readonly data?: string; } + /** @deprecated */ interface UnparsedPrologue extends UnparsedSection { readonly kind: SyntaxKind.UnparsedPrologue; readonly parent: UnparsedSource; readonly data: string; } + /** @deprecated */ interface UnparsedPrepend extends UnparsedSection { readonly kind: SyntaxKind.UnparsedPrepend; readonly parent: UnparsedSource; readonly data: string; readonly texts: readonly UnparsedTextLike[]; } + /** @deprecated */ interface UnparsedTextLike extends UnparsedSection { readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText; readonly parent: UnparsedSource; } + /** @deprecated */ interface UnparsedSyntheticReference extends UnparsedSection { readonly kind: SyntaxKind.UnparsedSyntheticReference; readonly parent: UnparsedSource; @@ -6283,9 +6300,7 @@ declare namespace ts { DiagnosticsPresent_OutputsSkipped = 1, DiagnosticsPresent_OutputsGenerated = 2, InvalidProject_OutputsSkipped = 3, - ProjectReferenceCycle_OutputsSkipped = 4, - /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */ - ProjectReferenceCycle_OutputsSkupped = 4 + ProjectReferenceCycle_OutputsSkipped = 4 } interface EmitResult { emitSkipped: boolean; @@ -6415,8 +6430,6 @@ declare namespace ts { OmitThisParameter = 33554432, AllowThisInObjectLiteral = 32768, AllowQualifiedNameInPlaceOfIdentifier = 65536, - /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */ - AllowQualifedNameInPlaceOfIdentifier = 65536, AllowAnonymousIdentifier = 131072, AllowEmptyUnionOrIntersection = 262144, AllowEmptyTuple = 524288, @@ -6451,7 +6464,6 @@ declare namespace ts { InElementType = 2097152, InFirstTypeArgument = 4194304, InTypeAlias = 8388608, - /** @deprecated */ WriteOwnNameForAnyLike = 0, NodeBuilderFlagsMask = 848330091 } enum SymbolFormatFlags { @@ -6907,8 +6919,6 @@ declare namespace ts { PriorityImpliesCombination = 416, Circularity = -1 } - /** @deprecated Use FileExtensionInfo instead. */ - type JsFileExtensionInfo = FileExtensionInfo; interface FileExtensionInfo { extension: string; isMixedContent: boolean; @@ -7116,6 +7126,7 @@ declare namespace ts { types?: string[]; /** Paths used to compute primary types search locations */ typeRoots?: string[]; + verbatimModuleSyntax?: boolean; esModuleInterop?: boolean; useDefineForClassFields?: boolean; [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined; @@ -7130,11 +7141,6 @@ declare namespace ts { [option: string]: CompilerOptionsValue | undefined; } interface TypeAcquisition { - /** - * @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - enableAutoDiscovery?: boolean; enable?: boolean; include?: string[]; exclude?: string[]; @@ -7510,8 +7516,8 @@ declare namespace ts { updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): MethodSignature; createMethodDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; updateMethodDeclaration(node: MethodDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; + createConstructorDeclaration(modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; + updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; @@ -7520,8 +7526,8 @@ declare namespace ts { updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): CallSignatureDeclaration; createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration; updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): ConstructSignatureDeclaration; - createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; + createIndexSignature(modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; + updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration; @@ -7657,8 +7663,8 @@ declare namespace ts { createSemicolonClassElement(): SemicolonClassElement; createBlock(statements: readonly Statement[], multiLine?: boolean): Block; updateBlock(node: Block, statements: readonly Statement[]): Block; - createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement; - updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement; + createVariableStatement(modifiers: readonly ModifierLike[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement; + updateVariableStatement(node: VariableStatement, modifiers: readonly ModifierLike[] | undefined, declarationList: VariableDeclarationList): VariableStatement; createEmptyStatement(): EmptyStatement; createExpressionStatement(expression: Expression): ExpressionStatement; updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement; @@ -7699,24 +7705,24 @@ declare namespace ts { updateFunctionDeclaration(node: FunctionDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; - updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; - createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; - updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; + createInterfaceDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; + updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; + createTypeAliasDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; + updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; + createEnumDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; + updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; + createModuleDeclaration(modifiers: readonly ModifierLike[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; + updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly ModifierLike[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; createModuleBlock(statements: readonly Statement[]): ModuleBlock; updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock; createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock; updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock; createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration; updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration; - createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; - updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; + createImportEqualsDeclaration(modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; + updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; + createImportDeclaration(modifiers: readonly ModifierLike[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; + updateImportDeclaration(node: ImportDeclaration, modifiers: readonly ModifierLike[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; createAssertClause(elements: NodeArray, multiLine?: boolean): AssertClause; @@ -7733,10 +7739,10 @@ declare namespace ts { updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports; createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; - createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; - updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; - updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; + createExportAssignment(modifiers: readonly ModifierLike[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; + updateExportAssignment(node: ExportAssignment, modifiers: readonly ModifierLike[] | undefined, expression: Expression): ExportAssignment; + createExportDeclaration(modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; + updateExportDeclaration(node: ExportDeclaration, modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; @@ -7813,12 +7819,14 @@ declare namespace ts { updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray | undefined): JSDocReadonlyTag; createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray): JSDocUnknownTag; updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray | undefined): JSDocUnknownTag; - createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray): JSDocDeprecatedTag; - updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray): JSDocDeprecatedTag; - createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray): JSDocOverrideTag; - updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray): JSDocOverrideTag; + createJSDocDeprecatedTag(tagName: Identifier | undefined, comment?: string | NodeArray): JSDocDeprecatedTag; + updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier | undefined, comment?: string | NodeArray): JSDocDeprecatedTag; + createJSDocOverrideTag(tagName: Identifier | undefined, comment?: string | NodeArray): JSDocOverrideTag; + updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier | undefined, comment?: string | NodeArray): JSDocOverrideTag; createJSDocThrowsTag(tagName: Identifier, typeExpression: JSDocTypeExpression | undefined, comment?: string | NodeArray): JSDocThrowsTag; updateJSDocThrowsTag(node: JSDocThrowsTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment?: string | NodeArray | undefined): JSDocThrowsTag; + createJSDocSatisfiesTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray): JSDocSatisfiesTag; + updateJSDocSatisfiesTag(node: JSDocSatisfiesTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray | undefined): JSDocSatisfiesTag; createJSDocText(text: string): JSDocText; updateJSDocText(node: JSDocText, text: string): JSDocText; createJSDocComment(comment?: string | NodeArray | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc; @@ -7868,8 +7876,10 @@ declare namespace ts { updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression; createCommaListExpression(elements: readonly Expression[]): CommaListExpression; updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression; - createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; - updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; + createBundle(sourceFiles: readonly SourceFile[]): Bundle; + /** @deprecated*/ createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; + updateBundle(node: Bundle, sourceFiles: readonly SourceFile[]): Bundle; + /** @deprecated*/ updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; createComma(left: Expression, right: Expression): BinaryExpression; createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment; createAssignment(left: Expression, right: Expression): AssignmentExpression; @@ -7912,179 +7922,6 @@ declare namespace ts { createExternalModuleExport(exportName: Identifier): ExportDeclaration; restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression; } - interface NodeFactory { - /** @deprecated Use the overload that accepts 'modifiers' */ - createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode; - /** @deprecated Use the overload that accepts 'modifiers' */ - updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode): ConstructorTypeNode; - } - interface NodeFactory { - createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; - /** @deprecated Use the overload that accepts 'assertions' */ - createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; - /** @deprecated Use the overload that accepts 'assertions' */ - updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode; - } - interface NodeFactory { - /** @deprecated Use the overload that accepts 'modifiers' */ - createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration; - /** @deprecated Use the overload that accepts 'modifiers' */ - updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration; - } - interface NodeFactory { - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateParameterDeclaration(node: ParameterDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updatePropertyDeclaration(node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createMethodDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateMethodDeclaration(node: MethodDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - /** - * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. - */ - createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - /** - * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - /** - * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. - */ - updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - /** - * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. - */ - createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createClassExpression(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassExpression(node: ClassExpression, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createFunctionDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateFunctionDeclaration(node: FunctionDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createClassDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassDeclaration(node: ClassDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateInterfaceDeclaration(node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; - } interface CoreTransformationContext { readonly factory: NodeFactory; /** Gets the compiler options supplied to the transformer. */ @@ -8181,16 +8018,39 @@ declare namespace ts { /** * A function that accepts and possibly transforms a node. */ - type Visitor = (node: Node) => VisitResult; + type Visitor = (node: TIn) => VisitResult; + /** + * A function that walks a node using the given visitor, lifting node arrays into single nodes, + * returning an node which satisfies the test. + * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * + * For the canonical implementation of this type, @see {visitNode}. + */ interface NodeVisitor { - (nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; - (nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; + (node: TIn, visitor: Visitor, TVisited>, test: (node: Node) => node is TOut, lift?: (node: readonly Node[]) => Node): TOut | (TIn & undefined) | (TVisited & undefined); + (node: TIn, visitor: Visitor, TVisited>, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => Node): Node | (TIn & undefined) | (TVisited & undefined); } + /** + * A function that walks a node array using the given visitor, returning an array whose contents satisfy the test. + * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * + * For the canonical implementation of this type, @see {visitNodes}. + */ interface NodesVisitor { - (nodes: NodeArray, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray; - (nodes: NodeArray | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | undefined; + | undefined, TOut extends Node>(nodes: TInArray, visitor: Visitor, test: (node: Node) => node is TOut, start?: number, count?: number): NodeArray | (TInArray & undefined); + | undefined>(nodes: TInArray, visitor: Visitor, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | (TInArray & undefined); } - type VisitResult = T | readonly T[] | undefined; + type VisitResult = T | readonly Node[]; interface Printer { /** * Print a node and its subtree as-is, without any emit transformations. @@ -8390,6 +8250,11 @@ declare namespace ts { readonly allowRenameOfImportPath?: boolean; readonly autoImportFileExcludePatterns?: string[]; readonly organizeImportsIgnoreCase?: "auto" | boolean; + readonly organizeImportsCollation?: "ordinal" | "unicode"; + readonly organizeImportsLocale?: string; + readonly organizeImportsNumericCollation?: boolean; + readonly organizeImportsAccentCollation?: boolean; + readonly organizeImportsCaseFirst?: "upper" | "lower" | false; } /** Represents a bigint literal value without requiring bigint support */ interface PseudoBigInt { @@ -8404,6 +8269,7 @@ declare namespace ts { } type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void; type DirectoryWatcherCallback = (fileName: string) => void; + type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex"; interface System { args: string[]; newLine: string; @@ -8462,8 +8328,8 @@ declare namespace ts { function forEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; function forEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined; function forEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; - function reduceEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; - function reduceEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; + function reduceEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U | undefined; + function reduceEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U | undefined; function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined; function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined; /** Optionally, get the shebang */ @@ -8542,7 +8408,7 @@ declare namespace ts { function getTypeParameterOwner(d: Declaration): Declaration | undefined; function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration; function isEmptyBindingPattern(node: BindingName): node is BindingPattern; - function isEmptyBindingElement(node: BindingElement): boolean; + function isEmptyBindingElement(node: BindingElement | ArrayBindingElement): boolean; function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration; function getCombinedModifierFlags(node: Declaration): ModifierFlags; function getCombinedNodeFlags(node: Node): NodeFlags; @@ -8559,7 +8425,7 @@ declare namespace ts { function getOriginalNode(node: Node): Node; function getOriginalNode(node: Node, nodeTest: (node: Node) => node is T): T; function getOriginalNode(node: Node | undefined): Node | undefined; - function getOriginalNode(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined; + function getOriginalNode(node: Node | undefined, nodeTest: (node: Node) => node is T): T | undefined; /** * Iterates through the parent chain of a node and performs the callback on each parent until the callback * returns a truthy value, then returns that value. @@ -8599,6 +8465,11 @@ declare namespace ts { */ function unescapeLeadingUnderscores(identifier: __String): string; function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string; + /** + * If the text of an Identifier matches a keyword (including contextual and TypeScript-specific keywords), returns the + * SyntaxKind for the matching keyword. + */ + function identifierToKeywordKind(node: Identifier): KeywordSyntaxKind | undefined; function symbolName(symbol: Symbol): string; function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined; function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined; @@ -8660,6 +8531,7 @@ declare namespace ts { function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined; /** Gets the JSDoc template tag for the node if present */ function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined; + function getJSDocSatisfiesTag(node: Node): JSDocSatisfiesTag | undefined; /** Gets the JSDoc type tag for the node if present and valid */ function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined; /** @@ -8713,7 +8585,9 @@ declare namespace ts { function isNonNullChain(node: Node): node is NonNullChain; function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement; function isNamedExportBindings(node: Node): node is NamedExportBindings; + /** @deprecated */ function isUnparsedTextLike(node: Node): node is UnparsedTextLike; + /** @deprecated */ function isUnparsedNode(node: Node): node is UnparsedNode; function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag; /** @@ -8732,6 +8606,8 @@ declare namespace ts { function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken; function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; + function isTypeOnlyImportDeclaration(node: Node): node is TypeOnlyImportDeclaration; + function isTypeOnlyExportDeclaration(node: Node): node is TypeOnlyExportDeclaration; function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration; function isAssertionKey(node: Node): node is AssertionKey; function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; @@ -8755,13 +8631,30 @@ declare namespace ts { */ function isTypeNode(node: Node): node is TypeNode; function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode; + function isArrayBindingElement(node: Node): node is ArrayBindingElement; function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName; function isCallLikeExpression(node: Node): node is CallLikeExpression; function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression; function isTemplateLiteral(node: Node): node is TemplateLiteral; + function isLeftHandSideExpression(node: Node): node is LeftHandSideExpression; + function isLiteralTypeLiteral(node: Node): node is NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression; + /** + * Determines whether a node is an expression based only on its kind. + */ + function isExpression(node: Node): node is Expression; function isAssertionExpression(node: Node): node is AssertionExpression; function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement; function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement; + function isConciseBody(node: Node): node is ConciseBody; + function isForInitializer(node: Node): node is ForInitializer; + function isModuleBody(node: Node): node is ModuleBody; + function isNamedImportBindings(node: Node): node is NamedImportBindings; + function isStatement(node: Node): node is Statement; + function isModuleReference(node: Node): node is ModuleReference; + function isJsxTagNameExpression(node: Node): node is JsxTagNameExpression; + function isJsxChild(node: Node): node is JsxChild; + function isJsxAttributeLike(node: Node): node is JsxAttributeLike; + function isStringLiteralOrJsxExpression(node: Node): node is StringLiteral | JsxExpression; function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement; function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause; /** True if node is of a kind that may contain comment text. */ @@ -8781,11 +8674,17 @@ declare namespace ts { name: Identifier; }; function emitModuleKindIsNonNodeESM(moduleKind: ModuleKind): boolean; + /** @deprecated */ function createUnparsedSourceFile(text: string): UnparsedSource; + /** @deprecated */ function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource; + /** @deprecated */ function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource; + /** @deprecated */ function createInputFiles(javascriptText: string, declarationText: string): InputFiles; + /** @deprecated */ function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles; + /** @deprecated */ function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles; /** * Create an external source map source file reference @@ -8874,8 +8773,15 @@ declare namespace ts { function isPlusToken(node: Node): node is PlusToken; function isMinusToken(node: Node): node is MinusToken; function isAsteriskToken(node: Node): node is AsteriskToken; + function isExclamationToken(node: Node): node is ExclamationToken; + function isQuestionToken(node: Node): node is QuestionToken; + function isColonToken(node: Node): node is ColonToken; + function isQuestionDotToken(node: Node): node is QuestionDotToken; + function isEqualsGreaterThanToken(node: Node): node is EqualsGreaterThanToken; function isIdentifier(node: Node): node is Identifier; function isPrivateIdentifier(node: Node): node is PrivateIdentifier; + function isAssertsKeyword(node: Node): node is AssertsKeyword; + function isAwaitKeyword(node: Node): node is AwaitKeyword; function isQualifiedName(node: Node): node is QualifiedName; function isComputedPropertyName(node: Node): node is ComputedPropertyName; function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration; @@ -9019,9 +8925,11 @@ declare namespace ts { function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment; function isSpreadAssignment(node: Node): node is SpreadAssignment; function isEnumMember(node: Node): node is EnumMember; + /** @deprecated */ function isUnparsedPrepend(node: Node): node is UnparsedPrepend; function isSourceFile(node: Node): node is SourceFile; function isBundle(node: Node): node is Bundle; + /** @deprecated */ function isUnparsedSource(node: Node): node is UnparsedSource; function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression; function isJSDocNameReference(node: Node): node is JSDocNameReference; @@ -9062,7 +8970,14 @@ declare namespace ts { function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag; function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag; function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag; + function isJSDocSatisfiesTag(node: Node): node is JSDocSatisfiesTag; function isJSDocThrowsTag(node: Node): node is JSDocThrowsTag; + function isQuestionOrExclamationToken(node: Node): node is QuestionToken | ExclamationToken; + function isIdentifierOrThisTypeNode(node: Node): node is Identifier | ThisTypeNode; + function isReadonlyKeywordOrPlusOrMinusToken(node: Node): node is ReadonlyKeyword | PlusToken | MinusToken; + function isQuestionOrPlusOrMinusToken(node: Node): node is QuestionToken | PlusToken | MinusToken; + function isModuleName(node: Node): node is ModuleName; + function isBinaryOperatorToken(node: Node): node is BinaryOperatorToken; function setTextRange(range: T, location: TextRange | undefined): T; function canHaveModifiers(node: Node): node is HasModifiers; function canHaveDecorators(node: Node): node is HasDecorators; @@ -9270,41 +9185,65 @@ declare namespace ts { /** * Visits a Node using the supplied visitor, possibly returning a new Node in its place. * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param node The Node to visit. * @param visitor The callback used to visit the Node. * @param test A callback to execute to verify the Node is valid. * @param lift An optional callback to execute to lift a NodeArray into a valid Node. */ - function visitNode(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; + function visitNode(node: TIn, visitor: Visitor, TVisited>, test: (node: Node) => node is TOut, lift?: (node: readonly Node[]) => Node): TOut | (TIn & undefined) | (TVisited & undefined); /** * Visits a Node using the supplied visitor, possibly returning a new Node in its place. * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param node The Node to visit. * @param visitor The callback used to visit the Node. * @param test A callback to execute to verify the Node is valid. * @param lift An optional callback to execute to lift a NodeArray into a valid Node. */ - function visitNode(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; + function visitNode(node: TIn, visitor: Visitor, TVisited>, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => Node): Node | (TIn & undefined) | (TVisited & undefined); /** * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param nodes The NodeArray to visit. * @param visitor The callback used to visit a Node. * @param test A node test to execute for each node. * @param start An optional value indicating the starting offset at which to start visiting. * @param count An optional value indicating the maximum number of nodes to visit. */ - function visitNodes(nodes: NodeArray, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray; + function visitNodes | undefined, TOut extends Node>(nodes: TInArray, visitor: Visitor, test: (node: Node) => node is TOut, start?: number, count?: number): NodeArray | (TInArray & undefined); /** * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param nodes The NodeArray to visit. * @param visitor The callback used to visit a Node. * @param test A node test to execute for each node. * @param start An optional value indicating the starting offset at which to start visiting. * @param count An optional value indicating the maximum number of nodes to visit. */ - function visitNodes(nodes: NodeArray | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | undefined; + function visitNodes | undefined>(nodes: TInArray, visitor: Visitor, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | (TInArray & undefined); /** * Starts a new lexical environment and visits a statement list, ending the lexical environment * and merging hoisted declarations upon completion. @@ -9335,6 +9274,12 @@ declare namespace ts { * Visits an iteration body, adding any block-scoped variables required by the transformation. */ function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement; + /** + * Visits the elements of a {@link CommaListExpression}. + * @param visitor The visitor to use when visiting expressions whose result will not be discarded at runtime. + * @param discardVisitor The visitor to use when visiting expressions whose result will be discarded at runtime. Defaults to {@link visitor}. + */ + function visitCommaListElements(elements: NodeArray, visitor: Visitor, discardVisitor?: Visitor): NodeArray; /** * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place. * @@ -9430,15 +9375,11 @@ declare namespace ts { * Note: The file might not exist. */ function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName; - /** @deprecated */ function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName; interface FormatDiagnosticsHost { getCurrentDirectory(): string; getCanonicalFileName(fileName: string): string; getNewLine(): string; } - /** @deprecated */ interface ResolveProjectReferencePathHost { - fileExists(fileName: string): boolean; - } interface EmitOutput { outputFiles: OutputFile[]; emitSkipped: boolean; @@ -9781,7 +9722,7 @@ declare namespace ts { } enum InvalidatedProjectKind { Build = 0, - UpdateBundle = 1, + /** @deprecated */ UpdateBundle = 1, UpdateOutputFileStamps = 2 } interface InvalidatedProjectBase { @@ -9813,6 +9754,7 @@ declare namespace ts { getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult; emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined; } + /** @deprecated */ interface UpdateBundleProject extends InvalidatedProjectBase { readonly kind: InvalidatedProjectKind.UpdateBundle; emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject | undefined; @@ -11080,738 +11022,5 @@ declare namespace ts { * @param compilerOptions Optional compiler options. */ function transform(source: T | T[], transformers: TransformerFactory[], compilerOptions?: CompilerOptions): TransformationResult; - /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */ - const createNodeArray: typeof factory.createNodeArray; - /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */ - const createNumericLiteral: typeof factory.createNumericLiteral; - /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */ - const createBigIntLiteral: typeof factory.createBigIntLiteral; - /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */ - const createStringLiteral: typeof factory.createStringLiteral; - /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */ - const createStringLiteralFromNode: typeof factory.createStringLiteralFromNode; - /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */ - const createRegularExpressionLiteral: typeof factory.createRegularExpressionLiteral; - /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */ - const createLoopVariable: typeof factory.createLoopVariable; - /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */ - const createUniqueName: typeof factory.createUniqueName; - /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */ - const createPrivateIdentifier: typeof factory.createPrivateIdentifier; - /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */ - const createSuper: typeof factory.createSuper; - /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */ - const createThis: typeof factory.createThis; - /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */ - const createNull: typeof factory.createNull; - /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */ - const createTrue: typeof factory.createTrue; - /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */ - const createFalse: typeof factory.createFalse; - /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */ - const createModifier: typeof factory.createModifier; - /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */ - const createModifiersFromModifierFlags: typeof factory.createModifiersFromModifierFlags; - /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */ - const createQualifiedName: typeof factory.createQualifiedName; - /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */ - const updateQualifiedName: typeof factory.updateQualifiedName; - /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */ - const createComputedPropertyName: typeof factory.createComputedPropertyName; - /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */ - const updateComputedPropertyName: typeof factory.updateComputedPropertyName; - /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ - const createTypeParameterDeclaration: typeof factory.createTypeParameterDeclaration; - /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ - const updateTypeParameterDeclaration: typeof factory.updateTypeParameterDeclaration; - /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */ - const createParameter: typeof factory.createParameterDeclaration; - /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */ - const updateParameter: typeof factory.updateParameterDeclaration; - /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */ - const createDecorator: typeof factory.createDecorator; - /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */ - const updateDecorator: typeof factory.updateDecorator; - /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */ - const createProperty: typeof factory.createPropertyDeclaration; - /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */ - const updateProperty: typeof factory.updatePropertyDeclaration; - /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */ - const createMethod: typeof factory.createMethodDeclaration; - /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */ - const updateMethod: typeof factory.updateMethodDeclaration; - /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */ - const createConstructor: typeof factory.createConstructorDeclaration; - /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */ - const updateConstructor: typeof factory.updateConstructorDeclaration; - /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const createGetAccessor: typeof factory.createGetAccessorDeclaration; - /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const updateGetAccessor: typeof factory.updateGetAccessorDeclaration; - /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const createSetAccessor: typeof factory.createSetAccessorDeclaration; - /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const updateSetAccessor: typeof factory.updateSetAccessorDeclaration; - /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */ - const createCallSignature: typeof factory.createCallSignature; - /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */ - const updateCallSignature: typeof factory.updateCallSignature; - /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */ - const createConstructSignature: typeof factory.createConstructSignature; - /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */ - const updateConstructSignature: typeof factory.updateConstructSignature; - /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */ - const updateIndexSignature: typeof factory.updateIndexSignature; - /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */ - const createKeywordTypeNode: typeof factory.createKeywordTypeNode; - /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ - const createTypePredicateNodeWithModifier: typeof factory.createTypePredicateNode; - /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ - const updateTypePredicateNodeWithModifier: typeof factory.updateTypePredicateNode; - /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */ - const createTypeReferenceNode: typeof factory.createTypeReferenceNode; - /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */ - const updateTypeReferenceNode: typeof factory.updateTypeReferenceNode; - /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */ - const createFunctionTypeNode: typeof factory.createFunctionTypeNode; - /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */ - const updateFunctionTypeNode: typeof factory.updateFunctionTypeNode; - /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */ - const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode; - /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */ - const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode) => ConstructorTypeNode; - /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */ - const createTypeQueryNode: typeof factory.createTypeQueryNode; - /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */ - const updateTypeQueryNode: typeof factory.updateTypeQueryNode; - /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */ - const createTypeLiteralNode: typeof factory.createTypeLiteralNode; - /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */ - const updateTypeLiteralNode: typeof factory.updateTypeLiteralNode; - /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */ - const createArrayTypeNode: typeof factory.createArrayTypeNode; - /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */ - const updateArrayTypeNode: typeof factory.updateArrayTypeNode; - /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */ - const createTupleTypeNode: typeof factory.createTupleTypeNode; - /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */ - const updateTupleTypeNode: typeof factory.updateTupleTypeNode; - /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */ - const createOptionalTypeNode: typeof factory.createOptionalTypeNode; - /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */ - const updateOptionalTypeNode: typeof factory.updateOptionalTypeNode; - /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */ - const createRestTypeNode: typeof factory.createRestTypeNode; - /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */ - const updateRestTypeNode: typeof factory.updateRestTypeNode; - /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */ - const createUnionTypeNode: typeof factory.createUnionTypeNode; - /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */ - const updateUnionTypeNode: typeof factory.updateUnionTypeNode; - /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */ - const createIntersectionTypeNode: typeof factory.createIntersectionTypeNode; - /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */ - const updateIntersectionTypeNode: typeof factory.updateIntersectionTypeNode; - /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */ - const createConditionalTypeNode: typeof factory.createConditionalTypeNode; - /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */ - const updateConditionalTypeNode: typeof factory.updateConditionalTypeNode; - /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */ - const createInferTypeNode: typeof factory.createInferTypeNode; - /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */ - const updateInferTypeNode: typeof factory.updateInferTypeNode; - /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */ - const createImportTypeNode: typeof factory.createImportTypeNode; - /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */ - const updateImportTypeNode: typeof factory.updateImportTypeNode; - /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */ - const createParenthesizedType: typeof factory.createParenthesizedType; - /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */ - const updateParenthesizedType: typeof factory.updateParenthesizedType; - /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */ - const createThisTypeNode: typeof factory.createThisTypeNode; - /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */ - const updateTypeOperatorNode: typeof factory.updateTypeOperatorNode; - /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ - const createIndexedAccessTypeNode: typeof factory.createIndexedAccessTypeNode; - /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ - const updateIndexedAccessTypeNode: typeof factory.updateIndexedAccessTypeNode; - /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */ - const createMappedTypeNode: typeof factory.createMappedTypeNode; - /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */ - const updateMappedTypeNode: typeof factory.updateMappedTypeNode; - /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */ - const createLiteralTypeNode: typeof factory.createLiteralTypeNode; - /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */ - const updateLiteralTypeNode: typeof factory.updateLiteralTypeNode; - /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */ - const createObjectBindingPattern: typeof factory.createObjectBindingPattern; - /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */ - const updateObjectBindingPattern: typeof factory.updateObjectBindingPattern; - /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */ - const createArrayBindingPattern: typeof factory.createArrayBindingPattern; - /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */ - const updateArrayBindingPattern: typeof factory.updateArrayBindingPattern; - /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */ - const createBindingElement: typeof factory.createBindingElement; - /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */ - const updateBindingElement: typeof factory.updateBindingElement; - /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */ - const createArrayLiteral: typeof factory.createArrayLiteralExpression; - /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */ - const updateArrayLiteral: typeof factory.updateArrayLiteralExpression; - /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */ - const createObjectLiteral: typeof factory.createObjectLiteralExpression; - /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */ - const updateObjectLiteral: typeof factory.updateObjectLiteralExpression; - /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */ - const createPropertyAccess: typeof factory.createPropertyAccessExpression; - /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */ - const updatePropertyAccess: typeof factory.updatePropertyAccessExpression; - /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */ - const createPropertyAccessChain: typeof factory.createPropertyAccessChain; - /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */ - const updatePropertyAccessChain: typeof factory.updatePropertyAccessChain; - /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */ - const createElementAccess: typeof factory.createElementAccessExpression; - /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */ - const updateElementAccess: typeof factory.updateElementAccessExpression; - /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */ - const createElementAccessChain: typeof factory.createElementAccessChain; - /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */ - const updateElementAccessChain: typeof factory.updateElementAccessChain; - /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */ - const createCall: typeof factory.createCallExpression; - /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */ - const updateCall: typeof factory.updateCallExpression; - /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */ - const createCallChain: typeof factory.createCallChain; - /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */ - const updateCallChain: typeof factory.updateCallChain; - /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */ - const createNew: typeof factory.createNewExpression; - /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */ - const updateNew: typeof factory.updateNewExpression; - /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */ - const createTypeAssertion: typeof factory.createTypeAssertion; - /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */ - const updateTypeAssertion: typeof factory.updateTypeAssertion; - /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */ - const createParen: typeof factory.createParenthesizedExpression; - /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */ - const updateParen: typeof factory.updateParenthesizedExpression; - /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */ - const createFunctionExpression: typeof factory.createFunctionExpression; - /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */ - const updateFunctionExpression: typeof factory.updateFunctionExpression; - /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */ - const createDelete: typeof factory.createDeleteExpression; - /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */ - const updateDelete: typeof factory.updateDeleteExpression; - /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */ - const createTypeOf: typeof factory.createTypeOfExpression; - /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */ - const updateTypeOf: typeof factory.updateTypeOfExpression; - /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */ - const createVoid: typeof factory.createVoidExpression; - /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */ - const updateVoid: typeof factory.updateVoidExpression; - /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */ - const createAwait: typeof factory.createAwaitExpression; - /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */ - const updateAwait: typeof factory.updateAwaitExpression; - /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */ - const createPrefix: typeof factory.createPrefixUnaryExpression; - /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */ - const updatePrefix: typeof factory.updatePrefixUnaryExpression; - /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */ - const createPostfix: typeof factory.createPostfixUnaryExpression; - /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */ - const updatePostfix: typeof factory.updatePostfixUnaryExpression; - /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */ - const createBinary: typeof factory.createBinaryExpression; - /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */ - const updateConditional: typeof factory.updateConditionalExpression; - /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */ - const createTemplateExpression: typeof factory.createTemplateExpression; - /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */ - const updateTemplateExpression: typeof factory.updateTemplateExpression; - /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */ - const createTemplateHead: typeof factory.createTemplateHead; - /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */ - const createTemplateMiddle: typeof factory.createTemplateMiddle; - /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */ - const createTemplateTail: typeof factory.createTemplateTail; - /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */ - const createNoSubstitutionTemplateLiteral: typeof factory.createNoSubstitutionTemplateLiteral; - /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */ - const updateYield: typeof factory.updateYieldExpression; - /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */ - const createSpread: typeof factory.createSpreadElement; - /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */ - const updateSpread: typeof factory.updateSpreadElement; - /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */ - const createOmittedExpression: typeof factory.createOmittedExpression; - /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */ - const createAsExpression: typeof factory.createAsExpression; - /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */ - const updateAsExpression: typeof factory.updateAsExpression; - /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */ - const createNonNullExpression: typeof factory.createNonNullExpression; - /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */ - const updateNonNullExpression: typeof factory.updateNonNullExpression; - /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */ - const createNonNullChain: typeof factory.createNonNullChain; - /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */ - const updateNonNullChain: typeof factory.updateNonNullChain; - /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */ - const createMetaProperty: typeof factory.createMetaProperty; - /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */ - const updateMetaProperty: typeof factory.updateMetaProperty; - /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */ - const createTemplateSpan: typeof factory.createTemplateSpan; - /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */ - const updateTemplateSpan: typeof factory.updateTemplateSpan; - /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */ - const createSemicolonClassElement: typeof factory.createSemicolonClassElement; - /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */ - const createBlock: typeof factory.createBlock; - /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */ - const updateBlock: typeof factory.updateBlock; - /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */ - const createVariableStatement: typeof factory.createVariableStatement; - /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */ - const updateVariableStatement: typeof factory.updateVariableStatement; - /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */ - const createEmptyStatement: typeof factory.createEmptyStatement; - /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ - const createExpressionStatement: typeof factory.createExpressionStatement; - /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ - const updateExpressionStatement: typeof factory.updateExpressionStatement; - /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ - const createStatement: typeof factory.createExpressionStatement; - /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ - const updateStatement: typeof factory.updateExpressionStatement; - /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */ - const createIf: typeof factory.createIfStatement; - /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */ - const updateIf: typeof factory.updateIfStatement; - /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */ - const createDo: typeof factory.createDoStatement; - /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */ - const updateDo: typeof factory.updateDoStatement; - /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */ - const createWhile: typeof factory.createWhileStatement; - /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */ - const updateWhile: typeof factory.updateWhileStatement; - /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */ - const createFor: typeof factory.createForStatement; - /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */ - const updateFor: typeof factory.updateForStatement; - /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */ - const createForIn: typeof factory.createForInStatement; - /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */ - const updateForIn: typeof factory.updateForInStatement; - /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */ - const createForOf: typeof factory.createForOfStatement; - /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */ - const updateForOf: typeof factory.updateForOfStatement; - /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */ - const createContinue: typeof factory.createContinueStatement; - /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */ - const updateContinue: typeof factory.updateContinueStatement; - /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */ - const createBreak: typeof factory.createBreakStatement; - /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */ - const updateBreak: typeof factory.updateBreakStatement; - /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */ - const createReturn: typeof factory.createReturnStatement; - /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */ - const updateReturn: typeof factory.updateReturnStatement; - /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */ - const createWith: typeof factory.createWithStatement; - /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */ - const updateWith: typeof factory.updateWithStatement; - /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */ - const createSwitch: typeof factory.createSwitchStatement; - /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */ - const updateSwitch: typeof factory.updateSwitchStatement; - /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */ - const createLabel: typeof factory.createLabeledStatement; - /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */ - const updateLabel: typeof factory.updateLabeledStatement; - /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */ - const createThrow: typeof factory.createThrowStatement; - /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */ - const updateThrow: typeof factory.updateThrowStatement; - /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */ - const createTry: typeof factory.createTryStatement; - /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */ - const updateTry: typeof factory.updateTryStatement; - /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */ - const createDebuggerStatement: typeof factory.createDebuggerStatement; - /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */ - const createVariableDeclarationList: typeof factory.createVariableDeclarationList; - /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */ - const updateVariableDeclarationList: typeof factory.updateVariableDeclarationList; - /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */ - const createFunctionDeclaration: typeof factory.createFunctionDeclaration; - /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */ - const updateFunctionDeclaration: typeof factory.updateFunctionDeclaration; - /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */ - const createClassDeclaration: typeof factory.createClassDeclaration; - /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */ - const updateClassDeclaration: typeof factory.updateClassDeclaration; - /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */ - const createInterfaceDeclaration: typeof factory.createInterfaceDeclaration; - /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */ - const updateInterfaceDeclaration: typeof factory.updateInterfaceDeclaration; - /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ - const createTypeAliasDeclaration: typeof factory.createTypeAliasDeclaration; - /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ - const updateTypeAliasDeclaration: typeof factory.updateTypeAliasDeclaration; - /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */ - const createEnumDeclaration: typeof factory.createEnumDeclaration; - /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */ - const updateEnumDeclaration: typeof factory.updateEnumDeclaration; - /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */ - const createModuleDeclaration: typeof factory.createModuleDeclaration; - /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */ - const updateModuleDeclaration: typeof factory.updateModuleDeclaration; - /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */ - const createModuleBlock: typeof factory.createModuleBlock; - /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */ - const updateModuleBlock: typeof factory.updateModuleBlock; - /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */ - const createCaseBlock: typeof factory.createCaseBlock; - /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */ - const updateCaseBlock: typeof factory.updateCaseBlock; - /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ - const createNamespaceExportDeclaration: typeof factory.createNamespaceExportDeclaration; - /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ - const updateNamespaceExportDeclaration: typeof factory.updateNamespaceExportDeclaration; - /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ - const createImportEqualsDeclaration: typeof factory.createImportEqualsDeclaration; - /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ - const updateImportEqualsDeclaration: typeof factory.updateImportEqualsDeclaration; - /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */ - const createImportDeclaration: typeof factory.createImportDeclaration; - /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */ - const updateImportDeclaration: typeof factory.updateImportDeclaration; - /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */ - const createNamespaceImport: typeof factory.createNamespaceImport; - /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */ - const updateNamespaceImport: typeof factory.updateNamespaceImport; - /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */ - const createNamedImports: typeof factory.createNamedImports; - /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */ - const updateNamedImports: typeof factory.updateNamedImports; - /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */ - const createImportSpecifier: typeof factory.createImportSpecifier; - /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */ - const updateImportSpecifier: typeof factory.updateImportSpecifier; - /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */ - const createExportAssignment: typeof factory.createExportAssignment; - /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */ - const updateExportAssignment: typeof factory.updateExportAssignment; - /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */ - const createNamedExports: typeof factory.createNamedExports; - /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */ - const updateNamedExports: typeof factory.updateNamedExports; - /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */ - const createExportSpecifier: typeof factory.createExportSpecifier; - /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */ - const updateExportSpecifier: typeof factory.updateExportSpecifier; - /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */ - const createExternalModuleReference: typeof factory.createExternalModuleReference; - /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */ - const updateExternalModuleReference: typeof factory.updateExternalModuleReference; - /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */ - const createJSDocTypeExpression: typeof factory.createJSDocTypeExpression; - /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */ - const createJSDocTypeTag: typeof factory.createJSDocTypeTag; - /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */ - const createJSDocReturnTag: typeof factory.createJSDocReturnTag; - /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */ - const createJSDocThisTag: typeof factory.createJSDocThisTag; - /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */ - const createJSDocComment: typeof factory.createJSDocComment; - /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ - const createJSDocParameterTag: typeof factory.createJSDocParameterTag; - /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */ - const createJSDocClassTag: typeof factory.createJSDocClassTag; - /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */ - const createJSDocAugmentsTag: typeof factory.createJSDocAugmentsTag; - /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */ - const createJSDocEnumTag: typeof factory.createJSDocEnumTag; - /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */ - const createJSDocTemplateTag: typeof factory.createJSDocTemplateTag; - /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */ - const createJSDocTypedefTag: typeof factory.createJSDocTypedefTag; - /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */ - const createJSDocCallbackTag: typeof factory.createJSDocCallbackTag; - /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */ - const createJSDocSignature: typeof factory.createJSDocSignature; - /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */ - const createJSDocPropertyTag: typeof factory.createJSDocPropertyTag; - /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */ - const createJSDocTypeLiteral: typeof factory.createJSDocTypeLiteral; - /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */ - const createJSDocImplementsTag: typeof factory.createJSDocImplementsTag; - /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */ - const createJSDocAuthorTag: typeof factory.createJSDocAuthorTag; - /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */ - const createJSDocPublicTag: typeof factory.createJSDocPublicTag; - /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */ - const createJSDocPrivateTag: typeof factory.createJSDocPrivateTag; - /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */ - const createJSDocProtectedTag: typeof factory.createJSDocProtectedTag; - /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */ - const createJSDocReadonlyTag: typeof factory.createJSDocReadonlyTag; - /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */ - const createJSDocTag: typeof factory.createJSDocUnknownTag; - /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */ - const createJsxElement: typeof factory.createJsxElement; - /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */ - const updateJsxElement: typeof factory.updateJsxElement; - /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ - const createJsxSelfClosingElement: typeof factory.createJsxSelfClosingElement; - /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ - const updateJsxSelfClosingElement: typeof factory.updateJsxSelfClosingElement; - /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */ - const createJsxOpeningElement: typeof factory.createJsxOpeningElement; - /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */ - const updateJsxOpeningElement: typeof factory.updateJsxOpeningElement; - /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */ - const createJsxClosingElement: typeof factory.createJsxClosingElement; - /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */ - const updateJsxClosingElement: typeof factory.updateJsxClosingElement; - /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */ - const createJsxFragment: typeof factory.createJsxFragment; - /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */ - const createJsxText: typeof factory.createJsxText; - /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */ - const updateJsxText: typeof factory.updateJsxText; - /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */ - const createJsxOpeningFragment: typeof factory.createJsxOpeningFragment; - /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */ - const createJsxJsxClosingFragment: typeof factory.createJsxJsxClosingFragment; - /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */ - const updateJsxFragment: typeof factory.updateJsxFragment; - /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */ - const createJsxAttribute: typeof factory.createJsxAttribute; - /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */ - const updateJsxAttribute: typeof factory.updateJsxAttribute; - /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */ - const createJsxAttributes: typeof factory.createJsxAttributes; - /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */ - const updateJsxAttributes: typeof factory.updateJsxAttributes; - /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ - const createJsxSpreadAttribute: typeof factory.createJsxSpreadAttribute; - /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ - const updateJsxSpreadAttribute: typeof factory.updateJsxSpreadAttribute; - /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */ - const createJsxExpression: typeof factory.createJsxExpression; - /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */ - const updateJsxExpression: typeof factory.updateJsxExpression; - /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */ - const createCaseClause: typeof factory.createCaseClause; - /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */ - const updateCaseClause: typeof factory.updateCaseClause; - /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */ - const createDefaultClause: typeof factory.createDefaultClause; - /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */ - const updateDefaultClause: typeof factory.updateDefaultClause; - /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */ - const createHeritageClause: typeof factory.createHeritageClause; - /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */ - const updateHeritageClause: typeof factory.updateHeritageClause; - /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */ - const createCatchClause: typeof factory.createCatchClause; - /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */ - const updateCatchClause: typeof factory.updateCatchClause; - /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */ - const createPropertyAssignment: typeof factory.createPropertyAssignment; - /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */ - const updatePropertyAssignment: typeof factory.updatePropertyAssignment; - /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ - const createShorthandPropertyAssignment: typeof factory.createShorthandPropertyAssignment; - /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ - const updateShorthandPropertyAssignment: typeof factory.updateShorthandPropertyAssignment; - /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */ - const createSpreadAssignment: typeof factory.createSpreadAssignment; - /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */ - const updateSpreadAssignment: typeof factory.updateSpreadAssignment; - /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */ - const createEnumMember: typeof factory.createEnumMember; - /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */ - const updateEnumMember: typeof factory.updateEnumMember; - /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */ - const updateSourceFileNode: typeof factory.updateSourceFile; - /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */ - const createNotEmittedStatement: typeof factory.createNotEmittedStatement; - /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ - const createPartiallyEmittedExpression: typeof factory.createPartiallyEmittedExpression; - /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ - const updatePartiallyEmittedExpression: typeof factory.updatePartiallyEmittedExpression; - /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */ - const createCommaList: typeof factory.createCommaListExpression; - /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */ - const updateCommaList: typeof factory.updateCommaListExpression; - /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */ - const createBundle: typeof factory.createBundle; - /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */ - const updateBundle: typeof factory.updateBundle; - /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */ - const createImmediatelyInvokedFunctionExpression: typeof factory.createImmediatelyInvokedFunctionExpression; - /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */ - const createImmediatelyInvokedArrowFunction: typeof factory.createImmediatelyInvokedArrowFunction; - /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */ - const createVoidZero: typeof factory.createVoidZero; - /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */ - const createExportDefault: typeof factory.createExportDefault; - /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */ - const createExternalModuleExport: typeof factory.createExternalModuleExport; - /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */ - const createNamespaceExport: typeof factory.createNamespaceExport; - /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */ - const updateNamespaceExport: typeof factory.updateNamespaceExport; - /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */ - const createToken: (kind: TKind) => Token; - /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */ - const createIdentifier: (text: string) => Identifier; - /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */ - const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier; - /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */ - const getGeneratedNameForNode: (node: Node | undefined) => Identifier; - /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */ - const createOptimisticUniqueName: (text: string) => Identifier; - /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */ - const createFileLevelUniqueName: (text: string) => Identifier; - /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */ - const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration; - /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ - const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode; - /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ - const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode; - /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */ - const createLiteral: { - (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral; - (value: number | PseudoBigInt): NumericLiteral; - (value: boolean): BooleanLiteral; - (value: string | number | PseudoBigInt | boolean): PrimaryExpression; - }; - /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */ - const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; - /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */ - const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; - /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */ - const createTypeOperatorNode: { - (type: TypeNode): TypeOperatorNode; - (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; - }; - /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */ - const createTaggedTemplate: { - (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; - (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; - }; - /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */ - const updateTaggedTemplate: { - (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; - (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; - }; - /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */ - const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression; - /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */ - const createConditional: { - (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression; - (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression; - }; - /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */ - const createYield: { - (expression?: Expression | undefined): YieldExpression; - (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression; - }; - /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */ - const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; - /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */ - const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; - /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */ - const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature; - /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */ - const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature; - /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ - const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; - /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ - const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; - /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */ - const createArrowFunction: { - (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction; - (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; - }; - /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */ - const updateArrowFunction: { - (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction; - (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; - }; - /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */ - const createVariableDeclaration: { - (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration; - (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - }; - /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */ - const updateVariableDeclaration: { - (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - }; - /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */ - const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause; - /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */ - const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause; - /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */ - const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration; - /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */ - const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration; - /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ - const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag; - /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */ - const createComma: (left: Expression, right: Expression) => Expression; - /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */ - const createLessThan: (left: Expression, right: Expression) => Expression; - /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */ - const createAssignment: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */ - const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */ - const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */ - const createAdd: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */ - const createSubtract: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */ - const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */ - const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */ - const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression; - /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */ - const createLogicalNot: (operand: Expression) => PrefixUnaryExpression; - /** @deprecated Use an appropriate `factory` method instead. */ - const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node; - /** - * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set. - * - * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be - * captured with respect to transformations. - * - * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`. - */ - const getMutableClone: (node: T) => T; - /** @deprecated Use `isTypeAssertionExpression` instead. */ - const isTypeAssertion: (node: Node) => node is TypeAssertion; - /** - * @deprecated Use `isMemberName` instead. - */ - const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName; } export = ts; \ No newline at end of file diff --git a/lib/tsserverlibrary.js b/lib/tsserverlibrary.js index 588b8663537..11d554ba63f 100644 --- a/lib/tsserverlibrary.js +++ b/lib/tsserverlibrary.js @@ -42,7 +42,7 @@ var ts = (() => { "src/compiler/corePublic.ts"() { "use strict"; versionMajorMinor = "5.0"; - version = `${versionMajorMinor}.0-dev.20230112`; + version = `${versionMajorMinor}.0-beta`; Comparison = /* @__PURE__ */ ((Comparison3) => { Comparison3[Comparison3["LessThan"] = -1] = "LessThan"; Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo"; @@ -590,25 +590,20 @@ var ts = (() => { } return true; } - function detectSortCaseSensitivity(array, useEslintOrdering, getString) { + function detectSortCaseSensitivity(array, getString, compareStringsCaseSensitive2, compareStringsCaseInsensitive2) { let kind = 3 /* Both */; if (array.length < 2) return kind; - const caseSensitiveComparer = getString ? (a, b) => compareStringsCaseSensitive(getString(a), getString(b)) : compareStringsCaseSensitive; - const compareCaseInsensitive = useEslintOrdering ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseInsensitive; - const caseInsensitiveComparer = getString ? (a, b) => compareCaseInsensitive(getString(a), getString(b)) : compareCaseInsensitive; - for (let i = 1, len = array.length; i < len; i++) { - const prevElement = array[i - 1]; - const element = array[i]; - if (kind & 1 /* CaseSensitive */ && caseSensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + let prevElement = getString(array[0]); + for (let i = 1, len = array.length; i < len && kind !== 0 /* None */; i++) { + const element = getString(array[i]); + if (kind & 1 /* CaseSensitive */ && compareStringsCaseSensitive2(prevElement, element) > 0) { kind &= ~1 /* CaseSensitive */; } - if (kind & 2 /* CaseInsensitive */ && caseInsensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + if (kind & 2 /* CaseInsensitive */ && compareStringsCaseInsensitive2(prevElement, element) > 0) { kind &= ~2 /* CaseInsensitive */; } - if (kind === 0 /* None */) { - return kind; - } + prevElement = element; } return kind; } @@ -943,6 +938,18 @@ var ts = (() => { function group(values, getGroupId, resultSelector = identity) { return arrayFrom(arrayToMultiMap(values, getGroupId).values(), resultSelector); } + function groupBy(values, keySelector) { + var _a2; + const result = {}; + if (values) { + for (const value of values) { + const key = `${keySelector(value)}`; + const array = (_a2 = result[key]) != null ? _a2 : result[key] = []; + array.push(value); + } + } + return result; + } function clone(object) { const result = {}; for (const id in object) { @@ -1229,6 +1236,35 @@ var ts = (() => { return value; }; } + function memoizeCached(callback, cache) { + return (...args) => { + let value = cache.get(args); + if (value === void 0 && !cache.has(args)) { + value = callback(...args); + cache.set(args, value); + } + return value; + }; + } + function compose(a, b, c, d, e) { + if (!!e) { + const args = []; + for (let i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return (t) => reduceLeft(args, (u, f) => f(u), t); + } else if (d) { + return (t) => d(c(b(a(t)))); + } else if (c) { + return (t) => c(b(a(t))); + } else if (b) { + return (t) => b(a(t)); + } else if (a) { + return (t) => a(t); + } else { + return (t) => t; + } + } function equateValues(a, b) { return a === b; } @@ -1565,12 +1601,24 @@ var ts = (() => { return length2 <= s.length ? s : s + padString.repeat(length2 - s.length); } function takeWhile(array, predicate) { - const len = array.length; - let index = 0; - while (index < len && predicate(array[index])) { - index++; + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(0, index); + } + } + function skipWhile(array, predicate) { + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(index); } - return array.slice(0, index); } function trimEndImpl(s) { let end = s.length - 1; @@ -3541,7 +3589,7 @@ ${lanes.join("\n")} const name = DiagnosticCategory[d.category]; return lowerCase ? name.toLowerCase() : name; } - var SyntaxKind, NodeFlags, ModifierFlags, JsxFlags, RelationComparisonResult, GeneratedIdentifierFlags, TokenFlags, FlowFlags, CommentDirectiveType, OperationCanceledException, FileIncludeKind, FilePreprocessingDiagnosticsKind, EmitOnly, StructureIsReused, ExitStatus, MemberOverrideStatus, UnionReduction, ContextFlags, NodeBuilderFlags, TypeFormatFlags, SymbolFormatFlags, SymbolAccessibility, SyntheticSymbolKind, TypePredicateKind, TypeReferenceSerializationKind, SymbolFlags, EnumKind, CheckFlags, InternalSymbolName, NodeCheckFlags, TypeFlags, ObjectFlags, VarianceFlags, ElementFlags, AccessFlags, JsxReferenceKind, SignatureKind, SignatureFlags, IndexKind, TypeMapKind, InferencePriority, InferenceFlags, Ternary, AssignmentDeclarationKind, DiagnosticCategory, ModuleResolutionKind, ModuleDetectionKind, WatchFileKind, WatchDirectoryKind, PollingWatchKind, ModuleKind, JsxEmit, ImportsNotUsedAsValues, NewLineKind, ScriptKind, ScriptTarget, LanguageVariant, WatchDirectoryFlags, CharacterCodes, Extension, TransformFlags, SnippetKind, EmitFlags, ExternalEmitHelpers, EmitHint, OuterExpressionKinds, LexicalEnvironmentFlags, BundleFileSectionKind, ListFormat, PragmaKindFlags, commentPragmas, DeprecationVersion; + var SyntaxKind, NodeFlags, ModifierFlags, JsxFlags, RelationComparisonResult, GeneratedIdentifierFlags, TokenFlags, FlowFlags, CommentDirectiveType, OperationCanceledException, FileIncludeKind, FilePreprocessingDiagnosticsKind, EmitOnly, StructureIsReused, ExitStatus, MemberOverrideStatus, UnionReduction, ContextFlags, NodeBuilderFlags, TypeFormatFlags, SymbolFormatFlags, SymbolAccessibility, SyntheticSymbolKind, TypePredicateKind, TypeReferenceSerializationKind, SymbolFlags, EnumKind, CheckFlags, InternalSymbolName, NodeCheckFlags, TypeFlags, ObjectFlags, VarianceFlags, ElementFlags, AccessFlags, JsxReferenceKind, SignatureKind, SignatureFlags, IndexKind, TypeMapKind, InferencePriority, InferenceFlags, Ternary, AssignmentDeclarationKind, DiagnosticCategory, ModuleResolutionKind, ModuleDetectionKind, WatchFileKind, WatchDirectoryKind, PollingWatchKind, ModuleKind, JsxEmit, ImportsNotUsedAsValues, NewLineKind, ScriptKind, ScriptTarget, LanguageVariant, WatchDirectoryFlags, CharacterCodes, Extension, TransformFlags, SnippetKind, EmitFlags, InternalEmitFlags, ExternalEmitHelpers, EmitHint, OuterExpressionKinds, LexicalEnvironmentFlags, BundleFileSectionKind, ListFormat, PragmaKindFlags, commentPragmas, DeprecationVersion; var init_types = __esm({ "src/compiler/types.ts"() { "use strict"; @@ -3900,14 +3948,15 @@ ${lanes.join("\n")} SyntaxKind5[SyntaxKind5["JSDocSeeTag"] = 350] = "JSDocSeeTag"; SyntaxKind5[SyntaxKind5["JSDocPropertyTag"] = 351] = "JSDocPropertyTag"; SyntaxKind5[SyntaxKind5["JSDocThrowsTag"] = 352] = "JSDocThrowsTag"; - SyntaxKind5[SyntaxKind5["SyntaxList"] = 353] = "SyntaxList"; - SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 354] = "NotEmittedStatement"; - SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; - SyntaxKind5[SyntaxKind5["CommaListExpression"] = 356] = "CommaListExpression"; - SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 357] = "MergeDeclarationMarker"; - SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 358] = "EndOfDeclarationMarker"; - SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 359] = "SyntheticReferenceExpression"; - SyntaxKind5[SyntaxKind5["Count"] = 360] = "Count"; + SyntaxKind5[SyntaxKind5["JSDocSatisfiesTag"] = 353] = "JSDocSatisfiesTag"; + SyntaxKind5[SyntaxKind5["SyntaxList"] = 354] = "SyntaxList"; + SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 355] = "NotEmittedStatement"; + SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 356] = "PartiallyEmittedExpression"; + SyntaxKind5[SyntaxKind5["CommaListExpression"] = 357] = "CommaListExpression"; + SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 358] = "MergeDeclarationMarker"; + SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 359] = "EndOfDeclarationMarker"; + SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 360] = "SyntheticReferenceExpression"; + SyntaxKind5[SyntaxKind5["Count"] = 361] = "Count"; SyntaxKind5[SyntaxKind5["FirstAssignment"] = 63 /* EqualsToken */] = "FirstAssignment"; SyntaxKind5[SyntaxKind5["LastAssignment"] = 78 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind5[SyntaxKind5["FirstCompoundAssignment"] = 64 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -3936,51 +3985,53 @@ ${lanes.join("\n")} SyntaxKind5[SyntaxKind5["LastStatement"] = 256 /* DebuggerStatement */] = "LastStatement"; SyntaxKind5[SyntaxKind5["FirstNode"] = 163 /* QualifiedName */] = "FirstNode"; SyntaxKind5[SyntaxKind5["FirstJSDocNode"] = 312 /* JSDocTypeExpression */] = "FirstJSDocNode"; - SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocNode"; + SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocNode"; SyntaxKind5[SyntaxKind5["FirstJSDocTagNode"] = 330 /* JSDocTag */] = "FirstJSDocTagNode"; - SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocTagNode"; + SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocTagNode"; SyntaxKind5[SyntaxKind5["FirstContextualKeyword"] = 126 /* AbstractKeyword */] = "FirstContextualKeyword"; SyntaxKind5[SyntaxKind5["LastContextualKeyword"] = 162 /* OfKeyword */] = "LastContextualKeyword"; return SyntaxKind5; })(SyntaxKind || {}); - NodeFlags = /* @__PURE__ */ ((NodeFlags4) => { - NodeFlags4[NodeFlags4["None"] = 0] = "None"; - NodeFlags4[NodeFlags4["Let"] = 1] = "Let"; - NodeFlags4[NodeFlags4["Const"] = 2] = "Const"; - NodeFlags4[NodeFlags4["NestedNamespace"] = 4] = "NestedNamespace"; - NodeFlags4[NodeFlags4["Synthesized"] = 8] = "Synthesized"; - NodeFlags4[NodeFlags4["Namespace"] = 16] = "Namespace"; - NodeFlags4[NodeFlags4["OptionalChain"] = 32] = "OptionalChain"; - NodeFlags4[NodeFlags4["ExportContext"] = 64] = "ExportContext"; - NodeFlags4[NodeFlags4["ContainsThis"] = 128] = "ContainsThis"; - NodeFlags4[NodeFlags4["HasImplicitReturn"] = 256] = "HasImplicitReturn"; - NodeFlags4[NodeFlags4["HasExplicitReturn"] = 512] = "HasExplicitReturn"; - NodeFlags4[NodeFlags4["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; - NodeFlags4[NodeFlags4["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; - NodeFlags4[NodeFlags4["DisallowInContext"] = 4096] = "DisallowInContext"; - NodeFlags4[NodeFlags4["YieldContext"] = 8192] = "YieldContext"; - NodeFlags4[NodeFlags4["DecoratorContext"] = 16384] = "DecoratorContext"; - NodeFlags4[NodeFlags4["AwaitContext"] = 32768] = "AwaitContext"; - NodeFlags4[NodeFlags4["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; - NodeFlags4[NodeFlags4["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; - NodeFlags4[NodeFlags4["JavaScriptFile"] = 262144] = "JavaScriptFile"; - NodeFlags4[NodeFlags4["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; - NodeFlags4[NodeFlags4["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; - NodeFlags4[NodeFlags4["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; - NodeFlags4[NodeFlags4["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; - NodeFlags4[NodeFlags4["JSDoc"] = 8388608] = "JSDoc"; - NodeFlags4[NodeFlags4["Ambient"] = 16777216] = "Ambient"; - NodeFlags4[NodeFlags4["InWithStatement"] = 33554432] = "InWithStatement"; - NodeFlags4[NodeFlags4["JsonFile"] = 67108864] = "JsonFile"; - NodeFlags4[NodeFlags4["TypeCached"] = 134217728] = "TypeCached"; - NodeFlags4[NodeFlags4["Deprecated"] = 268435456] = "Deprecated"; - NodeFlags4[NodeFlags4["BlockScoped"] = 3] = "BlockScoped"; - NodeFlags4[NodeFlags4["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; - NodeFlags4[NodeFlags4["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; - NodeFlags4[NodeFlags4["ContextFlags"] = 50720768] = "ContextFlags"; - NodeFlags4[NodeFlags4["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; - NodeFlags4[NodeFlags4["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; - return NodeFlags4; + NodeFlags = /* @__PURE__ */ ((NodeFlags3) => { + NodeFlags3[NodeFlags3["None"] = 0] = "None"; + NodeFlags3[NodeFlags3["Let"] = 1] = "Let"; + NodeFlags3[NodeFlags3["Const"] = 2] = "Const"; + NodeFlags3[NodeFlags3["NestedNamespace"] = 4] = "NestedNamespace"; + NodeFlags3[NodeFlags3["Synthesized"] = 8] = "Synthesized"; + NodeFlags3[NodeFlags3["Namespace"] = 16] = "Namespace"; + NodeFlags3[NodeFlags3["OptionalChain"] = 32] = "OptionalChain"; + NodeFlags3[NodeFlags3["ExportContext"] = 64] = "ExportContext"; + NodeFlags3[NodeFlags3["ContainsThis"] = 128] = "ContainsThis"; + NodeFlags3[NodeFlags3["HasImplicitReturn"] = 256] = "HasImplicitReturn"; + NodeFlags3[NodeFlags3["HasExplicitReturn"] = 512] = "HasExplicitReturn"; + NodeFlags3[NodeFlags3["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; + NodeFlags3[NodeFlags3["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; + NodeFlags3[NodeFlags3["DisallowInContext"] = 4096] = "DisallowInContext"; + NodeFlags3[NodeFlags3["YieldContext"] = 8192] = "YieldContext"; + NodeFlags3[NodeFlags3["DecoratorContext"] = 16384] = "DecoratorContext"; + NodeFlags3[NodeFlags3["AwaitContext"] = 32768] = "AwaitContext"; + NodeFlags3[NodeFlags3["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; + NodeFlags3[NodeFlags3["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; + NodeFlags3[NodeFlags3["JavaScriptFile"] = 262144] = "JavaScriptFile"; + NodeFlags3[NodeFlags3["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; + NodeFlags3[NodeFlags3["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; + NodeFlags3[NodeFlags3["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; + NodeFlags3[NodeFlags3["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; + NodeFlags3[NodeFlags3["JSDoc"] = 8388608] = "JSDoc"; + NodeFlags3[NodeFlags3["Ambient"] = 16777216] = "Ambient"; + NodeFlags3[NodeFlags3["InWithStatement"] = 33554432] = "InWithStatement"; + NodeFlags3[NodeFlags3["JsonFile"] = 67108864] = "JsonFile"; + NodeFlags3[NodeFlags3["TypeCached"] = 134217728] = "TypeCached"; + NodeFlags3[NodeFlags3["Deprecated"] = 268435456] = "Deprecated"; + NodeFlags3[NodeFlags3["BlockScoped"] = 3] = "BlockScoped"; + NodeFlags3[NodeFlags3["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; + NodeFlags3[NodeFlags3["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; + NodeFlags3[NodeFlags3["ContextFlags"] = 50720768] = "ContextFlags"; + NodeFlags3[NodeFlags3["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; + NodeFlags3[NodeFlags3["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; + NodeFlags3[NodeFlags3["IdentifierHasExtendedUnicodeEscape"] = 128 /* ContainsThis */] = "IdentifierHasExtendedUnicodeEscape"; + NodeFlags3[NodeFlags3["IdentifierIsInJSDocNamespace"] = 2048 /* HasAsyncFunctions */] = "IdentifierIsInJSDocNamespace"; + return NodeFlags3; })(NodeFlags || {}); ModifierFlags = /* @__PURE__ */ ((ModifierFlags3) => { ModifierFlags3[ModifierFlags3["None"] = 0] = "None"; @@ -4120,7 +4171,6 @@ ${lanes.join("\n")} ExitStatus2[ExitStatus2["DiagnosticsPresent_OutputsGenerated"] = 2] = "DiagnosticsPresent_OutputsGenerated"; ExitStatus2[ExitStatus2["InvalidProject_OutputsSkipped"] = 3] = "InvalidProject_OutputsSkipped"; ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkipped"] = 4] = "ProjectReferenceCycle_OutputsSkipped"; - ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkupped"] = 4] = "ProjectReferenceCycle_OutputsSkupped"; return ExitStatus2; })(ExitStatus || {}); MemberOverrideStatus = /* @__PURE__ */ ((MemberOverrideStatus2) => { @@ -4165,7 +4215,6 @@ ${lanes.join("\n")} NodeBuilderFlags2[NodeBuilderFlags2["OmitThisParameter"] = 33554432] = "OmitThisParameter"; NodeBuilderFlags2[NodeBuilderFlags2["AllowThisInObjectLiteral"] = 32768] = "AllowThisInObjectLiteral"; NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifiedNameInPlaceOfIdentifier"] = 65536] = "AllowQualifiedNameInPlaceOfIdentifier"; - NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifedNameInPlaceOfIdentifier"] = 65536 /* AllowQualifiedNameInPlaceOfIdentifier */] = "AllowQualifedNameInPlaceOfIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowAnonymousIdentifier"] = 131072] = "AllowAnonymousIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyUnionOrIntersection"] = 262144] = "AllowEmptyUnionOrIntersection"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyTuple"] = 524288] = "AllowEmptyTuple"; @@ -4203,7 +4252,6 @@ ${lanes.join("\n")} TypeFormatFlags2[TypeFormatFlags2["InElementType"] = 2097152] = "InElementType"; TypeFormatFlags2[TypeFormatFlags2["InFirstTypeArgument"] = 4194304] = "InFirstTypeArgument"; TypeFormatFlags2[TypeFormatFlags2["InTypeAlias"] = 8388608] = "InTypeAlias"; - TypeFormatFlags2[TypeFormatFlags2["WriteOwnNameForAnyLike"] = 0] = "WriteOwnNameForAnyLike"; TypeFormatFlags2[TypeFormatFlags2["NodeBuilderFlagsMask"] = 848330091] = "NodeBuilderFlagsMask"; return TypeFormatFlags2; })(TypeFormatFlags || {}); @@ -4995,18 +5043,24 @@ ${lanes.join("\n")} EmitFlags3[EmitFlags3["HasEndOfDeclarationMarker"] = 8388608] = "HasEndOfDeclarationMarker"; EmitFlags3[EmitFlags3["Iterator"] = 16777216] = "Iterator"; EmitFlags3[EmitFlags3["NoAsciiEscaping"] = 33554432] = "NoAsciiEscaping"; - EmitFlags3[EmitFlags3["TypeScriptClassWrapper"] = 67108864] = "TypeScriptClassWrapper"; - EmitFlags3[EmitFlags3["NeverApplyImportHelper"] = 134217728] = "NeverApplyImportHelper"; - EmitFlags3[EmitFlags3["IgnoreSourceNewlines"] = 268435456] = "IgnoreSourceNewlines"; - EmitFlags3[EmitFlags3["Immutable"] = 536870912] = "Immutable"; - EmitFlags3[EmitFlags3["IndirectCall"] = 1073741824] = "IndirectCall"; return EmitFlags3; })(EmitFlags || {}); + InternalEmitFlags = /* @__PURE__ */ ((InternalEmitFlags3) => { + InternalEmitFlags3[InternalEmitFlags3["None"] = 0] = "None"; + InternalEmitFlags3[InternalEmitFlags3["TypeScriptClassWrapper"] = 1] = "TypeScriptClassWrapper"; + InternalEmitFlags3[InternalEmitFlags3["NeverApplyImportHelper"] = 2] = "NeverApplyImportHelper"; + InternalEmitFlags3[InternalEmitFlags3["IgnoreSourceNewlines"] = 4] = "IgnoreSourceNewlines"; + InternalEmitFlags3[InternalEmitFlags3["Immutable"] = 8] = "Immutable"; + InternalEmitFlags3[InternalEmitFlags3["IndirectCall"] = 16] = "IndirectCall"; + InternalEmitFlags3[InternalEmitFlags3["TransformPrivateStaticElements"] = 32] = "TransformPrivateStaticElements"; + return InternalEmitFlags3; + })(InternalEmitFlags || {}); ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["Extends"] = 1] = "Extends"; ExternalEmitHelpers2[ExternalEmitHelpers2["Assign"] = 2] = "Assign"; ExternalEmitHelpers2[ExternalEmitHelpers2["Rest"] = 4] = "Rest"; ExternalEmitHelpers2[ExternalEmitHelpers2["Decorate"] = 8] = "Decorate"; + ExternalEmitHelpers2[ExternalEmitHelpers2["ESDecorateAndRunInitializers"] = 8 /* Decorate */] = "ESDecorateAndRunInitializers"; ExternalEmitHelpers2[ExternalEmitHelpers2["Metadata"] = 16] = "Metadata"; ExternalEmitHelpers2[ExternalEmitHelpers2["Param"] = 32] = "Param"; ExternalEmitHelpers2[ExternalEmitHelpers2["Awaiter"] = 64] = "Awaiter"; @@ -5026,8 +5080,10 @@ ${lanes.join("\n")} ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldSet"] = 1048576] = "ClassPrivateFieldSet"; ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldIn"] = 2097152] = "ClassPrivateFieldIn"; ExternalEmitHelpers2[ExternalEmitHelpers2["CreateBinding"] = 4194304] = "CreateBinding"; + ExternalEmitHelpers2[ExternalEmitHelpers2["SetFunctionName"] = 8388608] = "SetFunctionName"; + ExternalEmitHelpers2[ExternalEmitHelpers2["PropKey"] = 16777216] = "PropKey"; ExternalEmitHelpers2[ExternalEmitHelpers2["FirstEmitHelper"] = 1 /* Extends */] = "FirstEmitHelper"; - ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 4194304 /* CreateBinding */] = "LastEmitHelper"; + ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 16777216 /* PropKey */] = "LastEmitHelper"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForOfIncludes"] = 256 /* Values */] = "ForOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForAwaitOfIncludes"] = 16384 /* AsyncValues */] = "ForAwaitOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["AsyncGeneratorIncludes"] = 6144] = "AsyncGeneratorIncludes"; @@ -7176,10 +7232,9 @@ ${lanes.join("\n")} Line_terminator_not_permitted_before_arrow: diag(1200, 1 /* Error */, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(1202, 1 /* Error */, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: diag(1203, 1 /* Error */, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), - Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), + Re_exporting_a_type_when_0_is_enabled_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205", "Re-exporting a type when '{0}' is enabled requires using 'export type'."), Decorators_are_not_valid_here: diag(1206, 1 /* Error */, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: diag(1207, 1 /* Error */, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), - _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: diag(1208, 1 /* Error */, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0: diag(1209, 1 /* Error */, "Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209", "Invalid optional chain from new expression. Did you mean to call '{0}()'?"), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: diag(1210, 1 /* Error */, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: diag(1211, 1 /* Error */, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), @@ -7189,7 +7244,6 @@ ${lanes.join("\n")} Invalid_use_of_0_Modules_are_automatically_in_strict_mode: diag(1215, 1 /* Error */, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: diag(1216, 1 /* Error */, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: diag(1218, 1 /* Error */, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: diag(1219, 1 /* Error */, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: diag(1221, 1 /* Error */, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: diag(1222, 1 /* Error */, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: diag(1223, 1 /* Error */, "_0_tag_already_specified_1223", "'{0}' tag already specified."), @@ -7236,7 +7290,7 @@ ${lanes.join("\n")} An_optional_element_cannot_follow_a_rest_element: diag(1266, 1 /* Error */, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: diag(1267, 1 /* Error */, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: diag(1268, 1 /* Error */, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), - Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), + Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269", "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled."), Decorator_function_return_type_0_is_not_assignable_to_type_1: diag(1270, 1 /* Error */, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: diag(1271, 1 /* Error */, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: diag(1272, 1 /* Error */, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), @@ -7245,6 +7299,17 @@ ${lanes.join("\n")} accessor_modifier_can_only_appear_on_a_property_declaration: diag(1275, 1 /* Error */, "accessor_modifier_can_only_appear_on_a_property_declaration_1275", "'accessor' modifier can only appear on a property declaration."), An_accessor_property_cannot_be_declared_optional: diag(1276, 1 /* Error */, "An_accessor_property_cannot_be_declared_optional_1276", "An 'accessor' property cannot be declared optional."), _0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class: diag(1277, 1 /* Error */, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277", "'{0}' modifier can only appear on a type parameter of a function, method or class"), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0: diag(1278, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278", "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}."), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0: diag(1279, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279", "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}."), + Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement: diag(1280, 1 /* Error */, "Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280", "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement."), + Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead: diag(1281, 1 /* Error */, "Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281", "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead."), + An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1282, 1 /* Error */, "An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282", "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1283, 1 /* Error */, "An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283", "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1284, 1 /* Error */, "An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284", "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1285, 1 /* Error */, "An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285", "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1286, 1 /* Error */, "ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286", "ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1287, 1 /* Error */, "A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287", "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled: diag(1288, 1 /* Error */, "An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288", "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled."), with_statements_are_not_allowed_in_an_async_function_block: diag(1300, 1 /* Error */, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: diag(1308, 1 /* Error */, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: diag(1309, 1 /* Error */, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), @@ -7316,7 +7381,6 @@ ${lanes.join("\n")} An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: diag(1380, 1 /* Error */, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: diag(1381, 1 /* Error */, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: diag(1382, 1 /* Error */, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), - Only_named_exports_may_use_export_type: diag(1383, 1 /* Error */, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1385, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1386, 1 /* Error */, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: diag(1387, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), @@ -7364,7 +7428,7 @@ ${lanes.join("\n")} The_file_is_in_the_program_because_Colon: diag(1430, 3 /* Message */, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1431, 1 /* Error */, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: diag(1432, 1 /* Error */, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), - Decorators_may_not_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), + Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433", "Neither decorators nor modifiers may be applied to 'this' parameters."), Unexpected_keyword_or_identifier: diag(1434, 1 /* Error */, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: diag(1435, 1 /* Error */, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: diag(1436, 1 /* Error */, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), @@ -7377,7 +7441,7 @@ ${lanes.join("\n")} Module_declaration_names_may_only_use_or_quoted_strings: diag(1443, 1 /* Error */, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1444, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1446, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), - _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: diag(1449, 3 /* Message */, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: diag(1450, 3 /* Message */, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: diag(1451, 1 /* Error */, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), @@ -7405,6 +7469,8 @@ ${lanes.join("\n")} To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1: diag(1481, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481", `To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \`"type": "module"\` to '{1}'.`), To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0: diag(1482, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482", 'To convert this file to an ECMAScript module, add the field `"type": "module"` to \'{0}\'.'), To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module: diag(1483, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483", 'To convert this file to an ECMAScript module, create a local package.json file with `{ "type": "module" }`.'), + _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1484, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484", "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1485, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -7862,7 +7928,7 @@ ${lanes.join("\n")} This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: diag(2745, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: diag(2746, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: diag(2747, 1 /* Error */, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), - Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), + Cannot_access_ambient_const_enums_when_0_is_enabled: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_0_is_enabled_2748", "Cannot access ambient const enums when '{0}' is enabled."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: diag(2749, 1 /* Error */, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: diag(2750, 1 /* Error */, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: diag(2751, 1 /* Error */, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), @@ -8110,12 +8176,12 @@ ${lanes.join("\n")} The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: diag(5088, 1 /* Error */, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: diag(5089, 1 /* Error */, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: diag(5090, 1 /* Error */, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), - Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), + Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled."), The_root_value_of_a_0_file_must_be_an_object: diag(5092, 1 /* Error */, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: diag(5093, 1 /* Error */, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: diag(5094, 1 /* Error */, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: diag(5095, 1 /* Error */, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), - Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_eithe_5096", "Option 'allowImportingTsExtensions' can only be used when 'moduleResolution' is set to 'bundler' and either 'noEmit' or 'emitDeclarationOnly' is set."), + Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096", "Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set."), An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled: diag(5097, 1 /* Error */, "An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097", "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled."), Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler: diag(5098, 1 /* Error */, "Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098", "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'."), Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(5099, 1 /* Error */, "Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Aster_5099", `Import assignment is not allowed when 'moduleResolution' is set to 'bundler'. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), @@ -8123,6 +8189,9 @@ ${lanes.join("\n")} Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error: diag(5101, 1 /* Error */, "Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_5101", `Flag '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify 'ignoreDeprecations: "{2}"' to silence this error.`), Flag_0_is_deprecated_Please_remove_it_from_your_configuration: diag(5102, 1 /* Error */, "Flag_0_is_deprecated_Please_remove_it_from_your_configuration_5102", "Flag '{0}' is deprecated. Please remove it from your configuration."), Invalid_value_for_ignoreDeprecations: diag(5103, 1 /* Error */, "Invalid_value_for_ignoreDeprecations_5103", "Invalid value for '--ignoreDeprecations'."), + Option_0_is_redundant_and_cannot_be_specified_with_option_1: diag(5104, 1 /* Error */, "Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104", "Option '{0}' is redundant and cannot be specified with option '{1}'."), + Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System: diag(5105, 1 /* Error */, "Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105", "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'."), + Use_0_instead: diag(5106, 3 /* Message */, "Use_0_instead_5106", "Use '{0}' instead."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -8405,6 +8474,8 @@ ${lanes.join("\n")} package_json_scope_0_explicitly_maps_specifier_1_to_null: diag(6274, 3 /* Message */, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: diag(6275, 3 /* Message */, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: diag(6276, 3 /* Message */, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), + Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update: diag(6277, 3 /* Message */, "Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277", "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update."), + There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings: diag(6278, 3 /* Message */, "There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278", `There are types at '{0}', but this result could not be resolved when respecting package.json "exports". The '{1}' library may need to update its package.json or typings.`), Enable_project_compilation: diag(6302, 3 /* Message */, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: diag(6304, 1 /* Error */, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: diag(6305, 1 /* Error */, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), @@ -8529,7 +8600,7 @@ ${lanes.join("\n")} Filters_results_from_the_include_option: diag(6627, 3 /* Message */, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: diag(6628, 3 /* Message */, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: diag(6629, 3 /* Message */, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), - Enable_experimental_support_for_TC39_stage_2_draft_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), + Enable_experimental_support_for_legacy_experimental_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_legacy_experimental_decorators_6630", "Enable experimental support for legacy experimental decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: diag(6631, 3 /* Message */, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: diag(6632, 3 /* Message */, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: diag(6633, 3 /* Message */, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), @@ -8615,6 +8686,7 @@ ${lanes.join("\n")} Require_undeclared_properties_from_index_signatures_to_use_element_accesses: diag(6717, 3 /* Message */, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: diag(6718, 3 /* Message */, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: diag(6803, 3 /* Message */, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), + Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting: diag(6804, 3 /* Message */, "Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804", "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting."), one_of_Colon: diag(6900, 3 /* Message */, "one_of_Colon_6900", "one of:"), one_or_more_Colon: diag(6901, 3 /* Message */, "one_or_more_Colon_6901", "one or more:"), type_Colon: diag(6902, 3 /* Message */, "type_Colon_6902", "type:"), @@ -8750,6 +8822,7 @@ ${lanes.join("\n")} You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder: diag(8035, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035", "You cannot rename elements that are defined in a 'node_modules' folder."), You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder: diag(8036, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036", "You cannot rename elements that are defined in another 'node_modules' folder."), Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files: diag(8037, 1 /* Error */, "Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037", "Type satisfaction expressions can only be used in TypeScript files."), + Decorators_must_come_after_export_or_export_default_in_JavaScript_files: diag(8038, 1 /* Error */, "Decorators_must_come_after_export_or_export_default_in_JavaScript_files_8038", "Decorators must come after 'export' or 'export default' in JavaScript files."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9005, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: diag(17e3, 1 /* Error */, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), @@ -9035,7 +9108,8 @@ ${lanes.join("\n")} _0_is_possibly_null: diag(18047, 1 /* Error */, "_0_is_possibly_null_18047", "'{0}' is possibly 'null'."), _0_is_possibly_undefined: diag(18048, 1 /* Error */, "_0_is_possibly_undefined_18048", "'{0}' is possibly 'undefined'."), _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."), - The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here.") + The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."), + Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string.") }; } }); @@ -9488,10 +9562,7 @@ ${lanes.join("\n")} initial ); } - function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments) { - if (!comments) { - comments = []; - } + function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) { comments.push({ kind, pos, end, hasTrailingNewLine }); return comments; } @@ -11335,7 +11406,7 @@ ${lanes.join("\n")} } } function isParameterPropertyDeclaration(node, parent2) { - return hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; + return isParameter(node) && hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; } function isEmptyBindingPattern(node) { if (isBindingPattern(node)) { @@ -11439,7 +11510,10 @@ ${lanes.join("\n")} node = node.original; } } - return !nodeTest || nodeTest(node) ? node : void 0; + if (!node || !nodeTest) { + return node; + } + return nodeTest(node) ? node : void 0; } function findAncestor(node, callback) { while (node) { @@ -11478,6 +11552,10 @@ ${lanes.join("\n")} function idText(identifierOrPrivateName) { return unescapeLeadingUnderscores(identifierOrPrivateName.escapedText); } + function identifierToKeywordKind(node) { + const token = stringToToken(node.escapedText); + return token ? tryCast(token, isKeyword) : void 0; + } function symbolName(symbol) { if (symbol.valueDeclaration && isPrivateIdentifierClassElementDeclaration(symbol.valueDeclaration)) { return idText(symbol.valueDeclaration.name); @@ -11753,6 +11831,9 @@ ${lanes.join("\n")} function getJSDocTemplateTag(node) { return getFirstJSDocTag(node, isJSDocTemplateTag); } + function getJSDocSatisfiesTag(node) { + return getFirstJSDocTag(node, isJSDocSatisfiesTag); + } function getJSDocTypeTag(node) { const tag = getFirstJSDocTag(node, isJSDocTypeTag); if (tag && tag.typeExpression && tag.typeExpression.type) { @@ -11785,15 +11866,17 @@ ${lanes.join("\n")} } } function getJSDocTagsWorker(node, noCache) { + var _a2, _b; if (!canHaveJSDoc(node)) return emptyArray; - let tags = node.jsDocCache; + let tags = (_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache; if (tags === void 0 || noCache) { const comments = getJSDocCommentsAndTags(node, noCache); Debug.assert(comments.length < 2 || comments[0] !== comments[1]); tags = flatMap(comments, (j) => isJSDoc(j) ? j.tags : j); if (!noCache) { - node.jsDocCache = tags; + (_b = node.jsDoc) != null ? _b : node.jsDoc = []; + node.jsDoc.jsDocCache = tags; } } return tags; @@ -11971,19 +12054,31 @@ ${lanes.join("\n")} function isImportOrExportSpecifier(node) { return isImportSpecifier(node) || isExportSpecifier(node); } - function isTypeOnlyImportOrExportDeclaration(node) { + function isTypeOnlyImportDeclaration(node) { switch (node.kind) { case 273 /* ImportSpecifier */: - case 278 /* ExportSpecifier */: return node.isTypeOnly || node.parent.parent.isTypeOnly; case 271 /* NamespaceImport */: return node.parent.isTypeOnly; case 270 /* ImportClause */: case 268 /* ImportEqualsDeclaration */: return node.isTypeOnly; - default: - return false; } + return false; + } + function isTypeOnlyExportDeclaration(node) { + switch (node.kind) { + case 278 /* ExportSpecifier */: + return node.isTypeOnly || node.parent.parent.isTypeOnly; + case 275 /* ExportDeclaration */: + return node.isTypeOnly && !!node.moduleSpecifier && !node.exportClause; + case 277 /* NamespaceExport */: + return node.parent.isTypeOnly; + } + return false; + } + function isTypeOnlyImportOrExportDeclaration(node) { + return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node); } function isAssertionKey(node) { return isStringLiteral(node) || isIdentifier(node); @@ -11992,10 +12087,12 @@ ${lanes.join("\n")} return node.kind === 10 /* StringLiteral */ || isTemplateLiteralKind(node.kind); } function isGeneratedIdentifier(node) { - return isIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isGeneratedPrivateIdentifier(node) { - return isPrivateIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isPrivateIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isPrivateIdentifierClassElementDeclaration(node) { return (isPropertyDeclaration(node) || isMethodOrAccessor(node)) && isPrivateIdentifier(node.name); @@ -12172,6 +12269,9 @@ ${lanes.join("\n")} } return false; } + function isBindingOrAssignmentElement(node) { + return isVariableDeclaration(node) || isParameter(node) || isObjectBindingOrAssignmentElement(node) || isArrayBindingOrAssignmentElement(node); + } function isBindingOrAssignmentPattern(node) { return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node); } @@ -12201,6 +12301,24 @@ ${lanes.join("\n")} } return false; } + function isArrayBindingOrAssignmentElement(node) { + switch (node.kind) { + case 205 /* BindingElement */: + case 229 /* OmittedExpression */: + case 227 /* SpreadElement */: + case 206 /* ArrayLiteralExpression */: + case 207 /* ObjectLiteralExpression */: + case 79 /* Identifier */: + case 208 /* PropertyAccessExpression */: + case 209 /* ElementAccessExpression */: + return true; + } + return isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ); + } function isPropertyAccessOrQualifiedNameOrImportTypeNode(node) { const kind = node.kind; return kind === 208 /* PropertyAccessExpression */ || kind === 163 /* QualifiedName */ || kind === 202 /* ImportType */; @@ -12264,6 +12382,7 @@ ${lanes.join("\n")} case 230 /* ExpressionWithTypeArguments */: case 233 /* MetaProperty */: case 100 /* ImportKeyword */: + case 279 /* MissingDeclaration */: return true; default: return false; @@ -12296,6 +12415,17 @@ ${lanes.join("\n")} return false; } } + function isLiteralTypeLiteral(node) { + switch (node.kind) { + case 104 /* NullKeyword */: + case 110 /* TrueKeyword */: + case 95 /* FalseKeyword */: + case 221 /* PrefixUnaryExpression */: + return true; + default: + return isLiteralExpression(node); + } + } function isExpression(node) { return isExpressionKind(skipPartiallyEmittedExpressions(node).kind); } @@ -12308,8 +12438,8 @@ ${lanes.join("\n")} case 227 /* SpreadElement */: case 231 /* AsExpression */: case 229 /* OmittedExpression */: - case 356 /* CommaListExpression */: - case 355 /* PartiallyEmittedExpression */: + case 357 /* CommaListExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: return true; default: @@ -12494,7 +12624,7 @@ ${lanes.join("\n")} return kind === 259 /* FunctionDeclaration */ || kind === 279 /* MissingDeclaration */ || kind === 260 /* ClassDeclaration */ || kind === 261 /* InterfaceDeclaration */ || kind === 262 /* TypeAliasDeclaration */ || kind === 263 /* EnumDeclaration */ || kind === 264 /* ModuleDeclaration */ || kind === 269 /* ImportDeclaration */ || kind === 268 /* ImportEqualsDeclaration */ || kind === 275 /* ExportDeclaration */ || kind === 274 /* ExportAssignment */ || kind === 267 /* NamespaceExportDeclaration */; } function isStatementKindButNotDeclarationKind(kind) { - return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 354 /* NotEmittedStatement */ || kind === 358 /* EndOfDeclarationMarker */ || kind === 357 /* MergeDeclarationMarker */; + return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 355 /* NotEmittedStatement */ || kind === 359 /* EndOfDeclarationMarker */ || kind === 358 /* MergeDeclarationMarker */; } function isDeclaration(node) { if (node.kind === 165 /* TypeParameter */) { @@ -12555,13 +12685,13 @@ ${lanes.join("\n")} return kind === 292 /* CaseClause */ || kind === 293 /* DefaultClause */; } function isJSDocNode(node) { - return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 352 /* LastJSDocNode */; + return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 353 /* LastJSDocNode */; } function isJSDocCommentContainingNode(node) { return node.kind === 323 /* JSDoc */ || node.kind === 322 /* JSDocNamepathType */ || node.kind === 324 /* JSDocText */ || isJSDocLinkLike(node) || isJSDocTag(node) || isJSDocTypeLiteral(node) || isJSDocSignature(node); } function isJSDocTag(node) { - return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 352 /* LastJSDocTagNode */; + return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 353 /* LastJSDocTagNode */; } function isSetAccessor(node) { return node.kind === 175 /* SetAccessor */; @@ -12981,7 +13111,7 @@ ${lanes.join("\n")} if (includeJsDoc && hasJSDocNodes(node)) { return getTokenPosOfNode(node.jsDoc[0], sourceFile); } - if (node.kind === 353 /* SyntaxList */ && node._children.length > 0) { + if (node.kind === 354 /* SyntaxList */ && node._children.length > 0) { return getTokenPosOfNode(node._children[0], sourceFile, includeJsDoc); } return skipTrivia( @@ -13033,6 +13163,10 @@ ${lanes.join("\n")} const emitNode = node.emitNode; return emitNode && emitNode.flags || 0; } + function getInternalEmitFlags(node) { + const emitNode = node.emitNode; + return emitNode && emitNode.internalFlags || 0; + } function getScriptTargetFeatures() { return { es2015: { @@ -13282,6 +13416,7 @@ ${lanes.join("\n")} return false; } function isDeclarationWithTypeParameters(node) { + Debug.type(node); switch (node.kind) { case 341 /* JSDocCallbackTag */: case 349 /* JSDocTypedefTag */: @@ -13293,6 +13428,7 @@ ${lanes.join("\n")} } } function isDeclarationWithTypeParameterChildren(node) { + Debug.type(node); switch (node.kind) { case 176 /* CallSignature */: case 177 /* ConstructSignature */: @@ -13373,10 +13509,11 @@ ${lanes.join("\n")} return name.kind === 164 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression); } function tryGetTextOfPropertyName(name) { + var _a2; switch (name.kind) { case 79 /* Identifier */: case 80 /* PrivateIdentifier */: - return name.autoGenerate ? void 0 : name.escapedText; + return ((_a2 = name.emitNode) == null ? void 0 : _a2.autoGenerate) ? void 0 : name.escapedText; case 10 /* StringLiteral */: case 8 /* NumericLiteral */: case 14 /* NoSubstitutionTemplateLiteral */: @@ -13425,11 +13562,14 @@ ${lanes.join("\n")} const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2, arg3); } - function createDiagnosticForNodeFromMessageChain(node, messageChain, relatedInformation) { - const sourceFile = getSourceFileOfNode(node); + function createDiagnosticForNodeFromMessageChain(sourceFile, node, messageChain, relatedInformation) { const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnosticFromMessageChain(sourceFile, span.start, span.length, messageChain, relatedInformation); } + function createDiagnosticForNodeArrayFromMessageChain(sourceFile, nodes, messageChain, relatedInformation) { + const start = skipTrivia(sourceFile.text, nodes.pos); + return createFileDiagnosticFromMessageChain(sourceFile, start, nodes.end - start, messageChain, relatedInformation); + } function assertDiagnosticLocation(file, start, length2) { Debug.assertGreaterThanOrEqual(start, 0); Debug.assertGreaterThanOrEqual(length2, 0); @@ -13494,6 +13634,20 @@ ${lanes.join("\n")} const start = scanner2.getTokenPos(); return createTextSpanFromBounds(start, scanner2.getTextPos()); } + function scanTokenAtPosition(sourceFile, pos) { + const scanner2 = createScanner( + sourceFile.languageVersion, + /*skipTrivia*/ + true, + sourceFile.languageVariant, + sourceFile.text, + /*onError:*/ + void 0, + pos + ); + scanner2.scan(); + return scanner2.getToken(); + } function getErrorSpanForArrowFunction(sourceFile, node) { const pos = skipTrivia(sourceFile.text, node.pos); if (node.body && node.body.kind === 238 /* Block */) { @@ -14082,47 +14236,90 @@ ${lanes.join("\n")} return node.expression; } } - function nodeCanBeDecorated(node, parent2, grandparent) { - if (isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { + function nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent) { + if (useLegacyDecorators && isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { return false; } switch (node.kind) { case 260 /* ClassDeclaration */: return true; + case 228 /* ClassExpression */: + return !useLegacyDecorators; case 169 /* PropertyDeclaration */: - return parent2.kind === 260 /* ClassDeclaration */; + return parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2) && !hasAbstractModifier(node) && !hasAmbientModifier(node)); case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: - return node.body !== void 0 && parent2.kind === 260 /* ClassDeclaration */; + return node.body !== void 0 && parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2)); case 166 /* Parameter */: - return parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && grandparent.kind === 260 /* ClassDeclaration */; + if (!useLegacyDecorators) + return false; + return parent2 !== void 0 && parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && getThisParameter(parent2) !== node && grandparent !== void 0 && grandparent.kind === 260 /* ClassDeclaration */; } return false; } - function nodeIsDecorated(node, parent2, grandparent) { - return hasDecorators(node) && nodeCanBeDecorated(node, parent2, grandparent); + function nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return hasDecorators(node) && nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent); } - function nodeOrChildIsDecorated(node, parent2, grandparent) { - return nodeIsDecorated(node, parent2, grandparent) || childIsDecorated(node, parent2); + function nodeOrChildIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) || childIsDecorated(useLegacyDecorators, node, parent2); } - function childIsDecorated(node, parent2) { + function childIsDecorated(useLegacyDecorators, node, parent2) { switch (node.kind) { case 260 /* ClassDeclaration */: - return some(node.members, (m) => nodeOrChildIsDecorated(m, node, parent2)); + return some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); + case 228 /* ClassExpression */: + return !useLegacyDecorators && some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); case 171 /* MethodDeclaration */: case 175 /* SetAccessor */: case 173 /* Constructor */: - return some(node.parameters, (p) => nodeIsDecorated(p, node, parent2)); + return some(node.parameters, (p) => nodeIsDecorated(useLegacyDecorators, p, node, parent2)); default: return false; } } - function classOrConstructorParameterIsDecorated(node) { - if (nodeIsDecorated(node)) + function classOrConstructorParameterIsDecorated(useLegacyDecorators, node) { + if (nodeIsDecorated(useLegacyDecorators, node)) return true; const constructor = getFirstConstructorWithBody(node); - return !!constructor && childIsDecorated(constructor, node); + return !!constructor && childIsDecorated(useLegacyDecorators, constructor, node); + } + function classElementOrClassElementParameterIsDecorated(useLegacyDecorators, node, parent2) { + let parameters; + if (isAccessor(node)) { + const { firstAccessor, secondAccessor, setAccessor } = getAllAccessorDeclarations(parent2.members, node); + const firstAccessorWithDecorators = hasDecorators(firstAccessor) ? firstAccessor : secondAccessor && hasDecorators(secondAccessor) ? secondAccessor : void 0; + if (!firstAccessorWithDecorators || node !== firstAccessorWithDecorators) { + return false; + } + parameters = setAccessor == null ? void 0 : setAccessor.parameters; + } else if (isMethodDeclaration(node)) { + parameters = node.parameters; + } + if (nodeIsDecorated(useLegacyDecorators, node, parent2)) { + return true; + } + if (parameters) { + for (const parameter of parameters) { + if (parameterIsThisKeyword(parameter)) + continue; + if (nodeIsDecorated(useLegacyDecorators, parameter, node, parent2)) + return true; + } + } + return false; + } + function isEmptyStringLiteral(node) { + if (node.textSourceNode) { + switch (node.textSourceNode.kind) { + case 10 /* StringLiteral */: + return isEmptyStringLiteral(node.textSourceNode); + case 14 /* NoSubstitutionTemplateLiteral */: + return node.text === ""; + } + return false; + } + return node.text === ""; } function isJSXTagName(node) { const { parent: parent2 } = node; @@ -14319,6 +14516,9 @@ ${lanes.join("\n")} true ); } + function isBindingElementOfBareOrAccessedRequire(node) { + return isBindingElement(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node.parent.parent); + } function isVariableDeclarationInitializedWithRequireHelper(node, allowAccessedRequire) { return isVariableDeclaration(node) && !!node.initializer && isRequireCall( allowAccessedRequire ? getLeftmostAccessExpression(node.initializer) : node.initializer, @@ -14563,7 +14763,7 @@ ${lanes.join("\n")} } function setValueDeclaration(symbol, node) { const { valueDeclaration } = symbol; - if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { + if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !isInJSFile(node) && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { symbol.valueDeclaration = node; } } @@ -14578,6 +14778,7 @@ ${lanes.join("\n")} var _a2, _b; switch (node.kind) { case 257 /* VariableDeclaration */: + case 205 /* BindingElement */: return (_a2 = findAncestor(node.initializer, (node2) => isRequireCall( node2, /*requireStringLiteralLikeArgument*/ @@ -14587,6 +14788,14 @@ ${lanes.join("\n")} return tryCast(node.moduleSpecifier, isStringLiteralLike); case 268 /* ImportEqualsDeclaration */: return tryCast((_b = tryCast(node.moduleReference, isExternalModuleReference)) == null ? void 0 : _b.expression, isStringLiteralLike); + case 270 /* ImportClause */: + case 277 /* NamespaceExport */: + return tryCast(node.parent.moduleSpecifier, isStringLiteralLike); + case 271 /* NamespaceImport */: + case 278 /* ExportSpecifier */: + return tryCast(node.parent.parent.moduleSpecifier, isStringLiteralLike); + case 273 /* ImportSpecifier */: + return tryCast(node.parent.parent.parent.moduleSpecifier, isStringLiteralLike); default: Debug.assertNever(node); } @@ -14832,7 +15041,7 @@ ${lanes.join("\n")} return ownsJSDocTag(hostNode, jsDoc) ? [jsDoc] : void 0; } function ownsJSDocTag(hostNode, tag) { - return !isJSDocTypeTag(tag) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; + return !(isJSDocTypeTag(tag) || isJSDocSatisfiesTag(tag)) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; } function getNextJSDocCommentLocation(node) { const parent2 = node.parent; @@ -15176,7 +15385,8 @@ ${lanes.join("\n")} const token = stringToToken(name); return token !== void 0 && isKeyword(token); } - function isIdentifierANonContextualKeyword({ originalKeywordKind }) { + function isIdentifierANonContextualKeyword(node) { + const originalKeywordKind = identifierToKeywordKind(node); return !!originalKeywordKind && !isContextualKeyword(originalKeywordKind); } function isTrivia(token) { @@ -15287,6 +15497,72 @@ ${lanes.join("\n")} function isESSymbolIdentifier(node) { return node.kind === 79 /* Identifier */ && node.escapedText === "Symbol"; } + function isProtoSetter(node) { + return isIdentifier(node) ? idText(node) === "__proto__" : isStringLiteral(node) && node.text === "__proto__"; + } + function isAnonymousFunctionDefinition(node, cb) { + node = skipOuterExpressions(node); + switch (node.kind) { + case 228 /* ClassExpression */: + case 215 /* FunctionExpression */: + if (node.name) { + return false; + } + break; + case 216 /* ArrowFunction */: + break; + default: + return false; + } + return typeof cb === "function" ? cb(node) : true; + } + function isNamedEvaluationSource(node) { + switch (node.kind) { + case 299 /* PropertyAssignment */: + return !isProtoSetter(node.name); + case 300 /* ShorthandPropertyAssignment */: + return !!node.objectAssignmentInitializer; + case 257 /* VariableDeclaration */: + return isIdentifier(node.name) && !!node.initializer; + case 166 /* Parameter */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 205 /* BindingElement */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 169 /* PropertyDeclaration */: + return !!node.initializer; + case 223 /* BinaryExpression */: + switch (node.operatorToken.kind) { + case 63 /* EqualsToken */: + case 76 /* AmpersandAmpersandEqualsToken */: + case 75 /* BarBarEqualsToken */: + case 77 /* QuestionQuestionEqualsToken */: + return isIdentifier(node.left); + } + break; + case 274 /* ExportAssignment */: + return true; + } + return false; + } + function isNamedEvaluation(node, cb) { + if (!isNamedEvaluationSource(node)) + return false; + switch (node.kind) { + case 299 /* PropertyAssignment */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 300 /* ShorthandPropertyAssignment */: + return isAnonymousFunctionDefinition(node.objectAssignmentInitializer, cb); + case 257 /* VariableDeclaration */: + case 166 /* Parameter */: + case 205 /* BindingElement */: + case 169 /* PropertyDeclaration */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 223 /* BinaryExpression */: + return isAnonymousFunctionDefinition(node.right, cb); + case 274 /* ExportAssignment */: + return isAnonymousFunctionDefinition(node.expression, cb); + } + } function isPushOrUnshiftIdentifier(node) { return node.escapedText === "push" || node.escapedText === "unshift"; } @@ -15367,7 +15643,7 @@ ${lanes.join("\n")} } function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return 0 /* Comma */; case 227 /* SpreadElement */: return 1 /* Spread */; @@ -15975,7 +16251,7 @@ ${lanes.join("\n")} return node.parent.kind === 183 /* TypeQuery */; } function identifierIsThisKeyword(id) { - return id.originalKeywordKind === 108 /* ThisKeyword */; + return id.escapedText === "this"; } function getAllAccessorDeclarations(declarations, accessor) { let firstAccessor; @@ -16286,7 +16562,7 @@ ${lanes.join("\n")} } function getSyntacticModifierFlagsNoCache(node) { let flags = canHaveModifiers(node) ? modifiersToFlags(node.modifiers) : 0 /* None */; - if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.isInJSDocNamespace) { + if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { flags |= 1 /* Export */; } return flags; @@ -16337,14 +16613,23 @@ ${lanes.join("\n")} } return 0 /* None */; } + function isBinaryLogicalOperator(token) { + return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */; + } function isLogicalOperator(token) { - return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */ || token === 53 /* ExclamationToken */; + return isBinaryLogicalOperator(token) || token === 53 /* ExclamationToken */; } function isLogicalOrCoalescingAssignmentOperator(token) { return token === 75 /* BarBarEqualsToken */ || token === 76 /* AmpersandAmpersandEqualsToken */ || token === 77 /* QuestionQuestionEqualsToken */; } function isLogicalOrCoalescingAssignmentExpression(expr) { - return isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + return isBinaryExpression(expr) && isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + } + function isLogicalOrCoalescingBinaryOperator(token) { + return isBinaryLogicalOperator(token) || token === 60 /* QuestionQuestionToken */; + } + function isLogicalOrCoalescingBinaryExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingBinaryOperator(expr.operatorToken.kind); } function isAssignmentOperator(token) { return token >= 63 /* FirstAssignment */ && token <= 78 /* LastAssignment */; @@ -16581,14 +16866,14 @@ ${lanes.join("\n")} function directoryProbablyExists(directoryName, host) { return !host.directoryExists || host.directoryExists(directoryName); } - function getNewLineCharacter(options, getNewLine) { + function getNewLineCharacter(options) { switch (options.newLine) { case 0 /* CarriageReturnLineFeed */: return carriageReturnLineFeed; case 1 /* LineFeed */: + case void 0: return lineFeed; } - return getNewLine ? getNewLine() : sys ? sys.newLine : carriageReturnLineFeed; } function createRange(pos, end = pos) { Debug.assert(end >= pos || end === -1); @@ -16605,6 +16890,9 @@ ${lanes.join("\n")} return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? moveRangePos(node, lastDecorator.end) : node; } function moveRangePastModifiers(node) { + if (isPropertyDeclaration(node) || isMethodDeclaration(node)) { + return moveRangePos(node, node.name.pos); + } const lastModifier = canHaveModifiers(node) ? lastOrUndefined(node.modifiers) : void 0; return lastModifier && !positionIsSynthesized(lastModifier.end) ? moveRangePos(node, lastModifier.end) : moveRangePastDecorators(node); } @@ -16718,7 +17006,7 @@ ${lanes.join("\n")} return filter(node.declarations, isInitializedVariable); } function isInitializedVariable(node) { - return node.initializer !== void 0; + return isVariableDeclaration(node) && node.initializer !== void 0; } function isWatchSet(options) { return options.watch && hasProperty(options, "watch"); @@ -16899,7 +17187,7 @@ ${lanes.join("\n")} return isClassLike(node) || isInterfaceDeclaration(node) || isTypeLiteralNode(node); } function isTypeNodeKind(kind) { - return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; + return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 139 /* IntrinsicKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; } function isAccessExpression(node) { return node.kind === 208 /* PropertyAccessExpression */ || node.kind === 209 /* ElementAccessExpression */; @@ -16981,7 +17269,7 @@ ${lanes.join("\n")} case 209 /* ElementAccessExpression */: case 208 /* PropertyAccessExpression */: case 232 /* NonNullExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: node = node.expression; continue; @@ -17049,15 +17337,19 @@ ${lanes.join("\n")} this.parent = void 0; this.original = void 0; this.emitNode = void 0; - this.flowNode = void 0; } function SourceMapSource(fileName, text, skipTrivia2) { this.fileName = fileName; this.text = text; this.skipTrivia = skipTrivia2 || ((pos) => pos); } + function addObjectAllocatorPatcher(fn) { + objectAllocatorPatchers.push(fn); + fn(objectAllocator); + } function setObjectAllocator(alloc) { Object.assign(objectAllocator, alloc); + forEach(objectAllocatorPatchers, (fn) => fn(objectAllocator)); } function formatStringFromArgs(text, args, baseIndex = 0) { return text.replace(/{(\d+)}/g, (_match, index) => "" + Debug.checkDefined(args[+index + baseIndex])); @@ -17343,6 +17635,12 @@ ${lanes.join("\n")} return false; } } + function getIsolatedModules(options) { + return !!(options.isolatedModules || options.verbatimModuleSyntax); + } + function importNameElisionDisabled(options) { + return options.verbatimModuleSyntax || options.isolatedModules && options.preserveValueImports; + } function unreachableCodeIsError(options) { return options.allowUnreachableCode === false; } @@ -18200,7 +18498,7 @@ ${lanes.join("\n")} return node.parent.templateSpans; case 167 /* Decorator */: { const { parent: parent4 } = node; - return canHaveDecorators(parent4) ? parent4.modifiers : canHaveIllegalDecorators(parent4) ? parent4.illegalDecorators : void 0; + return canHaveDecorators(parent4) ? parent4.modifiers : void 0; } case 294 /* HeritageClause */: return node.parent.heritageClauses; @@ -18218,7 +18516,7 @@ ${lanes.join("\n")} return parent2.types; case 186 /* TupleType */: case 206 /* ArrayLiteralExpression */: - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: case 272 /* NamedImports */: case 276 /* NamedExports */: return parent2.elements; @@ -18403,7 +18701,17 @@ ${lanes.join("\n")} const kind = node.kind; return (kind === 208 /* PropertyAccessExpression */ || kind === 209 /* ElementAccessExpression */) && isNonNullExpression(node.expression); } - var resolvingEmptyArray, externalHelpersModuleNameText, defaultMaximumTruncationLength, noTruncationMaximumTruncationLength, stringWriter, GetLiteralTextFlags, fullTripleSlashReferencePathRegEx, fullTripleSlashReferenceTypeReferenceDirectiveRegEx, fullTripleSlashAMDReferencePathRegEx, defaultLibReferenceRegEx, AssignmentKind, FunctionFlags, Associativity, OperatorPrecedence, templateSubstitutionRegExp, doubleQuoteEscapedCharsRegExp, singleQuoteEscapedCharsRegExp, backtickQuoteEscapedCharsRegExp, escapedCharsMap, nonAsciiCharacters, jsxDoubleQuoteEscapedCharsRegExp, jsxSingleQuoteEscapedCharsRegExp, jsxEscapedCharsMap, indentStrings, base64Digits, carriageReturnLineFeed, lineFeed, AccessKind, objectAllocator, localizedDiagnosticMessages, reservedCharacterPattern, wildcardCharCodes, commonPackageFolders, implicitExcludePathRegexPattern, filesMatcher, directoriesMatcher, excludeMatcher, wildcardMatchers, supportedTSExtensions, supportedTSExtensionsFlat, supportedTSExtensionsWithJson, supportedTSExtensionsForExtractExtension, supportedJSExtensions, supportedJSExtensionsFlat, allSupportedExtensions, allSupportedExtensionsWithJson, supportedDeclarationExtensions, supportedTSImplementationExtensions, ModuleSpecifierEnding, extensionsToRemove, emptyFileSystemEntries; + function isJSDocSatisfiesExpression(node) { + return isInJSFile(node) && isParenthesizedExpression(node) && hasJSDocNodes(node) && !!getJSDocSatisfiesTag(node); + } + function getJSDocSatisfiesExpressionType(node) { + return Debug.checkDefined(tryGetJSDocSatisfiesTypeNode(node)); + } + function tryGetJSDocSatisfiesTypeNode(node) { + const tag = getJSDocSatisfiesTag(node); + return tag && tag.typeExpression && tag.typeExpression.type; + } + var resolvingEmptyArray, externalHelpersModuleNameText, defaultMaximumTruncationLength, noTruncationMaximumTruncationLength, stringWriter, GetLiteralTextFlags, fullTripleSlashReferencePathRegEx, fullTripleSlashReferenceTypeReferenceDirectiveRegEx, fullTripleSlashAMDReferencePathRegEx, defaultLibReferenceRegEx, AssignmentKind, FunctionFlags, Associativity, OperatorPrecedence, templateSubstitutionRegExp, doubleQuoteEscapedCharsRegExp, singleQuoteEscapedCharsRegExp, backtickQuoteEscapedCharsRegExp, escapedCharsMap, nonAsciiCharacters, jsxDoubleQuoteEscapedCharsRegExp, jsxSingleQuoteEscapedCharsRegExp, jsxEscapedCharsMap, indentStrings, base64Digits, carriageReturnLineFeed, lineFeed, AccessKind, objectAllocator, objectAllocatorPatchers, localizedDiagnosticMessages, reservedCharacterPattern, wildcardCharCodes, commonPackageFolders, implicitExcludePathRegexPattern, filesMatcher, directoriesMatcher, excludeMatcher, wildcardMatchers, supportedTSExtensions, supportedTSExtensionsFlat, supportedTSExtensionsWithJson, supportedTSExtensionsForExtractExtension, supportedJSExtensions, supportedJSExtensionsFlat, allSupportedExtensions, allSupportedExtensionsWithJson, supportedDeclarationExtensions, supportedTSImplementationExtensions, ModuleSpecifierEnding, extensionsToRemove, emptyFileSystemEntries; var init_utilities = __esm({ "src/compiler/utilities.ts"() { "use strict"; @@ -18524,6 +18832,7 @@ ${lanes.join("\n")} getSignatureConstructor: () => Signature2, getSourceMapSourceConstructor: () => SourceMapSource }; + objectAllocatorPatchers = []; reservedCharacterPattern = /[^\w\s\/]/g; wildcardCharCodes = [42 /* asterisk */, 63 /* question */]; commonPackageFolders = ["node_modules", "bower_components", "jspm_packages"]; @@ -19064,7 +19373,7 @@ ${lanes.join("\n")} if (!node.body) return Debug.fail(`Cannot convert a FunctionDeclaration without a body`); const updated = factory2.createFunctionExpression( - node.modifiers, + getModifiers(node), node.asteriskToken, node.name, node.typeParameters, @@ -19203,46 +19512,45 @@ ${lanes.join("\n")} }, baseFactory: baseFactory2, flags, - createNodeArray: createNodeArray2, - createNumericLiteral: createNumericLiteral2, - createBigIntLiteral: createBigIntLiteral2, - createStringLiteral: createStringLiteral2, - createStringLiteralFromNode: createStringLiteralFromNode2, - createRegularExpressionLiteral: createRegularExpressionLiteral2, + createNodeArray, + createNumericLiteral, + createBigIntLiteral, + createStringLiteral, + createStringLiteralFromNode, + createRegularExpressionLiteral, createLiteralLikeNode, - createIdentifier: createIdentifier3, - updateIdentifier, - createTempVariable: createTempVariable3, - createLoopVariable: createLoopVariable2, - createUniqueName: createUniqueName2, - getGeneratedNameForNode: getGeneratedNameForNode3, - createPrivateIdentifier: createPrivateIdentifier2, + createIdentifier, + createTempVariable, + createLoopVariable, + createUniqueName, + getGeneratedNameForNode, + createPrivateIdentifier, createUniquePrivateName, getGeneratedPrivateNameForNode, - createToken: createToken3, - createSuper: createSuper2, - createThis: createThis2, - createNull: createNull2, - createTrue: createTrue2, - createFalse: createFalse2, - createModifier: createModifier2, - createModifiersFromModifierFlags: createModifiersFromModifierFlags2, - createQualifiedName: createQualifiedName2, - updateQualifiedName: updateQualifiedName2, - createComputedPropertyName: createComputedPropertyName2, - updateComputedPropertyName: updateComputedPropertyName2, - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2, + createToken, + createSuper, + createThis, + createNull, + createTrue, + createFalse, + createModifier, + createModifiersFromModifierFlags, + createQualifiedName, + updateQualifiedName, + createComputedPropertyName, + updateComputedPropertyName, + createTypeParameterDeclaration, + updateTypeParameterDeclaration, createParameterDeclaration, updateParameterDeclaration, - createDecorator: createDecorator2, - updateDecorator: updateDecorator2, - createPropertySignature: createPropertySignature3, - updatePropertySignature: updatePropertySignature3, + createDecorator, + updateDecorator, + createPropertySignature, + updatePropertySignature, createPropertyDeclaration, updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodSignature: createMethodSignature3, - updateMethodSignature: updateMethodSignature3, + createMethodSignature, + updateMethodSignature, createMethodDeclaration, updateMethodDeclaration, createConstructorDeclaration, @@ -19251,96 +19559,96 @@ ${lanes.join("\n")} updateGetAccessorDeclaration, createSetAccessorDeclaration, updateSetAccessorDeclaration, - createCallSignature: createCallSignature2, - updateCallSignature: updateCallSignature2, - createConstructSignature: createConstructSignature2, - updateConstructSignature: updateConstructSignature2, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, + createCallSignature, + updateCallSignature, + createConstructSignature, + updateConstructSignature, + createIndexSignature, + updateIndexSignature, createClassStaticBlockDeclaration, updateClassStaticBlockDeclaration, createTemplateLiteralTypeSpan, updateTemplateLiteralTypeSpan, - createKeywordTypeNode: createKeywordTypeNode2, - createTypePredicateNode: createTypePredicateNode3, - updateTypePredicateNode: updateTypePredicateNode3, - createTypeReferenceNode: createTypeReferenceNode2, - updateTypeReferenceNode: updateTypeReferenceNode2, - createFunctionTypeNode: createFunctionTypeNode2, - updateFunctionTypeNode: updateFunctionTypeNode2, - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2, - createTypeQueryNode: createTypeQueryNode2, - updateTypeQueryNode: updateTypeQueryNode2, - createTypeLiteralNode: createTypeLiteralNode2, - updateTypeLiteralNode: updateTypeLiteralNode2, - createArrayTypeNode: createArrayTypeNode2, - updateArrayTypeNode: updateArrayTypeNode2, - createTupleTypeNode: createTupleTypeNode2, - updateTupleTypeNode: updateTupleTypeNode2, + createKeywordTypeNode, + createTypePredicateNode, + updateTypePredicateNode, + createTypeReferenceNode, + updateTypeReferenceNode, + createFunctionTypeNode, + updateFunctionTypeNode, + createConstructorTypeNode, + updateConstructorTypeNode, + createTypeQueryNode, + updateTypeQueryNode, + createTypeLiteralNode, + updateTypeLiteralNode, + createArrayTypeNode, + updateArrayTypeNode, + createTupleTypeNode, + updateTupleTypeNode, createNamedTupleMember, updateNamedTupleMember, - createOptionalTypeNode: createOptionalTypeNode2, - updateOptionalTypeNode: updateOptionalTypeNode2, - createRestTypeNode: createRestTypeNode2, - updateRestTypeNode: updateRestTypeNode2, - createUnionTypeNode: createUnionTypeNode2, - updateUnionTypeNode: updateUnionTypeNode2, - createIntersectionTypeNode: createIntersectionTypeNode2, - updateIntersectionTypeNode: updateIntersectionTypeNode2, - createConditionalTypeNode: createConditionalTypeNode2, - updateConditionalTypeNode: updateConditionalTypeNode2, - createInferTypeNode: createInferTypeNode2, - updateInferTypeNode: updateInferTypeNode2, - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2, - createParenthesizedType: createParenthesizedType2, - updateParenthesizedType: updateParenthesizedType2, - createThisTypeNode: createThisTypeNode2, - createTypeOperatorNode: createTypeOperatorNode3, - updateTypeOperatorNode: updateTypeOperatorNode2, - createIndexedAccessTypeNode: createIndexedAccessTypeNode2, - updateIndexedAccessTypeNode: updateIndexedAccessTypeNode2, - createMappedTypeNode: createMappedTypeNode2, - updateMappedTypeNode: updateMappedTypeNode2, - createLiteralTypeNode: createLiteralTypeNode2, - updateLiteralTypeNode: updateLiteralTypeNode2, + createOptionalTypeNode, + updateOptionalTypeNode, + createRestTypeNode, + updateRestTypeNode, + createUnionTypeNode, + updateUnionTypeNode, + createIntersectionTypeNode, + updateIntersectionTypeNode, + createConditionalTypeNode, + updateConditionalTypeNode, + createInferTypeNode, + updateInferTypeNode, + createImportTypeNode, + updateImportTypeNode, + createParenthesizedType, + updateParenthesizedType, + createThisTypeNode, + createTypeOperatorNode, + updateTypeOperatorNode, + createIndexedAccessTypeNode, + updateIndexedAccessTypeNode, + createMappedTypeNode, + updateMappedTypeNode, + createLiteralTypeNode, + updateLiteralTypeNode, createTemplateLiteralType, updateTemplateLiteralType, - createObjectBindingPattern: createObjectBindingPattern2, - updateObjectBindingPattern: updateObjectBindingPattern2, - createArrayBindingPattern: createArrayBindingPattern2, - updateArrayBindingPattern: updateArrayBindingPattern2, - createBindingElement: createBindingElement2, - updateBindingElement: updateBindingElement2, + createObjectBindingPattern, + updateObjectBindingPattern, + createArrayBindingPattern, + updateArrayBindingPattern, + createBindingElement, + updateBindingElement, createArrayLiteralExpression, updateArrayLiteralExpression, createObjectLiteralExpression, updateObjectLiteralExpression, createPropertyAccessExpression: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, name) => setEmitFlags(createPropertyAccessExpression(expression, name), 262144 /* NoIndentation */) : createPropertyAccessExpression, updatePropertyAccessExpression, - createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain2(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain2, - updatePropertyAccessChain: updatePropertyAccessChain2, + createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain, + updatePropertyAccessChain, createElementAccessExpression, updateElementAccessExpression, - createElementAccessChain: createElementAccessChain2, - updateElementAccessChain: updateElementAccessChain2, + createElementAccessChain, + updateElementAccessChain, createCallExpression, updateCallExpression, - createCallChain: createCallChain2, - updateCallChain: updateCallChain2, + createCallChain, + updateCallChain, createNewExpression, updateNewExpression, createTaggedTemplateExpression, updateTaggedTemplateExpression, - createTypeAssertion: createTypeAssertion2, - updateTypeAssertion: updateTypeAssertion2, + createTypeAssertion, + updateTypeAssertion, createParenthesizedExpression, updateParenthesizedExpression, - createFunctionExpression: createFunctionExpression2, - updateFunctionExpression: updateFunctionExpression2, - createArrowFunction: createArrowFunction3, - updateArrowFunction: updateArrowFunction3, + createFunctionExpression, + updateFunctionExpression, + createArrowFunction, + updateArrowFunction, createDeleteExpression, updateDeleteExpression, createTypeOfExpression, @@ -19357,42 +19665,42 @@ ${lanes.join("\n")} updateBinaryExpression, createConditionalExpression, updateConditionalExpression, - createTemplateExpression: createTemplateExpression2, - updateTemplateExpression: updateTemplateExpression2, - createTemplateHead: createTemplateHead2, - createTemplateMiddle: createTemplateMiddle2, - createTemplateTail: createTemplateTail2, - createNoSubstitutionTemplateLiteral: createNoSubstitutionTemplateLiteral2, + createTemplateExpression, + updateTemplateExpression, + createTemplateHead, + createTemplateMiddle, + createTemplateTail, + createNoSubstitutionTemplateLiteral, createTemplateLiteralLikeNode, createYieldExpression, updateYieldExpression, createSpreadElement, updateSpreadElement, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createOmittedExpression: createOmittedExpression2, - createExpressionWithTypeArguments: createExpressionWithTypeArguments3, - updateExpressionWithTypeArguments: updateExpressionWithTypeArguments3, - createAsExpression: createAsExpression2, - updateAsExpression: updateAsExpression2, - createNonNullExpression: createNonNullExpression2, - updateNonNullExpression: updateNonNullExpression2, + createClassExpression, + updateClassExpression, + createOmittedExpression, + createExpressionWithTypeArguments, + updateExpressionWithTypeArguments, + createAsExpression, + updateAsExpression, + createNonNullExpression, + updateNonNullExpression, createSatisfiesExpression, updateSatisfiesExpression, - createNonNullChain: createNonNullChain2, - updateNonNullChain: updateNonNullChain2, - createMetaProperty: createMetaProperty2, - updateMetaProperty: updateMetaProperty2, - createTemplateSpan: createTemplateSpan2, - updateTemplateSpan: updateTemplateSpan2, - createSemicolonClassElement: createSemicolonClassElement2, - createBlock: createBlock2, - updateBlock: updateBlock2, - createVariableStatement: createVariableStatement2, - updateVariableStatement: updateVariableStatement2, - createEmptyStatement: createEmptyStatement2, - createExpressionStatement: createExpressionStatement2, - updateExpressionStatement: updateExpressionStatement2, + createNonNullChain, + updateNonNullChain, + createMetaProperty, + updateMetaProperty, + createTemplateSpan, + updateTemplateSpan, + createSemicolonClassElement, + createBlock, + updateBlock, + createVariableStatement, + updateVariableStatement, + createEmptyStatement, + createExpressionStatement, + updateExpressionStatement, createIfStatement, updateIfStatement, createDoStatement, @@ -19421,60 +19729,60 @@ ${lanes.join("\n")} updateThrowStatement, createTryStatement, updateTryStatement, - createDebuggerStatement: createDebuggerStatement2, - createVariableDeclaration: createVariableDeclaration3, - updateVariableDeclaration: updateVariableDeclaration3, - createVariableDeclarationList: createVariableDeclarationList2, - updateVariableDeclarationList: updateVariableDeclarationList2, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createModuleBlock: createModuleBlock2, - updateModuleBlock: updateModuleBlock2, - createCaseBlock: createCaseBlock2, - updateCaseBlock: updateCaseBlock2, - createNamespaceExportDeclaration: createNamespaceExportDeclaration2, - updateNamespaceExportDeclaration: updateNamespaceExportDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createImportClause: createImportClause3, - updateImportClause: updateImportClause3, + createDebuggerStatement, + createVariableDeclaration, + updateVariableDeclaration, + createVariableDeclarationList, + updateVariableDeclarationList, + createFunctionDeclaration, + updateFunctionDeclaration, + createClassDeclaration, + updateClassDeclaration, + createInterfaceDeclaration, + updateInterfaceDeclaration, + createTypeAliasDeclaration, + updateTypeAliasDeclaration, + createEnumDeclaration, + updateEnumDeclaration, + createModuleDeclaration, + updateModuleDeclaration, + createModuleBlock, + updateModuleBlock, + createCaseBlock, + updateCaseBlock, + createNamespaceExportDeclaration, + updateNamespaceExportDeclaration, + createImportEqualsDeclaration, + updateImportEqualsDeclaration, + createImportDeclaration, + updateImportDeclaration, + createImportClause, + updateImportClause, createAssertClause, updateAssertClause, createAssertEntry, updateAssertEntry, createImportTypeAssertionContainer, updateImportTypeAssertionContainer, - createNamespaceImport: createNamespaceImport2, - updateNamespaceImport: updateNamespaceImport2, - createNamespaceExport: createNamespaceExport2, - updateNamespaceExport: updateNamespaceExport2, - createNamedImports: createNamedImports2, - updateNamedImports: updateNamedImports2, - createImportSpecifier: createImportSpecifier2, - updateImportSpecifier: updateImportSpecifier2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3, - createNamedExports: createNamedExports2, - updateNamedExports: updateNamedExports2, - createExportSpecifier: createExportSpecifier2, - updateExportSpecifier: updateExportSpecifier2, + createNamespaceImport, + updateNamespaceImport, + createNamespaceExport, + updateNamespaceExport, + createNamedImports, + updateNamedImports, + createImportSpecifier, + updateImportSpecifier, + createExportAssignment: createExportAssignment2, + updateExportAssignment, + createExportDeclaration, + updateExportDeclaration, + createNamedExports, + updateNamedExports, + createExportSpecifier, + updateExportSpecifier, createMissingDeclaration, - createExternalModuleReference: createExternalModuleReference2, - updateExternalModuleReference: updateExternalModuleReference2, + createExternalModuleReference, + updateExternalModuleReference, // lazily load factory members for JSDoc types with similar structure get createJSDocAllType() { return getJSDocPrimaryTypeCreateFunction(315 /* JSDocAllType */); @@ -19514,27 +19822,27 @@ ${lanes.join("\n")} }, createJSDocFunctionType, updateJSDocFunctionType, - createJSDocTypeLiteral: createJSDocTypeLiteral2, + createJSDocTypeLiteral, updateJSDocTypeLiteral, - createJSDocTypeExpression: createJSDocTypeExpression2, + createJSDocTypeExpression, updateJSDocTypeExpression, - createJSDocSignature: createJSDocSignature2, + createJSDocSignature, updateJSDocSignature, - createJSDocTemplateTag: createJSDocTemplateTag2, + createJSDocTemplateTag, updateJSDocTemplateTag, - createJSDocTypedefTag: createJSDocTypedefTag2, + createJSDocTypedefTag, updateJSDocTypedefTag, - createJSDocParameterTag: createJSDocParameterTag2, + createJSDocParameterTag, updateJSDocParameterTag, - createJSDocPropertyTag: createJSDocPropertyTag2, + createJSDocPropertyTag, updateJSDocPropertyTag, - createJSDocCallbackTag: createJSDocCallbackTag2, + createJSDocCallbackTag, updateJSDocCallbackTag, createJSDocOverloadTag, updateJSDocOverloadTag, - createJSDocAugmentsTag: createJSDocAugmentsTag2, + createJSDocAugmentsTag, updateJSDocAugmentsTag, - createJSDocImplementsTag: createJSDocImplementsTag2, + createJSDocImplementsTag, updateJSDocImplementsTag, createJSDocSeeTag, updateJSDocSeeTag, @@ -19621,57 +19929,63 @@ ${lanes.join("\n")} get updateJSDocThrowsTag() { return getJSDocTypeLikeTagUpdateFunction(352 /* JSDocThrowsTag */); }, - createJSDocEnumTag: createJSDocEnumTag2, + get createJSDocSatisfiesTag() { + return getJSDocTypeLikeTagCreateFunction(353 /* JSDocSatisfiesTag */); + }, + get updateJSDocSatisfiesTag() { + return getJSDocTypeLikeTagUpdateFunction(353 /* JSDocSatisfiesTag */); + }, + createJSDocEnumTag, updateJSDocEnumTag, createJSDocUnknownTag, updateJSDocUnknownTag, createJSDocText, updateJSDocText, - createJSDocComment: createJSDocComment2, + createJSDocComment, updateJSDocComment, - createJsxElement: createJsxElement2, - updateJsxElement: updateJsxElement2, - createJsxSelfClosingElement: createJsxSelfClosingElement2, - updateJsxSelfClosingElement: updateJsxSelfClosingElement2, - createJsxOpeningElement: createJsxOpeningElement2, - updateJsxOpeningElement: updateJsxOpeningElement2, - createJsxClosingElement: createJsxClosingElement2, - updateJsxClosingElement: updateJsxClosingElement2, - createJsxFragment: createJsxFragment2, - createJsxText: createJsxText2, - updateJsxText: updateJsxText2, - createJsxOpeningFragment: createJsxOpeningFragment2, - createJsxJsxClosingFragment: createJsxJsxClosingFragment2, - updateJsxFragment: updateJsxFragment2, - createJsxAttribute: createJsxAttribute2, - updateJsxAttribute: updateJsxAttribute2, - createJsxAttributes: createJsxAttributes2, - updateJsxAttributes: updateJsxAttributes2, - createJsxSpreadAttribute: createJsxSpreadAttribute2, - updateJsxSpreadAttribute: updateJsxSpreadAttribute2, - createJsxExpression: createJsxExpression2, - updateJsxExpression: updateJsxExpression2, - createCaseClause: createCaseClause2, - updateCaseClause: updateCaseClause2, - createDefaultClause: createDefaultClause2, - updateDefaultClause: updateDefaultClause2, - createHeritageClause: createHeritageClause2, - updateHeritageClause: updateHeritageClause2, - createCatchClause: createCatchClause2, - updateCatchClause: updateCatchClause2, - createPropertyAssignment: createPropertyAssignment2, - updatePropertyAssignment: updatePropertyAssignment2, - createShorthandPropertyAssignment: createShorthandPropertyAssignment2, - updateShorthandPropertyAssignment: updateShorthandPropertyAssignment2, - createSpreadAssignment: createSpreadAssignment2, - updateSpreadAssignment: updateSpreadAssignment2, - createEnumMember: createEnumMember2, - updateEnumMember: updateEnumMember2, + createJsxElement, + updateJsxElement, + createJsxSelfClosingElement, + updateJsxSelfClosingElement, + createJsxOpeningElement, + updateJsxOpeningElement, + createJsxClosingElement, + updateJsxClosingElement, + createJsxFragment, + createJsxText, + updateJsxText, + createJsxOpeningFragment, + createJsxJsxClosingFragment, + updateJsxFragment, + createJsxAttribute, + updateJsxAttribute, + createJsxAttributes, + updateJsxAttributes, + createJsxSpreadAttribute, + updateJsxSpreadAttribute, + createJsxExpression, + updateJsxExpression, + createCaseClause, + updateCaseClause, + createDefaultClause, + updateDefaultClause, + createHeritageClause, + updateHeritageClause, + createCatchClause, + updateCatchClause, + createPropertyAssignment, + updatePropertyAssignment, + createShorthandPropertyAssignment, + updateShorthandPropertyAssignment, + createSpreadAssignment, + updateSpreadAssignment, + createEnumMember, + updateEnumMember, createSourceFile: createSourceFile2, updateSourceFile: updateSourceFile2, createRedirectedSourceFile, - createBundle: createBundle2, - updateBundle: updateBundle2, + createBundle, + updateBundle, createUnparsedSource, createUnparsedPrologue, createUnparsedPrepend, @@ -19680,9 +19994,9 @@ ${lanes.join("\n")} createInputFiles: createInputFiles2, createSyntheticExpression, createSyntaxList: createSyntaxList3, - createNotEmittedStatement: createNotEmittedStatement2, - createPartiallyEmittedExpression: createPartiallyEmittedExpression2, - updatePartiallyEmittedExpression: updatePartiallyEmittedExpression2, + createNotEmittedStatement, + createPartiallyEmittedExpression, + updatePartiallyEmittedExpression, createCommaListExpression, updateCommaListExpression, createEndOfDeclarationMarker, @@ -19788,11 +20102,11 @@ ${lanes.join("\n")} return getPostfixUnaryCreateFunction(46 /* MinusMinusToken */); }, // Compound nodes - createImmediatelyInvokedFunctionExpression: createImmediatelyInvokedFunctionExpression2, - createImmediatelyInvokedArrowFunction: createImmediatelyInvokedArrowFunction2, - createVoidZero: createVoidZero2, - createExportDefault: createExportDefault2, - createExternalModuleExport: createExternalModuleExport2, + createImmediatelyInvokedFunctionExpression, + createImmediatelyInvokedArrowFunction, + createVoidZero, + createExportDefault, + createExternalModuleExport, createTypeCheck, createMethodCall, createGlobalMethodCall, @@ -19802,6 +20116,7 @@ ${lanes.join("\n")} createArraySliceCall, createArrayConcatCall, createObjectDefinePropertyCall, + createObjectGetOwnPropertyDescriptorCall, createReflectGetCall, createReflectSetCall, createPropertyDescriptor, @@ -19828,7 +20143,7 @@ ${lanes.join("\n")} }; forEach(nodeFactoryPatchers, (fn) => fn(factory2)); return factory2; - function createNodeArray2(elements, hasTrailingComma) { + function createNodeArray(elements, hasTrailingComma) { if (elements === void 0 || elements === emptyArray) { elements = []; } else if (isNodeArray(elements)) { @@ -19872,7 +20187,7 @@ ${lanes.join("\n")} } return update(updated, original); } - function createNumericLiteral2(value, numericLiteralFlags = 0 /* None */) { + function createNumericLiteral(value, numericLiteralFlags = 0 /* None */) { const node = createBaseDeclaration(8 /* NumericLiteral */); node.text = typeof value === "number" ? value + "" : value; node.numericLiteralFlags = numericLiteralFlags; @@ -19880,7 +20195,7 @@ ${lanes.join("\n")} node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBigIntLiteral2(value) { + function createBigIntLiteral(value) { const node = createBaseToken(9 /* BigIntLiteral */); node.text = typeof value === "string" ? value : pseudoBigIntToString(value) + "n"; node.transformFlags |= 4 /* ContainsESNext */; @@ -19892,14 +20207,14 @@ ${lanes.join("\n")} node.singleQuote = isSingleQuote; return node; } - function createStringLiteral2(text, isSingleQuote, hasExtendedUnicodeEscape) { + function createStringLiteral(text, isSingleQuote, hasExtendedUnicodeEscape) { const node = createBaseStringLiteral(text, isSingleQuote); node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; if (hasExtendedUnicodeEscape) node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createStringLiteralFromNode2(sourceNode) { + function createStringLiteralFromNode(sourceNode) { const node = createBaseStringLiteral( getTextOfIdentifierOrLiteral(sourceNode), /*isSingleQuote*/ @@ -19908,7 +20223,7 @@ ${lanes.join("\n")} node.textSourceNode = sourceNode; return node; } - function createRegularExpressionLiteral2(text) { + function createRegularExpressionLiteral(text) { const node = createBaseToken(13 /* RegularExpressionLiteral */); node.text = text; return node; @@ -19916,33 +20231,33 @@ ${lanes.join("\n")} function createLiteralLikeNode(kind, text) { switch (kind) { case 8 /* NumericLiteral */: - return createNumericLiteral2( + return createNumericLiteral( text, /*numericLiteralFlags*/ 0 ); case 9 /* BigIntLiteral */: - return createBigIntLiteral2(text); + return createBigIntLiteral(text); case 10 /* StringLiteral */: - return createStringLiteral2( + return createStringLiteral( text, /*isSingleQuote*/ void 0 ); case 11 /* JsxText */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ false ); case 12 /* JsxTextAllWhiteSpaces */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ true ); case 13 /* RegularExpressionLiteral */: - return createRegularExpressionLiteral2(text); + return createRegularExpressionLiteral(text); case 14 /* NoSubstitutionTemplateLiteral */: return createTemplateLiteralLikeNode( kind, @@ -19954,56 +20269,44 @@ ${lanes.join("\n")} ); } } - function createBaseIdentifier(escapedText, originalKeywordKind) { + function createBaseIdentifier(escapedText) { const node = baseFactory2.createBaseIdentifierNode(79 /* Identifier */); - node.originalKeywordKind = originalKeywordKind; node.escapedText = escapedText; - node.autoGenerate = void 0; - node.typeArguments = void 0; - node.hasExtendedUnicodeEscape = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.symbol = void 0; return node; } function createBaseGeneratedIdentifier(text, autoGenerateFlags, prefix, suffix) { - const node = createBaseIdentifier( - escapeLeadingUnderscores(text), - /*originalKeywordKind*/ - void 0 - ); - node.autoGenerate = { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } - function createIdentifier3(text, typeArguments, originalKeywordKind, hasExtendedUnicodeEscape) { + function createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape) { if (originalKeywordKind === void 0 && text) { originalKeywordKind = stringToToken(text); } if (originalKeywordKind === 79 /* Identifier */) { originalKeywordKind = void 0; } - const node = createBaseIdentifier(escapeLeadingUnderscores(text), originalKeywordKind); - node.typeArguments = asNodeArray(typeArguments); - node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; - if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + if (hasExtendedUnicodeEscape) + node.flags |= 128 /* IdentifierHasExtendedUnicodeEscape */; + if (node.escapedText === "await") { node.transformFlags |= 67108864 /* ContainsPossibleTopLevelAwait */; } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { node.transformFlags |= 1024 /* ContainsES2015 */; } return node; } - function updateIdentifier(node, typeArguments) { - return node.typeArguments !== typeArguments ? update(createIdentifier3(idText(node), typeArguments), node) : node; - } - function createTempVariable3(recordTempVariable, reservedInNestedScopes, prefix, suffix) { + function createTempVariable(recordTempVariable, reservedInNestedScopes, prefix, suffix) { let flags2 = 1 /* Auto */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -20013,7 +20316,7 @@ ${lanes.join("\n")} } return name; } - function createLoopVariable2(reservedInNestedScopes) { + function createLoopVariable(reservedInNestedScopes) { let flags2 = 2 /* Loop */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -20026,12 +20329,12 @@ ${lanes.join("\n")} void 0 ); } - function createUniqueName2(text, flags2 = 0 /* None */, prefix, suffix) { + function createUniqueName(text, flags2 = 0 /* None */, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); Debug.assert((flags2 & (16 /* Optimistic */ | 32 /* FileLevel */)) !== 32 /* FileLevel */, "GeneratedIdentifierFlags.FileLevel cannot be set without also setting GeneratedIdentifierFlags.Optimistic"); return createBaseGeneratedIdentifier(text, 3 /* Unique */ | flags2, prefix, suffix); } - function getGeneratedNameForNode3(node, flags2 = 0, prefix, suffix) { + function getGeneratedNameForNode(node, flags2 = 0, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); const text = !node ? "" : isMemberName(node) ? formatGeneratedName( /*privateName*/ @@ -20050,23 +20353,22 @@ ${lanes.join("\n")} function createBasePrivateIdentifier(escapedText) { const node = baseFactory2.createBasePrivateIdentifierNode(80 /* PrivateIdentifier */); node.escapedText = escapedText; - node.autoGenerate = void 0; node.transformFlags |= 16777216 /* ContainsClassFields */; return node; } - function createPrivateIdentifier2(text) { + function createPrivateIdentifier(text) { if (!startsWith(text, "#")) Debug.fail("First character of private identifier must be #: " + text); return createBasePrivateIdentifier(escapeLeadingUnderscores(text)); } function createBaseGeneratedPrivateIdentifier(text, autoGenerateFlags, prefix, suffix) { const node = createBasePrivateIdentifier(escapeLeadingUnderscores(text)); - node.autoGenerate = { + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } @@ -20093,7 +20395,7 @@ ${lanes.join("\n")} function createBaseToken(kind) { return baseFactory2.createBaseTokenNode(kind); } - function createToken3(token) { + function createToken(token) { Debug.assert(token >= 0 /* FirstToken */ && token <= 162 /* LastToken */, "Invalid token"); Debug.assert(token <= 14 /* FirstTemplateToken */ || token >= 17 /* LastTemplateToken */, "Invalid token. Use 'createTemplateLiteralLikeNode' to create template literals."); Debug.assert(token <= 8 /* FirstLiteralToken */ || token >= 14 /* LastLiteralToken */, "Invalid token. Use 'createLiteralLikeNode' to create literals."); @@ -20147,59 +20449,59 @@ ${lanes.join("\n")} } return node; } - function createSuper2() { - return createToken3(106 /* SuperKeyword */); + function createSuper() { + return createToken(106 /* SuperKeyword */); } - function createThis2() { - return createToken3(108 /* ThisKeyword */); + function createThis() { + return createToken(108 /* ThisKeyword */); } - function createNull2() { - return createToken3(104 /* NullKeyword */); + function createNull() { + return createToken(104 /* NullKeyword */); } - function createTrue2() { - return createToken3(110 /* TrueKeyword */); + function createTrue() { + return createToken(110 /* TrueKeyword */); } - function createFalse2() { - return createToken3(95 /* FalseKeyword */); + function createFalse() { + return createToken(95 /* FalseKeyword */); } - function createModifier2(kind) { - return createToken3(kind); + function createModifier(kind) { + return createToken(kind); } - function createModifiersFromModifierFlags2(flags2) { + function createModifiersFromModifierFlags(flags2) { const result = []; if (flags2 & 1 /* Export */) - result.push(createModifier2(93 /* ExportKeyword */)); + result.push(createModifier(93 /* ExportKeyword */)); if (flags2 & 2 /* Ambient */) - result.push(createModifier2(136 /* DeclareKeyword */)); + result.push(createModifier(136 /* DeclareKeyword */)); if (flags2 & 1024 /* Default */) - result.push(createModifier2(88 /* DefaultKeyword */)); + result.push(createModifier(88 /* DefaultKeyword */)); if (flags2 & 2048 /* Const */) - result.push(createModifier2(85 /* ConstKeyword */)); + result.push(createModifier(85 /* ConstKeyword */)); if (flags2 & 4 /* Public */) - result.push(createModifier2(123 /* PublicKeyword */)); + result.push(createModifier(123 /* PublicKeyword */)); if (flags2 & 8 /* Private */) - result.push(createModifier2(121 /* PrivateKeyword */)); + result.push(createModifier(121 /* PrivateKeyword */)); if (flags2 & 16 /* Protected */) - result.push(createModifier2(122 /* ProtectedKeyword */)); + result.push(createModifier(122 /* ProtectedKeyword */)); if (flags2 & 256 /* Abstract */) - result.push(createModifier2(126 /* AbstractKeyword */)); + result.push(createModifier(126 /* AbstractKeyword */)); if (flags2 & 32 /* Static */) - result.push(createModifier2(124 /* StaticKeyword */)); + result.push(createModifier(124 /* StaticKeyword */)); if (flags2 & 16384 /* Override */) - result.push(createModifier2(161 /* OverrideKeyword */)); + result.push(createModifier(161 /* OverrideKeyword */)); if (flags2 & 64 /* Readonly */) - result.push(createModifier2(146 /* ReadonlyKeyword */)); + result.push(createModifier(146 /* ReadonlyKeyword */)); if (flags2 & 128 /* Accessor */) - result.push(createModifier2(127 /* AccessorKeyword */)); + result.push(createModifier(127 /* AccessorKeyword */)); if (flags2 & 512 /* Async */) - result.push(createModifier2(132 /* AsyncKeyword */)); + result.push(createModifier(132 /* AsyncKeyword */)); if (flags2 & 32768 /* In */) - result.push(createModifier2(101 /* InKeyword */)); + result.push(createModifier(101 /* InKeyword */)); if (flags2 & 65536 /* Out */) - result.push(createModifier2(145 /* OutKeyword */)); + result.push(createModifier(145 /* OutKeyword */)); return result.length ? result : void 0; } - function createQualifiedName2(left, right) { + function createQualifiedName(left, right) { const node = createBaseNode(163 /* QualifiedName */); node.left = left; node.right = asName(right); @@ -20207,19 +20509,19 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateQualifiedName2(node, left, right) { - return node.left !== left || node.right !== right ? update(createQualifiedName2(left, right), node) : node; + function updateQualifiedName(node, left, right) { + return node.left !== left || node.right !== right ? update(createQualifiedName(left, right), node) : node; } - function createComputedPropertyName2(expression) { + function createComputedPropertyName(expression) { const node = createBaseNode(164 /* ComputedPropertyName */); node.expression = parenthesizerRules().parenthesizeExpressionOfComputedPropertyName(expression); node.transformFlags |= propagateChildFlags(node.expression) | 1024 /* ContainsES2015 */ | 131072 /* ContainsComputedPropertyName */; return node; } - function updateComputedPropertyName2(node, expression) { - return node.expression !== expression ? update(createComputedPropertyName2(expression), node) : node; + function updateComputedPropertyName(node, expression) { + return node.expression !== expression ? update(createComputedPropertyName(expression), node) : node; } - function createTypeParameterDeclaration2(modifiers, name, constraint, defaultType) { + function createTypeParameterDeclaration(modifiers, name, constraint, defaultType) { const node = createBaseDeclaration(165 /* TypeParameter */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20228,11 +20530,10 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.expression = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType) { - return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration2(modifiers, name, constraint, defaultType), node) : node; + function updateTypeParameterDeclaration(node, modifiers, name, constraint, defaultType) { + return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration(modifiers, name, constraint, defaultType), node) : node; } function createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) { var _a2, _b; @@ -20249,13 +20550,12 @@ ${lanes.join("\n")} node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.dotDotDotToken) | propagateNameFlags(node.name) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.initializer) | (((_a2 = node.questionToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */) | (((_b = node.dotDotDotToken) != null ? _b : node.initializer) ? 1024 /* ContainsES2015 */ : 0 /* None */) | (modifiersToFlags(node.modifiers) & 16476 /* ParameterPropertyModifier */ ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */); } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { return node.modifiers !== modifiers || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type || node.initializer !== initializer ? update(createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer), node) : node; } - function createDecorator2(expression) { + function createDecorator(expression) { const node = createBaseNode(167 /* Decorator */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20265,10 +20565,10 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */ | 8192 /* ContainsTypeScriptClassSyntax */ | 33554432 /* ContainsDecorators */; return node; } - function updateDecorator2(node, expression) { - return node.expression !== expression ? update(createDecorator2(expression), node) : node; + function updateDecorator(node, expression) { + return node.expression !== expression ? update(createDecorator(expression), node) : node; } - function createPropertySignature3(modifiers, name, questionToken, type) { + function createPropertySignature(modifiers, name, questionToken, type) { const node = createBaseDeclaration(168 /* PropertySignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20277,11 +20577,10 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.initializer = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertySignature3(node, modifiers, name, questionToken, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature3(modifiers, name, questionToken, type), node) : node; + function updatePropertySignature(node, modifiers, name, questionToken, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature(modifiers, name, questionToken, type), node) : node; } function finishUpdatePropertySignature(updated, original) { if (updated !== original) { @@ -20300,13 +20599,12 @@ ${lanes.join("\n")} const isAmbient = node.flags & 16777216 /* Ambient */ || modifiersToFlags(node.modifiers) & 2 /* Ambient */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (isAmbient || node.questionToken || node.exclamationToken || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isComputedPropertyName(node.name) || modifiersToFlags(node.modifiers) & 32 /* Static */ && node.initializer ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */) | 16777216 /* ContainsClassFields */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer) { return node.modifiers !== modifiers || node.name !== name || node.questionToken !== (questionOrExclamationToken !== void 0 && isQuestionToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.exclamationToken !== (questionOrExclamationToken !== void 0 && isExclamationToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.type !== type || node.initializer !== initializer ? update(createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer), node) : node; } - function createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type) { + function createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type) { const node = createBaseDeclaration(170 /* MethodSignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20316,14 +20614,13 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateMethodSignature3(node, modifiers, name, questionToken, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; + function updateMethodSignature(node, modifiers, name, questionToken, typeParameters, parameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; } function createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { const node = createBaseDeclaration(171 /* MethodDeclaration */); @@ -20333,7 +20630,7 @@ ${lanes.join("\n")} node.questionToken = questionToken; node.exclamationToken = void 0; node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -20346,7 +20643,6 @@ ${lanes.join("\n")} } node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20367,10 +20663,8 @@ ${lanes.join("\n")} const node = createBaseDeclaration(172 /* ClassStaticBlockDeclaration */); node.body = body; node.transformFlags = propagateChildFlags(body) | 16777216 /* ContainsClassFields */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -20382,7 +20676,6 @@ ${lanes.join("\n")} } function finishUpdateClassStaticBlockDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -20390,15 +20683,13 @@ ${lanes.join("\n")} function createConstructorDeclaration(modifiers, parameters, body) { const node = createBaseDeclaration(173 /* Constructor */); node.modifiers = asNodeArray(modifiers); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | 1024 /* ContainsES2015 */; - node.illegalDecorators = void 0; node.typeParameters = void 0; node.type = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -20410,7 +20701,6 @@ ${lanes.join("\n")} } function finishUpdateConstructorDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.typeParameters = original.typeParameters; updated.type = original.type; } @@ -20420,7 +20710,7 @@ ${lanes.join("\n")} const node = createBaseDeclaration(174 /* GetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -20431,7 +20721,6 @@ ${lanes.join("\n")} node.typeArguments = void 0; node.typeParameters = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20452,7 +20741,7 @@ ${lanes.join("\n")} const node = createBaseDeclaration(175 /* SetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; if (!node.body) { node.transformFlags = 1 /* ContainsTypeScript */; @@ -20463,7 +20752,6 @@ ${lanes.join("\n")} node.typeParameters = void 0; node.type = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20481,54 +20769,50 @@ ${lanes.join("\n")} } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createCallSignature2(typeParameters, parameters, type) { + function createCallSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(176 /* CallSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateCallSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature2(typeParameters, parameters, type), node) : node; + function updateCallSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature(typeParameters, parameters, type), node) : node; } - function createConstructSignature2(typeParameters, parameters, type) { + function createConstructSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(177 /* ConstructSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateConstructSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature2(typeParameters, parameters, type), node) : node; + function updateConstructSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature(typeParameters, parameters, type), node) : node; } - function createIndexSignature3(modifiers, parameters, type) { + function createIndexSignature(modifiers, parameters, type) { const node = createBaseDeclaration(178 /* IndexSignature */); node.modifiers = asNodeArray(modifiers); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateIndexSignature2(node, modifiers, parameters, type) { - return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature3(modifiers, parameters, type), node) : node; + function updateIndexSignature(node, modifiers, parameters, type) { + return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature(modifiers, parameters, type), node) : node; } function createTemplateLiteralTypeSpan(type, literal) { const node = createBaseNode(201 /* TemplateLiteralTypeSpan */); @@ -20540,10 +20824,10 @@ ${lanes.join("\n")} function updateTemplateLiteralTypeSpan(node, type, literal) { return node.type !== type || node.literal !== literal ? update(createTemplateLiteralTypeSpan(type, literal), node) : node; } - function createKeywordTypeNode2(kind) { - return createToken3(kind); + function createKeywordTypeNode(kind) { + return createToken(kind); } - function createTypePredicateNode3(assertsModifier, parameterName, type) { + function createTypePredicateNode(assertsModifier, parameterName, type) { const node = createBaseNode(179 /* TypePredicate */); node.assertsModifier = assertsModifier; node.parameterName = asName(parameterName); @@ -20551,20 +20835,20 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypePredicateNode3(node, assertsModifier, parameterName, type) { - return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode3(assertsModifier, parameterName, type), node) : node; + function updateTypePredicateNode(node, assertsModifier, parameterName, type) { + return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode(assertsModifier, parameterName, type), node) : node; } - function createTypeReferenceNode2(typeName, typeArguments) { + function createTypeReferenceNode(typeName, typeArguments) { const node = createBaseNode(180 /* TypeReference */); node.typeName = asName(typeName); - node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray2(typeArguments)); + node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray(typeArguments)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeReferenceNode2(node, typeName, typeArguments) { - return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode2(typeName, typeArguments), node) : node; + function updateTypeReferenceNode(node, typeName, typeArguments) { + return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode(typeName, typeArguments), node) : node; } - function createFunctionTypeNode2(typeParameters, parameters, type) { + function createFunctionTypeNode(typeParameters, parameters, type) { const node = createBaseDeclaration(181 /* FunctionType */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); @@ -20572,14 +20856,13 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateFunctionTypeNode2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode2(typeParameters, parameters, type), node) : node; + function updateFunctionTypeNode(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode(typeParameters, parameters, type), node) : node; } function finishUpdateFunctionTypeNode(updated, original) { if (updated !== original) { @@ -20587,8 +20870,8 @@ ${lanes.join("\n")} } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createConstructorTypeNode2(...args) { - return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function createConstructorTypeNode(...args) { + return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function createConstructorTypeNode1(modifiers, typeParameters, parameters, type) { const node = createBaseDeclaration(182 /* ConstructorType */); @@ -20598,13 +20881,12 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function createConstructorTypeNode22(typeParameters, parameters, type) { + function createConstructorTypeNode2(typeParameters, parameters, type) { return createConstructorTypeNode1( /*modifiers*/ void 0, @@ -20613,51 +20895,51 @@ ${lanes.join("\n")} type ); } - function updateConstructorTypeNode2(...args) { - return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function updateConstructorTypeNode(...args) { + return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function updateConstructorTypeNode1(node, modifiers, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode2(modifiers, typeParameters, parameters, type), node) : node; + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode(modifiers, typeParameters, parameters, type), node) : node; } - function updateConstructorTypeNode22(node, typeParameters, parameters, type) { + function updateConstructorTypeNode2(node, typeParameters, parameters, type) { return updateConstructorTypeNode1(node, node.modifiers, typeParameters, parameters, type); } - function createTypeQueryNode2(exprName, typeArguments) { + function createTypeQueryNode(exprName, typeArguments) { const node = createBaseNode(183 /* TypeQuery */); node.exprName = exprName; node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(typeArguments); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeQueryNode2(node, exprName, typeArguments) { - return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode2(exprName, typeArguments), node) : node; + function updateTypeQueryNode(node, exprName, typeArguments) { + return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode(exprName, typeArguments), node) : node; } - function createTypeLiteralNode2(members) { + function createTypeLiteralNode(members) { const node = createBaseDeclaration(184 /* TypeLiteral */); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeLiteralNode2(node, members) { - return node.members !== members ? update(createTypeLiteralNode2(members), node) : node; + function updateTypeLiteralNode(node, members) { + return node.members !== members ? update(createTypeLiteralNode(members), node) : node; } - function createArrayTypeNode2(elementType) { + function createArrayTypeNode(elementType) { const node = createBaseNode(185 /* ArrayType */); node.elementType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(elementType); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateArrayTypeNode2(node, elementType) { - return node.elementType !== elementType ? update(createArrayTypeNode2(elementType), node) : node; + function updateArrayTypeNode(node, elementType) { + return node.elementType !== elementType ? update(createArrayTypeNode(elementType), node) : node; } - function createTupleTypeNode2(elements) { + function createTupleTypeNode(elements) { const node = createBaseNode(186 /* TupleType */); - node.elements = createNodeArray2(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); + node.elements = createNodeArray(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTupleTypeNode2(node, elements) { - return node.elements !== elements ? update(createTupleTypeNode2(elements), node) : node; + function updateTupleTypeNode(node, elements) { + return node.elements !== elements ? update(createTupleTypeNode(elements), node) : node; } function createNamedTupleMember(dotDotDotToken, name, questionToken, type) { const node = createBaseDeclaration(199 /* NamedTupleMember */); @@ -20667,29 +20949,28 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) { return node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type ? update(createNamedTupleMember(dotDotDotToken, name, questionToken, type), node) : node; } - function createOptionalTypeNode2(type) { + function createOptionalTypeNode(type) { const node = createBaseNode(187 /* OptionalType */); node.type = parenthesizerRules().parenthesizeTypeOfOptionalType(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateOptionalTypeNode2(node, type) { - return node.type !== type ? update(createOptionalTypeNode2(type), node) : node; + function updateOptionalTypeNode(node, type) { + return node.type !== type ? update(createOptionalTypeNode(type), node) : node; } - function createRestTypeNode2(type) { + function createRestTypeNode(type) { const node = createBaseNode(188 /* RestType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateRestTypeNode2(node, type) { - return node.type !== type ? update(createRestTypeNode2(type), node) : node; + function updateRestTypeNode(node, type) { + return node.type !== type ? update(createRestTypeNode(type), node) : node; } function createUnionOrIntersectionTypeNode(kind, types, parenthesize) { const node = createBaseNode(kind); @@ -20700,19 +20981,19 @@ ${lanes.join("\n")} function updateUnionOrIntersectionTypeNode(node, types, parenthesize) { return node.types !== types ? update(createUnionOrIntersectionTypeNode(node.kind, types, parenthesize), node) : node; } - function createUnionTypeNode2(types) { + function createUnionTypeNode(types) { return createUnionOrIntersectionTypeNode(189 /* UnionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function updateUnionTypeNode2(node, types) { + function updateUnionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function createIntersectionTypeNode2(types) { + function createIntersectionTypeNode(types) { return createUnionOrIntersectionTypeNode(190 /* IntersectionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function updateIntersectionTypeNode2(node, types) { + function updateIntersectionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function createConditionalTypeNode2(checkType, extendsType, trueType, falseType) { + function createConditionalTypeNode(checkType, extendsType, trueType, falseType) { const node = createBaseNode(191 /* ConditionalType */); node.checkType = parenthesizerRules().parenthesizeCheckTypeOfConditionalType(checkType); node.extendsType = parenthesizerRules().parenthesizeExtendsTypeOfConditionalType(extendsType); @@ -20723,29 +21004,29 @@ ${lanes.join("\n")} node.nextContainer = void 0; return node; } - function updateConditionalTypeNode2(node, checkType, extendsType, trueType, falseType) { - return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode2(checkType, extendsType, trueType, falseType), node) : node; + function updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType) { + return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode(checkType, extendsType, trueType, falseType), node) : node; } - function createInferTypeNode2(typeParameter) { + function createInferTypeNode(typeParameter) { const node = createBaseNode(192 /* InferType */); node.typeParameter = typeParameter; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateInferTypeNode2(node, typeParameter) { - return node.typeParameter !== typeParameter ? update(createInferTypeNode2(typeParameter), node) : node; + function updateInferTypeNode(node, typeParameter) { + return node.typeParameter !== typeParameter ? update(createInferTypeNode(typeParameter), node) : node; } function createTemplateLiteralType(head, templateSpans) { const node = createBaseNode(200 /* TemplateLiteralType */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags = 1 /* ContainsTypeScript */; return node; } function updateTemplateLiteralType(node, head, templateSpans) { return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateLiteralType(head, templateSpans), node) : node; } - function createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf = false) { + function createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf = false) { const node = createBaseNode(202 /* ImportType */); node.argument = argument; node.assertions = assertions; @@ -20755,90 +21036,90 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { - return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; + function updateImportTypeNode(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { + return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; } - function createParenthesizedType2(type) { + function createParenthesizedType(type) { const node = createBaseNode(193 /* ParenthesizedType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateParenthesizedType2(node, type) { - return node.type !== type ? update(createParenthesizedType2(type), node) : node; + function updateParenthesizedType(node, type) { + return node.type !== type ? update(createParenthesizedType(type), node) : node; } - function createThisTypeNode2() { + function createThisTypeNode() { const node = createBaseNode(194 /* ThisType */); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function createTypeOperatorNode3(operator, type) { + function createTypeOperatorNode(operator, type) { const node = createBaseNode(195 /* TypeOperator */); node.operator = operator; node.type = operator === 146 /* ReadonlyKeyword */ ? parenthesizerRules().parenthesizeOperandOfReadonlyTypeOperator(type) : parenthesizerRules().parenthesizeOperandOfTypeOperator(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeOperatorNode2(node, type) { - return node.type !== type ? update(createTypeOperatorNode3(node.operator, type), node) : node; + function updateTypeOperatorNode(node, type) { + return node.type !== type ? update(createTypeOperatorNode(node.operator, type), node) : node; } - function createIndexedAccessTypeNode2(objectType, indexType) { + function createIndexedAccessTypeNode(objectType, indexType) { const node = createBaseNode(196 /* IndexedAccessType */); node.objectType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(objectType); node.indexType = indexType; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateIndexedAccessTypeNode2(node, objectType, indexType) { - return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode2(objectType, indexType), node) : node; + function updateIndexedAccessTypeNode(node, objectType, indexType) { + return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode(objectType, indexType), node) : node; } - function createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members) { + function createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) { const node = createBaseDeclaration(197 /* MappedType */); node.readonlyToken = readonlyToken; node.typeParameter = typeParameter; node.nameType = nameType; node.questionToken = questionToken; node.type = type; - node.members = members && createNodeArray2(members); + node.members = members && createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateMappedTypeNode2(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { - return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; + function updateMappedTypeNode(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { + return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; } - function createLiteralTypeNode2(literal) { + function createLiteralTypeNode(literal) { const node = createBaseNode(198 /* LiteralType */); node.literal = literal; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateLiteralTypeNode2(node, literal) { - return node.literal !== literal ? update(createLiteralTypeNode2(literal), node) : node; + function updateLiteralTypeNode(node, literal) { + return node.literal !== literal ? update(createLiteralTypeNode(literal), node) : node; } - function createObjectBindingPattern2(elements) { + function createObjectBindingPattern(elements) { const node = createBaseNode(203 /* ObjectBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { node.transformFlags |= 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; } return node; } - function updateObjectBindingPattern2(node, elements) { - return node.elements !== elements ? update(createObjectBindingPattern2(elements), node) : node; + function updateObjectBindingPattern(node, elements) { + return node.elements !== elements ? update(createObjectBindingPattern(elements), node) : node; } - function createArrayBindingPattern2(elements) { + function createArrayBindingPattern(elements) { const node = createBaseNode(204 /* ArrayBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; return node; } - function updateArrayBindingPattern2(node, elements) { - return node.elements !== elements ? update(createArrayBindingPattern2(elements), node) : node; + function updateArrayBindingPattern(node, elements) { + return node.elements !== elements ? update(createArrayBindingPattern(elements), node) : node; } - function createBindingElement2(dotDotDotToken, propertyName, name, initializer) { + function createBindingElement(dotDotDotToken, propertyName, name, initializer) { const node = createBaseDeclaration(205 /* BindingElement */); node.dotDotDotToken = dotDotDotToken; node.propertyName = asName(propertyName); @@ -20848,13 +21129,13 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateBindingElement2(node, dotDotDotToken, propertyName, name, initializer) { - return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement2(dotDotDotToken, propertyName, name, initializer), node) : node; + function updateBindingElement(node, dotDotDotToken, propertyName, name, initializer) { + return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement(dotDotDotToken, propertyName, name, initializer), node) : node; } function createArrayLiteralExpression(elements, multiLine) { const node = createBaseNode(206 /* ArrayLiteralExpression */); const lastElement = elements && lastOrUndefined(elements); - const elementsArray = createNodeArray2(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); + const elementsArray = createNodeArray(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); node.elements = parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(elementsArray); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.elements); @@ -20865,11 +21146,10 @@ ${lanes.join("\n")} } function createObjectLiteralExpression(properties, multiLine) { const node = createBaseDeclaration(207 /* ObjectLiteralExpression */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.properties); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateObjectLiteralExpression(node, properties) { @@ -20882,7 +21162,6 @@ ${lanes.join("\n")} node.name = name; node.transformFlags = propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | (isIdentifier(node.name) ? propagateIdentifierNameFlags(node.name) : propagateChildFlags(node.name) | 536870912 /* ContainsPrivateIdentifierInExpression */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -20904,11 +21183,11 @@ ${lanes.join("\n")} } function updatePropertyAccessExpression(node, expression, name) { if (isPropertyAccessChain(node)) { - return updatePropertyAccessChain2(node, expression, node.questionDotToken, cast(name, isIdentifier)); + return updatePropertyAccessChain(node, expression, node.questionDotToken, cast(name, isIdentifier)); } return node.expression !== expression || node.name !== name ? update(createPropertyAccessExpression(expression, name), node) : node; } - function createPropertyAccessChain2(expression, questionDotToken, name) { + function createPropertyAccessChain(expression, questionDotToken, name) { const node = createBasePropertyAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20922,9 +21201,9 @@ ${lanes.join("\n")} node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updatePropertyAccessChain2(node, expression, questionDotToken, name) { + function updatePropertyAccessChain(node, expression, questionDotToken, name) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain2(expression, questionDotToken, name), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain(expression, questionDotToken, name), node) : node; } function createBaseElementAccessExpression(expression, questionDotToken, argumentExpression) { const node = createBaseDeclaration(209 /* ElementAccessExpression */); @@ -20933,7 +21212,6 @@ ${lanes.join("\n")} node.argumentExpression = argumentExpression; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | propagateChildFlags(node.argumentExpression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -20955,11 +21233,11 @@ ${lanes.join("\n")} } function updateElementAccessExpression(node, expression, argumentExpression) { if (isElementAccessChain(node)) { - return updateElementAccessChain2(node, expression, node.questionDotToken, argumentExpression); + return updateElementAccessChain(node, expression, node.questionDotToken, argumentExpression); } return node.expression !== expression || node.argumentExpression !== argumentExpression ? update(createElementAccessExpression(expression, argumentExpression), node) : node; } - function createElementAccessChain2(expression, questionDotToken, index) { + function createElementAccessChain(expression, questionDotToken, index) { const node = createBaseElementAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20973,9 +21251,9 @@ ${lanes.join("\n")} node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateElementAccessChain2(node, expression, questionDotToken, argumentExpression) { + function updateElementAccessChain(node, expression, questionDotToken, argumentExpression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain2(expression, questionDotToken, argumentExpression), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain(expression, questionDotToken, argumentExpression), node) : node; } function createBaseCallExpression(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseDeclaration(210 /* CallExpression */); @@ -21002,7 +21280,7 @@ ${lanes.join("\n")} /*questionDotToken*/ void 0, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); if (isImportKeyword(node.expression)) { node.transformFlags |= 8388608 /* ContainsDynamicImport */; @@ -21011,11 +21289,11 @@ ${lanes.join("\n")} } function updateCallExpression(node, expression, typeArguments, argumentsArray) { if (isCallChain(node)) { - return updateCallChain2(node, expression, node.questionDotToken, typeArguments, argumentsArray); + return updateCallChain(node, expression, node.questionDotToken, typeArguments, argumentsArray); } return node.expression !== expression || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallExpression(expression, typeArguments, argumentsArray), node) : node; } - function createCallChain2(expression, questionDotToken, typeArguments, argumentsArray) { + function createCallChain(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseCallExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21024,15 +21302,15 @@ ${lanes.join("\n")} ), questionDotToken, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); node.flags |= 32 /* OptionalChain */; node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateCallChain2(node, expression, questionDotToken, typeArguments, argumentsArray) { + function updateCallChain(node, expression, questionDotToken, typeArguments, argumentsArray) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a CallExpression using updateCallChain. Use updateCall instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain2(expression, questionDotToken, typeArguments, argumentsArray), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain(expression, questionDotToken, typeArguments, argumentsArray), node) : node; } function createNewExpression(expression, typeArguments, argumentsArray) { const node = createBaseDeclaration(211 /* NewExpression */); @@ -21069,34 +21347,33 @@ ${lanes.join("\n")} function updateTaggedTemplateExpression(node, tag, typeArguments, template) { return node.tag !== tag || node.typeArguments !== typeArguments || node.template !== template ? update(createTaggedTemplateExpression(tag, typeArguments, template), node) : node; } - function createTypeAssertion2(type, expression) { + function createTypeAssertion(type, expression) { const node = createBaseNode(213 /* TypeAssertionExpression */); node.expression = parenthesizerRules().parenthesizeOperandOfPrefixUnary(expression); node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateTypeAssertion2(node, type, expression) { - return node.type !== type || node.expression !== expression ? update(createTypeAssertion2(type, expression), node) : node; + function updateTypeAssertion(node, type, expression) { + return node.type !== type || node.expression !== expression ? update(createTypeAssertion(type, expression), node) : node; } function createParenthesizedExpression(expression) { const node = createBaseNode(214 /* ParenthesizedExpression */); node.expression = expression; node.transformFlags = propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParenthesizedExpression(node, expression) { return node.expression !== expression ? update(createParenthesizedExpression(expression), node) : node; } - function createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(215 /* FunctionExpression */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; @@ -21105,7 +21382,6 @@ ${lanes.join("\n")} node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21113,22 +21389,21 @@ ${lanes.join("\n")} node.returnFlowNode = void 0; return node; } - function updateFunctionExpression2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionExpression(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } - function createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + function createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { const node = createBaseDeclaration(216 /* ArrowFunction */); node.modifiers = asNodeArray(modifiers); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; - node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken3(38 /* EqualsGreaterThanToken */); + node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken(38 /* EqualsGreaterThanToken */); node.body = parenthesizerRules().parenthesizeConciseBodyOfArrowFunction(body); const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.equalsGreaterThanToken) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isAsync ? 256 /* ContainsES2017 */ | 16384 /* ContainsLexicalThis */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21136,8 +21411,8 @@ ${lanes.join("\n")} node.returnFlowNode = void 0; return node; } - function updateArrowFunction3(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; + function updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; } function createDeleteExpression(expression) { const node = createBaseNode(217 /* DeleteExpression */); @@ -21226,7 +21501,6 @@ ${lanes.join("\n")} node.transformFlags |= 536870912 /* ContainsPrivateIdentifierInExpression */; } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function propagateAssignmentPatternFlags(node) { @@ -21255,9 +21529,9 @@ ${lanes.join("\n")} function createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) { const node = createBaseNode(224 /* ConditionalExpression */); node.condition = parenthesizerRules().parenthesizeConditionOfConditionalExpression(condition); - node.questionToken = questionToken != null ? questionToken : createToken3(57 /* QuestionToken */); + node.questionToken = questionToken != null ? questionToken : createToken(57 /* QuestionToken */); node.whenTrue = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenTrue); - node.colonToken = colonToken != null ? colonToken : createToken3(58 /* ColonToken */); + node.colonToken = colonToken != null ? colonToken : createToken(58 /* ColonToken */); node.whenFalse = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenFalse); node.transformFlags |= propagateChildFlags(node.condition) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.whenTrue) | propagateChildFlags(node.colonToken) | propagateChildFlags(node.whenFalse); return node; @@ -21265,15 +21539,15 @@ ${lanes.join("\n")} function updateConditionalExpression(node, condition, questionToken, whenTrue, colonToken, whenFalse) { return node.condition !== condition || node.questionToken !== questionToken || node.whenTrue !== whenTrue || node.colonToken !== colonToken || node.whenFalse !== whenFalse ? update(createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse), node) : node; } - function createTemplateExpression2(head, templateSpans) { + function createTemplateExpression(head, templateSpans) { const node = createBaseNode(225 /* TemplateExpression */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags |= propagateChildFlags(node.head) | propagateChildrenFlags(node.templateSpans) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateExpression2(node, head, templateSpans) { - return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression2(head, templateSpans), node) : node; + function updateTemplateExpression(node, head, templateSpans) { + return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression(head, templateSpans), node) : node; } function checkTemplateLiteralLikeNode(kind, text, rawText, templateFlags = 0 /* None */) { Debug.assert(!(templateFlags & ~2048 /* TemplateLiteralLikeFlags */), "Unsupported template flags."); @@ -21323,19 +21597,19 @@ ${lanes.join("\n")} } return createTemplateLiteralLikeToken(kind, text, rawText, templateFlags); } - function createTemplateHead2(text, rawText, templateFlags) { + function createTemplateHead(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); } - function createTemplateMiddle2(text, rawText, templateFlags) { + function createTemplateMiddle(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(16 /* TemplateMiddle */, text, rawText, templateFlags); } - function createTemplateTail2(text, rawText, templateFlags) { + function createTemplateTail(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(17 /* TemplateTail */, text, rawText, templateFlags); } - function createNoSubstitutionTemplateLiteral2(text, rawText, templateFlags) { + function createNoSubstitutionTemplateLiteral(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeDeclaration(14 /* NoSubstitutionTemplateLiteral */, text, rawText, templateFlags); } @@ -21359,25 +21633,24 @@ ${lanes.join("\n")} function updateSpreadElement(node, expression) { return node.expression !== expression ? update(createSpreadElement(expression), node) : node; } - function createClassExpression3(modifiers, name, typeParameters, heritageClauses, members) { + function createClassExpression(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(228 /* ClassExpression */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.heritageClauses) | propagateChildrenFlags(node.members) | (node.typeParameters ? 1 /* ContainsTypeScript */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression3(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createOmittedExpression2() { + function createOmittedExpression() { return createBaseNode(229 /* OmittedExpression */); } - function createExpressionWithTypeArguments3(expression, typeArguments) { + function createExpressionWithTypeArguments(expression, typeArguments) { const node = createBaseNode(230 /* ExpressionWithTypeArguments */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21388,20 +21661,20 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.typeArguments) | 1024 /* ContainsES2015 */; return node; } - function updateExpressionWithTypeArguments3(node, expression, typeArguments) { - return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments3(expression, typeArguments), node) : node; + function updateExpressionWithTypeArguments(node, expression, typeArguments) { + return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments(expression, typeArguments), node) : node; } - function createAsExpression2(expression, type) { + function createAsExpression(expression, type) { const node = createBaseNode(231 /* AsExpression */); node.expression = expression; node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateAsExpression2(node, expression, type) { - return node.expression !== expression || node.type !== type ? update(createAsExpression2(expression, type), node) : node; + function updateAsExpression(node, expression, type) { + return node.expression !== expression || node.type !== type ? update(createAsExpression(expression, type), node) : node; } - function createNonNullExpression2(expression) { + function createNonNullExpression(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21411,11 +21684,11 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullExpression2(node, expression) { + function updateNonNullExpression(node, expression) { if (isNonNullChain(node)) { - return updateNonNullChain2(node, expression); + return updateNonNullChain(node, expression); } - return node.expression !== expression ? update(createNonNullExpression2(expression), node) : node; + return node.expression !== expression ? update(createNonNullExpression(expression), node) : node; } function createSatisfiesExpression(expression, type) { const node = createBaseNode(235 /* SatisfiesExpression */); @@ -21427,7 +21700,7 @@ ${lanes.join("\n")} function updateSatisfiesExpression(node, expression, type) { return node.expression !== expression || node.type !== type ? update(createSatisfiesExpression(expression, type), node) : node; } - function createNonNullChain2(expression) { + function createNonNullChain(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.flags |= 32 /* OptionalChain */; node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( @@ -21438,11 +21711,11 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullChain2(node, expression) { + function updateNonNullChain(node, expression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a NonNullExpression using updateNonNullChain. Use updateNonNullExpression instead."); - return node.expression !== expression ? update(createNonNullChain2(expression), node) : node; + return node.expression !== expression ? update(createNonNullChain(expression), node) : node; } - function createMetaProperty2(keywordToken, name) { + function createMetaProperty(keywordToken, name) { const node = createBaseNode(233 /* MetaProperty */); node.keywordToken = keywordToken; node.name = name; @@ -21460,72 +21733,67 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateMetaProperty2(node, name) { - return node.name !== name ? update(createMetaProperty2(node.keywordToken, name), node) : node; + function updateMetaProperty(node, name) { + return node.name !== name ? update(createMetaProperty(node.keywordToken, name), node) : node; } - function createTemplateSpan2(expression, literal) { + function createTemplateSpan(expression, literal) { const node = createBaseNode(236 /* TemplateSpan */); node.expression = expression; node.literal = literal; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.literal) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateSpan2(node, expression, literal) { - return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan2(expression, literal), node) : node; + function updateTemplateSpan(node, expression, literal) { + return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan(expression, literal), node) : node; } - function createSemicolonClassElement2() { + function createSemicolonClassElement() { const node = createBaseNode(237 /* SemicolonClassElement */); node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBlock2(statements, multiLine) { + function createBlock(statements, multiLine) { const node = createBaseNode(238 /* Block */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateBlock2(node, statements) { - return node.statements !== statements ? update(createBlock2(statements, node.multiLine), node) : node; + function updateBlock(node, statements) { + return node.statements !== statements ? update(createBlock(statements, node.multiLine), node) : node; } - function createVariableStatement2(modifiers, declarationList) { + function createVariableStatement(modifiers, declarationList) { const node = createBaseNode(240 /* VariableStatement */); node.modifiers = asNodeArray(modifiers); - node.declarationList = isArray(declarationList) ? createVariableDeclarationList2(declarationList) : declarationList; + node.declarationList = isArray(declarationList) ? createVariableDeclarationList(declarationList) : declarationList; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.declarationList); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateVariableStatement2(node, modifiers, declarationList) { - return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement2(modifiers, declarationList), node) : node; + function updateVariableStatement(node, modifiers, declarationList) { + return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement(modifiers, declarationList), node) : node; } - function createEmptyStatement2() { + function createEmptyStatement() { const node = createBaseNode(239 /* EmptyStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExpressionStatement2(expression) { + function createExpressionStatement(expression) { const node = createBaseNode(241 /* ExpressionStatement */); node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression); node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateExpressionStatement2(node, expression) { - return node.expression !== expression ? update(createExpressionStatement2(expression), node) : node; + function updateExpressionStatement(node, expression) { + return node.expression !== expression ? update(createExpressionStatement(expression), node) : node; } function createIfStatement(expression, thenStatement, elseStatement) { const node = createBaseNode(242 /* IfStatement */); @@ -21534,7 +21802,6 @@ ${lanes.join("\n")} node.elseStatement = asEmbeddedStatement(elseStatement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thenStatement) | propagateChildFlags(node.elseStatement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21547,7 +21814,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.statement) | propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21560,7 +21826,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21575,7 +21840,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.condition) | propagateChildFlags(node.incrementor) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21591,7 +21855,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21610,7 +21873,6 @@ ${lanes.join("\n")} if (awaitModifier) node.transformFlags |= 128 /* ContainsES2018 */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21624,7 +21886,6 @@ ${lanes.join("\n")} node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21636,7 +21897,6 @@ ${lanes.join("\n")} node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21648,7 +21908,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21661,7 +21920,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21674,7 +21932,6 @@ ${lanes.join("\n")} node.caseBlock = caseBlock; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.caseBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.possiblyExhaustive = false; return node; @@ -21688,7 +21945,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.label) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21700,7 +21956,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21714,21 +21969,19 @@ ${lanes.join("\n")} node.finallyBlock = finallyBlock; node.transformFlags |= propagateChildFlags(node.tryBlock) | propagateChildFlags(node.catchClause) | propagateChildFlags(node.finallyBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } function updateTryStatement(node, tryBlock, catchClause, finallyBlock) { return node.tryBlock !== tryBlock || node.catchClause !== catchClause || node.finallyBlock !== finallyBlock ? update(createTryStatement(tryBlock, catchClause, finallyBlock), node) : node; } - function createDebuggerStatement2() { + function createDebuggerStatement() { const node = createBaseNode(256 /* DebuggerStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function createVariableDeclaration3(name, exclamationToken, type, initializer) { + function createVariableDeclaration(name, exclamationToken, type, initializer) { var _a2; const node = createBaseDeclaration(257 /* VariableDeclaration */); node.name = asName(name); @@ -21737,32 +21990,31 @@ ${lanes.join("\n")} node.initializer = asInitializer(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (((_a2 = node.exclamationToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateVariableDeclaration3(node, name, exclamationToken, type, initializer) { - return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration3(name, exclamationToken, type, initializer), node) : node; + function updateVariableDeclaration(node, name, exclamationToken, type, initializer) { + return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration(name, exclamationToken, type, initializer), node) : node; } - function createVariableDeclarationList2(declarations, flags2 = 0 /* None */) { + function createVariableDeclarationList(declarations, flags2 = 0 /* None */) { const node = createBaseNode(258 /* VariableDeclarationList */); node.flags |= flags2 & 3 /* BlockScoped */; - node.declarations = createNodeArray2(declarations); + node.declarations = createNodeArray(declarations); node.transformFlags |= propagateChildrenFlags(node.declarations) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; if (flags2 & 3 /* BlockScoped */) { node.transformFlags |= 1024 /* ContainsES2015 */ | 262144 /* ContainsBlockScopedBinding */; } return node; } - function updateVariableDeclarationList2(node, declarations) { - return node.declarations !== declarations ? update(createVariableDeclarationList2(declarations, node.flags), node) : node; + function updateVariableDeclarationList(node, declarations) { + return node.declarations !== declarations ? update(createVariableDeclarationList(declarations, node.flags), node) : node; } - function createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(259 /* FunctionDeclaration */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body || modifiersToFlags(node.modifiers) & 2 /* Ambient */) { @@ -21773,32 +22025,32 @@ ${lanes.join("\n")} const isAsyncGenerator = isAsync && isGenerator; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; } - node.illegalDecorators = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; node.returnFlowNode = void 0; return node; } - function updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionDeclaration(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } function finishUpdateFunctionDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(260 /* ClassDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } else { @@ -21808,79 +22060,54 @@ ${lanes.join("\n")} } } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(261 /* InterfaceDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? finishUpdateInterfaceDeclaration(createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function finishUpdateInterfaceDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createTypeAliasDeclaration2(modifiers, name, typeParameters, type) { + function createTypeAliasDeclaration(modifiers, name, typeParameters, type) { const node = createBaseDeclaration(262 /* TypeAliasDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? finishUpdateTypeAliasDeclaration(createTypeAliasDeclaration2(modifiers, name, typeParameters, type), node) : node; + function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? update(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; } - function finishUpdateTypeAliasDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createEnumDeclaration2(modifiers, name, members) { + function createEnumDeclaration(modifiers, name, members) { const node = createBaseDeclaration(263 /* EnumDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildrenFlags(node.members) | 1 /* ContainsTypeScript */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumDeclaration2(node, modifiers, name, members) { - return node.modifiers !== modifiers || node.name !== name || node.members !== members ? finishUpdateEnumDeclaration(createEnumDeclaration2(modifiers, name, members), node) : node; + function updateEnumDeclaration(node, modifiers, name, members) { + return node.modifiers !== modifiers || node.name !== name || node.members !== members ? update(createEnumDeclaration(modifiers, name, members), node) : node; } - function finishUpdateEnumDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleDeclaration2(modifiers, name, body, flags2 = 0 /* None */) { + function createModuleDeclaration(modifiers, name, body, flags2 = 0 /* None */) { const node = createBaseDeclaration(264 /* ModuleDeclaration */); node.modifiers = asNodeArray(modifiers); node.flags |= flags2 & (16 /* Namespace */ | 4 /* NestedNamespace */ | 1024 /* GlobalAugmentation */); @@ -21892,65 +22119,53 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildFlags(node.body) | 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateModuleDeclaration2(node, modifiers, name, body) { - return node.modifiers !== modifiers || node.name !== name || node.body !== body ? finishUpdateModuleDeclaration(createModuleDeclaration2(modifiers, name, body, node.flags), node) : node; + function updateModuleDeclaration(node, modifiers, name, body) { + return node.modifiers !== modifiers || node.name !== name || node.body !== body ? update(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; } - function finishUpdateModuleDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleBlock2(statements) { + function createModuleBlock(statements) { const node = createBaseNode(265 /* ModuleBlock */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateModuleBlock2(node, statements) { - return node.statements !== statements ? update(createModuleBlock2(statements), node) : node; + function updateModuleBlock(node, statements) { + return node.statements !== statements ? update(createModuleBlock(statements), node) : node; } - function createCaseBlock2(clauses) { + function createCaseBlock(clauses) { const node = createBaseNode(266 /* CaseBlock */); - node.clauses = createNodeArray2(clauses); + node.clauses = createNodeArray(clauses); node.transformFlags |= propagateChildrenFlags(node.clauses); node.locals = void 0; node.nextContainer = void 0; return node; } - function updateCaseBlock2(node, clauses) { - return node.clauses !== clauses ? update(createCaseBlock2(clauses), node) : node; + function updateCaseBlock(node, clauses) { + return node.clauses !== clauses ? update(createCaseBlock(clauses), node) : node; } - function createNamespaceExportDeclaration2(name) { + function createNamespaceExportDeclaration(name) { const node = createBaseDeclaration(267 /* NamespaceExportDeclaration */); node.name = asName(name); node.transformFlags |= propagateIdentifierNameFlags(node.name) | 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateNamespaceExportDeclaration2(node, name) { - return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration2(name), node) : node; + function updateNamespaceExportDeclaration(node, name) { + return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration(name), node) : node; } function finishUpdateNamespaceExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); } - function createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference) { + function createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference) { const node = createBaseDeclaration(268 /* ImportEqualsDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -21961,21 +22176,13 @@ ${lanes.join("\n")} node.transformFlags |= 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? finishUpdateImportEqualsDeclaration(createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference), node) : node; + function updateImportEqualsDeclaration(node, modifiers, isTypeOnly, name, moduleReference) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? update(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; } - function finishUpdateImportEqualsDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause) { + function createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause) { const node = createBaseNode(269 /* ImportDeclaration */); node.modifiers = asNodeArray(modifiers); node.importClause = importClause; @@ -21983,21 +22190,13 @@ ${lanes.join("\n")} node.assertClause = assertClause; node.transformFlags |= propagateChildFlags(node.importClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateImportDeclaration(createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause), node) : node; + function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? update(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; } - function finishUpdateImportDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportClause3(isTypeOnly, name, namedBindings) { + function createImportClause(isTypeOnly, name, namedBindings) { const node = createBaseDeclaration(270 /* ImportClause */); node.isTypeOnly = isTypeOnly; node.name = name; @@ -22009,12 +22208,12 @@ ${lanes.join("\n")} node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportClause3(node, isTypeOnly, name, namedBindings) { - return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause3(isTypeOnly, name, namedBindings), node) : node; + function updateImportClause(node, isTypeOnly, name, namedBindings) { + return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause(isTypeOnly, name, namedBindings), node) : node; } function createAssertClause(elements, multiLine) { const node = createBaseNode(296 /* AssertClause */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.multiLine = multiLine; node.transformFlags |= 4 /* ContainsESNext */; return node; @@ -22041,37 +22240,37 @@ ${lanes.join("\n")} function updateImportTypeAssertionContainer(node, clause, multiLine) { return node.assertClause !== clause || node.multiLine !== multiLine ? update(createImportTypeAssertionContainer(clause, multiLine), node) : node; } - function createNamespaceImport2(name) { + function createNamespaceImport(name) { const node = createBaseDeclaration(271 /* NamespaceImport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceImport2(node, name) { - return node.name !== name ? update(createNamespaceImport2(name), node) : node; + function updateNamespaceImport(node, name) { + return node.name !== name ? update(createNamespaceImport(name), node) : node; } - function createNamespaceExport2(name) { + function createNamespaceExport(name) { const node = createBaseDeclaration(277 /* NamespaceExport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name) | 4 /* ContainsESNext */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceExport2(node, name) { - return node.name !== name ? update(createNamespaceExport2(name), node) : node; + function updateNamespaceExport(node, name) { + return node.name !== name ? update(createNamespaceExport(name), node) : node; } - function createNamedImports2(elements) { + function createNamedImports(elements) { const node = createBaseNode(272 /* NamedImports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedImports2(node, elements) { - return node.elements !== elements ? update(createNamedImports2(elements), node) : node; + function updateNamedImports(node, elements) { + return node.elements !== elements ? update(createNamedImports(elements), node) : node; } - function createImportSpecifier2(isTypeOnly, propertyName, name) { + function createImportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseDeclaration(273 /* ImportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = propertyName; @@ -22080,10 +22279,10 @@ ${lanes.join("\n")} node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateImportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier(isTypeOnly, propertyName, name), node) : node; } - function createExportAssignment3(modifiers, isExportEquals, expression) { + function createExportAssignment2(modifiers, isExportEquals, expression) { const node = createBaseDeclaration(274 /* ExportAssignment */); node.modifiers = asNodeArray(modifiers); node.isExportEquals = isExportEquals; @@ -22095,21 +22294,13 @@ ${lanes.join("\n")} ) : parenthesizerRules().parenthesizeExpressionOfExportDefault(expression); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportAssignment2(node, modifiers, expression) { - return node.modifiers !== modifiers || node.expression !== expression ? finishUpdateExportAssignment(createExportAssignment3(modifiers, node.isExportEquals, expression), node) : node; + function updateExportAssignment(node, modifiers, expression) { + return node.modifiers !== modifiers || node.expression !== expression ? update(createExportAssignment2(modifiers, node.isExportEquals, expression), node) : node; } - function finishUpdateExportAssignment(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { const node = createBaseDeclaration(275 /* ExportDeclaration */); node.modifiers = asNodeArray(modifiers); node.isTypeOnly = isTypeOnly; @@ -22118,31 +22309,31 @@ ${lanes.join("\n")} node.assertClause = assertClause; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.exportClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; + function updateExportDeclaration(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; } function finishUpdateExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return update(updated, original); } - function createNamedExports2(elements) { + function createNamedExports(elements) { const node = createBaseNode(276 /* NamedExports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedExports2(node, elements) { - return node.elements !== elements ? update(createNamedExports2(elements), node) : node; + function updateNamedExports(node, elements) { + return node.elements !== elements ? update(createNamedExports(elements), node) : node; } - function createExportSpecifier2(isTypeOnly, propertyName, name) { + function createExportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseNode(278 /* ExportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = asName(propertyName); @@ -22150,27 +22341,25 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.propertyName) | propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateExportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier(isTypeOnly, propertyName, name), node) : node; } function createMissingDeclaration() { const node = createBaseDeclaration(279 /* MissingDeclaration */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExternalModuleReference2(expression) { + function createExternalModuleReference(expression) { const node = createBaseNode(280 /* ExternalModuleReference */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateExternalModuleReference2(node, expression) { - return node.expression !== expression ? update(createExternalModuleReference2(expression), node) : node; + function updateExternalModuleReference(node, expression) { + return node.expression !== expression ? update(createExternalModuleReference(expression), node) : node; } function createJSDocPrimaryTypeWorker(kind) { return createBaseNode(kind); @@ -22200,7 +22389,6 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = propagateChildrenFlags(node.parameters) | (node.type ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -22209,40 +22397,39 @@ ${lanes.join("\n")} function updateJSDocFunctionType(node, parameters, type) { return node.parameters !== parameters || node.type !== type ? update(createJSDocFunctionType(parameters, type), node) : node; } - function createJSDocTypeLiteral2(propertyTags, isArrayType = false) { + function createJSDocTypeLiteral(propertyTags, isArrayType = false) { const node = createBaseDeclaration(325 /* JSDocTypeLiteral */); node.jsDocPropertyTags = asNodeArray(propertyTags); node.isArrayType = isArrayType; return node; } function updateJSDocTypeLiteral(node, propertyTags, isArrayType) { - return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral2(propertyTags, isArrayType), node) : node; + return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral(propertyTags, isArrayType), node) : node; } - function createJSDocTypeExpression2(type) { + function createJSDocTypeExpression(type) { const node = createBaseNode(312 /* JSDocTypeExpression */); node.type = type; return node; } function updateJSDocTypeExpression(node, type) { - return node.type !== type ? update(createJSDocTypeExpression2(type), node) : node; + return node.type !== type ? update(createJSDocTypeExpression(type), node) : node; } - function createJSDocSignature2(typeParameters, parameters, type) { + function createJSDocSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(326 /* JSDocSignature */); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocSignature(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature2(typeParameters, parameters, type), node) : node; + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature(typeParameters, parameters, type), node) : node; } function getDefaultTagName(node) { const defaultTagName = getDefaultTagNameForKind(node.kind); - return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier3(defaultTagName); + return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier(defaultTagName); } function createBaseJSDocTag(kind, tagName, comment) { const node = createBaseNode(kind); @@ -22256,17 +22443,17 @@ ${lanes.join("\n")} node.comment = comment; return node; } - function createJSDocTemplateTag2(tagName, constraint, typeParameters, comment) { - const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier3("template"), comment); + function createJSDocTemplateTag(tagName, constraint, typeParameters, comment) { + const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier("template"), comment); node.constraint = constraint; - node.typeParameters = createNodeArray2(typeParameters); + node.typeParameters = createNodeArray(typeParameters); return node; } function updateJSDocTemplateTag(node, tagName = getDefaultTagName(node), constraint, typeParameters, comment) { - return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag2(tagName, constraint, typeParameters, comment), node) : node; + return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag(tagName, constraint, typeParameters, comment), node) : node; } - function createJSDocTypedefTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier3("typedef"), comment); + function createJSDocTypedefTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier("typedef"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -22275,10 +22462,10 @@ ${lanes.join("\n")} return node; } function updateJSDocTypedefTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag(tagName, typeExpression, fullName, comment), node) : node; } - function createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier3("param"), comment); + function createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier("param"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -22286,10 +22473,10 @@ ${lanes.join("\n")} return node; } function updateJSDocParameterTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier3("prop"), comment); + function createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier("prop"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -22297,10 +22484,10 @@ ${lanes.join("\n")} return node; } function updateJSDocPropertyTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocCallbackTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier3("callback"), comment); + function createJSDocCallbackTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier("callback"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -22309,31 +22496,31 @@ ${lanes.join("\n")} return node; } function updateJSDocCallbackTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag(tagName, typeExpression, fullName, comment), node) : node; } function createJSDocOverloadTag(tagName, typeExpression, comment) { - const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier3("overload"), comment); + const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier("overload"), comment); node.typeExpression = typeExpression; return node; } function updateJSDocOverloadTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocOverloadTag(tagName, typeExpression, comment), node) : node; } - function createJSDocAugmentsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier3("augments"), comment); + function createJSDocAugmentsTag(tagName, className, comment) { + const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier("augments"), comment); node.class = className; return node; } function updateJSDocAugmentsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag(tagName, className, comment), node) : node; } - function createJSDocImplementsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier3("implements"), comment); + function createJSDocImplementsTag(tagName, className, comment) { + const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier("implements"), comment); node.class = className; return node; } function createJSDocSeeTag(tagName, name, comment) { - const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier3("see"), comment); + const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier("see"), comment); node.name = name; return node; } @@ -22386,17 +22573,17 @@ ${lanes.join("\n")} return node.name !== name ? update(createJSDocLinkPlain(name, text), node) : node; } function updateJSDocImplementsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag(tagName, className, comment), node) : node; } function createJSDocSimpleTagWorker(kind, tagName, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); return node; } function updateJSDocSimpleTagWorker(kind, node, tagName = getDefaultTagName(node), comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocSimpleTagWorker(kind, tagName, comment), node) : node; } function createJSDocTypeLikeTagWorker(kind, tagName, typeExpression, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); node.typeExpression = typeExpression; return node; } @@ -22410,15 +22597,15 @@ ${lanes.join("\n")} function updateJSDocUnknownTag(node, tagName, comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocUnknownTag(tagName, comment), node) : node; } - function createJSDocEnumTag2(tagName, typeExpression, comment) { - const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); + function createJSDocEnumTag(tagName, typeExpression, comment) { + const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); node.typeExpression = typeExpression; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocEnumTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag2(tagName, typeExpression, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag(tagName, typeExpression, comment), node) : node; } function createJSDocText(text) { const node = createBaseNode(324 /* JSDocText */); @@ -22428,27 +22615,27 @@ ${lanes.join("\n")} function updateJSDocText(node, text) { return node.text !== text ? update(createJSDocText(text), node) : node; } - function createJSDocComment2(comment, tags) { + function createJSDocComment(comment, tags) { const node = createBaseNode(323 /* JSDoc */); node.comment = comment; node.tags = asNodeArray(tags); return node; } function updateJSDocComment(node, comment, tags) { - return node.comment !== comment || node.tags !== tags ? update(createJSDocComment2(comment, tags), node) : node; + return node.comment !== comment || node.tags !== tags ? update(createJSDocComment(comment, tags), node) : node; } - function createJsxElement2(openingElement, children, closingElement) { + function createJsxElement(openingElement, children, closingElement) { const node = createBaseNode(281 /* JsxElement */); node.openingElement = openingElement; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingElement = closingElement; node.transformFlags |= propagateChildFlags(node.openingElement) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingElement) | 2 /* ContainsJsx */; return node; } - function updateJsxElement2(node, openingElement, children, closingElement) { - return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement2(openingElement, children, closingElement), node) : node; + function updateJsxElement(node, openingElement, children, closingElement) { + return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement(openingElement, children, closingElement), node) : node; } - function createJsxSelfClosingElement2(tagName, typeArguments, attributes) { + function createJsxSelfClosingElement(tagName, typeArguments, attributes) { const node = createBaseNode(282 /* JsxSelfClosingElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -22459,10 +22646,10 @@ ${lanes.join("\n")} } return node; } - function updateJsxSelfClosingElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxSelfClosingElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement(tagName, typeArguments, attributes), node) : node; } - function createJsxOpeningElement2(tagName, typeArguments, attributes) { + function createJsxOpeningElement(tagName, typeArguments, attributes) { const node = createBaseNode(283 /* JsxOpeningElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -22473,112 +22660,111 @@ ${lanes.join("\n")} } return node; } - function updateJsxOpeningElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxOpeningElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement(tagName, typeArguments, attributes), node) : node; } - function createJsxClosingElement2(tagName) { + function createJsxClosingElement(tagName) { const node = createBaseNode(284 /* JsxClosingElement */); node.tagName = tagName; node.transformFlags |= propagateChildFlags(node.tagName) | 2 /* ContainsJsx */; return node; } - function updateJsxClosingElement2(node, tagName) { - return node.tagName !== tagName ? update(createJsxClosingElement2(tagName), node) : node; + function updateJsxClosingElement(node, tagName) { + return node.tagName !== tagName ? update(createJsxClosingElement(tagName), node) : node; } - function createJsxFragment2(openingFragment, children, closingFragment) { + function createJsxFragment(openingFragment, children, closingFragment) { const node = createBaseNode(285 /* JsxFragment */); node.openingFragment = openingFragment; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingFragment = closingFragment; node.transformFlags |= propagateChildFlags(node.openingFragment) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingFragment) | 2 /* ContainsJsx */; return node; } - function updateJsxFragment2(node, openingFragment, children, closingFragment) { - return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment2(openingFragment, children, closingFragment), node) : node; + function updateJsxFragment(node, openingFragment, children, closingFragment) { + return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment(openingFragment, children, closingFragment), node) : node; } - function createJsxText2(text, containsOnlyTriviaWhiteSpaces) { + function createJsxText(text, containsOnlyTriviaWhiteSpaces) { const node = createBaseNode(11 /* JsxText */); node.text = text; node.containsOnlyTriviaWhiteSpaces = !!containsOnlyTriviaWhiteSpaces; node.transformFlags |= 2 /* ContainsJsx */; return node; } - function updateJsxText2(node, text, containsOnlyTriviaWhiteSpaces) { - return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText2(text, containsOnlyTriviaWhiteSpaces), node) : node; + function updateJsxText(node, text, containsOnlyTriviaWhiteSpaces) { + return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText(text, containsOnlyTriviaWhiteSpaces), node) : node; } - function createJsxOpeningFragment2() { + function createJsxOpeningFragment() { const node = createBaseNode(286 /* JsxOpeningFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxJsxClosingFragment2() { + function createJsxJsxClosingFragment() { const node = createBaseNode(287 /* JsxClosingFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxAttribute2(name, initializer) { + function createJsxAttribute(name, initializer) { const node = createBaseDeclaration(288 /* JsxAttribute */); node.name = name; node.initializer = initializer; node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 2 /* ContainsJsx */; return node; } - function updateJsxAttribute2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute2(name, initializer), node) : node; + function updateJsxAttribute(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute(name, initializer), node) : node; } - function createJsxAttributes2(properties) { + function createJsxAttributes(properties) { const node = createBaseDeclaration(289 /* JsxAttributes */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.transformFlags |= propagateChildrenFlags(node.properties) | 2 /* ContainsJsx */; return node; } - function updateJsxAttributes2(node, properties) { - return node.properties !== properties ? update(createJsxAttributes2(properties), node) : node; + function updateJsxAttributes(node, properties) { + return node.properties !== properties ? update(createJsxAttributes(properties), node) : node; } - function createJsxSpreadAttribute2(expression) { + function createJsxSpreadAttribute(expression) { const node = createBaseNode(290 /* JsxSpreadAttribute */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxSpreadAttribute2(node, expression) { - return node.expression !== expression ? update(createJsxSpreadAttribute2(expression), node) : node; + function updateJsxSpreadAttribute(node, expression) { + return node.expression !== expression ? update(createJsxSpreadAttribute(expression), node) : node; } - function createJsxExpression2(dotDotDotToken, expression) { + function createJsxExpression(dotDotDotToken, expression) { const node = createBaseNode(291 /* JsxExpression */); node.dotDotDotToken = dotDotDotToken; node.expression = expression; node.transformFlags |= propagateChildFlags(node.dotDotDotToken) | propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxExpression2(node, expression) { - return node.expression !== expression ? update(createJsxExpression2(node.dotDotDotToken, expression), node) : node; + function updateJsxExpression(node, expression) { + return node.expression !== expression ? update(createJsxExpression(node.dotDotDotToken, expression), node) : node; } - function createCaseClause2(expression, statements) { + function createCaseClause(expression, statements) { const node = createBaseNode(292 /* CaseClause */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateCaseClause2(node, expression, statements) { - return node.expression !== expression || node.statements !== statements ? update(createCaseClause2(expression, statements), node) : node; + function updateCaseClause(node, expression, statements) { + return node.expression !== expression || node.statements !== statements ? update(createCaseClause(expression, statements), node) : node; } - function createDefaultClause2(statements) { + function createDefaultClause(statements) { const node = createBaseNode(293 /* DefaultClause */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags = propagateChildrenFlags(node.statements); return node; } - function updateDefaultClause2(node, statements) { - return node.statements !== statements ? update(createDefaultClause2(statements), node) : node; + function updateDefaultClause(node, statements) { + return node.statements !== statements ? update(createDefaultClause(statements), node) : node; } - function createHeritageClause2(token, types) { + function createHeritageClause(token, types) { const node = createBaseNode(294 /* HeritageClause */); node.token = token; - node.types = createNodeArray2(types); + node.types = createNodeArray(types); node.transformFlags |= propagateChildrenFlags(node.types); switch (token) { case 94 /* ExtendsKeyword */: @@ -22592,10 +22778,10 @@ ${lanes.join("\n")} } return node; } - function updateHeritageClause2(node, types) { - return node.types !== types ? update(createHeritageClause2(node.token, types), node) : node; + function updateHeritageClause(node, types) { + return node.types !== types ? update(createHeritageClause(node.token, types), node) : node; } - function createCatchClause2(variableDeclaration, block) { + function createCatchClause(variableDeclaration, block) { const node = createBaseNode(295 /* CatchClause */); node.variableDeclaration = asVariableDeclaration(variableDeclaration); node.block = block; @@ -22604,87 +22790,79 @@ ${lanes.join("\n")} node.nextContainer = void 0; return node; } - function updateCatchClause2(node, variableDeclaration, block) { - return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause2(variableDeclaration, block), node) : node; + function updateCatchClause(node, variableDeclaration, block) { + return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause(variableDeclaration, block), node) : node; } - function createPropertyAssignment2(name, initializer) { + function createPropertyAssignment(name, initializer) { const node = createBaseDeclaration(299 /* PropertyAssignment */); node.name = asName(name); node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer); - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertyAssignment2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment2(name, initializer), node) : node; + function updatePropertyAssignment(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment(name, initializer), node) : node; } function finishUpdatePropertyAssignment(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; } return update(updated, original); } - function createShorthandPropertyAssignment2(name, objectAssignmentInitializer) { + function createShorthandPropertyAssignment(name, objectAssignmentInitializer) { const node = createBaseDeclaration(300 /* ShorthandPropertyAssignment */); node.name = asName(name); node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer); node.transformFlags |= propagateIdentifierNameFlags(node.name) | propagateChildFlags(node.objectAssignmentInitializer) | 1024 /* ContainsES2015 */; node.equalsToken = void 0; - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateShorthandPropertyAssignment2(node, name, objectAssignmentInitializer) { - return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment2(name, objectAssignmentInitializer), node) : node; + function updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer) { + return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment(name, objectAssignmentInitializer), node) : node; } function finishUpdateShorthandPropertyAssignment(updated, original) { if (updated !== original) { - updated.equalsToken = original.equalsToken; - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; + updated.equalsToken = original.equalsToken; } return update(updated, original); } - function createSpreadAssignment2(expression) { + function createSpreadAssignment(expression) { const node = createBaseDeclaration(301 /* SpreadAssignment */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateSpreadAssignment2(node, expression) { - return node.expression !== expression ? update(createSpreadAssignment2(expression), node) : node; + function updateSpreadAssignment(node, expression) { + return node.expression !== expression ? update(createSpreadAssignment(expression), node) : node; } - function createEnumMember2(name, initializer) { + function createEnumMember(name, initializer) { const node = createBaseDeclaration(302 /* EnumMember */); node.name = asName(name); node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumMember2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createEnumMember2(name, initializer), node) : node; + function updateEnumMember(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createEnumMember(name, initializer), node) : node; } function createSourceFile2(statements, endOfFileToken, flags2) { const node = baseFactory2.createBaseSourceFileNode(308 /* SourceFile */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.endOfFileToken = endOfFileToken; node.flags |= flags2; node.text = ""; @@ -22785,7 +22963,7 @@ ${lanes.join("\n")} } function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) { const node = cloneSourceFile(source); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.isDeclarationFile = isDeclarationFile; node.referencedFiles = referencedFiles; node.typeReferenceDirectives = typeReferences; @@ -22797,7 +22975,7 @@ ${lanes.join("\n")} function updateSourceFile2(node, statements, isDeclarationFile = node.isDeclarationFile, referencedFiles = node.referencedFiles, typeReferenceDirectives = node.typeReferenceDirectives, hasNoDefaultLib = node.hasNoDefaultLib, libReferenceDirectives = node.libReferenceDirectives) { return node.statements !== statements || node.isDeclarationFile !== isDeclarationFile || node.referencedFiles !== referencedFiles || node.typeReferenceDirectives !== typeReferenceDirectives || node.hasNoDefaultLib !== hasNoDefaultLib || node.libReferenceDirectives !== libReferenceDirectives ? update(cloneSourceFileWithChanges(node, statements, isDeclarationFile, referencedFiles, typeReferenceDirectives, hasNoDefaultLib, libReferenceDirectives), node) : node; } - function createBundle2(sourceFiles, prepends = emptyArray) { + function createBundle(sourceFiles, prepends = emptyArray) { const node = createBaseNode(309 /* Bundle */); node.prepends = prepends; node.sourceFiles = sourceFiles; @@ -22807,8 +22985,8 @@ ${lanes.join("\n")} node.hasNoDefaultLib = void 0; return node; } - function updateBundle2(node, sourceFiles, prepends = emptyArray) { - return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle2(sourceFiles, prepends), node) : node; + function updateBundle(node, sourceFiles, prepends = emptyArray) { + return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle(sourceFiles, prepends), node) : node; } function createUnparsedSource(prologues, syntheticReferences, texts) { const node = createBaseNode(310 /* UnparsedSource */); @@ -22858,26 +23036,26 @@ ${lanes.join("\n")} return node; } function createSyntaxList3(children) { - const node = createBaseNode(353 /* SyntaxList */); + const node = createBaseNode(354 /* SyntaxList */); node._children = children; return node; } - function createNotEmittedStatement2(original) { - const node = createBaseNode(354 /* NotEmittedStatement */); + function createNotEmittedStatement(original) { + const node = createBaseNode(355 /* NotEmittedStatement */); node.original = original; setTextRange(node, original); return node; } - function createPartiallyEmittedExpression2(expression, original) { - const node = createBaseNode(355 /* PartiallyEmittedExpression */); + function createPartiallyEmittedExpression(expression, original) { + const node = createBaseNode(356 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; setTextRange(node, original); return node; } - function updatePartiallyEmittedExpression2(node, expression) { - return node.expression !== expression ? update(createPartiallyEmittedExpression2(expression, node.original), node) : node; + function updatePartiallyEmittedExpression(node, expression) { + return node.expression !== expression ? update(createPartiallyEmittedExpression(expression, node.original), node) : node; } function flattenCommaElements(node) { if (nodeIsSynthesized(node) && !isParseTreeNode(node) && !node.original && !node.emitNode && !node.id) { @@ -22891,8 +23069,8 @@ ${lanes.join("\n")} return node; } function createCommaListExpression(elements) { - const node = createBaseNode(356 /* CommaListExpression */); - node.elements = createNodeArray2(sameFlatMap(elements, flattenCommaElements)); + const node = createBaseNode(357 /* CommaListExpression */); + node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; } @@ -22900,19 +23078,19 @@ ${lanes.join("\n")} return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createEndOfDeclarationMarker(original) { - const node = createBaseNode(358 /* EndOfDeclarationMarker */); + const node = createBaseNode(359 /* EndOfDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createMergeDeclarationMarker(original) { - const node = createBaseNode(357 /* MergeDeclarationMarker */); + const node = createBaseNode(358 /* MergeDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(359 /* SyntheticReferenceExpression */); + const node = createBaseNode(360 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -22922,36 +23100,32 @@ ${lanes.join("\n")} return node.expression !== expression || node.thisArg !== thisArg ? update(createSyntheticReferenceExpression(expression, thisArg), node) : node; } function cloneGeneratedIdentifier(node) { - const clone2 = createBaseIdentifier( - node.escapedText, - /*originalKeywordKind*/ - void 0 - ); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function cloneIdentifier(node) { - const clone2 = createBaseIdentifier(node.escapedText, node.originalKeywordKind); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.typeArguments = node.typeArguments; - clone2.hasExtendedUnicodeEscape = node.hasExtendedUnicodeEscape; clone2.jsDoc = node.jsDoc; - clone2.jsDocCache = node.jsDocCache; clone2.flowNode = node.flowNode; clone2.symbol = node.symbol; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + const typeArguments = getIdentifierTypeArguments(node); + if (typeArguments) + setIdentifierTypeArguments(clone2, typeArguments); return clone2; } function cloneGeneratedPrivateIdentifier(node) { const clone2 = createBasePrivateIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function clonePrivateIdentifier(node) { @@ -22992,9 +23166,9 @@ ${lanes.join("\n")} } return clone2; } - function createImmediatelyInvokedFunctionExpression2(statements, param, paramValue) { + function createImmediatelyInvokedFunctionExpression(statements, param, paramValue) { return createCallExpression( - createFunctionExpression2( + createFunctionExpression( /*modifiers*/ void 0, /*asteriskToken*/ @@ -23007,7 +23181,7 @@ ${lanes.join("\n")} param ? [param] : [], /*type*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -23019,9 +23193,9 @@ ${lanes.join("\n")} paramValue ? [paramValue] : [] ); } - function createImmediatelyInvokedArrowFunction2(statements, param, paramValue) { + function createImmediatelyInvokedArrowFunction(statements, param, paramValue) { return createCallExpression( - createArrowFunction3( + createArrowFunction( /*modifiers*/ void 0, /*typeParameters*/ @@ -23032,7 +23206,7 @@ ${lanes.join("\n")} void 0, /*equalsGreaterThanToken*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -23044,11 +23218,11 @@ ${lanes.join("\n")} paramValue ? [paramValue] : [] ); } - function createVoidZero2() { - return createVoidExpression(createNumericLiteral2("0")); + function createVoidZero() { + return createVoidExpression(createNumericLiteral("0")); } - function createExportDefault2(expression) { - return createExportAssignment3( + function createExportDefault(expression) { + return createExportAssignment2( /*modifiers*/ void 0, /*isExportEquals*/ @@ -23056,14 +23230,14 @@ ${lanes.join("\n")} expression ); } - function createExternalModuleExport2(exportName) { - return createExportDeclaration3( + function createExternalModuleExport(exportName) { + return createExportDeclaration( /*modifiers*/ void 0, /*isTypeOnly*/ false, - createNamedExports2([ - createExportSpecifier2( + createNamedExports([ + createExportSpecifier( /*isTypeOnly*/ false, /*propertyName*/ @@ -23074,12 +23248,12 @@ ${lanes.join("\n")} ); } function createTypeCheck(value, tag) { - return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero2()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral2(tag)); + return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral(tag)); } function createMethodCall(object, methodName, argumentsList) { if (isCallChain(object)) { - return createCallChain2( - createPropertyAccessChain2( + return createCallChain( + createPropertyAccessChain( object, /*questionDotToken*/ void 0, @@ -23109,7 +23283,7 @@ ${lanes.join("\n")} return createMethodCall(target, "apply", [thisArg, argumentsExpression]); } function createGlobalMethodCall(globalObjectName, methodName, argumentsList) { - return createMethodCall(createIdentifier3(globalObjectName), methodName, argumentsList); + return createMethodCall(createIdentifier(globalObjectName), methodName, argumentsList); } function createArraySliceCall(array, start) { return createMethodCall(array, "slice", start === void 0 ? [] : [asExpression(start)]); @@ -23120,6 +23294,9 @@ ${lanes.join("\n")} function createObjectDefinePropertyCall(target, propertyName, attributes) { return createGlobalMethodCall("Object", "defineProperty", [target, asExpression(propertyName), attributes]); } + function createObjectGetOwnPropertyDescriptorCall(target, propertyName) { + return createGlobalMethodCall("Object", "getOwnPropertyDescriptor", [target, asExpression(propertyName)]); + } function createReflectGetCall(target, propertyKey, receiver) { return createGlobalMethodCall("Reflect", "get", receiver ? [target, propertyKey, receiver] : [target, propertyKey]); } @@ -23128,7 +23305,7 @@ ${lanes.join("\n")} } function tryAddPropertyAssignment(properties, propertyName, expression) { if (expression) { - properties.push(createPropertyAssignment2(propertyName, expression)); + properties.push(createPropertyAssignment(propertyName, expression)); return true; } return false; @@ -23149,15 +23326,15 @@ ${lanes.join("\n")} case 214 /* ParenthesizedExpression */: return updateParenthesizedExpression(outerExpression, expression); case 213 /* TypeAssertionExpression */: - return updateTypeAssertion2(outerExpression, outerExpression.type, expression); + return updateTypeAssertion(outerExpression, outerExpression.type, expression); case 231 /* AsExpression */: - return updateAsExpression2(outerExpression, expression, outerExpression.type); + return updateAsExpression(outerExpression, expression, outerExpression.type); case 235 /* SatisfiesExpression */: return updateSatisfiesExpression(outerExpression, expression, outerExpression.type); case 232 /* NonNullExpression */: - return updateNonNullExpression2(outerExpression, expression); - case 355 /* PartiallyEmittedExpression */: - return updatePartiallyEmittedExpression2(outerExpression, expression); + return updateNonNullExpression(outerExpression, expression); + case 356 /* PartiallyEmittedExpression */: + return updatePartiallyEmittedExpression(outerExpression, expression); } } function isIgnorableParen(node) { @@ -23213,13 +23390,13 @@ ${lanes.join("\n")} let thisArg; let target; if (isSuperProperty(callee)) { - thisArg = createThis2(); + thisArg = createThis(); target = callee; } else if (isSuperKeyword(callee)) { - thisArg = createThis2(); - target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier3("_super"), callee) : callee; + thisArg = createThis(); + target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier("_super"), callee) : callee; } else if (getEmitFlags(callee) & 8192 /* HelperName */) { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( callee, /*optionalChain*/ @@ -23227,7 +23404,7 @@ ${lanes.join("\n")} ); } else if (isPropertyAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createPropertyAccessExpression( setTextRange( factory2.createAssignment( @@ -23245,7 +23422,7 @@ ${lanes.join("\n")} } } else if (isElementAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createElementAccessExpression( setTextRange( factory2.createAssignment( @@ -23262,7 +23439,7 @@ ${lanes.join("\n")} target = callee; } } else { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, /*optionalChain*/ @@ -23293,8 +23470,8 @@ ${lanes.join("\n")} /*initializer*/ void 0 )], - createBlock2([ - createExpressionStatement2(expression) + createBlock([ + createExpressionStatement(expression) ]) ) ]) @@ -23318,7 +23495,7 @@ ${lanes.join("\n")} setEmitFlags(name, emitFlags); return name; } - return getGeneratedNameForNode3(node); + return getGeneratedNameForNode(node); } function getInternalName(node, allowComments, allowSourceMaps) { return getName(node, allowComments, allowSourceMaps, 32768 /* LocalName */ | 65536 /* InternalName */); @@ -23358,7 +23535,7 @@ ${lanes.join("\n")} return isStringLiteral(node.expression) && node.expression.text === "use strict"; } function createUseStrictPrologue() { - return startOnNewLine(createExpressionStatement2(createStringLiteral2("use strict"))); + return startOnNewLine(createExpressionStatement(createStringLiteral("use strict"))); } function copyStandardPrologue(source, target, statementOffset = 0, ensureUseStrict2) { Debug.assert(target.length === 0, "Prologue directives should be at the first statement in the target statements array"); @@ -23397,13 +23574,13 @@ ${lanes.join("\n")} function ensureUseStrict(statements) { const foundUseStrict = findUseStrictPrologue(statements); if (!foundUseStrict) { - return setTextRange(createNodeArray2([createUseStrictPrologue(), ...statements]), statements); + return setTextRange(createNodeArray([createUseStrictPrologue(), ...statements]), statements); } return statements; } function liftToBlock(nodes) { Debug.assert(every(nodes, isStatementOrBlock), "Cannot lift nodes to a Block."); - return singleOrUndefined(nodes) || createBlock2(nodes); + return singleOrUndefined(nodes) || createBlock(nodes); } function findSpanEnd(array, test, start) { let i = start; @@ -23452,7 +23629,7 @@ ${lanes.join("\n")} } } if (isNodeArray(statements)) { - return setTextRange(createNodeArray2(left, statements.hasTrailingComma), statements); + return setTextRange(createNodeArray(left, statements.hasTrailingComma), statements); } return statements; } @@ -23460,33 +23637,33 @@ ${lanes.join("\n")} var _a2; let modifierArray; if (typeof modifiers === "number") { - modifierArray = createModifiersFromModifierFlags2(modifiers); + modifierArray = createModifiersFromModifierFlags(modifiers); } else { modifierArray = modifiers; } - return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration2(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature3(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature3(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature2(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction3(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression3(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement2(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration2(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration2(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration2(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration2(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration2(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment2(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration3(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); + return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); } function asNodeArray(array) { - return array ? createNodeArray2(array) : void 0; + return array ? createNodeArray(array) : void 0; } function asName(name) { - return typeof name === "string" ? createIdentifier3(name) : name; + return typeof name === "string" ? createIdentifier(name) : name; } function asExpression(value) { - return typeof value === "string" ? createStringLiteral2(value) : typeof value === "number" ? createNumericLiteral2(value) : typeof value === "boolean" ? value ? createTrue2() : createFalse2() : value; + return typeof value === "string" ? createStringLiteral(value) : typeof value === "number" ? createNumericLiteral(value) : typeof value === "boolean" ? value ? createTrue() : createFalse() : value; } function asInitializer(node) { return node && parenthesizerRules().parenthesizeExpressionForDisallowedComma(node); } function asToken(value) { - return typeof value === "number" ? createToken3(value) : value; + return typeof value === "number" ? createToken(value) : value; } function asEmbeddedStatement(statement) { - return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement2(), statement), statement) : statement; + return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement; } function asVariableDeclaration(variableDeclaration) { if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) { - return createVariableDeclaration3( + return createVariableDeclaration( variableDeclaration, /*exclamationToken*/ void 0, @@ -23690,7 +23867,7 @@ ${lanes.join("\n")} case 213 /* TypeAssertionExpression */: case 235 /* SatisfiesExpression */: case 231 /* AsExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 214 /* ParenthesizedExpression */: case 106 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -23963,6 +24140,7 @@ ${lanes.join("\n")} function mergeEmitNode(sourceEmitNode, destEmitNode) { const { flags, + internalFlags, leadingComments, trailingComments, commentRange, @@ -23980,7 +24158,9 @@ ${lanes.join("\n")} if (trailingComments) destEmitNode.trailingComments = addRange(trailingComments.slice(), destEmitNode.trailingComments); if (flags) - destEmitNode.flags = flags & ~536870912 /* Immutable */; + destEmitNode.flags = flags; + if (internalFlags) + destEmitNode.internalFlags = internalFlags & ~8 /* Immutable */; if (commentRange) destEmitNode.commentRange = commentRange; if (sourceMapRange) @@ -24049,7 +24229,7 @@ ${lanes.join("\n")} } node.emitNode = {}; } else { - Debug.assert(!(node.emitNode.flags & 536870912 /* Immutable */), "Invalid attempt to mutate an immutable node."); + Debug.assert(!(node.emitNode.internalFlags & 8 /* Immutable */), "Invalid attempt to mutate an immutable node."); } return node.emitNode; } @@ -24078,6 +24258,15 @@ ${lanes.join("\n")} emitNode.flags = emitNode.flags | emitFlags; return node; } + function setInternalEmitFlags(node, emitFlags) { + getOrCreateEmitNode(node).internalFlags = emitFlags; + return node; + } + function addInternalEmitFlags(node, emitFlags) { + const emitNode = getOrCreateEmitNode(node); + emitNode.internalFlags = emitNode.internalFlags | emitFlags; + return node; + } function getSourceMapRange(node) { var _a2, _b; return (_b = (_a2 = node.emitNode) == null ? void 0 : _a2.sourceMapRange) != null ? _b : node; @@ -24208,7 +24397,7 @@ ${lanes.join("\n")} return node; } function ignoreSourceNewlines(node) { - getOrCreateEmitNode(node).flags |= 268435456 /* IgnoreSourceNewlines */; + getOrCreateEmitNode(node).internalFlags |= 4 /* IgnoreSourceNewlines */; return node; } function setTypeNode(node, type) { @@ -24220,6 +24409,30 @@ ${lanes.join("\n")} var _a2; return (_a2 = node.emitNode) == null ? void 0 : _a2.typeNode; } + function setIdentifierTypeArguments(node, typeArguments) { + getOrCreateEmitNode(node).identifierTypeArguments = typeArguments; + return node; + } + function getIdentifierTypeArguments(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.identifierTypeArguments; + } + function setIdentifierAutoGenerate(node, autoGenerate) { + getOrCreateEmitNode(node).autoGenerate = autoGenerate; + return node; + } + function getIdentifierAutoGenerate(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + } + function setIdentifierGeneratedImportReference(node, value) { + getOrCreateEmitNode(node).generatedImportReference = value; + return node; + } + function getIdentifierGeneratedImportReference(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.generatedImportReference; + } var init_emitNode = __esm({ "src/compiler/factory/emitNode.ts"() { "use strict"; @@ -24230,14 +24443,17 @@ ${lanes.join("\n")} // src/compiler/factory/emitHelpers.ts function createEmitHelperFactory(context) { const factory2 = context.factory; - const immutableTrue = memoize(() => setEmitFlags(factory2.createTrue(), 536870912 /* Immutable */)); - const immutableFalse = memoize(() => setEmitFlags(factory2.createFalse(), 536870912 /* Immutable */)); + const immutableTrue = memoize(() => setInternalEmitFlags(factory2.createTrue(), 8 /* Immutable */)); + const immutableFalse = memoize(() => setInternalEmitFlags(factory2.createFalse(), 8 /* Immutable */)); return { getUnscopedHelperName, // TypeScript Helpers createDecorateHelper, createMetadataHelper, createParamHelper, + // ES Decorators Helpers + createESDecorateHelper, + createRunInitializersHelper, // ES2018 Helpers createAssignHelper, createAwaitHelper, @@ -24252,6 +24468,8 @@ ${lanes.join("\n")} createExtendsHelper, createTemplateObjectHelper, createSpreadArrayHelper, + createPropKeyHelper, + createSetFunctionNameHelper, // ES2015 Destructuring Helpers createValuesHelper, createReadHelper, @@ -24320,6 +24538,50 @@ ${lanes.join("\n")} location ); } + function createESDecorateClassContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral("class")), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name) + ]); + } + function createESDecorateClassElementContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral(contextIn.kind)), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name.computed ? contextIn.name.name : factory2.createStringLiteralFromNode(contextIn.name.name)), + factory2.createPropertyAssignment(factory2.createIdentifier("static"), contextIn.static ? factory2.createTrue() : factory2.createFalse()), + factory2.createPropertyAssignment(factory2.createIdentifier("private"), contextIn.private ? factory2.createTrue() : factory2.createFalse()) + // Disabled, pending resolution of https://github.com/tc39/proposal-decorators/issues/494 + // factory.createPropertyAssignment(factory.createIdentifier("access"), createESDecorateClassElementAccessObject(contextIn.name, contextIn.access)) + ]); + } + function createESDecorateContextObject(contextIn) { + return contextIn.kind === "class" ? createESDecorateClassContextObject(contextIn) : createESDecorateClassElementContextObject(contextIn); + } + function createESDecorateHelper(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + context.requestEmitHelper(esDecorateHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__esDecorate"), + /*typeArguments*/ + void 0, + [ + ctor != null ? ctor : factory2.createNull(), + descriptorIn != null ? descriptorIn : factory2.createNull(), + decorators, + createESDecorateContextObject(contextIn), + initializers, + extraInitializers + ] + ); + } + function createRunInitializersHelper(thisArg, initializers, value) { + context.requestEmitHelper(runInitializersHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__runInitializers"), + /*typeArguments*/ + void 0, + value ? [thisArg, initializers, value] : [thisArg, initializers] + ); + } function createAssignHelper(attributesSegments) { if (getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { return factory2.createCallExpression( @@ -24476,6 +24738,24 @@ ${lanes.join("\n")} [to, from, packFrom ? immutableTrue() : immutableFalse()] ); } + function createPropKeyHelper(expr) { + context.requestEmitHelper(propKeyHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__propKey"), + /*typeArguments*/ + void 0, + [expr] + ); + } + function createSetFunctionNameHelper(f, name, prefix) { + context.requestEmitHelper(setFunctionNameHelper); + return context.factory.createCallExpression( + getUnscopedHelperName("__setFunctionName"), + /*typeArguments*/ + void 0, + prefix ? [f, name, context.factory.createStringLiteral(prefix)] : [f, name] + ); + } function createValuesHelper(expression) { context.requestEmitHelper(valuesHelper); return factory2.createCallExpression( @@ -24611,6 +24891,8 @@ ${lanes.join("\n")} decorateHelper, metadataHelper, paramHelper, + esDecorateHelper, + runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, @@ -24623,6 +24905,8 @@ ${lanes.join("\n")} spreadArrayHelper, valuesHelper, readHelper, + propKeyHelper, + setFunctionNameHelper, generatorHelper, importStarHelper, importDefaultHelper, @@ -24637,11 +24921,17 @@ ${lanes.join("\n")} function isCallToHelper(firstSegment, helperName) { return isCallExpression(firstSegment) && isIdentifier(firstSegment.expression) && (getEmitFlags(firstSegment.expression) & 8192 /* HelperName */) !== 0 && firstSegment.expression.escapedText === helperName; } - var decorateHelper, metadataHelper, paramHelper, assignHelper, awaitHelper, asyncGeneratorHelper, asyncDelegator, asyncValues, restHelper, awaiterHelper, extendsHelper, templateObjectHelper, readHelper, spreadArrayHelper, valuesHelper, generatorHelper, createBindingHelper, setModuleDefaultHelper, importStarHelper, importDefaultHelper, exportStarHelper, classPrivateFieldGetHelper, classPrivateFieldSetHelper, classPrivateFieldInHelper, allUnscopedEmitHelpers, asyncSuperHelper, advancedAsyncSuperHelper; + var PrivateIdentifierKind, decorateHelper, metadataHelper, paramHelper, esDecorateHelper, runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, asyncDelegator, asyncValues, restHelper, awaiterHelper, extendsHelper, templateObjectHelper, readHelper, spreadArrayHelper, propKeyHelper, setFunctionNameHelper, valuesHelper, generatorHelper, createBindingHelper, setModuleDefaultHelper, importStarHelper, importDefaultHelper, exportStarHelper, classPrivateFieldGetHelper, classPrivateFieldSetHelper, classPrivateFieldInHelper, allUnscopedEmitHelpers, asyncSuperHelper, advancedAsyncSuperHelper; var init_emitHelpers = __esm({ "src/compiler/factory/emitHelpers.ts"() { "use strict"; init_ts2(); + PrivateIdentifierKind = /* @__PURE__ */ ((PrivateIdentifierKind2) => { + PrivateIdentifierKind2["Field"] = "f"; + PrivateIdentifierKind2["Method"] = "m"; + PrivateIdentifierKind2["Accessor"] = "a"; + return PrivateIdentifierKind2; + })(PrivateIdentifierKind || {}); decorateHelper = { name: "typescript:decorate", importName: "__decorate", @@ -24675,6 +24965,54 @@ ${lanes.join("\n")} return function (target, key) { decorator(target, key, paramIndex); } };` }; + esDecorateHelper = { + name: "typescript:esDecorate", + importName: "__esDecorate", + scoped: false, + priority: 2, + text: ` + var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + };` + }; + runInitializersHelper = { + name: "typescript:runInitializers", + importName: "__runInitializers", + scoped: false, + priority: 2, + text: ` + var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + };` + }; assignHelper = { name: "typescript:assign", importName: "__assign", @@ -24847,6 +25185,25 @@ ${lanes.join("\n")} return to.concat(ar || Array.prototype.slice.call(from)); };` }; + propKeyHelper = { + name: "typescript:propKey", + importName: "__propKey", + scoped: false, + text: ` + var __propKey = (this && this.__propKey) || function (x) { + return typeof x === "symbol" ? x : "".concat(x); + };` + }; + setFunctionNameHelper = { + name: "typescript:setFunctionName", + importName: "__setFunctionName", + scoped: false, + text: ` + var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + };` + }; valuesHelper = { name: "typescript:values", importName: "__values", @@ -25081,6 +25438,9 @@ ${lanes.join("\n")} function isExportModifier(node) { return node.kind === 93 /* ExportKeyword */; } + function isDefaultModifier(node) { + return node.kind === 88 /* DefaultKeyword */; + } function isAsyncModifier(node) { return node.kind === 132 /* AsyncKeyword */; } @@ -25334,10 +25694,10 @@ ${lanes.join("\n")} return node.kind === 234 /* SyntheticExpression */; } function isPartiallyEmittedExpression(node) { - return node.kind === 355 /* PartiallyEmittedExpression */; + return node.kind === 356 /* PartiallyEmittedExpression */; } function isCommaListExpression(node) { - return node.kind === 356 /* CommaListExpression */; + return node.kind === 357 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 236 /* TemplateSpan */; @@ -25481,16 +25841,16 @@ ${lanes.join("\n")} return node.kind === 279 /* MissingDeclaration */; } function isNotEmittedStatement(node) { - return node.kind === 354 /* NotEmittedStatement */; + return node.kind === 355 /* NotEmittedStatement */; } function isSyntheticReference(node) { - return node.kind === 359 /* SyntheticReferenceExpression */; + return node.kind === 360 /* SyntheticReferenceExpression */; } function isMergeDeclarationMarker(node) { - return node.kind === 357 /* MergeDeclarationMarker */; + return node.kind === 358 /* MergeDeclarationMarker */; } function isEndOfDeclarationMarker(node) { - return node.kind === 358 /* EndOfDeclarationMarker */; + return node.kind === 359 /* EndOfDeclarationMarker */; } function isExternalModuleReference(node) { return node.kind === 280 /* ExternalModuleReference */; @@ -25681,11 +26041,14 @@ ${lanes.join("\n")} function isJSDocImplementsTag(node) { return node.kind === 332 /* JSDocImplementsTag */; } + function isJSDocSatisfiesTag(node) { + return node.kind === 353 /* JSDocSatisfiesTag */; + } function isJSDocThrowsTag(node) { return node.kind === 352 /* JSDocThrowsTag */; } function isSyntaxList(n) { - return n.kind === 353 /* SyntaxList */; + return n.kind === 354 /* SyntaxList */; } var init_nodeTests = __esm({ "src/compiler/factory/nodeTests.ts"() { @@ -25714,7 +26077,7 @@ ${lanes.join("\n")} isMemberName(memberName) ? factory2.createPropertyAccessExpression(target, memberName) : factory2.createElementAccessExpression(target, memberName), memberName ); - getOrCreateEmitNode(expression).flags |= 128 /* NoNestedSourceMaps */; + addEmitFlags(expression, 128 /* NoNestedSourceMaps */); return expression; } } @@ -26058,8 +26421,11 @@ ${lanes.join("\n")} const firstStatement = firstOrUndefined(statements); return firstStatement !== void 0 && isPrologueDirective(firstStatement) && isUseStrictPrologue(firstStatement); } + function isCommaExpression(node) { + return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */; + } function isCommaSequence(node) { - return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */ || node.kind === 356 /* CommaListExpression */; + return isCommaExpression(node) || isCommaListExpression(node); } function isJSDocTypeAssertion(node) { return isParenthesizedExpression(node) && isInJSFile(node) && !!getJSDocTypeTag(node); @@ -26078,11 +26444,12 @@ ${lanes.join("\n")} return (kinds & 1 /* Parentheses */) !== 0; case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: + case 230 /* ExpressionWithTypeArguments */: case 235 /* SatisfiesExpression */: return (kinds & 2 /* TypeAssertions */) !== 0; case 232 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -26093,6 +26460,14 @@ ${lanes.join("\n")} } return node; } + function walkUpOuterExpressions(node, kinds = 15 /* All */) { + let parent2 = node.parent; + while (isOuterExpression(parent2, kinds)) { + parent2 = parent2.parent; + Debug.assert(parent2); + } + return parent2; + } function skipAssertions(node) { return skipOuterExpressions(node, 6 /* Assertions */); } @@ -26174,7 +26549,7 @@ ${lanes.join("\n")} /*assertClause*/ void 0 ); - addEmitFlags(externalHelpersImportDeclaration, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); return externalHelpersImportDeclaration; } } @@ -26386,6 +26761,21 @@ ${lanes.join("\n")} const kind = node.kind; return kind === 172 /* ClassStaticBlockDeclaration */ || kind === 299 /* PropertyAssignment */ || kind === 300 /* ShorthandPropertyAssignment */ || kind === 181 /* FunctionType */ || kind === 279 /* MissingDeclaration */ || kind === 267 /* NamespaceExportDeclaration */; } + function isQuestionOrExclamationToken(node) { + return isQuestionToken(node) || isExclamationToken(node); + } + function isIdentifierOrThisTypeNode(node) { + return isIdentifier(node) || isThisTypeNode(node); + } + function isReadonlyKeywordOrPlusOrMinusToken(node) { + return isReadonlyKeyword(node) || isPlusToken(node) || isMinusToken(node); + } + function isQuestionOrPlusOrMinusToken(node) { + return isQuestionToken(node) || isPlusToken(node) || isMinusToken(node); + } + function isModuleName(node) { + return isIdentifier(node) || isStringLiteral(node); + } function isLiteralTypeLikeExpression(node) { const kind = node.kind; return kind === 104 /* NullKeyword */ || kind === 110 /* TrueKeyword */ || kind === 95 /* FalseKeyword */ || isLiteralExpression(node) || isPrefixUnaryExpression(node); @@ -26460,6 +26850,17 @@ ${lanes.join("\n")} return resultHolder.value; } } + function isExportOrDefaultKeywordKind(kind) { + return kind === 93 /* ExportKeyword */ || kind === 88 /* DefaultKeyword */; + } + function isExportOrDefaultModifier(node) { + const kind = node.kind; + return isExportOrDefaultKeywordKind(kind); + } + function isNonExportDefaultModifier(node) { + const kind = node.kind; + return isModifierKind(kind) && !isExportOrDefaultKeywordKind(kind); + } function elideNodes(factory2, nodes) { if (nodes === void 0) return void 0; @@ -26468,13 +26869,16 @@ ${lanes.join("\n")} return setTextRange(factory2.createNodeArray([], nodes.hasTrailingComma), nodes); } function getNodeForGeneratedName(name) { - if (name.autoGenerate.flags & 4 /* Node */) { - const autoGenerateId = name.autoGenerate.id; + var _a2; + const autoGenerate = name.emitNode.autoGenerate; + if (autoGenerate.flags & 4 /* Node */) { + const autoGenerateId = autoGenerate.id; let node = name; let original = node.original; while (original) { node = original; - if (isMemberName(node) && (node.autoGenerate === void 0 || !!(node.autoGenerate.flags & 4 /* Node */) && node.autoGenerate.id !== autoGenerateId)) { + const autoGenerate2 = (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + if (isMemberName(node) && (autoGenerate2 === void 0 || !!(autoGenerate2.flags & 4 /* Node */) && autoGenerate2.id !== autoGenerateId)) { break; } original = node.original; @@ -26573,17 +26977,55 @@ ${lanes.join("\n")} ]) ); } - var isTypeNodeOrTypeParameterDeclaration, isQuestionOrExclamationToken, isIdentifierOrThisTypeNode, isReadonlyKeywordOrPlusOrMinusToken, isQuestionOrPlusOrMinusToken, isModuleName, BinaryExpressionState, BinaryExpressionStateMachine; + function findComputedPropertyNameCacheAssignment(name) { + let node = name.expression; + while (true) { + node = skipOuterExpressions(node); + if (isCommaListExpression(node)) { + node = last(node.elements); + continue; + } + if (isCommaExpression(node)) { + node = node.right; + continue; + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ) && isGeneratedIdentifier(node.left)) { + return node; + } + break; + } + } + function isSyntheticParenthesizedExpression(node) { + return isParenthesizedExpression(node) && nodeIsSynthesized(node) && !node.emitNode; + } + function flattenCommaListWorker(node, expressions) { + if (isSyntheticParenthesizedExpression(node)) { + flattenCommaListWorker(node.expression, expressions); + } else if (isCommaExpression(node)) { + flattenCommaListWorker(node.left, expressions); + flattenCommaListWorker(node.right, expressions); + } else if (isCommaListExpression(node)) { + for (const child of node.elements) { + flattenCommaListWorker(child, expressions); + } + } else { + expressions.push(node); + } + } + function flattenCommaList(node) { + const expressions = []; + flattenCommaListWorker(node, expressions); + return expressions; + } + var BinaryExpressionState, BinaryExpressionStateMachine; var init_utilities2 = __esm({ "src/compiler/factory/utilities.ts"() { "use strict"; init_ts2(); - isTypeNodeOrTypeParameterDeclaration = or(isTypeNode, isTypeParameterDeclaration); - isQuestionOrExclamationToken = or(isQuestionToken, isExclamationToken); - isIdentifierOrThisTypeNode = or(isIdentifier, isThisTypeNode); - isReadonlyKeywordOrPlusOrMinusToken = or(isReadonlyKeyword, isPlusToken, isMinusToken); - isQuestionOrPlusOrMinusToken = or(isQuestionToken, isPlusToken, isMinusToken); - isModuleName = or(isIdentifier, isStringLiteral); ((BinaryExpressionState2) => { function enter(machine, stackIndex, stateStack, nodeStack, userStateStack, _resultHolder, outerState) { const prevUserState = stackIndex > 0 ? userStateStack[stackIndex - 1] : void 0; @@ -27169,7 +27611,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.constraint) || visitNode2(cbNode, node.default) || visitNode2(cbNode, node.expression); }, [300 /* ShorthandPropertyAssignment */]: function forEachChildInShorthandPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); }, [301 /* SpreadAssignment */]: function forEachChildInSpreadAssignment(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.expression); @@ -27184,7 +27626,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); }, [299 /* PropertyAssignment */]: function forEachChildInPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); }, [257 /* VariableDeclaration */]: function forEachChildInVariableDeclaration(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); @@ -27193,7 +27635,7 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.dotDotDotToken) || visitNode2(cbNode, node.propertyName) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [178 /* IndexSignature */]: function forEachChildInIndexSignature(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [182 /* ConstructorType */]: function forEachChildInConstructorType(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -27210,7 +27652,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [173 /* Constructor */]: function forEachChildInConstructor(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [174 /* GetAccessor */]: function forEachChildInGetAccessor(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -27219,7 +27661,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [259 /* FunctionDeclaration */]: function forEachChildInFunctionDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [215 /* FunctionExpression */]: function forEachChildInFunctionExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -27228,7 +27670,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.equalsGreaterThanToken) || visitNode2(cbNode, node.body); }, [172 /* ClassStaticBlockDeclaration */]: function forEachChildInClassStaticBlockDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); }, [180 /* TypeReference */]: function forEachChildInTypeReference(node, cbNode, cbNodes) { return visitNode2(cbNode, node.typeName) || visitNodes(cbNode, cbNodes, node.typeArguments); @@ -27349,7 +27791,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.statements) || visitNode2(cbNode, node.endOfFileToken); }, [240 /* VariableStatement */]: function forEachChildInVariableStatement(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); }, [258 /* VariableDeclarationList */]: function forEachChildInVariableDeclarationList(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.declarations); @@ -27413,25 +27855,25 @@ ${lanes.join("\n")} [260 /* ClassDeclaration */]: forEachChildInClassDeclarationOrExpression, [228 /* ClassExpression */]: forEachChildInClassDeclarationOrExpression, [261 /* InterfaceDeclaration */]: function forEachChildInInterfaceDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); }, [262 /* TypeAliasDeclaration */]: function forEachChildInTypeAliasDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); }, [263 /* EnumDeclaration */]: function forEachChildInEnumDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); }, [302 /* EnumMember */]: function forEachChildInEnumMember(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [264 /* ModuleDeclaration */]: function forEachChildInModuleDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); }, [268 /* ImportEqualsDeclaration */]: function forEachChildInImportEqualsDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); }, [269 /* ImportDeclaration */]: function forEachChildInImportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [270 /* ImportClause */]: function forEachChildInImportClause(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.namedBindings); @@ -27443,7 +27885,7 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.value); }, [267 /* NamespaceExportDeclaration */]: function forEachChildInNamespaceExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNode2(cbNode, node.name); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name); }, [271 /* NamespaceImport */]: function forEachChildInNamespaceImport(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name); @@ -27454,12 +27896,12 @@ ${lanes.join("\n")} [272 /* NamedImports */]: forEachChildInNamedImportsOrExports, [276 /* NamedExports */]: forEachChildInNamedImportsOrExports, [275 /* ExportDeclaration */]: function forEachChildInExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [273 /* ImportSpecifier */]: forEachChildInImportOrExportSpecifier, [278 /* ExportSpecifier */]: forEachChildInImportOrExportSpecifier, [274 /* ExportAssignment */]: function forEachChildInExportAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); }, [225 /* TemplateExpression */]: function forEachChildInTemplateExpression(node, cbNode, cbNodes) { return visitNode2(cbNode, node.head) || visitNodes(cbNode, cbNodes, node.templateSpans); @@ -27486,9 +27928,9 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.expression); }, [279 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers); + return visitNodes(cbNode, cbNodes, node.modifiers); }, - [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [357 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [281 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -27560,6 +28002,7 @@ ${lanes.join("\n")} [347 /* JSDocTypeTag */]: forEachChildInJSDocTypeLikeTag, [346 /* JSDocThisTag */]: forEachChildInJSDocTypeLikeTag, [343 /* JSDocEnumTag */]: forEachChildInJSDocTypeLikeTag, + [353 /* JSDocSatisfiesTag */]: forEachChildInJSDocTypeLikeTag, [352 /* JSDocThrowsTag */]: forEachChildInJSDocTypeLikeTag, [342 /* JSDocOverloadTag */]: forEachChildInJSDocTypeLikeTag, [326 /* JSDocSignature */]: function forEachChildInJSDocSignature(node, cbNode, _cbNodes) { @@ -27579,7 +28022,7 @@ ${lanes.join("\n")} [339 /* JSDocReadonlyTag */]: forEachChildInJSDocTag, [334 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [340 /* JSDocOverrideTag */]: forEachChildInJSDocTag, - [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [356 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; ((Parser2) => { const scanner2 = createScanner( @@ -27709,7 +28152,7 @@ ${lanes.join("\n")} const pos = getNodePos(); let statements, endOfFileToken; if (token() === 1 /* EndOfFileToken */) { - statements = createNodeArray2([], pos, pos); + statements = createNodeArray([], pos, pos); endOfFileToken = parseTokenNode(); } else { let expressions; @@ -27755,7 +28198,7 @@ ${lanes.join("\n")} const expression = isArray(expressions) ? finishNode(factory2.createArrayLiteralExpression(expressions), pos) : Debug.checkDefined(expressions); const statement = factory2.createExpressionStatement(expression); finishNode(statement, pos); - statements = createNodeArray2([statement], pos); + statements = createNodeArray([statement], pos); endOfFileToken = parseExpectedToken(1 /* EndOfFileToken */, Diagnostics.Unexpected_token); } const sourceFile = createSourceFile2( @@ -28403,7 +28846,7 @@ ${lanes.join("\n")} function parseSemicolon() { return tryParseSemicolon() || parseExpected(26 /* SemicolonToken */); } - function createNodeArray2(elements, pos, end, hasTrailingComma) { + function createNodeArray(elements, pos, end, hasTrailingComma) { const array = factory2.createNodeArray(elements, hasTrailingComma); setTextRangePosEnd(array, pos, end != null ? end : scanner2.getStartPos()); return array; @@ -28428,8 +28871,6 @@ ${lanes.join("\n")} const pos = getNodePos(); const result = kind === 79 /* Identifier */ ? factory2.createIdentifier( "", - /*typeArguments*/ - void 0, /*originalKeywordKind*/ void 0 ) : isTemplateLiteralKind(kind) ? factory2.createTemplateLiteralLikeNode( @@ -28456,7 +28897,7 @@ ${lanes.join("\n")} } return identifier; } - function createIdentifier3(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { + function createIdentifier(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { if (isIdentifier3) { identifierCount++; const pos = getNodePos(); @@ -28464,23 +28905,17 @@ ${lanes.join("\n")} const text = internIdentifier(scanner2.getTokenValue()); const hasExtendedUnicodeEscape = scanner2.hasExtendedUnicodeEscape(); nextTokenWithoutCheck(); - return finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind, - hasExtendedUnicodeEscape - ), pos); + return finishNode(factory2.createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape), pos); } if (token() === 80 /* PrivateIdentifier */) { parseErrorAtCurrentToken(privateIdentifierDiagnosticMessage || Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); } if (token() === 0 /* Unknown */ && scanner2.tryScan(() => scanner2.reScanInvalidIdentifier() === 79 /* Identifier */)) { - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); @@ -28493,7 +28928,7 @@ ${lanes.join("\n")} return createMissingNode(79 /* Identifier */, reportAtCurrentPosition, diagnosticMessage || defaultMessage, msgArg); } function parseBindingIdentifier(privateIdentifierDiagnosticMessage) { - return createIdentifier3( + return createIdentifier( isBindingIdentifier(), /*diagnosticMessage*/ void 0, @@ -28501,10 +28936,10 @@ ${lanes.join("\n")} ); } function parseIdentifier(diagnosticMessage, privateIdentifierDiagnosticMessage) { - return createIdentifier3(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); + return createIdentifier(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); } function parseIdentifierName(diagnosticMessage) { - return createIdentifier3(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); + return createIdentifier(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); } function isLiteralPropertyName() { return tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */; @@ -28581,7 +29016,7 @@ ${lanes.join("\n")} } } function canFollowExportModifier() { - return token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); + return token() === 59 /* AtToken */ || token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); } function nextTokenCanFollowExportModifier() { nextToken(); @@ -28595,7 +29030,7 @@ ${lanes.join("\n")} } function nextTokenCanFollowDefaultKeyword() { nextToken(); - return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); + return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 59 /* AtToken */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); } function isListElement2(parsingContext2, inErrorRecovery) { const node = currentNode(parsingContext2); @@ -28802,7 +29237,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseListElement(parsingContext2, parseElement) { const node = currentNode(parsingContext2); @@ -28812,6 +29247,7 @@ ${lanes.join("\n")} return parseElement(); } function currentNode(parsingContext2, pos) { + var _a2; if (!syntaxCursor || !isReusableParsingContext(parsingContext2) || parseErrorBeforeNextFinishedNode) { return void 0; } @@ -28826,8 +29262,8 @@ ${lanes.join("\n")} if (!canReuseNode(node, parsingContext2)) { return void 0; } - if (canHaveJSDoc(node) && node.jsDocCache) { - node.jsDocCache = void 0; + if (canHaveJSDoc(node) && ((_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache)) { + node.jsDoc.jsDocCache = void 0; } return node; } @@ -28886,7 +29322,7 @@ ${lanes.join("\n")} return true; case 171 /* MethodDeclaration */: const methodDeclaration = node; - const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.originalKeywordKind === 135 /* ConstructorKeyword */; + const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.escapedText === "constructor"; return !nameIsConstructor; } } @@ -29078,7 +29514,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2( + return createNodeArray( list, listPos, /*end*/ @@ -29090,7 +29526,7 @@ ${lanes.join("\n")} return kind === ParsingContext.EnumMembers ? Diagnostics.An_enum_member_name_must_be_followed_by_a_or : void 0; } function createMissingList() { - const list = createNodeArray2([], getNodePos()); + const list = createNodeArray([], getNodePos()); list.isMissingList = true; return list; } @@ -29108,13 +29544,10 @@ ${lanes.join("\n")} function parseEntityName(allowReservedWords, diagnosticMessage) { const pos = getNodePos(); let entity = allowReservedWords ? parseIdentifierName(diagnosticMessage) : parseIdentifier(diagnosticMessage); - let dotPos = getNodePos(); while (parseOptional(24 /* DotToken */)) { if (token() === 29 /* LessThanToken */) { - entity.jsdocDotPos = dotPos; break; } - dotPos = getNodePos(); entity = finishNode( factory2.createQualifiedName( entity, @@ -29129,7 +29562,7 @@ ${lanes.join("\n")} } return entity; } - function createQualifiedName2(entity, name) { + function createQualifiedName(entity, name) { return finishNode(factory2.createQualifiedName(entity, name), entity.pos); } function parseRightSideOfDot(allowIdentifierNames, allowPrivateIdentifiers) { @@ -29163,7 +29596,7 @@ ${lanes.join("\n")} node = parseTemplateSpan(isTaggedTemplate); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateExpression(isTaggedTemplate) { const pos = getNodePos(); @@ -29196,7 +29629,7 @@ ${lanes.join("\n")} node = parseTemplateTypeSpan(); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateTypeSpan() { const pos = getNodePos(); @@ -29444,6 +29877,8 @@ ${lanes.join("\n")} function parseTypeParameter() { const pos = getNodePos(); const modifiers = parseModifiers( + /*allowDecorators*/ + false, /*permitConstAsModifier*/ true ); @@ -29496,13 +29931,19 @@ ${lanes.join("\n")} function parseParameterWorker(inOuterAwaitContext, allowAmbiguity = true) { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = inOuterAwaitContext ? doInAwaitContext(parseDecorators) : doOutsideOfAwaitContext(parseDecorators); + const modifiers = inOuterAwaitContext ? doInAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )) : doOutsideOfAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )); if (token() === 108 /* ThisKeyword */) { const node2 = factory2.createParameterDeclaration( - decorators, + modifiers, /*dotDotDotToken*/ void 0, - createIdentifier3( + createIdentifier( /*isIdentifier*/ true ), @@ -29512,14 +29953,14 @@ ${lanes.join("\n")} /*initializer*/ void 0 ); - if (decorators) { - parseErrorAtRange(decorators[0], Diagnostics.Decorators_may_not_be_applied_to_this_parameters); + const modifier = firstOrUndefined(modifiers); + if (modifier) { + parseErrorAtRange(modifier, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); } return withJSDoc(finishNode(node2, pos), hasJSDoc); } const savedTopLevel = topLevel; topLevel = false; - const modifiers = combineDecoratorsAndModifiers(decorators, parseModifiers()); const dotDotDotToken = parseOptionalToken(25 /* DotDotDotToken */); if (!allowAmbiguity && !isParameterNameStart()) { return void 0; @@ -29631,7 +30072,7 @@ ${lanes.join("\n")} nextToken(); return token() === 58 /* ColonToken */ || token() === 27 /* CommaToken */ || token() === 23 /* CloseBracketToken */; } - function parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers) { const parameters = parseBracketedList(ParsingContext.Parameters, () => parseParameter( /*inOuterAwaitContext*/ false @@ -29639,7 +30080,6 @@ ${lanes.join("\n")} const type = parseTypeAnnotation(); parseTypeMemberSemicolon(); const node = factory2.createIndexSignature(modifiers, parameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers) { @@ -29694,37 +30134,18 @@ ${lanes.join("\n")} } const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 174 /* GetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 4 /* Type */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 175 /* SetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 4 /* Type */); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers - ); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } return parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers); } @@ -29868,7 +30289,7 @@ ${lanes.join("\n")} const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(126 /* AbstractKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -30179,7 +30600,7 @@ ${lanes.join("\n")} while (parseOptional(operator)) { types.push(parseFunctionOrConstructorTypeToError(isUnionType) || parseConstituentType()); } - type = finishNode(createTypeNode(createNodeArray2(types, pos)), pos); + type = finishNode(createTypeNode(createNodeArray(types, pos)), pos); } return type; } @@ -30204,7 +30625,10 @@ ${lanes.join("\n")} } function skipParameterStart() { if (isModifierKind(token())) { - parseModifiers(); + parseModifiers( + /*allowDecorators*/ + false + ); } if (isIdentifier2() || token() === 108 /* ThisKeyword */) { nextToken(); @@ -30332,6 +30756,7 @@ ${lanes.join("\n")} case 133 /* AwaitKeyword */: case 125 /* YieldKeyword */: case 80 /* PrivateIdentifier */: + case 59 /* AtToken */: return true; default: if (isBinaryOperator2()) { @@ -30453,7 +30878,7 @@ ${lanes.join("\n")} void 0 ); finishNode(parameter, identifier.pos); - const parameters = createNodeArray2([parameter], parameter.pos, parameter.end); + const parameters = createNodeArray([parameter], parameter.pos, parameter.end); const equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */); const body = parseArrowFunctionExpressionBody( /*isAsync*/ @@ -30940,7 +31365,7 @@ ${lanes.join("\n")} lastChild.openingElement.pos, end ); - children = createNodeArray2([...children.slice(0, children.length - 1), newLast], children.pos, end); + children = createNodeArray([...children.slice(0, children.length - 1), newLast], children.pos, end); closingElement = lastChild.closingElement; } else { closingElement = parseJsxClosingElement(opening, inExpressionContext); @@ -31034,7 +31459,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseJsxAttributes() { const pos = getNodePos(); @@ -31423,6 +31848,8 @@ ${lanes.join("\n")} break; } return parseFunctionExpression(); + case 59 /* AtToken */: + return parseDecoratedExpression(); case 84 /* ClassKeyword */: return parseClassExpression(); case 98 /* FunctionKeyword */: @@ -31490,13 +31917,15 @@ ${lanes.join("\n")} ); return withJSDoc(finishNode(factory2.createSpreadAssignment(expression), pos), hasJSDoc); } - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const tokenIsIdentifier = isIdentifier2(); @@ -31504,7 +31933,7 @@ ${lanes.join("\n")} const questionToken = parseOptionalToken(57 /* QuestionToken */); const exclamationToken = parseOptionalToken(53 /* ExclamationToken */); if (asteriskToken || token() === 20 /* OpenParenToken */ || token() === 29 /* LessThanToken */) { - return parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken); + return parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken); } let node; const isShorthandPropertyAssignment2 = tokenIsIdentifier && token() !== 58 /* ColonToken */; @@ -31524,7 +31953,6 @@ ${lanes.join("\n")} )); node = factory2.createPropertyAssignment(name, initializer); } - node.illegalDecorators = decorators; node.modifiers = modifiers; node.questionToken = questionToken; node.exclamationToken = exclamationToken; @@ -31552,7 +31980,10 @@ ${lanes.join("\n")} ); const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); parseExpected(98 /* FunctionKeyword */); const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; @@ -31924,7 +32355,7 @@ ${lanes.join("\n")} if (currentToken2 === 154 /* TypeKeyword */) { currentToken2 = lookAhead(nextToken); } - if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */) { + if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */ || currentToken2 === 59 /* AtToken */) { return true; } continue; @@ -32008,8 +32439,6 @@ ${lanes.join("\n")} return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32018,8 +32447,6 @@ ${lanes.join("\n")} return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32029,8 +32456,6 @@ ${lanes.join("\n")} return parseFunctionDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32038,8 +32463,6 @@ ${lanes.join("\n")} return parseClassDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32102,8 +32525,10 @@ ${lanes.join("\n")} function parseDeclaration() { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); const isAmbient = some(modifiers, isDeclareModifier); if (isAmbient) { const node = tryReuseAmbientDeclaration(pos); @@ -32113,9 +32538,9 @@ ${lanes.join("\n")} for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, modifiers)); } else { - return parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers); + return parseDeclarationWorker(pos, hasJSDoc, modifiers); } } function tryReuseAmbientDeclaration(pos) { @@ -32126,41 +32551,41 @@ ${lanes.join("\n")} } }); } - function parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers) { + function parseDeclarationWorker(pos, hasJSDoc, modifiersIn) { switch (token()) { case 113 /* VarKeyword */: case 119 /* LetKeyword */: case 85 /* ConstKeyword */: - return parseVariableStatement(pos, hasJSDoc, decorators, modifiers); + return parseVariableStatement(pos, hasJSDoc, modifiersIn); case 98 /* FunctionKeyword */: - return parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseFunctionDeclaration(pos, hasJSDoc, modifiersIn); case 84 /* ClassKeyword */: - return parseClassDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassDeclaration(pos, hasJSDoc, modifiersIn); case 118 /* InterfaceKeyword */: - return parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseInterfaceDeclaration(pos, hasJSDoc, modifiersIn); case 154 /* TypeKeyword */: - return parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseTypeAliasDeclaration(pos, hasJSDoc, modifiersIn); case 92 /* EnumKeyword */: - return parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseEnumDeclaration(pos, hasJSDoc, modifiersIn); case 159 /* GlobalKeyword */: case 142 /* ModuleKeyword */: case 143 /* NamespaceKeyword */: - return parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseModuleDeclaration(pos, hasJSDoc, modifiersIn); case 100 /* ImportKeyword */: - return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiersIn); case 93 /* ExportKeyword */: nextToken(); switch (token()) { case 88 /* DefaultKeyword */: case 63 /* EqualsToken */: - return parseExportAssignment(pos, hasJSDoc, decorators, modifiers); + return parseExportAssignment(pos, hasJSDoc, modifiersIn); case 128 /* AsKeyword */: - return parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseNamespaceExportDeclaration(pos, hasJSDoc, modifiersIn); default: - return parseExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseExportDeclaration(pos, hasJSDoc, modifiersIn); } default: - if (decorators || modifiers) { + if (modifiersIn) { const missing = createMissingNode( 279 /* MissingDeclaration */, /*reportAtCurrentPosition*/ @@ -32168,8 +32593,7 @@ ${lanes.join("\n")} Diagnostics.Declaration_expected ); setTextRangePos(missing, pos); - missing.illegalDecorators = decorators; - missing.modifiers = modifiers; + missing.modifiers = modifiersIn; return missing; } return void 0; @@ -32302,17 +32726,16 @@ ${lanes.join("\n")} function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 21 /* CloseParenToken */; } - function parseVariableStatement(pos, hasJSDoc, decorators, modifiers) { + function parseVariableStatement(pos, hasJSDoc, modifiers) { const declarationList = parseVariableDeclarationList( /*inForStatementInitializer*/ false ); parseSemicolon(); const node = factory2.createVariableStatement(modifiers, declarationList); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseFunctionDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); const modifierFlags = modifiersToFlags(modifiers); parseExpected(98 /* FunctionKeyword */); @@ -32335,7 +32758,6 @@ ${lanes.join("\n")} const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, Diagnostics.or_expected); setAwaitContext(savedAwaitContext); const node = factory2.createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseConstructorName() { @@ -32349,7 +32771,7 @@ ${lanes.join("\n")} }); } } - function tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers) { + function tryParseConstructorDeclaration(pos, hasJSDoc, modifiers) { return tryParse(() => { if (parseConstructorName()) { const typeParameters = parseTypeParameters(); @@ -32361,14 +32783,13 @@ ${lanes.join("\n")} ); const body = parseFunctionBlockOrSemicolon(0 /* None */, Diagnostics.or_expected); const node = factory2.createConstructorDeclaration(modifiers, parameters, body); - node.illegalDecorators = decorators; node.typeParameters = typeParameters; node.type = type; return withJSDoc(finishNode(node, pos), hasJSDoc); } }); } - function parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { + function parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; const isAsync = some(modifiers, isAsyncModifier) ? 2 /* Await */ : 0 /* None */; const typeParameters = parseTypeParameters(); @@ -32380,7 +32801,7 @@ ${lanes.join("\n")} ); const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage); const node = factory2.createMethodDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, asteriskToken, name, questionToken, @@ -32392,13 +32813,13 @@ ${lanes.join("\n")} node.exclamationToken = exclamationToken; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken) { + function parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken) { const exclamationToken = !questionToken && !scanner2.hasPrecedingLineBreak() ? parseOptionalToken(53 /* ExclamationToken */) : void 0; const type = parseTypeAnnotation(); const initializer = doOutsideOfContext(8192 /* YieldContext */ | 32768 /* AwaitContext */ | 4096 /* DisallowInContext */, parseInitializer); parseSemicolonAfterPropertyName(name, type, initializer); const node = factory2.createPropertyDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, name, questionToken || exclamationToken, type, @@ -32406,7 +32827,7 @@ ${lanes.join("\n")} ); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers) { const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const name = parsePropertyName(); const questionToken = parseOptionalToken(57 /* QuestionToken */); @@ -32414,7 +32835,6 @@ ${lanes.join("\n")} return parseMethodDeclaration( pos, hasJSDoc, - decorators, modifiers, asteriskToken, name, @@ -32424,9 +32844,9 @@ ${lanes.join("\n")} Diagnostics.or_expected ); } - return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken); + return parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken); } - function parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, kind, flags) { + function parseAccessorDeclaration(pos, hasJSDoc, modifiers, kind, flags) { const name = parsePropertyName(); const typeParameters = parseTypeParameters(); const parameters = parseParameters(0 /* None */); @@ -32436,7 +32856,7 @@ ${lanes.join("\n")} false ); const body = parseFunctionBlockOrSemicolon(flags); - const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body) : factory2.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body); + const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(modifiers, name, parameters, type, body) : factory2.createSetAccessorDeclaration(modifiers, name, parameters, body); node.typeParameters = typeParameters; if (isSetAccessorDeclaration(node)) node.type = type; @@ -32482,11 +32902,10 @@ ${lanes.join("\n")} } return false; } - function parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers) { parseExpectedToken(124 /* StaticKeyword */); const body = parseClassStaticBlockBody(); const node = withJSDoc(finishNode(factory2.createClassStaticBlockDeclaration(body), pos), hasJSDoc); - node.illegalDecorators = decorators; node.modifiers = modifiers; return node; } @@ -32526,15 +32945,7 @@ ${lanes.join("\n")} const expression = doInDecoratorContext(parseDecoratorExpression); return finishNode(factory2.createDecorator(expression), pos); } - function parseDecorators() { - const pos = getNodePos(); - let list, decorator; - while (decorator = tryParseDecorator()) { - list = append(list, decorator); - } - return list && createNodeArray2(list, pos); - } - function tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + function tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); const kind = token(); if (token() === 85 /* ConstKeyword */ && permitConstAsModifier) { @@ -32552,24 +32963,27 @@ ${lanes.join("\n")} } return finishNode(factory2.createToken(kind), pos); } - function combineDecoratorsAndModifiers(decorators, modifiers) { - if (!decorators) - return modifiers; - if (!modifiers) - return decorators; - const decoratorsAndModifiers = factory2.createNodeArray(concatenate(decorators, modifiers)); - setTextRangePosEnd(decoratorsAndModifiers, decorators.pos, modifiers.end); - return decoratorsAndModifiers; - } - function parseModifiers(permitConstAsModifier, stopOnStartOfClassStaticBlock) { + function parseModifiers(allowDecorators, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); - let list, modifier, hasSeenStatic = false; - while (modifier = tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) { + let list; + let modifier, hasSeenStaticModifier = false; + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { if (modifier.kind === 124 /* StaticKeyword */) - hasSeenStatic = true; + hasSeenStaticModifier = true; list = append(list, modifier); } - return list && createNodeArray2(list, pos); + if (allowDecorators && token() === 59 /* AtToken */) { + let decorator; + while (decorator = tryParseDecorator()) { + list = append(list, decorator); + } + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { + if (modifier.kind === 124 /* StaticKeyword */) + hasSeenStaticModifier = true; + list = append(list, modifier); + } + } + return list && createNodeArray(list, pos); } function parseModifiersForArrowFunction() { let modifiers; @@ -32577,7 +32991,7 @@ ${lanes.join("\n")} const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(132 /* AsyncKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -32588,30 +33002,31 @@ ${lanes.join("\n")} return finishNode(factory2.createSemicolonClassElement(), pos); } const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); const modifiers = parseModifiers( + /*allowDecorators*/ + true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true ); if (token() === 124 /* StaticKeyword */ && lookAhead(nextTokenIsOpenBrace)) { - return parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers); } if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } if (token() === 135 /* ConstructorKeyword */ || token() === 10 /* StringLiteral */) { - const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers); + const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, modifiers); if (constructorDeclaration) { return constructorDeclaration; } } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } if (tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */ || token() === 41 /* AsteriskToken */ || token() === 22 /* OpenBracketToken */) { const isAmbient = some(modifiers, isDeclareModifier); @@ -32619,12 +33034,12 @@ ${lanes.join("\n")} for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers)); } else { - return parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers); + return parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers); } } - if (decorators || modifiers) { + if (modifiers) { const name = createMissingNode( 79 /* Identifier */, /*reportAtCurrentPosition*/ @@ -32634,7 +33049,6 @@ ${lanes.join("\n")} return parsePropertyDeclaration( pos, hasJSDoc, - decorators, modifiers, name, /*questionToken*/ @@ -32643,21 +33057,39 @@ ${lanes.join("\n")} } return Debug.fail("Should not have attempted to parse class member declaration."); } + function parseDecoratedExpression() { + const pos = getNodePos(); + const hasJSDoc = hasPrecedingJSDocComment(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); + if (token() === 84 /* ClassKeyword */) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 228 /* ClassExpression */); + } + const missing = createMissingNode( + 279 /* MissingDeclaration */, + /*reportAtCurrentPosition*/ + true, + Diagnostics.Expression_expected + ); + setTextRangePos(missing, pos); + missing.modifiers = modifiers; + return missing; + } function parseClassExpression() { return parseClassDeclarationOrExpression( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0, 228 /* ClassExpression */ ); } - function parseClassDeclaration(pos, hasJSDoc, decorators, modifiers) { - return parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, 260 /* ClassDeclaration */); + function parseClassDeclaration(pos, hasJSDoc, modifiers) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 260 /* ClassDeclaration */); } - function parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, kind) { + function parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, kind) { const savedAwaitContext = inAwaitContext(); parseExpected(84 /* ClassKeyword */); const name = parseNameOfClassDeclarationOrExpression(); @@ -32676,11 +33108,11 @@ ${lanes.join("\n")} members = createMissingList(); } setAwaitContext(savedAwaitContext); - const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members) : factory2.createClassExpression(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members); + const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : factory2.createClassExpression(modifiers, name, typeParameters, heritageClauses, members); return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseNameOfClassDeclarationOrExpression() { - return isBindingIdentifier() && !isImplementsClause() ? createIdentifier3(isBindingIdentifier()) : void 0; + return isBindingIdentifier() && !isImplementsClause() ? createIdentifier(isBindingIdentifier()) : void 0; } function isImplementsClause() { return token() === 117 /* ImplementsKeyword */ && lookAhead(nextTokenIsIdentifierOrKeyword); @@ -32717,17 +33149,16 @@ ${lanes.join("\n")} function parseClassMembers() { return parseList(ParsingContext.ClassMembers, parseClassElement); } - function parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseInterfaceDeclaration(pos, hasJSDoc, modifiers) { parseExpected(118 /* InterfaceKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); const heritageClauses = parseHeritageClauses(); const members = parseObjectTypeMembers(); const node = factory2.createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) { parseExpected(154 /* TypeKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); @@ -32735,7 +33166,6 @@ ${lanes.join("\n")} const type = token() === 139 /* IntrinsicKeyword */ && tryParse(parseKeywordAndNoDot) || parseType(); parseSemicolon(); const node = factory2.createTypeAliasDeclaration(modifiers, name, typeParameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseEnumMember() { @@ -32745,7 +33175,7 @@ ${lanes.join("\n")} const initializer = allowInAnd(parseInitializer); return withJSDoc(finishNode(factory2.createEnumMember(name, initializer), pos), hasJSDoc); } - function parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseEnumDeclaration(pos, hasJSDoc, modifiers) { parseExpected(92 /* EnumKeyword */); const name = parseIdentifier(); let members; @@ -32756,7 +33186,6 @@ ${lanes.join("\n")} members = createMissingList(); } const node = factory2.createEnumDeclaration(modifiers, name, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseModuleBlock() { @@ -32770,24 +33199,21 @@ ${lanes.join("\n")} } return finishNode(factory2.createModuleBlock(statements), pos); } - function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags) { + function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiers, flags) { const namespaceFlag = flags & 16 /* Namespace */; const name = parseIdentifier(); const body = parseOptional(24 /* DotToken */) ? parseModuleOrNamespaceDeclaration( getNodePos(), /*hasJSDoc*/ false, - /*decorators*/ - void 0, /*modifiers*/ void 0, 4 /* NestedNamespace */ | namespaceFlag ) : parseModuleBlock(); const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; let name; if (token() === 159 /* GlobalKeyword */) { @@ -32803,23 +33229,22 @@ ${lanes.join("\n")} } else { parseSemicolon(); } - const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; + const node = factory2.createModuleDeclaration(modifiersIn, name, body, flags); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; if (token() === 159 /* GlobalKeyword */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } else if (parseOptional(143 /* NamespaceKeyword */)) { flags |= 16 /* Namespace */; } else { parseExpected(142 /* ModuleKeyword */); if (token() === 10 /* StringLiteral */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } } - return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags); + return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiersIn, flags); } function isExternalModuleReference2() { return token() === 147 /* RequireKeyword */ && lookAhead(nextTokenIsOpenParen); @@ -32833,17 +33258,16 @@ ${lanes.join("\n")} function nextTokenIsSlash() { return nextToken() === 43 /* SlashToken */; } - function parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseNamespaceExportDeclaration(pos, hasJSDoc, modifiers) { parseExpected(128 /* AsKeyword */); parseExpected(143 /* NamespaceKeyword */); const name = parseIdentifier(); parseSemicolon(); const node = factory2.createNamespaceExportDeclaration(name); - node.illegalDecorators = decorators; node.modifiers = modifiers; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiers) { parseExpected(100 /* ImportKeyword */); const afterImportPos = scanner2.getStartPos(); let identifier; @@ -32856,7 +33280,7 @@ ${lanes.join("\n")} identifier = isIdentifier2() ? parseIdentifier() : void 0; } if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { - return parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly); + return parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly); } let importClause; if (identifier || // import id @@ -32872,7 +33296,6 @@ ${lanes.join("\n")} } parseSemicolon(); const node = factory2.createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseAssertEntry() { @@ -32910,7 +33333,7 @@ ${lanes.join("\n")} } return finishNode(factory2.createAssertClause(elements, multiLine), pos); } else { - const elements = createNodeArray2( + const elements = createNodeArray( [], getNodePos(), /*end*/ @@ -32931,12 +33354,11 @@ ${lanes.join("\n")} function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { return token() === 27 /* CommaToken */ || token() === 158 /* FromKeyword */; } - function parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly) { + function parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly) { parseExpected(63 /* EqualsToken */); const moduleReference = parseModuleReference(); parseSemicolon(); const node = factory2.createImportEqualsDeclaration(modifiers, isTypeOnly, identifier, moduleReference); - node.illegalDecorators = decorators; const finished = withJSDoc(finishNode(node, pos), hasJSDoc); return finished; } @@ -33046,7 +33468,7 @@ ${lanes.join("\n")} function parseNamespaceExport(pos) { return finishNode(factory2.createNamespaceExport(parseIdentifierName()), pos); } - function parseExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseExportDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -33076,10 +33498,9 @@ ${lanes.join("\n")} parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseExportAssignment(pos, hasJSDoc, decorators, modifiers) { + function parseExportAssignment(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -33098,7 +33519,6 @@ ${lanes.join("\n")} parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportAssignment(modifiers, isExportEquals, expression); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } let ParsingContext; @@ -33353,8 +33773,8 @@ ${lanes.join("\n")} } if (parts.length && tags) Debug.assertIsDefined(commentsPos, "having parsed tags implies that the end of the comment span should be set"); - const tagsArray = tags && createNodeArray2(tags, tagsPos, tagsEnd); - return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray2(parts, start, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start, end); + const tagsArray = tags && createNodeArray(tags, tagsPos, tagsEnd); + return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray(parts, start, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start, end); }); function removeLeadingNewlines(comments2) { while (comments2.length && (comments2[0] === "\n" || comments2[0] === "\r")) { @@ -33482,6 +33902,9 @@ ${lanes.join("\n")} case "overload": tag = parseOverloadTag(start2, tagName, margin, indentText); break; + case "satisfies": + tag = parseSatisfiesTag(start2, tagName, margin, indentText); + break; case "see": tag = parseSeeTag(start2, tagName, margin, indentText); break; @@ -33594,7 +34017,7 @@ ${lanes.join("\n")} if (comments2.length) { parts2.push(finishNode(factory2.createJSDocText(comments2.join("")), linkEnd2 != null ? linkEnd2 : commentsPos2)); } - return createNodeArray2(parts2, commentsPos2, scanner2.getTextPos()); + return createNodeArray(parts2, commentsPos2, scanner2.getTextPos()); } else if (comments2.length) { return comments2.join(""); } @@ -33760,7 +34183,7 @@ ${lanes.join("\n")} if (!comments2) { commentEnd = scanner2.getStartPos(); } - const allParts = typeof comments2 !== "string" ? createNodeArray2(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; + const allParts = typeof comments2 !== "string" ? createNodeArray(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; return finishNode(factory2.createJSDocAuthorTag(tagName, allParts), start2); } function parseAuthorNameAndEmail() { @@ -33790,6 +34213,14 @@ ${lanes.join("\n")} const className = parseExpressionWithTypeArgumentsForAugments(); return finishNode(factory2.createJSDocAugmentsTag(tagName, className, parseTrailingTagComments(start2, getNodePos(), margin, indentText)), start2); } + function parseSatisfiesTag(start2, tagName, margin, indentText) { + const typeExpression = parseJSDocTypeExpression( + /*mayOmitBraces*/ + false + ); + const comments2 = margin !== void 0 && indentText !== void 0 ? parseTrailingTagComments(start2, getNodePos(), margin, indentText) : void 0; + return finishNode(factory2.createJSDocSatisfiesTag(tagName, typeExpression, comments2), start2); + } function parseExpressionWithTypeArgumentsForAugments() { const usedBrace = parseOptional(18 /* OpenBraceToken */); const pos = getNodePos(); @@ -33894,7 +34325,7 @@ ${lanes.join("\n")} return finishNode(jsDocNamespaceNode, pos); } if (nested) { - typeNameOrNamespaceName.isInJSDocNamespace = true; + typeNameOrNamespaceName.flags |= 2048 /* IdentifierIsInJSDocNamespace */; } return typeNameOrNamespaceName; } @@ -33905,7 +34336,7 @@ ${lanes.join("\n")} while (child = tryParse(() => parseChildParameterOrPropertyTag(4 /* CallbackParameter */, indent3))) { parameters = append(parameters, child); } - return createNodeArray2(parameters || [], pos); + return createNodeArray(parameters || [], pos); } function parseJSDocSignature(start2, indent3) { const parameters = parseCallbackTagParameters(indent3); @@ -34056,7 +34487,7 @@ ${lanes.join("\n")} } skipWhitespaceOrAsterisk(); } while (parseOptionalJsdoc(27 /* CommaToken */)); - return createNodeArray2(typeParameters, pos); + return createNodeArray(typeParameters, pos); } function parseTemplateTag(start2, tagName, indent3, indentText) { const constraint = token() === 18 /* OpenBraceToken */ ? parseJSDocTypeExpression() : void 0; @@ -34080,7 +34511,7 @@ ${lanes.join("\n")} if (parseOptional(22 /* OpenBracketToken */)) { parseExpected(23 /* CloseBracketToken */); } - entity = createQualifiedName2(entity, name); + entity = createQualifiedName(entity, name); } return entity; } @@ -34098,12 +34529,7 @@ ${lanes.join("\n")} const end2 = scanner2.getTextPos(); const originalKeywordKind = token(); const text = internIdentifier(scanner2.getTokenValue()); - const result = finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind - ), pos, end2); + const result = finishNode(factory2.createIdentifier(text, originalKeywordKind), pos, end2); nextTokenJSDoc(); return result; } @@ -34504,16 +34930,6 @@ ${lanes.join("\n")} function getOptionsNameMap() { return optionsNameMapCache || (optionsNameMapCache = createOptionNameMap(optionDeclarations)); } - function convertEnableAutoDiscoveryToEnable(typeAcquisition) { - if (typeAcquisition && typeAcquisition.enableAutoDiscovery !== void 0 && typeAcquisition.enable === void 0) { - return { - enable: typeAcquisition.enableAutoDiscovery, - include: typeAcquisition.include || [], - exclude: typeAcquisition.exclude || [] - }; - } - return typeAcquisition; - } function createCompilerDiagnosticForInvalidCustomType(opt) { return createDiagnosticForInvalidCustomType(opt, createCompilerDiagnostic); } @@ -34844,12 +35260,6 @@ ${lanes.join("\n")} elementOptions: getCommandLineWatchOptionsMap(), extraKeyDiagnostics: watchOptionsDidYouMeanDiagnostics }, - { - name: "typingOptions", - type: "object", - elementOptions: getCommandLineTypeAcquisitionMap(), - extraKeyDiagnostics: typeAcquisitionDidYouMeanDiagnostics - }, { name: "typeAcquisition", type: "object", @@ -35696,11 +36106,11 @@ ${lanes.join("\n")} errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); } const options = convertCompilerOptionsFromJsonWorker(json.compilerOptions, basePath, errors, configFileName); - const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition || json.typingOptions, basePath, errors, configFileName); + const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition, basePath, errors, configFileName); const watchOptions = convertWatchOptionsFromJsonWorker(json.watchOptions, basePath, errors); json.compileOnSave = convertCompileOnSaveOptionFromJson(json, basePath, errors); let extendedConfigPath; - if (json.extends) { + if (json.extends || json.extends === "") { if (!isCompilerOptionsValue(extendsOptionDeclaration, json.extends)) { errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "extends", getCompilerOptionValueTypeString(extendsOptionDeclaration))); } else { @@ -35723,7 +36133,7 @@ ${lanes.join("\n")} } function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileName, errors) { const options = getDefaultCompilerOptions(configFileName); - let typeAcquisition, typingOptionstypeAcquisition; + let typeAcquisition; let watchOptions; let extendedConfigPath; let rootCompilerOptions; @@ -35740,9 +36150,6 @@ ${lanes.join("\n")} case "typeAcquisition": currentOption = typeAcquisition || (typeAcquisition = getDefaultTypeAcquisition(configFileName)); break; - case "typingOptions": - currentOption = typingOptionstypeAcquisition || (typingOptionstypeAcquisition = getDefaultTypeAcquisition(configFileName)); - break; default: Debug.fail("Unknown option"); } @@ -35795,15 +36202,7 @@ ${lanes.join("\n")} optionsIterator ); if (!typeAcquisition) { - if (typingOptionstypeAcquisition) { - typeAcquisition = typingOptionstypeAcquisition.enableAutoDiscovery !== void 0 ? { - enable: typingOptionstypeAcquisition.enableAutoDiscovery, - include: typingOptionstypeAcquisition.include, - exclude: typingOptionstypeAcquisition.exclude - } : typingOptionstypeAcquisition; - } else { - typeAcquisition = getDefaultTypeAcquisition(configFileName); - } + typeAcquisition = getDefaultTypeAcquisition(configFileName); } if (rootCompilerOptions && json && json.compilerOptions === void 0) { errors.push(createDiagnosticForNodeInSourceFile(sourceFile, rootCompilerOptions[0], Diagnostics._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file, getTextOfPropertyName(rootCompilerOptions[0]))); @@ -35827,7 +36226,11 @@ ${lanes.join("\n")} if (resolved.resolvedModule) { return resolved.resolvedModule.resolvedFileName; } - errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + if (extendedConfig === "") { + errors.push(createDiagnostic(Diagnostics.Compiler_option_0_cannot_be_given_an_empty_string, "extends")); + } else { + errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + } return void 0; } function getExtendedConfig(sourceFile, extendedConfigPath, host, resolutionStack, errors, extendedConfigCache, result) { @@ -35905,8 +36308,7 @@ ${lanes.join("\n")} } function convertTypeAcquisitionFromJsonWorker(jsonOptions, basePath, errors, configFileName) { const options = getDefaultTypeAcquisition(configFileName); - const typeAcquisition = convertEnableAutoDiscoveryToEnable(jsonOptions); - convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), typeAcquisition, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); + convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), jsonOptions, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); return options; } function convertWatchOptionsFromJsonWorker(jsonOptions, basePath, errors) { @@ -36108,6 +36510,7 @@ ${lanes.join("\n")} } } function specToDiagnostic(spec, disallowTrailingRecursion) { + Debug.assert(typeof spec === "string"); if (disallowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return [Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec]; } else if (invalidDotDotAfterRecursiveWildcard(spec)) { @@ -36290,6 +36693,7 @@ ${lanes.join("\n")} ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], + ["es2023", "lib.es2023.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -36343,14 +36747,17 @@ ${lanes.join("\n")} ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], - ["esnext.array", "lib.es2022.array.d.ts"], + ["es2023.array", "lib.es2023.array.d.ts"], + ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], - ["esnext.weakref", "lib.es2021.weakref.d.ts"] + ["esnext.weakref", "lib.es2021.weakref.d.ts"], + ["decorators", "lib.decorators.d.ts"], + ["decorators.legacy", "lib.decorators.legacy.d.ts"] ]; libs = libEntries.map((entry) => entry[0]); libMap = new Map(libEntries); @@ -36893,6 +37300,13 @@ ${lanes.join("\n")} transpileOptionValue: true, defaultValueDescription: false }, + { + name: "verbatimModuleSyntax", + type: "boolean", + category: Diagnostics.Interop_Constraints, + description: Diagnostics.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting, + defaultValueDescription: false + }, // Strict Type Checks { name: "strict", @@ -37194,7 +37608,7 @@ ${lanes.join("\n")} { name: "allowImportingTsExtensions", type: "boolean", - affectsModuleResolution: true, + affectsSemanticDiagnostics: true, category: Diagnostics.Modules, description: Diagnostics.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set, defaultValueDescription: false @@ -37258,10 +37672,11 @@ ${lanes.join("\n")} { name: "experimentalDecorators", type: "boolean", + affectsEmit: true, affectsSemanticDiagnostics: true, affectsBuildInfo: true, category: Diagnostics.Language_and_Environment, - description: Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, + description: Diagnostics.Enable_experimental_support_for_legacy_experimental_decorators, defaultValueDescription: false }, { @@ -37375,7 +37790,7 @@ ${lanes.join("\n")} paramType: Diagnostics.NEWLINE, category: Diagnostics.Emit, description: Diagnostics.Set_the_newline_character_for_emitting_files, - defaultValueDescription: Diagnostics.Platform_specific + defaultValueDescription: "lf" }, { name: "noErrorTruncation", @@ -37551,7 +37966,7 @@ ${lanes.join("\n")} affectsModuleResolution: true, category: Diagnostics.Interop_Constraints, description: Diagnostics.Ensure_that_casing_is_correct_in_imports, - defaultValueDescription: false + defaultValueDescription: true }, { name: "maxNodeModuleJsDepth", @@ -37675,14 +38090,6 @@ ${lanes.join("\n")} ...optionsForBuild ]; typeAcquisitionDeclarations = [ - { - /* @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - name: "enableAutoDiscovery", - type: "boolean", - defaultValueDescription: false - }, { name: "enable", type: "boolean", @@ -37822,7 +38229,7 @@ ${lanes.join("\n")} Debug.assert(extensionIsTS(resolved.extension)); return { fileName: resolved.path, packageId: resolved.packageId }; } - function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache) { + function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache, legacyResult) { if (resultFromCache) { resultFromCache.failedLookupLocations = updateResolutionField(resultFromCache.failedLookupLocations, failedLookupLocations); resultFromCache.affectingLocations = updateResolutionField(resultFromCache.affectingLocations, affectingLocations); @@ -37840,7 +38247,8 @@ ${lanes.join("\n")} }, failedLookupLocations: initializeResolutionField(failedLookupLocations), affectingLocations: initializeResolutionField(affectingLocations), - resolutionDiagnostics: initializeResolutionField(diagnostics) + resolutionDiagnostics: initializeResolutionField(diagnostics), + node10Result: legacyResult }; } function initializeResolutionField(value) { @@ -38880,7 +39288,7 @@ ${lanes.join("\n")} ); } function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, compilerOptions, host, cache, extensions, isConfigLookup, redirectedReference) { - var _a2, _b; + var _a2, _b, _c, _d; const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations = []; const affectingLocations = []; @@ -38907,44 +39315,60 @@ ${lanes.join("\n")} if (getEmitModuleResolutionKind(compilerOptions) === 2 /* Node10 */) { const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */); const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */); - result = priorityExtensions && tryResolve(priorityExtensions) || secondaryExtensions && tryResolve(secondaryExtensions) || void 0; + result = priorityExtensions && tryResolve(priorityExtensions, state) || secondaryExtensions && tryResolve(secondaryExtensions, state) || void 0; } else { - result = tryResolve(extensions); + result = tryResolve(extensions, state); + } + let legacyResult; + if (((_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.isExternalLibraryImport) && !isConfigLookup && extensions & (1 /* TypeScript */ | 4 /* Declaration */) && features & 8 /* Exports */ && !isExternalModuleNameRelative(moduleName) && !extensionIsOk(1 /* TypeScript */ | 4 /* Declaration */, result.value.resolved.extension) && conditions.indexOf("import") > -1) { + traceIfEnabled(state, Diagnostics.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update); + const diagnosticState = { + ...state, + features: state.features & ~8 /* Exports */, + failedLookupLocations: [], + affectingLocations: [], + reportDiagnostic: noop + }; + const diagnosticResult = tryResolve(extensions & (1 /* TypeScript */ | 4 /* Declaration */), diagnosticState); + if ((_b = diagnosticResult == null ? void 0 : diagnosticResult.value) == null ? void 0 : _b.isExternalLibraryImport) { + legacyResult = diagnosticResult.value.resolved.path; + } } return createResolvedModuleWithFailedLookupLocations( - (_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.resolved, - (_b = result == null ? void 0 : result.value) == null ? void 0 : _b.isExternalLibraryImport, + (_c = result == null ? void 0 : result.value) == null ? void 0 : _c.resolved, + (_d = result == null ? void 0 : result.value) == null ? void 0 : _d.isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, - state.resultFromCache + state.resultFromCache, + legacyResult ); - function tryResolve(extensions2) { - const loader = (extensions3, candidate, onlyRecordFailures, state2) => nodeLoadModuleByRelativeName( + function tryResolve(extensions2, state2) { + const loader = (extensions3, candidate, onlyRecordFailures, state3) => nodeLoadModuleByRelativeName( extensions3, candidate, onlyRecordFailures, - state2, + state3, /*considerPackageJson*/ true ); - const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state); + const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state2); if (resolved) { return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) { if (traceEnabled) { trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) return void 0; @@ -38963,7 +39387,7 @@ ${lanes.join("\n")} candidate, /*onlyRecordFailures*/ false, - state, + state2, /*considerPackageJson*/ true ); @@ -40164,7 +40588,7 @@ ${lanes.join("\n")} } } function shouldAllowImportingTsExtension(compilerOptions, fromFileName) { - return getEmitModuleResolutionKind(compilerOptions) === 100 /* Bundler */ && (!!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName)); + return !!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName); } function loadModuleFromGlobalCache(moduleName, projectName, compilerOptions, host, globalCache, packageJsonInfoCache) { const traceEnabled = isTraceEnabled(compilerOptions, host); @@ -40318,7 +40742,7 @@ ${lanes.join("\n")} case 264 /* ModuleDeclaration */: return getModuleInstanceState(node, visited); case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { return 0 /* NonInstantiated */; } } @@ -40754,6 +41178,7 @@ ${lanes.join("\n")} } else if (containerFlags & 64 /* IsInterface */) { seenThisKeyword = false; bindChildren(node); + Debug.assertNotNode(node, isIdentifier); node.flags = seenThisKeyword ? node.flags | 128 /* ContainsThis */ : node.flags & ~128 /* ContainsThis */; } else { bindChildren(node); @@ -41054,13 +41479,12 @@ ${lanes.join("\n")} } else if (node.kind === 221 /* PrefixUnaryExpression */ && node.operator === 53 /* ExclamationToken */) { node = node.operand; } else { - return node.kind === 223 /* BinaryExpression */ && (node.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || node.operatorToken.kind === 56 /* BarBarToken */ || node.operatorToken.kind === 60 /* QuestionQuestionToken */); + return isLogicalOrCoalescingBinaryExpression(node); } } } function isLogicalAssignmentExpression(node) { - node = skipParentheses(node); - return isBinaryExpression(node) && isLogicalOrCoalescingAssignmentOperator(node.operatorToken.kind); + return isLogicalOrCoalescingAssignmentExpression(skipParentheses(node)); } function isTopLevelLogicalExpression(node) { while (isParenthesizedExpression(node.parent) || isPrefixUnaryExpression(node.parent) && node.parent.operator === 53 /* ExclamationToken */) { @@ -41443,7 +41867,7 @@ ${lanes.join("\n")} }; } const operator = node.operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */ || isLogicalOrCoalescingAssignmentOperator(operator)) { + if (isLogicalOrCoalescingBinaryOperator(operator) || isLogicalOrCoalescingAssignmentOperator(operator)) { if (isTopLevelLogicalExpression(node)) { const postExpressionLabel = createBranchLabel(); bindLogicalLikeExpression(node, postExpressionLabel, postExpressionLabel); @@ -41913,13 +42337,17 @@ ${lanes.join("\n")} } function checkContextualIdentifier(node) { if (!file.parseDiagnostics.length && !(node.flags & 16777216 /* Ambient */) && !(node.flags & 8388608 /* JSDoc */) && !isIdentifierName(node)) { - if (inStrictMode && node.originalKeywordKind >= 117 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 125 /* LastFutureReservedWord */) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind === void 0) { + return; + } + if (inStrictMode && originalKeywordKind >= 117 /* FirstFutureReservedWord */ && originalKeywordKind <= 125 /* LastFutureReservedWord */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, getStrictModeIdentifierMessage(node), declarationNameToString(node) )); - } else if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + } else if (originalKeywordKind === 133 /* AwaitKeyword */) { if (isExternalModule(file) && isInTopLevelContext(node)) { file.bindDiagnostics.push(createDiagnosticForNode2( node, @@ -41933,7 +42361,7 @@ ${lanes.join("\n")} declarationNameToString(node) )); } - } else if (node.originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { + } else if (originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, @@ -42145,7 +42573,7 @@ ${lanes.join("\n")} function bindWorker(node) { switch (node.kind) { case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; while (parentNode && !isJSDocTypeAlias(parentNode)) { parentNode = parentNode.parent; @@ -44078,6 +44506,7 @@ ${lanes.join("\n")} deferredDiagnosticsCallbacks.push(arg); }; let cancellationToken; + const requestedExternalEmitHelperNames = /* @__PURE__ */ new Set(); let requestedExternalEmitHelpers; let externalHelpersModule; const Symbol46 = objectAllocator.getSymbolConstructor(); @@ -44096,6 +44525,7 @@ ${lanes.join("\n")} const compilerOptions = host.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const allowSyntheticDefaultImports = getAllowSyntheticDefaultImports(compilerOptions); const strictNullChecks = getStrictOptionValue(compilerOptions, "strictNullChecks"); @@ -44120,6 +44550,7 @@ ${lanes.join("\n")} globals.set(globalThisSymbol.escapedName, globalThisSymbol); const argumentsSymbol = createSymbol(4 /* Property */, "arguments"); const requireSymbol = createSymbol(4 /* Property */, "require"); + const isolatedModulesLikeFlagName = compilerOptions.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules"; let apparentArgumentCount; const checker = { getNodeCount: () => reduceLeft(host.getSourceFiles(), (n, s) => n + s.nodeCount, 0), @@ -44540,6 +44971,7 @@ ${lanes.join("\n")} const stringMappingTypes = /* @__PURE__ */ new Map(); const substitutionTypes = /* @__PURE__ */ new Map(); const subtypeReductionCache = /* @__PURE__ */ new Map(); + const decoratorContextOverrideTypeCache = /* @__PURE__ */ new Map(); const cachedTypes = /* @__PURE__ */ new Map(); const evolvingArrayTypes = []; const undefinedProperties = /* @__PURE__ */ new Map(); @@ -44779,6 +45211,14 @@ ${lanes.join("\n")} let deferredGlobalBigIntType; let deferredGlobalNaNSymbol; let deferredGlobalRecordSymbol; + let deferredGlobalClassDecoratorContextType; + let deferredGlobalClassMethodDecoratorContextType; + let deferredGlobalClassGetterDecoratorContextType; + let deferredGlobalClassSetterDecoratorContextType; + let deferredGlobalClassAccessorDecoratorContextType; + let deferredGlobalClassAccessorDecoratorTargetType; + let deferredGlobalClassAccessorDecoratorResultType; + let deferredGlobalClassFieldDecoratorContextType; const allPotentiallyUnusedIdentifiers = /* @__PURE__ */ new Map(); let flowLoopStart = 0; let flowLoopCount = 0; @@ -44865,7 +45305,7 @@ ${lanes.join("\n")} if (jsxFragmentPragma) { const chosenPragma = isArray(jsxFragmentPragma) ? jsxFragmentPragma[0] : jsxFragmentPragma; file.localJsxFragmentFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFragmentFactory, markAsSynthetic); + visitNode(file.localJsxFragmentFactory, markAsSynthetic, isEntityName); if (file.localJsxFragmentFactory) { return file.localJsxFragmentNamespace = getFirstIdentifier(file.localJsxFragmentFactory).escapedText; } @@ -44908,7 +45348,7 @@ ${lanes.join("\n")} if (jsxPragma) { const chosenPragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; file.localJsxFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFactory, markAsSynthetic); + visitNode(file.localJsxFactory, markAsSynthetic, isEntityName); if (file.localJsxFactory) { return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText; } @@ -44961,7 +45401,7 @@ ${lanes.join("\n")} addErrorOrSuggestion(isError, "message" in message ? createFileDiagnostic(file, 0, 0, message, arg0, arg1, arg2, arg3) : createDiagnosticForFileFromMessageChain(file, message)); return; } - addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(location, message)); + addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(location), location, message)); } function errorAndMaybeSuggestAwait(location, maybeMissingAwait, message, arg0, arg1, arg2, arg3) { const diagnostic = error(location, message, arg0, arg1, arg2, arg3); @@ -45006,6 +45446,16 @@ ${lanes.join("\n")} symbol.links.checkFlags = checkFlags || 0 /* None */; return symbol; } + function createParameter(name, type) { + const symbol = createSymbol(1 /* FunctionScopedVariable */, name); + symbol.links.type = type; + return symbol; + } + function createProperty(name, type) { + const symbol = createSymbol(4 /* Property */, name); + symbol.links.type = type; + return symbol; + } function getExcludedSymbolFlags(flags) { let result = 0; if (flags & 2 /* BlockScopedVariable */) @@ -45552,6 +46002,15 @@ ${lanes.join("\n")} break; case 263 /* EnumDeclaration */: if (result = lookup(((_c = getSymbolOfDeclaration(location)) == null ? void 0 : _c.exports) || emptySymbols, name, meaning & 8 /* EnumMember */)) { + if (nameNotFoundMessage && getIsolatedModules(compilerOptions) && !(location.flags & 16777216 /* Ambient */) && getSourceFileOfNode(location) !== getSourceFileOfNode(result.valueDeclaration)) { + error( + errorLocation, + Diagnostics.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead, + unescapeLeadingUnderscores(name), + isolatedModulesLikeFlagName, + `${unescapeLeadingUnderscores(getSymbolOfNode(location).escapedName)}.${unescapeLeadingUnderscores(name)}` + ); + } break loop; } break; @@ -45797,7 +46256,7 @@ ${lanes.join("\n")} if (result && errorLocation && meaning & 111551 /* Value */ && result.flags & 2097152 /* Alias */ && !(result.flags & 111551 /* Value */) && !isValidTypeOnlyAliasUseSite(errorLocation)) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(result, 111551 /* Value */); if (typeOnlyDeclaration) { - const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; + const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; const unescapedName = unescapeLeadingUnderscores(name); addTypeOnlyDeclarationRelatedInfo( error(errorLocation, message, unescapedName), @@ -45817,7 +46276,7 @@ ${lanes.join("\n")} diagnostic, createDiagnosticForNode( typeOnlyDeclaration, - typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, + typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, unescapedName ) ); @@ -46196,10 +46655,10 @@ ${lanes.join("\n")} false ) && !node.isTypeOnly) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(getSymbolOfDeclaration(node)); - const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */; + const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */; const message = isExport ? Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type : Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type; const relatedMessage = isExport ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here; - const name = unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); + const name = typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? "*" : unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); addRelatedInfo(error(node.moduleReference, message), createDiagnosticForNode(typeOnlyDeclaration, relatedMessage, name)); } } @@ -46419,6 +46878,7 @@ ${lanes.join("\n")} return valueSymbol; } const result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.escapedName); + Debug.assert(valueSymbol.declarations || typeSymbol.declarations); result.declarations = deduplicate(concatenate(valueSymbol.declarations, typeSymbol.declarations), equateValues); result.parent = valueSymbol.parent || typeSymbol.parent; if (valueSymbol.valueDeclaration) @@ -46430,15 +46890,19 @@ ${lanes.join("\n")} return result; } function getExportOfModule(symbol, name, specifier, dontResolveAlias) { + var _a2; if (symbol.flags & 1536 /* Module */) { const exportSymbol = getExportsOfSymbol(symbol).get(name.escapedText); const resolved = resolveSymbol(exportSymbol, dontResolveAlias); + const exportStarDeclaration = (_a2 = getSymbolLinks(symbol).typeOnlyExportStarMap) == null ? void 0 : _a2.get(name.escapedText); markSymbolOfAliasDeclarationIfTypeOnly( specifier, exportSymbol, resolved, /*overwriteEmpty*/ - false + false, + exportStarDeclaration, + name.escapedText ); return resolved; } @@ -46765,7 +47229,7 @@ ${lanes.join("\n")} } return flags; } - function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty) { + function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty, exportStarDeclaration, exportStarName) { if (!aliasDeclaration || isPropertyAccessExpression(aliasDeclaration)) return false; const sourceSymbol = getSymbolOfDeclaration(aliasDeclaration); @@ -46774,6 +47238,14 @@ ${lanes.join("\n")} links2.typeOnlyDeclaration = aliasDeclaration; return true; } + if (exportStarDeclaration) { + const links2 = getSymbolLinks(sourceSymbol); + links2.typeOnlyDeclaration = exportStarDeclaration; + if (sourceSymbol.escapedName !== exportStarName) { + links2.typeOnlyExportStarName = exportStarName; + } + return true; + } const links = getSymbolLinks(sourceSymbol); return markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, immediateTarget, overwriteEmpty) || markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, finalTarget, overwriteEmpty); } @@ -46795,11 +47267,15 @@ ${lanes.join("\n")} return links.typeOnlyDeclaration || void 0; } if (links.typeOnlyDeclaration) { - return getAllSymbolFlags(resolveAlias(links.typeOnlyDeclaration.symbol)) & include ? links.typeOnlyDeclaration : void 0; + const resolved = links.typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? resolveSymbol(getExportsOfModule(links.typeOnlyDeclaration.symbol.parent).get(links.typeOnlyExportStarName || symbol.escapedName)) : resolveAlias(links.typeOnlyDeclaration.symbol); + return getAllSymbolFlags(resolved) & include ? links.typeOnlyDeclaration : void 0; } return void 0; } function markExportAsReferenced(node) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } const symbol = getSymbolOfDeclaration(node); const target = resolveAlias(symbol); if (target) { @@ -46810,6 +47286,7 @@ ${lanes.join("\n")} } } function markAliasSymbolAsReferenced(symbol) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); const links = getSymbolLinks(symbol); if (!links.referenced) { links.referenced = true; @@ -47116,6 +47593,8 @@ ${lanes.join("\n")} /*isError*/ false, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -47167,7 +47646,7 @@ ${lanes.join("\n")} } } } - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chainDiagnosticMessages( + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chainDiagnosticMessages( diagnosticDetails, Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead, moduleReference @@ -47201,6 +47680,8 @@ ${lanes.join("\n")} /*isError*/ noImplicitAny && !!moduleNotFoundError, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -47255,26 +47736,37 @@ ${lanes.join("\n")} return importSourceWithoutExtension; } } - function errorOnImplicitAnyModule(isError, errorNode, { packageId, resolvedFileName }, moduleReference) { - const errorInfo = !isExternalModuleNameRelative(moduleReference) && packageId ? typesPackageExists(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, - packageId.name, - mangleScopedPackageName(packageId.name) - ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, - packageId.name, - moduleReference - ) : chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, - moduleReference, - mangleScopedPackageName(packageId.name) - ) : void 0; + function errorOnImplicitAnyModule(isError, errorNode, sourceFile, mode, { packageId, resolvedFileName }, moduleReference) { + var _a2, _b; + let errorInfo; + if (!isExternalModuleNameRelative(moduleReference) && packageId) { + const node10Result = (_b = (_a2 = sourceFile.resolvedModules) == null ? void 0 : _a2.get(moduleReference, mode)) == null ? void 0 : _b.node10Result; + errorInfo = node10Result ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings, + node10Result, + node10Result.indexOf(nodeModulesPathPart + "@types/") > -1 ? `@types/${mangleScopedPackageName(packageId.name)}` : packageId.name + ) : typesPackageExists(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, + packageId.name, + mangleScopedPackageName(packageId.name) + ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, + packageId.name, + moduleReference + ) : chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, + moduleReference, + mangleScopedPackageName(packageId.name) + ); + } errorOrSuggestion(isError, errorNode, chainDiagnosticMessages( errorInfo, Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, @@ -47434,7 +47926,12 @@ ${lanes.join("\n")} } function getExportsOfModule(moduleSymbol) { const links = getSymbolLinks(moduleSymbol); - return links.resolvedExports || (links.resolvedExports = getExportsOfModuleWorker(moduleSymbol)); + if (!links.resolvedExports) { + const { exports, typeOnlyExportStarMap } = getExportsOfModuleWorker(moduleSymbol); + links.resolvedExports = exports; + links.typeOnlyExportStarMap = typeOnlyExportStarMap; + } + return links.resolvedExports; } function extendExportSymbols(target, source, lookupTable, exportNode) { if (!source) @@ -47462,9 +47959,21 @@ ${lanes.join("\n")} } function getExportsOfModuleWorker(moduleSymbol) { const visitedSymbols = []; + let typeOnlyExportStarMap; + const nonTypeOnlyNames = /* @__PURE__ */ new Set(); moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); - return visit(moduleSymbol) || emptySymbols; - function visit(symbol) { + const exports = visit(moduleSymbol) || emptySymbols; + if (typeOnlyExportStarMap) { + nonTypeOnlyNames.forEach((name) => typeOnlyExportStarMap.delete(name)); + } + return { + exports, + typeOnlyExportStarMap + }; + function visit(symbol, exportStar, isTypeOnly) { + if (!isTypeOnly && (symbol == null ? void 0 : symbol.exports)) { + symbol.exports.forEach((_, name) => nonTypeOnlyNames.add(name)); + } if (!(symbol && symbol.exports && pushIfUnique(visitedSymbols, symbol))) { return; } @@ -47476,7 +47985,7 @@ ${lanes.join("\n")} if (exportStars.declarations) { for (const node of exportStars.declarations) { const resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); - const exportedSymbols = visit(resolvedModule); + const exportedSymbols = visit(resolvedModule, node, isTypeOnly || node.isTypeOnly); extendExportSymbols( nestedSymbols, exportedSymbols, @@ -47500,6 +48009,13 @@ ${lanes.join("\n")} }); extendExportSymbols(symbols, nestedSymbols); } + if (exportStar == null ? void 0 : exportStar.isTypeOnly) { + typeOnlyExportStarMap != null ? typeOnlyExportStarMap : typeOnlyExportStarMap = /* @__PURE__ */ new Map(); + symbols.forEach((_, escapedName) => typeOnlyExportStarMap.set( + escapedName, + exportStar + )); + } return symbols; } } @@ -48931,13 +49447,17 @@ ${lanes.join("\n")} let qualifier = root.qualifier; if (qualifier) { if (isIdentifier(qualifier)) { - qualifier = factory.updateIdentifier(qualifier, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(qualifier)) { + qualifier = setIdentifierTypeArguments(factory.cloneNode(qualifier), typeArguments); + } } else { - qualifier = factory.updateQualifiedName( - qualifier, - qualifier.left, - factory.updateIdentifier(qualifier.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(qualifier.right)) { + qualifier = factory.updateQualifiedName( + qualifier, + qualifier.left, + setIdentifierTypeArguments(factory.cloneNode(qualifier.right), typeArguments) + ); + } } } typeArguments = ref.typeArguments; @@ -48957,13 +49477,17 @@ ${lanes.join("\n")} let typeArguments = root.typeArguments; let typeName = root.typeName; if (isIdentifier(typeName)) { - typeName = factory.updateIdentifier(typeName, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(typeName)) { + typeName = setIdentifierTypeArguments(factory.cloneNode(typeName), typeArguments); + } } else { - typeName = factory.updateQualifiedName( - typeName, - typeName.left, - factory.updateIdentifier(typeName.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(typeName.right)) { + typeName = factory.updateQualifiedName( + typeName, + typeName.left, + setIdentifierTypeArguments(factory.cloneNode(typeName.right), typeArguments) + ); + } } typeArguments = ref.typeArguments; const ids = getAccessStack(ref); @@ -49677,7 +50201,11 @@ ${lanes.join("\n")} if (!nonRootParts || isEntityName(nonRootParts)) { if (nonRootParts) { const lastId = isIdentifier(nonRootParts) ? nonRootParts : nonRootParts.right; - lastId.typeArguments = void 0; + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); } return factory.createImportTypeNode(lit, assertion, nonRootParts, typeParameterNodes, isTypeOf); } else { @@ -49694,8 +50222,12 @@ ${lanes.join("\n")} return factory.createTypeQueryNode(entityName); } else { const lastId = isIdentifier(entityName) ? entityName : entityName.right; - const lastTypeArgs = lastId.typeArguments; - lastId.typeArguments = void 0; + const lastTypeArgs = getIdentifierTypeArguments(lastId); + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); return factory.createTypeReferenceNode(entityName, lastTypeArgs); } function createAccessFromSymbolChain(chain2, index, stopper) { @@ -49739,7 +50271,9 @@ ${lanes.join("\n")} return factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(LHS, typeParameterNodes), factory.createLiteralTypeNode(factory.createStringLiteral(symbolName2))); } } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; if (index > stopper) { const LHS = createAccessFromSymbolChain(chain2, index - 1, stopper); @@ -49797,7 +50331,9 @@ ${lanes.join("\n")} text = `${rawtext}_${i}`; } if (text !== rawtext) { - result = factory.createIdentifier(text, result.typeArguments); + const typeArguments = getIdentifierTypeArguments(result); + result = factory.createIdentifier(text); + setIdentifierTypeArguments(result, typeArguments); } (context.typeParameterNamesByTextNextNameCount || (context.typeParameterNamesByTextNextNameCount = /* @__PURE__ */ new Map())).set(rawtext, i); (context.typeParameterNames || (context.typeParameterNames = /* @__PURE__ */ new Map())).set(getTypeId(type), result); @@ -49821,7 +50357,9 @@ ${lanes.join("\n")} if (index === 0) { context.flags ^= 16777216 /* InInitialEntityName */; } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createQualifiedName(createEntityNameFromSymbolChain(chain2, index - 1), identifier) : identifier; } @@ -49844,7 +50382,9 @@ ${lanes.join("\n")} return factory.createStringLiteral(getSpecifierForModuleSymbol(symbol2, context)); } if (index === 0 || canUsePropertyAccess(symbolName2, languageVersion)) { - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createPropertyAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), identifier) : identifier; } else { @@ -49859,8 +50399,11 @@ ${lanes.join("\n")} expression = factory.createNumericLiteral(+symbolName2); } if (!expression) { - expression = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); - expression.symbol = symbol2; + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); + identifier.symbol = symbol2; + expression = identifier; } return factory.createElementAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), expression); } @@ -50016,7 +50559,7 @@ ${lanes.join("\n")} } let hadError = false; const file = getSourceFileOfNode(existing); - const transformed = visitNode(existing, visitExistingNodeTreeSymbols); + const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); if (hadError) { return void 0; } @@ -50029,16 +50572,16 @@ ${lanes.join("\n")} return factory.createKeywordTypeNode(157 /* UnknownKeyword */); } if (isJSDocNullableType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createLiteralTypeNode(factory.createNull())]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); } if (isJSDocOptionalType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); } if (isJSDocNonNullableType(node)) { return visitNode(node.type, visitExistingNodeTreeSymbols); } if (isJSDocVariadicType(node)) { - return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols)); + return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); } if (isJSDocTypeLiteral(node)) { return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { @@ -50050,7 +50593,7 @@ ${lanes.join("\n")} void 0, name, t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(57 /* QuestionToken */) : void 0, - overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); })); } @@ -50069,9 +50612,9 @@ ${lanes.join("\n")} "x", /*questionToken*/ void 0, - visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) )], - visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) )]); } if (isJSDocFunctionType(node)) { @@ -50080,33 +50623,33 @@ ${lanes.join("\n")} return factory.createConstructorTypeNode( /*modifiers*/ void 0, - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } else { return factory.createFunctionTypeNode( - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), map(node.parameters, (p, i) => factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } } @@ -50555,7 +51098,7 @@ ${lanes.join("\n")} /*modifiers*/ void 0, /*isTypeOnly*/ - false, + node.isTypeOnly, /*exportClause*/ void 0, factory.createStringLiteral(getSpecifierForModuleSymbol(resolvedModule, context)) @@ -51028,7 +51571,7 @@ ${lanes.join("\n")} break; } case 268 /* ImportEqualsDeclaration */: - if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, isJsonSourceFile)) { + if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, (d) => isSourceFile(d) && isJsonSourceFile(d))) { serializeMaybeAliasAssignment(symbol); break; } @@ -52123,6 +52666,12 @@ ${lanes.join("\n")} const isProperty = isPropertyDeclaration(declaration) && !hasAccessorModifier(declaration) || isPropertySignature(declaration) || isJSDocPropertyTag(declaration); const isOptional = includeOptionality && isOptionalDeclaration(declaration); const declaredType = tryGetTypeFromEffectiveTypeNode(declaration); + if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { + if (declaredType) { + return isTypeAny(declaredType) || declaredType === unknownType ? declaredType : errorType; + } + return useUnknownInCatchVariables ? unknownType : anyType; + } if (declaredType) { return addOptionality(declaredType, isProperty, isOptional); } @@ -52701,14 +53250,6 @@ ${lanes.join("\n")} } Debug.assertIsDefined(symbol.valueDeclaration); const declaration = symbol.valueDeclaration; - if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); - if (typeNode === void 0) { - return useUnknownInCatchVariables ? unknownType : anyType; - } - const type2 = getTypeOfNode(typeNode); - return isTypeAny(type2) || type2 === unknownType ? type2 : errorType; - } if (isSourceFile(declaration) && isJsonSourceFile(declaration)) { if (!declaration.statements.length) { return emptyObjectType; @@ -53300,7 +53841,7 @@ ${lanes.join("\n")} baseType ); const diagnostic = chainDiagnosticMessages(elaboration, Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members, typeToString(reducedBaseType)); - diagnostics.add(createDiagnosticForNodeFromMessageChain(baseTypeNode.expression, diagnostic)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(baseTypeNode.expression), baseTypeNode.expression, diagnostic)); return type.resolvedBaseTypes = emptyArray; } if (type === reducedBaseType || hasBaseType(reducedBaseType, type)) { @@ -53701,7 +54242,7 @@ ${lanes.join("\n")} const links = getSymbolLinks(symbol); if (!links[resolutionKind]) { const isStatic2 = resolutionKind === "resolvedExports" /* resolvedExports */; - const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol) : symbol.exports; + const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol).exports : symbol.exports; links[resolutionKind] = earlySymbols || emptySymbols; const lateSymbols = createSymbolTable(); for (const decl of symbol.declarations || emptyArray) { @@ -54690,7 +55231,7 @@ ${lanes.join("\n")} } function isConstTypeVariable(type) { var _a2; - return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); + return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || isGenericTupleType(type) && findIndex(getTypeArguments(type), (t, i) => !!(type.target.elementFlags[i] & 8 /* Variadic */) && isConstTypeVariable(t)) >= 0 || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); } function getConstraintOfIndexedAccess(type) { return hasNonCircularBaseConstraint(type) ? getConstraintFromIndexedAccess(type) : void 0; @@ -55914,6 +56455,12 @@ ${lanes.join("\n")} } return result & 458752 /* PropagatingFlags */; } + function tryCreateTypeReference(target, typeArguments) { + if (some(typeArguments) && target === emptyGenericType) { + return unknownType; + } + return createTypeReference(target, typeArguments); + } function createTypeReference(target, typeArguments) { const id = getTypeListId(typeArguments); let type = target.instantiations.get(id); @@ -56608,6 +57155,78 @@ ${lanes.join("\n")} false )) || emptyObjectType; } + function getGlobalClassDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassDecoratorContextType != null ? deferredGlobalClassDecoratorContextType : deferredGlobalClassDecoratorContextType = getGlobalType( + "ClassDecoratorContext", + /*arity*/ + 1, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassMethodDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassMethodDecoratorContextType != null ? deferredGlobalClassMethodDecoratorContextType : deferredGlobalClassMethodDecoratorContextType = getGlobalType( + "ClassMethodDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassGetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassGetterDecoratorContextType != null ? deferredGlobalClassGetterDecoratorContextType : deferredGlobalClassGetterDecoratorContextType = getGlobalType( + "ClassGetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassSetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassSetterDecoratorContextType != null ? deferredGlobalClassSetterDecoratorContextType : deferredGlobalClassSetterDecoratorContextType = getGlobalType( + "ClassSetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorContextType != null ? deferredGlobalClassAccessorDecoratorContextType : deferredGlobalClassAccessorDecoratorContextType = getGlobalType( + "ClassAccessorDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorTargetType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorTargetType != null ? deferredGlobalClassAccessorDecoratorTargetType : deferredGlobalClassAccessorDecoratorTargetType = getGlobalType( + "ClassAccessorDecoratorTarget", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorResultType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorResultType != null ? deferredGlobalClassAccessorDecoratorResultType : deferredGlobalClassAccessorDecoratorResultType = getGlobalType( + "ClassAccessorDecoratorResult", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassFieldDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassFieldDecoratorContextType != null ? deferredGlobalClassFieldDecoratorContextType : deferredGlobalClassFieldDecoratorContextType = getGlobalType( + "ClassFieldDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } function getGlobalNaNSymbol() { return deferredGlobalNaNSymbol || (deferredGlobalNaNSymbol = getGlobalValueSymbol( "NaN", @@ -57918,7 +58537,7 @@ ${lanes.join("\n")} typeToString(fullIndexType), typeToString(objectType) ); - diagnostics.add(createDiagnosticForNodeFromMessageChain(accessExpression, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(accessExpression), accessExpression, errorInfo)); } } } @@ -60332,7 +60951,7 @@ ${lanes.join("\n")} } } } - const diag2 = createDiagnosticForNodeFromMessageChain(errorNode, errorInfo, relatedInformation); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, errorInfo, relatedInformation); if (relatedInfo) { addRelatedInfo(diag2, ...relatedInfo); } @@ -63375,19 +63994,22 @@ ${lanes.join("\n")} break; case 166 /* Parameter */: const param = declaration; - if (isIdentifier(param.name) && (isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( - param, - param.name.escapedText, - 788968 /* Type */, - void 0, - param.name.escapedText, - /*isUse*/ - true - ) || param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) { - const newName = "arg" + param.parent.parameters.indexOf(param); - const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); - errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); - return; + if (isIdentifier(param.name)) { + const originalKeywordKind = identifierToKeywordKind(param.name); + if ((isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( + param, + param.name.escapedText, + 788968 /* Type */, + void 0, + param.name.escapedText, + /*isUse*/ + true + ) || originalKeywordKind && isTypeNodeKind(originalKeywordKind))) { + const newName = "arg" + param.parent.parameters.indexOf(param); + const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); + errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); + return; + } } diagnostic = declaration.dotDotDotToken ? noImplicitAny ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage : noImplicitAny ? Diagnostics.Parameter_0_implicitly_has_an_1_type : Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; break; @@ -63575,6 +64197,10 @@ ${lanes.join("\n")} function isTypeParameterAtTopLevel(type, typeParameter) { return !!(type === typeParameter || type.flags & 3145728 /* UnionOrIntersection */ && some(type.types, (t) => isTypeParameterAtTopLevel(t, typeParameter)) || type.flags & 16777216 /* Conditional */ && (getTrueTypeFromConditionalType(type) === typeParameter || getFalseTypeFromConditionalType(type) === typeParameter)); } + function isTypeParameterAtTopLevelInReturnType(signature, typeParameter) { + const typePredicate = getTypePredicateOfSignature(signature); + return typePredicate ? !!typePredicate.type && isTypeParameterAtTopLevel(typePredicate.type, typeParameter) : isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), typeParameter); + } function createEmptyObjectTypeFromStringLiteral(type) { const members = createSymbolTable(); forEachType(type, (t) => { @@ -64298,7 +64924,7 @@ ${lanes.join("\n")} } else { const middleLength = targetArity - startLength - endLength; if (middleLength === 2) { - if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */) { const targetInfo = getInferenceInfoForType(elementTypes[startLength]); if (targetInfo && targetInfo.impliedArity !== void 0) { inferFromTypes(sliceTupleType(source, startLength, endLength + sourceArity - targetInfo.impliedArity), elementTypes[startLength]); @@ -64312,7 +64938,7 @@ ${lanes.join("\n")} inferFromTypes(sliceTupleType(source, startLength, sourceArity - (startLength + impliedArity)), elementTypes[startLength]); inferFromTypes(getElementTypeOfSliceOfTupleType(source, startLength + impliedArity, endLength), elementTypes[startLength + 1]); } - } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */) { const param = (_b = getInferenceInfoForType(elementTypes[startLength + 1])) == null ? void 0 : _b.typeParameter; const constraint = param && getBaseConstraintOfType(param); if (constraint && isTupleType(constraint) && !constraint.target.hasRestElement) { @@ -64332,10 +64958,10 @@ ${lanes.join("\n")} } } else if (middleLength === 1 && elementFlags[startLength] & 8 /* Variadic */) { const endsInOptional = target.target.elementFlags[targetArity - 1] & 2 /* Optional */; - const sourceSlice = isTupleType(source) ? sliceTupleType(source, startLength, endLength) : createArrayType(getTypeArguments(source)[0]); + const sourceSlice = sliceTupleType(source, startLength, endLength); inferWithPriority(sourceSlice, elementTypes[startLength], endsInOptional ? 2 /* SpeculativeTuple */ : 0); } else if (middleLength === 1 && elementFlags[startLength] & 4 /* Rest */) { - const restType = isTupleType(source) ? getElementTypeOfSliceOfTupleType(source, startLength, endLength) : getTypeArguments(source)[0]; + const restType = getElementTypeOfSliceOfTupleType(source, startLength, endLength); if (restType) { inferFromTypes(restType, elementTypes[startLength]); } @@ -64446,7 +65072,7 @@ ${lanes.join("\n")} function getCovariantInference(inference, signature) { const candidates = unionObjectAndArrayLiteralCandidates(inference.candidates); const primitiveConstraint = hasPrimitiveConstraint(inference.typeParameter) || isConstTypeVariable(inference.typeParameter); - const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), inference.typeParameter)); + const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevelInReturnType(signature, inference.typeParameter)); const baseCandidates = primitiveConstraint ? sameMap(candidates, getRegularTypeOfLiteralType) : widenLiteralTypes ? sameMap(candidates, getWidenedLiteralType) : candidates; const unwidenedType = inference.priority & 416 /* PriorityImpliesCombination */ ? getUnionType(baseCandidates, 2 /* Subtype */) : getCommonSupertype(baseCandidates); return getWidenedType(unwidenedType); @@ -66501,7 +67127,7 @@ ${lanes.join("\n")} return getNonMissingTypeOfSymbol(symbol); } function getControlFlowContainer(node) { - return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 169 /* PropertyDeclaration */); + return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 295 /* CatchClause */ || node2.kind === 169 /* PropertyDeclaration */); } function isSymbolAssigned(symbol) { if (!symbol.valueDeclaration) { @@ -66583,6 +67209,9 @@ ${lanes.join("\n")} }); } function markAliasReferenced(symbol, location) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } if (isNonLocalAlias( symbol, /*excludes*/ @@ -66590,7 +67219,7 @@ ${lanes.join("\n")} ) && !isInTypeQuery(location) && !getTypeOnlyAliasDeclaration(symbol, 111551 /* Value */)) { const target = resolveAlias(symbol); if (getAllSymbolFlags(target) & (111551 /* Value */ | 1048576 /* ExportValue */)) { - if (compilerOptions.isolatedModules || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { + if (getIsolatedModules(compilerOptions) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { markAliasSymbolAsReferenced(symbol); } else { markConstEnumAliasAsReferenced(symbol); @@ -66599,6 +67228,7 @@ ${lanes.join("\n")} } } function getNarrowedTypeOfSymbol(symbol, location) { + var _a2; const type = getTypeOfSymbol(symbol); const declaration = symbol.valueDeclaration; if (declaration) { @@ -66634,7 +67264,7 @@ ${lanes.join("\n")} if (func.parameters.length >= 2 && isContextSensitiveFunctionOrObjectLiteralMethod(func)) { const contextualSignature = getContextualSignature(func); if (contextualSignature && contextualSignature.parameters.length === 1 && signatureHasRestParameter(contextualSignature)) { - const restType = getReducedApparentType(getTypeOfSymbol(contextualSignature.parameters[0])); + const restType = getReducedApparentType(instantiateType(getTypeOfSymbol(contextualSignature.parameters[0]), (_a2 = getInferenceContext(func)) == null ? void 0 : _a2.nonFixingMapper)); if (restType.flags & 1048576 /* Union */ && everyType(restType, isTupleType) && !isSymbolAssigned(symbol)) { const narrowedType = getFlowTypeOfReference( func, @@ -66687,7 +67317,7 @@ ${lanes.join("\n")} } let declaration = localOrExportSymbol.valueDeclaration; if (declaration && localOrExportSymbol.flags & 32 /* Class */) { - if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(declaration)) { + if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(legacyDecorators, declaration)) { let container = getContainingClass(node); while (container !== void 0) { if (container === declaration && container.name !== node) { @@ -66758,13 +67388,14 @@ ${lanes.join("\n")} const isParameter2 = getRootDeclaration(declaration).kind === 166 /* Parameter */; const declarationContainer = getControlFlowContainer(declaration); let flowContainer = getControlFlowContainer(node); + const isCatch = flowContainer.kind === 295 /* CatchClause */; const isOuterVariable = flowContainer !== declarationContainer; const isSpreadDestructuringAssignmentTarget = node.parent && node.parent.parent && isSpreadAssignment(node.parent) && isDestructuringAssignmentTarget(node.parent.parent); const isModuleExports = symbol.flags & 134217728 /* ModuleExports */; while (flowContainer !== declarationContainer && (flowContainer.kind === 215 /* FunctionExpression */ || flowContainer.kind === 216 /* ArrowFunction */ || isObjectLiteralOrClassExpressionMethodOrAccessor(flowContainer)) && (isConstVariable(localOrExportSymbol) && type !== autoArrayType || isParameter2 && !isSymbolAssigned(localOrExportSymbol))) { flowContainer = getControlFlowContainer(flowContainer); } - const assumeInitialized = isParameter2 || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; + const assumeInitialized = isParameter2 || isCatch || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; const initialType = assumeInitialized ? isParameter2 ? removeOptionalityFromDeclaredType(type, declaration) : type : type === autoType || type === autoArrayType ? undefinedType : getOptionalType(type); const flowType = getFlowTypeOfReference(node, type, initialType, flowContainer); if (!isEvolvingArrayOperationTarget(node) && (type === autoType || type === autoArrayType)) { @@ -66911,7 +67542,7 @@ ${lanes.join("\n")} } } function checkThisInStaticClassFieldInitializerInDecoratedClass(thisExpression, container) { - if (isPropertyDeclaration(container) && hasStaticModifier(container) && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { + if (isPropertyDeclaration(container) && hasStaticModifier(container) && legacyDecorators && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { error(thisExpression, Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class); } } @@ -67289,7 +67920,7 @@ ${lanes.join("\n")} } } function getContextualTypeForVariableLikeDeclaration(declaration, contextFlags) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration) || (isInJSFile(declaration) ? tryGetJSDocSatisfiesTypeNode(declaration) : void 0); if (typeNode) { return getTypeFromTypeNode(typeNode); } @@ -67455,6 +68086,10 @@ ${lanes.join("\n")} const restIndex = signature.parameters.length - 1; return signatureHasRestParameter(signature) && argIndex >= restIndex ? getIndexedAccessType(getTypeOfSymbol(signature.parameters[restIndex]), getNumberLiteralType(argIndex - restIndex), 256 /* Contextual */) : getTypeAtPosition(signature, argIndex); } + function getContextualTypeForDecorator(decorator) { + const signature = getDecoratorCallSignature(decorator); + return signature ? getOrCreateTypeFromSignature(signature) : void 0; + } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { if (template.parent.kind === 212 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); @@ -67855,7 +68490,9 @@ ${lanes.join("\n")} } const index = findContextualNode(node); if (index >= 0) { - return contextualTypes[index]; + const cached = contextualTypes[index]; + if (cached || !contextFlags) + return cached; } const { parent: parent2 } = node; switch (parent2.kind) { @@ -67875,6 +68512,8 @@ ${lanes.join("\n")} case 210 /* CallExpression */: case 211 /* NewExpression */: return getContextualTypeForArgument(parent2, node); + case 167 /* Decorator */: + return getContextualTypeForDecorator(parent2); case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: return isConstTypeReference(parent2.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(parent2.type); @@ -67896,8 +68535,16 @@ ${lanes.join("\n")} Debug.assert(parent2.parent.kind === 225 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent2.parent, node); case 214 /* ParenthesizedExpression */: { - const tag = isInJSFile(parent2) ? getJSDocTypeTag(parent2) : void 0; - return !tag ? getContextualType2(parent2, contextFlags) : isJSDocTypeTag(tag) && isConstTypeReference(tag.typeExpression.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(tag.typeExpression.type); + if (isInJSFile(parent2)) { + if (isJSDocSatisfiesExpression(parent2)) { + return getTypeFromTypeNode(getJSDocSatisfiesExpressionType(parent2)); + } + const typeTag = getJSDocTypeTag(parent2); + if (typeTag && !isConstTypeReference(typeTag.typeExpression.type)) { + return getTypeFromTypeNode(typeTag.typeExpression.type); + } + } + return getContextualType2(parent2, contextFlags); } case 232 /* NonNullExpression */: return getContextualType2(parent2, contextFlags); @@ -69049,7 +69696,7 @@ ${lanes.join("\n")} } if (jsxFactorySym) { jsxFactorySym.isReferenced = 67108863 /* All */; - if (jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { + if (!compilerOptions.verbatimModuleSyntax && jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { markAliasSymbolAsReferenced(jsxFactorySym); } } @@ -69506,7 +70153,7 @@ ${lanes.join("\n")} node.kind === 163 /* QualifiedName */ ); } - if (isIdentifier(left) && parentSymbol && (compilerOptions.isolatedModules || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { + if (isIdentifier(left) && parentSymbol && (getIsolatedModules(compilerOptions) || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { markAliasReferenced(parentSymbol, node); } let propType; @@ -69715,7 +70362,7 @@ ${lanes.join("\n")} } } } - const resultDiagnostic = createDiagnosticForNodeFromMessageChain(propNode, errorInfo); + const resultDiagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(propNode), propNode, errorInfo); if (relatedInfo) { addRelatedInfo(resultDiagnostic, relatedInfo); } @@ -70577,35 +71224,22 @@ ${lanes.join("\n")} return args; } function getEffectiveDecoratorArguments(node) { - const parent2 = node.parent; const expr = node.expression; - switch (parent2.kind) { - case 260 /* ClassDeclaration */: - case 228 /* ClassExpression */: - return [ - createSyntheticExpression(expr, getTypeOfSymbol(getSymbolOfDeclaration(parent2))) - ]; - case 166 /* Parameter */: - const func = parent2.parent; - return [ - createSyntheticExpression(expr, parent2.parent.kind === 173 /* Constructor */ ? getTypeOfSymbol(getSymbolOfDeclaration(func)) : errorType), - createSyntheticExpression(expr, anyType), - createSyntheticExpression(expr, numberType) - ]; - case 169 /* PropertyDeclaration */: - case 171 /* MethodDeclaration */: - case 174 /* GetAccessor */: - case 175 /* SetAccessor */: - const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); - return [ - createSyntheticExpression(expr, getParentTypeOfClassElement(parent2)), - createSyntheticExpression(expr, getClassElementPropertyKeyType(parent2)), - createSyntheticExpression(expr, hasPropDesc ? createTypedPropertyDescriptorType(getTypeOfNode(parent2)) : anyType) - ]; + const signature = getDecoratorCallSignature(node); + if (signature) { + const args = []; + for (const param of signature.parameters) { + const type = getTypeOfSymbol(param); + args.push(createSyntheticExpression(expr, type)); + } + return args; } return Debug.fail(); } function getDecoratorArgumentCount(node, signature) { + return compilerOptions.experimentalDecorators ? getLegacyDecoratorArgumentCount(node, signature) : 2; + } + function getLegacyDecoratorArgumentCount(node, signature) { switch (node.parent.kind) { case 260 /* ClassDeclaration */: case 228 /* ClassExpression */: @@ -70640,9 +71274,15 @@ ${lanes.join("\n")} function getDiagnosticForCallNode(node, message, arg0, arg1, arg2, arg3) { if (isCallExpression(node)) { const { sourceFile, start, length: length2 } = getDiagnosticSpanForCallNode(node); - return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForFileFromMessageChain(sourceFile, message); } else { - return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, message); } } function isPromiseResolveArityError(node) { @@ -70666,7 +71306,7 @@ ${lanes.join("\n")} ); return constructorSymbol === globalPromiseSymbol; } - function getArgumentArityError(node, signatures, args) { + function getArgumentArityError(node, signatures, args, headMessage) { var _a2; const spreadIndex = getSpreadArgumentIndex(args); if (spreadIndex > -1) { @@ -70696,11 +71336,36 @@ ${lanes.join("\n")} if (isVoidPromiseError && isInJSFile(node)) { return getDiagnosticForCallNode(node, Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); } - const error2 = hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; + const error2 = isDecorator(node) ? hasRestParameter2 ? Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0 : Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0 : hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; if (min2 < args.length && args.length < max) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, + args.length, + maxBelow, + minAbove + ); + chain = chainDiagnosticMessages(chain, headMessage); + return getDiagnosticForCallNode(node, chain); + } return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, args.length, maxBelow, minAbove); } else if (args.length < min2) { - const diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + let diagnostic; + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + diagnostic = getDiagnosticForCallNode(node, chain); + } else { + diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + } const parameter = (_a2 = closestSignature == null ? void 0 : closestSignature.declaration) == null ? void 0 : _a2.parameters[closestSignature.thisParameter ? args.length + 1 : args.length]; if (parameter) { const parameterError = createDiagnosticForNode( @@ -70719,15 +71384,37 @@ ${lanes.join("\n")} end++; } setTextRangePosEnd(errorSpan, pos, end); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), errorSpan, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), errorSpan, error2, parameterRange, args.length); } } - function getTypeArgumentArityError(node, signatures, typeArguments) { + function getTypeArgumentArityError(node, signatures, typeArguments, headMessage) { const argCount = typeArguments.length; if (signatures.length === 1) { const sig = signatures[0]; const min2 = getMinTypeArgumentCount(sig.typeParameters); const max = length(sig.typeParameters); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + min2 < max ? min2 + "-" + max : min2, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, min2 < max ? min2 + "-" + max : min2, argCount); } let belowArgCount = -Infinity; @@ -70742,11 +71429,34 @@ ${lanes.join("\n")} } } if (belowArgCount !== -Infinity && aboveArgCount !== Infinity) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, + argCount, + belowArgCount, + aboveArgCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, argCount, belowArgCount, aboveArgCount); } + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + belowArgCount === -Infinity ? aboveArgCount : belowArgCount, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, belowArgCount === -Infinity ? aboveArgCount : belowArgCount, argCount); } - function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, fallbackError) { + function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, headMessage) { const isTaggedTemplate = node.kind === 212 /* TaggedTemplateExpression */; const isDecorator2 = node.kind === 167 /* Decorator */; const isJsxOpeningOrSelfClosingElement = isJsxOpeningLikeElement(node); @@ -70795,6 +71505,9 @@ ${lanes.join("\n")} chain = chainDiagnosticMessages(chain, Diagnostics.The_last_overload_gave_the_following_error); chain = chainDiagnosticMessages(chain, Diagnostics.No_overload_matches_this_call); } + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const diags = getSignatureApplicabilityError( node, args, @@ -70855,39 +71568,40 @@ ${lanes.join("\n")} } const diags = max > 1 ? allDiagnostics[minIndex] : flatten(allDiagnostics); Debug.assert(diags.length > 0, "No errors reported for 3 or fewer overload signatures"); - const chain = chainDiagnosticMessages( + let chain = chainDiagnosticMessages( map(diags, createDiagnosticMessageChainFromDiagnostic), Diagnostics.No_overload_matches_this_call ); + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const related = [...flatMap(diags, (d) => d.relatedInformation)]; let diag2; if (every(diags, (d) => d.start === diags[0].start && d.length === diags[0].length && d.file === diags[0].file)) { const { file, start, length: length2 } = diags[0]; diag2 = { file, start, length: length2, code: chain.code, category: chain.category, messageText: chain, relatedInformation: related }; } else { - diag2 = createDiagnosticForNodeFromMessageChain(node, chain, related); + diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, chain, related); } addImplementationSuccessElaboration(candidatesForArgumentError[0], diag2); diagnostics.add(diag2); } } else if (candidateForArgumentArityError) { - diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args)); + diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args, headMessage)); } else if (candidateForTypeArgumentError) { checkTypeArguments( candidateForTypeArgumentError, node.typeArguments, /*reportErrors*/ true, - fallbackError + headMessage ); } else { const signaturesWithCorrectTypeArgumentArity = filter(signatures, (s) => hasCorrectTypeArgumentArity(s, typeArguments)); if (signaturesWithCorrectTypeArgumentArity.length === 0) { - diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments)); - } else if (!isDecorator2) { - diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args)); - } else if (fallbackError) { - diagnostics.add(getDiagnosticForCallNode(node, fallbackError)); + diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments, headMessage)); + } else { + diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args, headMessage)); } } } @@ -71390,7 +72104,7 @@ ${lanes.join("\n")} } function invocationError(errorTarget, apparentType, kind, relatedInformation) { const { messageChain, relatedMessage: relatedInfo } = invocationErrorDetails(errorTarget, apparentType, kind); - const diagnostic = createDiagnosticForNodeFromMessageChain(errorTarget, messageChain); + const diagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorTarget), errorTarget, messageChain); if (relatedInfo) { addRelatedInfo(diagnostic, createDiagnosticForNode(errorTarget, relatedInfo)); } @@ -71471,7 +72185,7 @@ ${lanes.join("\n")} if (isUntypedFunctionCall(funcType, apparentType, callSignatures.length, numConstructSignatures)) { return resolveUntypedCall(node); } - if (isPotentiallyUncalledDecorator(node, callSignatures)) { + if (isPotentiallyUncalledDecorator(node, callSignatures) && !isParenthesizedExpression(node.expression)) { const nodeStr = getTextOfNode( node.expression, /*includeTrivia*/ @@ -71484,7 +72198,7 @@ ${lanes.join("\n")} if (!callSignatures.length) { const errorDetails = invocationErrorDetails(node.expression, apparentType, 0 /* Call */); const messageChain = chainDiagnosticMessages(errorDetails.messageChain, headMessage); - const diag2 = createDiagnosticForNodeFromMessageChain(node.expression, messageChain); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node.expression), node.expression, messageChain); if (errorDetails.relatedMessage) { addRelatedInfo(diag2, createDiagnosticForNode(node.expression, errorDetails.relatedMessage)); } @@ -72101,12 +72815,15 @@ ${lanes.join("\n")} } function checkSatisfiesExpression(node) { checkSourceElement(node.type); - const exprType = checkExpression(node.expression); - const targetType = getTypeFromTypeNode(node.type); + return checkSatisfiesExpressionWorker(node.expression, node.type); + } + function checkSatisfiesExpressionWorker(expression, target, checkMode) { + const exprType = checkExpression(expression, checkMode); + const targetType = getTypeFromTypeNode(target); if (isErrorType(targetType)) { return targetType; } - checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, node.type, node.expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); + checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, target, expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); return exprType; } function checkMetaProperty(node) { @@ -72444,6 +73161,243 @@ ${lanes.join("\n")} } } } + function createClassDecoratorContextType(classType) { + return tryCreateTypeReference(getGlobalClassDecoratorContextType( + /*reportErrors*/ + true + ), [classType]); + } + function createClassMethodDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassMethodDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassGetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassGetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassSetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassSetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassFieldDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2) { + const key = `${isPrivate ? "p" : "P"}${isStatic2 ? "s" : "S"}${nameType.id}`; + let overrideType = decoratorContextOverrideTypeCache.get(key); + if (!overrideType) { + const members = createSymbolTable(); + members.set("name", createProperty("name", nameType)); + members.set("private", createProperty("private", isPrivate ? trueType : falseType)); + members.set("static", createProperty("static", isStatic2 ? trueType : falseType)); + overrideType = createAnonymousType( + /*symbol*/ + void 0, + members, + emptyArray, + emptyArray, + emptyArray + ); + decoratorContextOverrideTypeCache.set(key, overrideType); + } + return overrideType; + } + function createClassMemberDecoratorContextTypeForNode(node, thisType, valueType) { + const isStatic2 = hasStaticModifier(node); + const isPrivate = isPrivateIdentifier(node.name); + const nameType = isPrivate ? getStringLiteralType(idText(node.name)) : getLiteralTypeFromPropertyName(node.name); + const contextType = isMethodDeclaration(node) ? createClassMethodDecoratorContextType(thisType, valueType) : isGetAccessorDeclaration(node) ? createClassGetterDecoratorContextType(thisType, valueType) : isSetAccessorDeclaration(node) ? createClassSetterDecoratorContextType(thisType, valueType) : isAutoAccessorPropertyDeclaration(node) ? createClassAccessorDecoratorContextType(thisType, valueType) : isPropertyDeclaration(node) ? createClassFieldDecoratorContextType(thisType, valueType) : Debug.failBadSyntaxKind(node); + const overrideType = getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2); + return getIntersectionType([contextType, overrideType]); + } + function createClassAccessorDecoratorTargetType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorTargetType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorResultType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorResultType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorInitializerMutatorType(thisType, valueType) { + const thisParam = createParameter("this", thisType); + const valueParam = createParameter("value", valueType); + return createFunctionType( + /*typeParameters*/ + void 0, + thisParam, + [valueParam], + valueType, + /*typePredicate*/ + void 0, + 1 + ); + } + function createESDecoratorCallSignature(targetType, contextType, nonOptionalReturnType) { + const targetParam = createParameter("target", targetType); + const contextParam = createParameter("context", contextType); + const returnType = getUnionType([nonOptionalReturnType, voidType]); + return createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, contextParam], + returnType + ); + } + function getESDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const contextType = createClassDecoratorContextType(targetType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, targetType); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = isMethodDeclaration(node) ? getOrCreateTypeFromSignature(getSignatureFromDeclaration(node)) : getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = hasAccessorModifier(node) ? createClassAccessorDecoratorTargetType(thisType, valueType) : undefinedType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = hasAccessorModifier(node) ? createClassAccessorDecoratorResultType(thisType, valueType) : createClassFieldDecoratorInitializerMutatorType(thisType, valueType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getLegacyDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const targetParam = createParameter("target", targetType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam], + getUnionType([targetType, voidType]) + ); + break; + } + case 166 /* Parameter */: { + const node = parent2; + if (!isConstructorDeclaration(node.parent) && !(isMethodDeclaration(node.parent) || isSetAccessorDeclaration(node.parent) && isClassLike(node.parent.parent))) { + break; + } + if (getThisParameter(node.parent) === node) { + break; + } + const index = getThisParameter(node.parent) ? node.parent.parameters.indexOf(node) - 1 : node.parent.parameters.indexOf(node); + Debug.assert(index >= 0); + const targetType = isConstructorDeclaration(node.parent) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent.parent)) : getParentTypeOfClassElement(node.parent); + const keyType = isConstructorDeclaration(node.parent) ? undefinedType : getClassElementPropertyKeyType(node.parent); + const indexType = getNumberLiteralType(index); + const targetParam = createParameter("target", targetType); + const keyParam = createParameter("propertyKey", keyType); + const indexParam = createParameter("parameterIndex", indexType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, indexParam], + voidType + ); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const targetType = getParentTypeOfClassElement(node); + const targetParam = createParameter("target", targetType); + const keyType = getClassElementPropertyKeyType(node); + const keyParam = createParameter("propertyKey", keyType); + const returnType = isPropertyDeclaration(node) ? voidType : createTypedPropertyDescriptorType(getTypeOfNode(node)); + const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); + if (hasPropDesc) { + const descriptorType = createTypedPropertyDescriptorType(getTypeOfNode(node)); + const descriptorParam = createParameter("descriptor", descriptorType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, descriptorParam], + getUnionType([returnType, voidType]) + ); + } else { + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam], + getUnionType([returnType, voidType]) + ); + } + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getDecoratorCallSignature(decorator) { + return legacyDecorators ? getLegacyDecoratorCallSignature(decorator) : getESDecoratorCallSignature(decorator); + } function createPromiseType(promisedType) { const globalPromiseType = getGlobalPromiseType( /*reportErrors*/ @@ -73513,12 +74467,12 @@ ${lanes.join("\n")} void 0 ); const operator = operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { - if (operator === 55 /* AmpersandAmpersandToken */) { - let parent2 = node.parent; - while (parent2.kind === 214 /* ParenthesizedExpression */ || isBinaryExpression(parent2) && (parent2.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || parent2.operatorToken.kind === 56 /* BarBarToken */)) { - parent2 = parent2.parent; - } + if (isLogicalOrCoalescingBinaryOperator(operator)) { + let parent2 = node.parent; + while (parent2.kind === 214 /* ParenthesizedExpression */ || isLogicalOrCoalescingBinaryExpression(parent2)) { + parent2 = parent2.parent; + } + if (operator === 55 /* AmpersandAmpersandToken */ || isIfStatement(parent2)) { checkTestingKnownTruthyCallableOrAwaitableType(node.left, leftType, isIfStatement(parent2) ? parent2.thenStatement : void 0); } checkTruthinessOfType(leftType, node.left); @@ -73595,7 +74549,7 @@ ${lanes.join("\n")} return checkDestructuringAssignment(left, checkExpression(right, checkMode), checkMode, right.kind === 108 /* ThisKeyword */); } let leftType; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { + if (isLogicalOrCoalescingBinaryOperator(operator)) { leftType = checkTruthinessExpression(left, checkMode); } else { leftType = checkExpression(left, checkMode); @@ -73746,7 +74700,14 @@ ${lanes.join("\n")} if (checkForDisallowedESSymbolOperand(operator)) { leftType = getBaseTypeOfLiteralType(checkNonNullType(leftType, left)); rightType = getBaseTypeOfLiteralType(checkNonNullType(rightType, right)); - reportOperatorErrorUnless((left2, right2) => isTypeComparableTo(left2, right2) || isTypeComparableTo(right2, left2) || isTypeAssignableTo(left2, numberOrBigIntType) && isTypeAssignableTo(right2, numberOrBigIntType)); + reportOperatorErrorUnless((left2, right2) => { + if (isTypeAny(left2) || isTypeAny(right2)) { + return true; + } + const leftAssignableToNumber = isTypeAssignableTo(left2, numberOrBigIntType); + const rightAssignableToNumber = isTypeAssignableTo(right2, numberOrBigIntType); + return leftAssignableToNumber && rightAssignableToNumber || !leftAssignableToNumber && !rightAssignableToNumber && areTypesComparable(left2, right2); + }); } return booleanType; case 34 /* EqualsEqualsToken */: @@ -73879,7 +74840,7 @@ ${lanes.join("\n")} left, Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access - ) && (!isIdentifier(left) || unescapeLeadingUnderscores(left.escapedText) !== "exports")) { + )) { let headMessage; if (exactOptionalPropertyTypes && isPropertyAccessExpression(left) && maybeTypeOfKind(valueType, 32768 /* Undefined */)) { const target = getTypeOfPropertyOfType(getTypeOfExpression(left.expression), left.name.escapedText); @@ -74128,7 +75089,7 @@ ${lanes.join("\n")} } return links.resolvedType; } - function isTypeAssertion3(node) { + function isTypeAssertion(node) { node = skipParentheses( node, /*excludeJSDocTypeAssertions*/ @@ -74138,6 +75099,12 @@ ${lanes.join("\n")} } function checkDeclarationInitializer(declaration, checkMode, contextualType) { const initializer = getEffectiveInitializer(declaration); + if (isInJSFile(declaration)) { + const typeNode = tryGetJSDocSatisfiesTypeNode(declaration); + if (typeNode) { + return checkSatisfiesExpressionWorker(initializer, typeNode, checkMode); + } + } const type = getQuickTypeOfExpression(initializer) || (contextualType ? checkExpressionWithContextualType( initializer, contextualType, @@ -74206,7 +75173,7 @@ ${lanes.join("\n")} } function checkExpressionForMutableLocation(node, checkMode, forceTuple) { const type = checkExpression(node, checkMode, forceTuple); - return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion3(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( + return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( getContextualType2( node, /*contextFlags*/ @@ -74456,18 +75423,23 @@ ${lanes.join("\n")} if (!ok) { error(node, Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query); } - if (compilerOptions.isolatedModules) { + if (getIsolatedModules(compilerOptions)) { Debug.assert(!!(type.symbol.flags & 128 /* ConstEnum */)); const constEnumDeclaration = type.symbol.valueDeclaration; if (constEnumDeclaration.flags & 16777216 /* Ambient */) { - error(node, Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_access_ambient_const_enums_when_0_is_enabled, isolatedModulesLikeFlagName); } } } function checkParenthesizedExpression(node, checkMode) { - if (hasJSDocNodes(node) && isJSDocTypeAssertion(node)) { - const type = getJSDocTypeAssertionType(node); - return checkAssertionWorker(type, type, node.expression, checkMode); + if (hasJSDocNodes(node)) { + if (isJSDocSatisfiesExpression(node)) { + return checkSatisfiesExpressionWorker(node.expression, getJSDocSatisfiesExpressionType(node), checkMode); + } + if (isJSDocTypeAssertion(node)) { + const type = getJSDocTypeAssertionType(node); + return checkAssertionWorker(type, type, node.expression, checkMode); + } } return checkExpression(node.expression, checkMode); } @@ -74630,7 +75602,7 @@ ${lanes.join("\n")} } } function checkParameter(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkVariableLikeDeclaration(node); const func = getContainingFunction(node); if (hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */)) { @@ -74951,7 +75923,7 @@ ${lanes.join("\n")} } } function checkPropertyDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarProperty(node)) + if (!checkGrammarModifiers(node) && !checkGrammarProperty(node)) checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); setNodeLinksForPrivateIdentifierScope(node); @@ -74995,7 +75967,7 @@ ${lanes.join("\n")} } } function checkClassStaticBlockDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); forEachChild(node, checkSourceElement); } function checkConstructorDeclaration(node) { @@ -75175,8 +76147,11 @@ ${lanes.join("\n")} } function checkTypeReferenceNode(node) { checkGrammarTypeArguments(node, node.typeArguments); - if (node.kind === 180 /* TypeReference */ && node.typeName.jsdocDotPos !== void 0 && !isInJSFile(node) && !isInJSDoc(node)) { - grammarErrorAtPos(node, node.typeName.jsdocDotPos, 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + if (node.kind === 180 /* TypeReference */ && !isInJSFile(node) && !isInJSDoc(node) && node.typeArguments && node.typeName.end !== node.typeArguments.pos) { + const sourceFile = getSourceFileOfNode(node); + if (scanTokenAtPosition(sourceFile, node.typeName.end) === 24 /* DotToken */) { + grammarErrorAtPos(node, skipTrivia(sourceFile.text, node.typeName.end), 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + } } forEach(node.typeArguments, checkSourceElement); const type = getTypeFromTypeReference(node); @@ -75869,7 +76844,7 @@ ${lanes.join("\n")} chain = chainDiagnosticMessages(chain, Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1, typeToString(type), typeToString(thisTypeForErrorOut.value)); } chain = chainDiagnosticMessages(chain, diagnosticMessage, arg0); - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chain)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chain)); } return void 0; } @@ -75960,36 +76935,66 @@ ${lanes.join("\n")} if (returnType.flags & 1 /* Any */) { return; } + const decoratorSignature = getDecoratorCallSignature(node); + if (!(decoratorSignature == null ? void 0 : decoratorSignature.resolvedReturnType)) + return; let headMessage; - let expectedReturnType; + const expectedReturnType = decoratorSignature.resolvedReturnType; switch (node.parent.kind) { case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const classSymbol = getSymbolOfDeclaration(node.parent); - const classConstructorType = getTypeOfSymbol(classSymbol); - expectedReturnType = getUnionType([classConstructorType, voidType]); break; case 169 /* PropertyDeclaration */: + if (!legacyDecorators) { + headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + break; + } case 166 /* Parameter */: headMessage = Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any; - expectedReturnType = voidType; break; case 171 /* MethodDeclaration */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const methodType = getTypeOfNode(node.parent); - const descriptorType = createTypedPropertyDescriptorType(methodType); - expectedReturnType = getUnionType([descriptorType, voidType]); break; default: - return Debug.fail(); + return Debug.failBadSyntaxKind(node.parent); } - checkTypeAssignableTo( - returnType, - expectedReturnType, - node, - headMessage + checkTypeAssignableTo(returnType, expectedReturnType, node.expression, headMessage); + } + function createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount = parameters.length, flags = 0 /* None */) { + const decl = factory.createFunctionTypeNode( + /*typeParameters*/ + void 0, + emptyArray, + factory.createKeywordTypeNode(131 /* AnyKeyword */) + ); + return createSignature(decl, typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + } + function createFunctionType(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags) { + const signature = createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + return getOrCreateTypeFromSignature(signature); + } + function createGetterFunctionType(type) { + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + emptyArray, + type + ); + } + function createSetterFunctionType(type) { + const valueParam = createParameter("value", type); + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [valueParam], + voidType ); } function markTypeNodeAsReferenced(node) { @@ -76016,9 +77021,9 @@ ${lanes.join("\n")} true ); if (rootSymbol && rootSymbol.flags & 2097152 /* Alias */) { - if (symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { + if (!compilerOptions.verbatimModuleSyntax && symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { markAliasSymbolAsReferenced(rootSymbol); - } else if (forDecoratorMetadata && compilerOptions.isolatedModules && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { + } else if (forDecoratorMetadata && getIsolatedModules(compilerOptions) && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { const diag2 = error(typeName, Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled); const aliasDeclaration = find(rootSymbol.declarations || emptyArray, isAliasSymbolDeclaration2); if (aliasDeclaration) { @@ -76084,19 +77089,37 @@ ${lanes.join("\n")} return isRestParameter(node) ? getRestParameterElementType(typeNode) : typeNode; } function checkDecorators(node) { - if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(node, node.parent, node.parent.parent)) { + if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { return; } - if (!compilerOptions.experimentalDecorators) { - error(node, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning); - } const firstDecorator = find(node.modifiers, isDecorator); if (!firstDecorator) { return; } - checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); - if (node.kind === 166 /* Parameter */) { - checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + if (legacyDecorators) { + checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); + if (node.kind === 166 /* Parameter */) { + checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + } + } else if (languageVersion < 99 /* ESNext */) { + checkExternalEmitHelpers(firstDecorator, 8 /* ESDecorateAndRunInitializers */); + if (isClassDeclaration(node)) { + if (!node.name) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } else { + const member = getFirstTransformableStaticClassElement(node); + if (member) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + } + } else if (!isClassExpression(node)) { + if (isPrivateIdentifier(node.name) && (isMethodDeclaration(node) || isAccessor(node) || isAutoAccessorPropertyDeclaration(node))) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + if (isComputedPropertyName(node.name)) { + checkExternalEmitHelpers(firstDecorator, 16777216 /* PropKey */); + } + } } if (compilerOptions.emitDecoratorMetadata) { checkExternalEmitHelpers(firstDecorator, 16 /* Metadata */); @@ -76166,6 +77189,19 @@ ${lanes.join("\n")} function checkJSDocTypeTag(node) { checkSourceElement(node.typeExpression); } + function checkJSDocSatisfiesTag(node) { + checkSourceElement(node.typeExpression); + const host2 = getEffectiveJSDocHost(node); + if (host2) { + const tags = getAllJSDocTags(host2, isJSDocSatisfiesTag); + if (length(tags) > 1) { + for (let i = 1; i < length(tags); i++) { + const tagName = tags[i].tagName; + error(tagName, Diagnostics._0_tag_already_specified, idText(tagName)); + } + } + } + } function checkJSDocLinkLikeTag(node) { if (node.name) { resolveJSDocMemberName( @@ -76838,7 +77874,7 @@ ${lanes.join("\n")} return; } const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 2097152 /* Alias */ && isVariableDeclarationInitializedToBareOrAccessedRequire(node.kind === 205 /* BindingElement */ ? node.parent.parent : node)) { + if (symbol.flags & 2097152 /* Alias */ && (isVariableDeclarationInitializedToBareOrAccessedRequire(node) || isBindingElementOfBareOrAccessedRequire(node))) { checkAliasSymbol(node); return; } @@ -76930,7 +77966,7 @@ ${lanes.join("\n")} return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) + if (!checkGrammarModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) checkGrammarForDisallowedLetOrConstStatement(node); forEach(node.declarationList.declarations, checkSourceElement); } @@ -76951,17 +77987,26 @@ ${lanes.join("\n")} function checkTestingKnownTruthyCallableOrAwaitableType(condExpr, condType, body) { if (!strictNullChecks) return; - helper(condExpr, body); - while (isBinaryExpression(condExpr) && condExpr.operatorToken.kind === 56 /* BarBarToken */) { - condExpr = condExpr.left; - helper(condExpr, body); + bothHelper(condExpr, body); + function bothHelper(condExpr2, body2) { + condExpr2 = skipParentheses(condExpr2); + helper(condExpr2, body2); + while (isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 60 /* QuestionQuestionToken */)) { + condExpr2 = skipParentheses(condExpr2.left); + helper(condExpr2, body2); + } } function helper(condExpr2, body2) { - const location = isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 55 /* AmpersandAmpersandToken */) ? condExpr2.right : condExpr2; - if (isModuleExportsAccessExpression(location)) + const location = isLogicalOrCoalescingBinaryExpression(condExpr2) ? skipParentheses(condExpr2.right) : condExpr2; + if (isModuleExportsAccessExpression(location)) { return; + } + if (isLogicalOrCoalescingBinaryExpression(location)) { + bothHelper(location, body2); + return; + } const type = location === condExpr2 ? condType : checkTruthinessExpression(location); - const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion3(location.expression); + const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion(location.expression); if (!(getTypeFacts(type) & 4194304 /* Truthy */) || isPropertyExpressionCast) return; const callSignatures = getSignaturesOfType(type, 0 /* Call */); @@ -76969,7 +78014,7 @@ ${lanes.join("\n")} if (callSignatures.length === 0 && !isPromise) { return; } - const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : isBinaryExpression(location) && isIdentifier(location.right) ? location.right : void 0; + const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : void 0; const testedSymbol = testedNode && getSymbolAtLocation(testedNode); if (!testedSymbol && !isPromise) { return; @@ -77927,14 +78972,10 @@ ${lanes.join("\n")} if (catchClause) { if (catchClause.variableDeclaration) { const declaration = catchClause.variableDeclaration; - const typeNode = getEffectiveTypeAnnotationNode(getRootDeclaration(declaration)); + checkVariableLikeDeclaration(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration); if (typeNode) { - const type = getTypeForVariableLikeDeclaration( - declaration, - /*includeOptionality*/ - false, - 0 /* Normal */ - ); + const type = getTypeFromTypeNode(typeNode); if (type && !(type.flags & 3 /* AnyOrUnknown */)) { grammarErrorOnFirstToken(typeNode, Diagnostics.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified); } @@ -78189,9 +79230,65 @@ ${lanes.join("\n")} } return true; } + function getFirstTransformableStaticClassElement(node) { + var _a2; + const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < 99 /* ESNext */ && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + ); + const willTransformPrivateElementsOrClassStaticBlocks = languageVersion <= 9 /* ES2022 */; + const willTransformInitializers = !useDefineForClassFields || languageVersion < 9 /* ES2022 */; + if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) { + for (const member of node.members) { + if (willTransformStaticElementsOfDecoratedClass && classElementOrClassElementParameterIsDecorated( + /*useLegacyDecorators*/ + false, + member, + node + )) { + return (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else if (willTransformPrivateElementsOrClassStaticBlocks) { + if (isClassStaticBlockDeclaration(member)) { + return member; + } else if (isStatic(member)) { + if (isPrivateIdentifierClassElementDeclaration(member) || willTransformInitializers && isInitializedProperty(member)) { + return member; + } + } + } + } + } + } + function checkClassExpressionExternalHelpers(node) { + var _a2; + if (node.name) + return; + const parent2 = walkUpOuterExpressions(node); + if (!isNamedEvaluationSource(parent2)) + return; + const willTransformESDecorators = !legacyDecorators && languageVersion < 99 /* ESNext */; + let location; + if (willTransformESDecorators && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + )) { + location = (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else { + location = getFirstTransformableStaticClassElement(node); + } + if (location) { + checkExternalEmitHelpers(location, 8388608 /* SetFunctionName */); + if ((isPropertyAssignment(parent2) || isPropertyDeclaration(parent2) || isBindingElement(parent2)) && isComputedPropertyName(parent2.name)) { + checkExternalEmitHelpers(location, 16777216 /* PropKey */); + } + } + } function checkClassExpression(node) { checkClassLikeDeclaration(node); checkNodeDeferred(node); + checkClassExpressionExternalHelpers(node); return getTypeOfSymbol(getSymbolOfDeclaration(node)); } function checkClassExpressionDeferred(node) { @@ -78200,7 +79297,7 @@ ${lanes.join("\n")} } function checkClassDeclaration(node) { const firstDecorator = find(node.modifiers, isDecorator); - if (firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { + if (legacyDecorators && firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { grammarErrorOnNode(firstDecorator, Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator); } if (!node.name && !hasSyntacticModifier(node, 1024 /* Default */)) { @@ -78674,7 +79771,7 @@ ${lanes.join("\n")} typeName2 ); errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); - diagnostics.add(createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(typeNode), typeNode, errorInfo)); } } } @@ -78730,7 +79827,7 @@ ${lanes.join("\n")} return !containsUndefinedType(flowType); } function checkInterfaceDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node)) + if (!checkGrammarModifiers(node)) checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); addLazyDiagnostic(() => { @@ -78764,7 +79861,7 @@ ${lanes.join("\n")} }); } function checkTypeAliasDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); @@ -78960,7 +80057,7 @@ ${lanes.join("\n")} addLazyDiagnostic(() => checkEnumDeclarationWorker(node)); } function checkEnumDeclarationWorker(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkCollisionsForDeclarationName(node, node.name); checkExportsOnMergedDeclarations(node); node.members.forEach(checkEnumMember); @@ -79035,6 +80132,7 @@ ${lanes.join("\n")} } addLazyDiagnostic(checkModuleDeclarationDiagnostics); function checkModuleDeclarationDiagnostics() { + var _a2, _b; const isGlobalAugmentation = isGlobalScopeAugmentation(node); const inAmbientContext = node.flags & 16777216 /* Ambient */; if (isGlobalAugmentation && !inAmbientContext) { @@ -79045,7 +80143,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, contextErrorMessage)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node)) { + if (!checkGrammarModifiers(node)) { if (!inAmbientContext && node.name.kind === 10 /* StringLiteral */) { grammarErrorOnNode(node.name, Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -79055,18 +80153,29 @@ ${lanes.join("\n")} } checkExportsOnMergedDeclarations(node); const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && symbol.declarations && symbol.declarations.length > 1 && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { - const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); - if (firstNonAmbientClassOrFunc) { - if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); - } else if (node.pos < firstNonAmbientClassOrFunc.pos) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { + if (getIsolatedModules(compilerOptions) && !getSourceFileOfNode(node).externalModuleIndicator) { + error(node.name, Diagnostics.Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement, isolatedModulesLikeFlagName); + } + if (((_a2 = symbol.declarations) == null ? void 0 : _a2.length) > 1) { + const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + if (firstNonAmbientClassOrFunc) { + if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); + } else if (node.pos < firstNonAmbientClassOrFunc.pos) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + } + } + const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); + if (mergedClass && inSameLexicalScope(node, mergedClass)) { + getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; } } - const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); - if (mergedClass && inSameLexicalScope(node, mergedClass)) { - getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; + if (compilerOptions.verbatimModuleSyntax && node.parent.kind === 308 /* SourceFile */) { + const exportModifier = (_b = node.modifiers) == null ? void 0 : _b.find((m) => m.kind === 93 /* ExportKeyword */); + if (exportModifier) { + error(exportModifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } } if (isAmbientExternalModule) { @@ -79222,7 +80331,7 @@ ${lanes.join("\n")} const message = node.kind === 278 /* ExportSpecifier */ ? Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); } - if (compilerOptions.isolatedModules && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { + if (getIsolatedModules(compilerOptions) && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { const typeOnlyAlias = getTypeOnlyAliasDeclaration(symbol); const isType = !(targetFlags & 111551 /* Value */); if (isType || typeOnlyAlias) { @@ -79230,9 +80339,9 @@ ${lanes.join("\n")} case 270 /* ImportClause */: case 273 /* ImportSpecifier */: case 268 /* ImportEqualsDeclaration */: { - if (compilerOptions.preserveValueImports) { + if (compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) { Debug.assertIsDefined(node.name, "An ImportClause with a symbol should have a name"); - const message = isType ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; + const message = compilerOptions.verbatimModuleSyntax && isInternalModuleImportEqualsDeclaration(node) ? Diagnostics.An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled : isType ? compilerOptions.verbatimModuleSyntax ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : compilerOptions.verbatimModuleSyntax ? Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; const name = idText(node.kind === 273 /* ImportSpecifier */ ? node.propertyName || node.name : node.name); addTypeOnlyDeclarationRelatedInfo( error(node, message, name), @@ -79241,24 +80350,23 @@ ${lanes.join("\n")} ); } if (isType && node.kind === 268 /* ImportEqualsDeclaration */ && hasEffectiveModifier(node, 1 /* Export */)) { - error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled, isolatedModulesLikeFlagName); } break; } case 278 /* ExportSpecifier */: { - if (getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { - const message = isType ? Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled; + if (compilerOptions.verbatimModuleSyntax || getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { const name = idText(node.propertyName || node.name); - addTypeOnlyDeclarationRelatedInfo( - error(node, message, name), - isType ? void 0 : typeOnlyAlias, - name - ); - return; + const diagnostic = isType ? error(node, Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type, isolatedModulesLikeFlagName) : error(node, Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled, name, isolatedModulesLikeFlagName); + addTypeOnlyDeclarationRelatedInfo(diagnostic, isType ? void 0 : typeOnlyAlias, name); + break; } } } } + if (compilerOptions.verbatimModuleSyntax && node.kind !== 268 /* ImportEqualsDeclaration */ && !isInJSFile(node) && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } if (isImportSpecifier(node)) { const targetSymbol = checkDeprecatedAliasedSymbol(symbol, node); @@ -79338,7 +80446,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -79368,7 +80476,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); if (isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (hasSyntacticModifier(node, 1 /* Export */)) { @@ -79404,7 +80512,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasSyntacticModifiers(node)) { + if (!checkGrammarModifiers(node) && hasSyntacticModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_declaration_cannot_have_modifiers); } if (node.moduleSpecifier && node.exportClause && isNamedExports(node.exportClause) && length(node.exportClause.elements) && languageVersion === 0 /* ES3 */) { @@ -79441,12 +80549,8 @@ ${lanes.join("\n")} } function checkGrammarExportDeclaration(node) { var _a2; - if (node.isTypeOnly) { - if (((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { - return checkGrammarNamedImportsOrExports(node.exportClause); - } else { - return grammarErrorOnNode(node, Diagnostics.Only_named_exports_may_use_export_type); - } + if (node.isTypeOnly && ((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { + return checkGrammarNamedImportsOrExports(node.exportClause); } return false; } @@ -79544,13 +80648,14 @@ ${lanes.join("\n")} } return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_assignment_cannot_have_modifiers); } const typeAnnotationNode = getEffectiveTypeAnnotationNode(node); if (typeAnnotationNode) { checkTypeAssignableTo(checkExpressionCached(node.expression), getTypeFromTypeNode(typeAnnotationNode), node.expression); } + const isIllegalExportDefaultInCJS = !node.isExportEquals && compilerOptions.verbatimModuleSyntax && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */); if (node.expression.kind === 79 /* Identifier */) { const id = node.expression; const sym = resolveEntityName( @@ -79564,16 +80669,28 @@ ${lanes.join("\n")} ); if (sym) { markAliasReferenced(sym, id); - const target = sym.flags & 2097152 /* Alias */ ? resolveAlias(sym) : sym; - if (getAllSymbolFlags(target) & 111551 /* Value */) { - checkExpressionCached(node.expression); + if (getAllSymbolFlags(sym) & 111551 /* Value */) { + checkExpressionCached(id); + if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax && getTypeOnlyAliasDeclaration(sym, 111551 /* Value */)) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration : Diagnostics.An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration, + idText(id) + ); + } + } else if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type : Diagnostics.An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type, + idText(id) + ); } } else { - checkExpressionCached(node.expression); + checkExpressionCached(id); } if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases( - node.expression, + id, /*setVisibility*/ true ); @@ -79581,6 +80698,9 @@ ${lanes.join("\n")} } else { checkExpressionCached(node.expression); } + if (isIllegalExportDefaultInCJS) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } checkExternalModuleExports(container); if (node.flags & 16777216 /* Ambient */ && !isEntityNameExpression(node.expression)) { grammarErrorOnNode(node.expression, Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context); @@ -79770,6 +80890,8 @@ ${lanes.join("\n")} case 338 /* JSDocProtectedTag */: case 337 /* JSDocPrivateTag */: return checkJSDocAccessibilityModifiers(node); + case 353 /* JSDocSatisfiesTag */: + return checkJSDocSatisfiesTag(node); case 196 /* IndexedAccessType */: return checkIndexedAccessType(node); case 197 /* MappedType */: @@ -80785,8 +81907,9 @@ ${lanes.join("\n")} } } function getReferencedImportDeclaration(nodeIn) { - if (nodeIn.generatedImportReference) { - return nodeIn.generatedImportReference; + const specifier = getIdentifierGeneratedImportReference(nodeIn); + if (specifier) { + return specifier; } const node = getParseTreeNode(nodeIn, isIdentifier); if (node) { @@ -80868,6 +81991,7 @@ ${lanes.join("\n")} return false; } function isValueAliasDeclaration(node) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); switch (node.kind) { case 268 /* ImportEqualsDeclaration */: return isAliasResolvedToValue(getSymbolOfDeclaration(node)); @@ -80908,6 +82032,7 @@ ${lanes.join("\n")} return isConstEnumSymbol(s) || !!s.constEnumOnlyModule; } function isReferencedAliasDeclaration(node, checkChildren) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); if (isAliasSymbolDeclaration2(node)) { const symbol = getSymbolOfDeclaration(node); const links = symbol && getSymbolLinks(symbol); @@ -81624,23 +82749,27 @@ ${lanes.join("\n")} const helpersModule = resolveHelpersModule(sourceFile, location); if (helpersModule !== unknownSymbol) { const uncheckedHelpers = helpers & ~requestedExternalEmitHelpers; - for (let helper = 1 /* FirstEmitHelper */; helper <= 4194304 /* LastEmitHelper */; helper <<= 1) { + for (let helper = 1 /* FirstEmitHelper */; helper <= 16777216 /* LastEmitHelper */; helper <<= 1) { if (uncheckedHelpers & helper) { - const name = getHelperName(helper); - const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); - if (!symbol) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); - } else if (helper & 524288 /* ClassPrivateFieldGet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); - } - } else if (helper & 1048576 /* ClassPrivateFieldSet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); - } - } else if (helper & 1024 /* SpreadArray */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + for (const name of getHelperNames(helper)) { + if (requestedExternalEmitHelperNames.has(name)) + continue; + requestedExternalEmitHelperNames.add(name); + const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); + if (!symbol) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); + } else if (helper & 524288 /* ClassPrivateFieldGet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); + } + } else if (helper & 1048576 /* ClassPrivateFieldSet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); + } + } else if (helper & 1024 /* SpreadArray */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + } } } } @@ -81650,54 +82779,58 @@ ${lanes.join("\n")} } } } - function getHelperName(helper) { + function getHelperNames(helper) { switch (helper) { case 1 /* Extends */: - return "__extends"; + return ["__extends"]; case 2 /* Assign */: - return "__assign"; + return ["__assign"]; case 4 /* Rest */: - return "__rest"; + return ["__rest"]; case 8 /* Decorate */: - return "__decorate"; + return legacyDecorators ? ["__decorate"] : ["__esDecorate", "__runInitializers"]; case 16 /* Metadata */: - return "__metadata"; + return ["__metadata"]; case 32 /* Param */: - return "__param"; + return ["__param"]; case 64 /* Awaiter */: - return "__awaiter"; + return ["__awaiter"]; case 128 /* Generator */: - return "__generator"; + return ["__generator"]; case 256 /* Values */: - return "__values"; + return ["__values"]; case 512 /* Read */: - return "__read"; + return ["__read"]; case 1024 /* SpreadArray */: - return "__spreadArray"; + return ["__spreadArray"]; case 2048 /* Await */: - return "__await"; + return ["__await"]; case 4096 /* AsyncGenerator */: - return "__asyncGenerator"; + return ["__asyncGenerator"]; case 8192 /* AsyncDelegator */: - return "__asyncDelegator"; + return ["__asyncDelegator"]; case 16384 /* AsyncValues */: - return "__asyncValues"; + return ["__asyncValues"]; case 32768 /* ExportStar */: - return "__exportStar"; + return ["__exportStar"]; case 65536 /* ImportStar */: - return "__importStar"; + return ["__importStar"]; case 131072 /* ImportDefault */: - return "__importDefault"; + return ["__importDefault"]; case 262144 /* MakeTemplateObject */: - return "__makeTemplateObject"; + return ["__makeTemplateObject"]; case 524288 /* ClassPrivateFieldGet */: - return "__classPrivateFieldGet"; + return ["__classPrivateFieldGet"]; case 1048576 /* ClassPrivateFieldSet */: - return "__classPrivateFieldSet"; + return ["__classPrivateFieldSet"]; case 2097152 /* ClassPrivateFieldIn */: - return "__classPrivateFieldIn"; + return ["__classPrivateFieldIn"]; case 4194304 /* CreateBinding */: - return "__createBinding"; + return ["__createBinding"]; + case 8388608 /* SetFunctionName */: + return ["__setFunctionName"]; + case 16777216 /* PropKey */: + return ["__propKey"]; default: return Debug.fail("Unrecognized helper"); } @@ -81708,257 +82841,264 @@ ${lanes.join("\n")} } return externalHelpersModule; } - function checkGrammarDecoratorsAndModifiers(node) { - return checkGrammarDecorators(node) || checkGrammarModifiers(node); - } - function checkGrammarDecorators(node) { - if (canHaveIllegalDecorators(node) && some(node.illegalDecorators)) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - if (!canHaveDecorators(node) || !hasDecorators(node)) { - return false; - } - if (!nodeCanBeDecorated(node, node.parent, node.parent.parent)) { - if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { - return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); - } else { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - } else if (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */) { - const accessors = getAllAccessorDeclarations(node.parent.members, node); - if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); - } - } - return false; - } function checkGrammarModifiers(node) { - const quickResult = reportObviousModifierErrors(node); + const quickResult = reportObviousDecoratorErrors(node) || reportObviousModifierErrors(node); if (quickResult !== void 0) { return quickResult; } - let lastStatic, lastDeclare, lastAsync, lastOverride; + if (isParameter(node) && parameterIsThisKeyword(node)) { + return grammarErrorOnFirstToken(node, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); + } + let lastStatic, lastDeclare, lastAsync, lastOverride, firstDecorator; let flags = 0 /* None */; + let sawExportBeforeDecorators = false; for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - if (modifier.kind !== 146 /* ReadonlyKeyword */) { - if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); + if (isDecorator(modifier)) { + if (!nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { + if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } else { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); + } + } else if (legacyDecorators && (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */)) { + const accessors = getAllAccessorDeclarations(node.parent.members, node); + if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } } - if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); + if (flags & ~(1025 /* ExportDefault */ | 131072 /* Decorator */)) { + return grammarErrorOnNode(modifier, Diagnostics.Decorators_are_not_valid_here); } - } - if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { - if (node.kind === 165 /* TypeParameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); + flags |= 131072 /* Decorator */; + if (flags & 1 /* Export */) { + sawExportBeforeDecorators = true; } - } - switch (modifier.kind) { - case 85 /* ConstKeyword */: - if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { - return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); + firstDecorator != null ? firstDecorator : firstDecorator = modifier; + } else { + if (modifier.kind !== 146 /* ReadonlyKeyword */) { + if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); } - const parent2 = node.parent; - if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); + if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); } - break; - case 161 /* OverrideKeyword */: - if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); + } + if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { + if (node.kind === 165 /* TypeParameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); } - flags |= 16384 /* Override */; - lastOverride = modifier; - break; - case 123 /* PublicKeyword */: - case 122 /* ProtectedKeyword */: - case 121 /* PrivateKeyword */: - const text = visibilityToString(modifierToFlag(modifier.kind)); - if (flags & 28 /* AccessibilityModifier */) { - return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); - } else if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); - } else if (flags & 256 /* Abstract */) { - if (modifier.kind === 121 /* PrivateKeyword */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); - } else { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + switch (modifier.kind) { + case 85 /* ConstKeyword */: + if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { + return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); } - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); - } - flags |= modifierToFlag(modifier.kind); - break; - case 124 /* StaticKeyword */: - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); - } - flags |= 32 /* Static */; - lastStatic = modifier; - break; - case 127 /* AccessorKeyword */: - if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); - } else if (node.kind !== 169 /* PropertyDeclaration */) { - return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); - } - flags |= 128 /* Accessor */; - break; - case 146 /* ReadonlyKeyword */: - if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); - } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); - } - flags |= 64 /* Readonly */; - break; - case 93 /* ExportKeyword */: - if (flags & 1 /* Export */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); - } else if (isClassLike(node.parent)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); - } - flags |= 1 /* Export */; - break; - case 88 /* DefaultKeyword */: - const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { - return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); - } else if (!(flags & 1 /* Export */)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); - } - flags |= 1024 /* Default */; - break; - case 136 /* DeclareKeyword */: - if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); - } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); - } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { - return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); - } - flags |= 2 /* Ambient */; - lastDeclare = modifier; - break; - case 126 /* AbstractKeyword */: - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); - } - if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { - if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { - return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); - } - if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { - return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); - } - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } - if (flags & 8 /* Private */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); - } - if (flags & 512 /* Async */ && lastAsync) { - return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + const parent2 = node.parent; + if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); } + break; + case 161 /* OverrideKeyword */: if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); } + flags |= 16384 /* Override */; + lastOverride = modifier; + break; + case 123 /* PublicKeyword */: + case 122 /* ProtectedKeyword */: + case 121 /* PrivateKeyword */: + const text = visibilityToString(modifierToFlag(modifier.kind)); + if (flags & 28 /* AccessibilityModifier */) { + return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); + } else if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); + } else if (flags & 256 /* Abstract */) { + if (modifier.kind === 121 /* PrivateKeyword */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); + } else { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + } + flags |= modifierToFlag(modifier.kind); + break; + case 124 /* StaticKeyword */: + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); + } + flags |= 32 /* Static */; + lastStatic = modifier; + break; + case 127 /* AccessorKeyword */: if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); + } else if (node.kind !== 169 /* PropertyDeclaration */) { + return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); } - } - if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); - } - flags |= 256 /* Abstract */; - break; - case 132 /* AsyncKeyword */: - if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); - } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); - } - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); - } - flags |= 512 /* Async */; - lastAsync = modifier; - break; - case 101 /* InKeyword */: - case 145 /* OutKeyword */: - const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; - const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; - if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); - } - if (flags & inOutFlag) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); - } - if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); - } - flags |= inOutFlag; - break; + flags |= 128 /* Accessor */; + break; + case 146 /* ReadonlyKeyword */: + if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); + } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); + } + flags |= 64 /* Readonly */; + break; + case 93 /* ExportKeyword */: + if (compilerOptions.verbatimModuleSyntax && !(node.flags & 16777216 /* Ambient */) && node.kind !== 262 /* TypeAliasDeclaration */ && node.kind !== 261 /* InterfaceDeclaration */ && // ModuleDeclaration needs to be checked that it is uninstantiated later + node.kind !== 264 /* ModuleDeclaration */ && node.parent.kind === 308 /* SourceFile */ && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + return grammarErrorOnNode(modifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } + if (flags & 1 /* Export */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); + } else if (isClassLike(node.parent)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + } + flags |= 1 /* Export */; + break; + case 88 /* DefaultKeyword */: + const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { + return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + } else if (!(flags & 1 /* Export */)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); + } else if (sawExportBeforeDecorators) { + return grammarErrorOnNode(firstDecorator, Diagnostics.Decorators_are_not_valid_here); + } + flags |= 1024 /* Default */; + break; + case 136 /* DeclareKeyword */: + if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); + } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { + return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); + } + flags |= 2 /* Ambient */; + lastDeclare = modifier; + break; + case 126 /* AbstractKeyword */: + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); + } + if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { + if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { + return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); + } + if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { + return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); + } + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } + if (flags & 8 /* Private */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); + } + if (flags & 512 /* Async */ && lastAsync) { + return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + } + if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + } + } + if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); + } + flags |= 256 /* Abstract */; + break; + case 132 /* AsyncKeyword */: + if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); + } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); + } + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + flags |= 512 /* Async */; + lastAsync = modifier; + break; + case 101 /* InKeyword */: + case 145 /* OutKeyword */: + const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; + const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; + if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); + } + if (flags & inOutFlag) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); + } + if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); + } + flags |= inOutFlag; + break; + } } } if (node.kind === 173 /* Constructor */) { @@ -81985,9 +83125,16 @@ ${lanes.join("\n")} return false; } function reportObviousModifierErrors(node) { - return !node.modifiers ? false : shouldReportBadModifier(node) ? grammarErrorOnFirstToken(node, Diagnostics.Modifiers_cannot_appear_here) : void 0; + if (!node.modifiers) + return false; + const modifier = findFirstIllegalModifier(node); + return modifier && grammarErrorOnFirstToken(modifier, Diagnostics.Modifiers_cannot_appear_here); } - function shouldReportBadModifier(node) { + function findFirstModifierExcept(node, allowedModifier) { + const modifier = find(node.modifiers, isModifier); + return modifier && modifier.kind !== allowedModifier ? modifier : void 0; + } + function findFirstIllegalModifier(node) { switch (node.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: @@ -82006,43 +83153,42 @@ ${lanes.join("\n")} case 216 /* ArrowFunction */: case 166 /* Parameter */: case 165 /* TypeParameter */: - return false; + return void 0; case 172 /* ClassStaticBlockDeclaration */: case 299 /* PropertyAssignment */: case 300 /* ShorthandPropertyAssignment */: case 267 /* NamespaceExportDeclaration */: case 181 /* FunctionType */: case 279 /* MissingDeclaration */: - return true; + return find(node.modifiers, isModifier); default: if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return false; + return void 0; } switch (node.kind) { case 259 /* FunctionDeclaration */: - return nodeHasAnyModifiersExcept(node, 132 /* AsyncKeyword */); + return findFirstModifierExcept(node, 132 /* AsyncKeyword */); case 260 /* ClassDeclaration */: case 182 /* ConstructorType */: - return nodeHasAnyModifiersExcept(node, 126 /* AbstractKeyword */); + return findFirstModifierExcept(node, 126 /* AbstractKeyword */); case 228 /* ClassExpression */: case 261 /* InterfaceDeclaration */: case 240 /* VariableStatement */: case 262 /* TypeAliasDeclaration */: - return true; + return find(node.modifiers, isModifier); case 263 /* EnumDeclaration */: - return nodeHasAnyModifiersExcept(node, 85 /* ConstKeyword */); + return findFirstModifierExcept(node, 85 /* ConstKeyword */); default: Debug.assertNever(node); } } } - function nodeHasAnyModifiersExcept(node, allowedModifier) { - for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - return modifier.kind !== allowedModifier; - } - return false; + function reportObviousDecoratorErrors(node) { + const decorator = findFirstIllegalDecorator(node); + return decorator && grammarErrorOnFirstToken(decorator, Diagnostics.Decorators_are_not_valid_here); + } + function findFirstIllegalDecorator(node) { + return canHaveIllegalDecorators(node) ? find(node.modifiers, isDecorator) : void 0; } function checkGrammarAsyncModifier(node, asyncModifier) { switch (node.kind) { @@ -82121,7 +83267,7 @@ ${lanes.join("\n")} } function checkGrammarFunctionLikeDeclaration(node) { const file = getSourceFileOfNode(node); - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); + return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); } function checkGrammarClassLikeDeclaration(node) { const file = getSourceFileOfNode(node); @@ -82179,7 +83325,7 @@ ${lanes.join("\n")} return false; } function checkGrammarIndexSignature(node) { - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarIndexSignatureParameters(node); + return checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -82219,7 +83365,7 @@ ${lanes.join("\n")} function checkGrammarClassDeclarationHeritageClauses(node) { let seenExtendsClause = false; let seenImplementsClause = false; - if (!checkGrammarDecoratorsAndModifiers(node) && node.heritageClauses) { + if (!checkGrammarModifiers(node) && node.heritageClauses) { for (const heritageClause of node.heritageClauses) { if (heritageClause.token === 94 /* ExtendsKeyword */) { if (seenExtendsClause) { @@ -82320,7 +83466,9 @@ ${lanes.join("\n")} } } else if (canHaveIllegalModifiers(prop) && prop.modifiers) { for (const mod of prop.modifiers) { - grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + if (isModifier(mod)) { + grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + } } } let currentKind; @@ -82764,7 +83912,7 @@ ${lanes.join("\n")} } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 79 /* Identifier */) { - if (name.originalKeywordKind === 119 /* LetKeyword */) { + if (name.escapedText === "let") { return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { @@ -83052,6 +84200,9 @@ ${lanes.join("\n")} }); } function checkGrammarImportCallExpression(node) { + if (compilerOptions.verbatimModuleSyntax && moduleKind === 1 /* CommonJS */) { + return grammarErrorOnNode(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } if (moduleKind === 5 /* ES2015 */) { return grammarErrorOnNode(node, Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext); } @@ -83460,13 +84611,10 @@ ${lanes.join("\n")} // src/compiler/visitorPublic.ts function visitNode(node, visitor, test, lift) { - if (node === void 0 || visitor === void 0) { + if (node === void 0) { return node; } const visited = visitor(node); - if (visited === node) { - return node; - } let visitedNode; if (visited === void 0) { return void 0; @@ -83479,7 +84627,7 @@ ${lanes.join("\n")} return visitedNode; } function visitNodes2(nodes, visitor, test, start, count) { - if (nodes === void 0 || visitor === void 0) { + if (nodes === void 0) { return nodes; } const length2 = nodes.length; @@ -83528,25 +84676,30 @@ ${lanes.join("\n")} } for (let i = 0; i < count; i++) { const node = nodes[i + start]; - const visited = node !== void 0 ? visitor(node) : void 0; + const visited = node !== void 0 ? visitor ? visitor(node) : node : void 0; if (updated !== void 0 || visited === void 0 || visited !== node) { if (updated === void 0) { updated = nodes.slice(0, i); + Debug.assertEachNode(updated, test); } if (visited) { if (isArray(visited)) { for (const visitedNode of visited) { - void Debug.assertNode(visitedNode, test); + Debug.assertNode(visitedNode, test); updated.push(visitedNode); } } else { - void Debug.assertNode(visited, test); + Debug.assertNode(visited, test); updated.push(visited); } } } } - return updated != null ? updated : nodes; + if (updated) { + return updated; + } + Debug.assertEachNode(nodes, test); + return nodes; } function visitLexicalEnvironment(statements, visitor, context, start, ensureUseStrict, nodesVisitor = visitNodes2) { context.startLexicalEnvironment(); @@ -83560,7 +84713,7 @@ ${lanes.join("\n")} context.startLexicalEnvironment(); if (nodes) { context.setLexicalEnvironmentFlags(1 /* InParameters */, true); - updated = nodesVisitor(nodes, visitor, isParameterDeclaration); + updated = nodesVisitor(nodes, visitor, isParameter); if (context.getLexicalEnvironmentFlags() & 2 /* VariablesHoistedInParameters */ && getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } @@ -83682,6 +84835,7 @@ ${lanes.join("\n")} function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { context.startBlockScope(); const updated = nodeVisitor(body, visitor, isStatement, context.factory.liftToBlock); + Debug.assert(updated); const declarations = context.endBlockScope(); if (some(declarations)) { if (isBlock(updated)) { @@ -83693,6 +84847,18 @@ ${lanes.join("\n")} } return updated; } + function visitCommaListElements(elements, visitor, discardVisitor = visitor) { + if (discardVisitor === visitor || elements.length <= 1) { + return visitNodes2(elements, visitor, isExpression); + } + let i = 0; + const length2 = elements.length; + return visitNodes2(elements, (node) => { + const discarded = i < length2 - 1; + i++; + return discarded ? discardVisitor(node) : visitor(node); + }, isExpression); + } function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, tokenVisitor, nodeVisitor = visitNode) { if (node === void 0) { return void 0; @@ -83710,23 +84876,17 @@ ${lanes.join("\n")} "use strict"; init_ts2(); visitEachChildTable = { - [79 /* Identifier */]: function visitEachChildOfIdentifier(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { - return context.factory.updateIdentifier( - node, - nodesVisitor(node.typeArguments, visitor, isTypeNodeOrTypeParameterDeclaration) - ); - }, [163 /* QualifiedName */]: function visitEachChildOfQualifiedName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateQualifiedName( node, - nodeVisitor(node.left, visitor, isEntityName), - nodeVisitor(node.right, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.left, visitor, isEntityName)), + Debug.checkDefined(nodeVisitor(node.right, visitor, isIdentifier)) ); }, [164 /* ComputedPropertyName */]: function visitEachChildOfComputedPropertyName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateComputedPropertyName( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Signature elements @@ -83734,7 +84894,7 @@ ${lanes.join("\n")} return context.factory.updateTypeParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.constraint, visitor, isTypeNode), nodeVisitor(node.default, visitor, isTypeNode) ); @@ -83743,9 +84903,9 @@ ${lanes.join("\n")} return context.factory.updateParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -83753,7 +84913,7 @@ ${lanes.join("\n")} [167 /* Decorator */]: function visitEachChildOfDecorator(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDecorator( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Type elements @@ -83761,19 +84921,19 @@ ${lanes.join("\n")} return context.factory.updatePropertySignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode) ); }, [169 /* PropertyDeclaration */]: function visitEachChildOfPropertyDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { - var _a2; + var _a2, _b; return context.factory.updatePropertyDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), // QuestionToken and ExclamationToken are mutually exclusive in PropertyDeclaration - nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken), + tokenVisitor ? nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken) : (_b = node.questionToken) != null ? _b : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -83782,10 +84942,10 @@ ${lanes.join("\n")} return context.factory.updateMethodSignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -83793,9 +84953,9 @@ ${lanes.join("\n")} return context.factory.updateMethodDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), @@ -83805,7 +84965,7 @@ ${lanes.join("\n")} [173 /* Constructor */]: function visitEachChildOfConstructorDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConstructorDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -83814,7 +84974,7 @@ ${lanes.join("\n")} return context.factory.updateGetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), visitFunctionBody(node.body, visitor, context, nodeVisitor) @@ -83824,7 +84984,7 @@ ${lanes.join("\n")} return context.factory.updateSetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -83841,7 +85001,7 @@ ${lanes.join("\n")} return context.factory.updateCallSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -83849,16 +85009,16 @@ ${lanes.join("\n")} return context.factory.updateConstructSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, [178 /* IndexSignature */]: function visitEachChildOfIndexSignatureDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexSignature( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.modifiers, visitor, isModifierLike), + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, // Types @@ -83866,14 +85026,14 @@ ${lanes.join("\n")} return context.factory.updateTypePredicateNode( node, nodeVisitor(node.assertsModifier, visitor, isAssertsKeyword), - nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode), + Debug.checkDefined(nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode)), nodeVisitor(node.type, visitor, isTypeNode) ); }, [180 /* TypeReference */]: function visitEachChildOfTypeReferenceNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeReferenceNode( node, - nodeVisitor(node.typeName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.typeName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -83881,8 +85041,8 @@ ${lanes.join("\n")} return context.factory.updateFunctionTypeNode( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [182 /* ConstructorType */]: function visitEachChildOfConstructorTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -83890,14 +85050,14 @@ ${lanes.join("\n")} node, nodesVisitor(node.modifiers, visitor, isModifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [183 /* TypeQuery */]: function visitEachChildOfTypeQueryNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeQueryNode( node, - nodeVisitor(node.exprName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.exprName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -83910,7 +85070,7 @@ ${lanes.join("\n")} [185 /* ArrayType */]: function visitEachChildOfArrayTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateArrayTypeNode( node, - nodeVisitor(node.elementType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.elementType, visitor, isTypeNode)) ); }, [186 /* TupleType */]: function visitEachChildOfTupleTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -83922,13 +85082,13 @@ ${lanes.join("\n")} [187 /* OptionalType */]: function visitEachChildOfOptionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateOptionalTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [188 /* RestType */]: function visitEachChildOfRestTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateRestTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [189 /* UnionType */]: function visitEachChildOfUnionTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -83946,22 +85106,22 @@ ${lanes.join("\n")} [191 /* ConditionalType */]: function visitEachChildOfConditionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConditionalTypeNode( node, - nodeVisitor(node.checkType, visitor, isTypeNode), - nodeVisitor(node.extendsType, visitor, isTypeNode), - nodeVisitor(node.trueType, visitor, isTypeNode), - nodeVisitor(node.falseType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.checkType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.extendsType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.trueType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.falseType, visitor, isTypeNode)) ); }, [192 /* InferType */]: function visitEachChildOfInferTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInferTypeNode( node, - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration) + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)) ); }, [202 /* ImportType */]: function visitEachChildOfImportTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeNode( node, - nodeVisitor(node.argument, visitor, isTypeNode), + Debug.checkDefined(nodeVisitor(node.argument, visitor, isTypeNode)), nodeVisitor(node.assertions, visitor, isImportTypeAssertionContainer), nodeVisitor(node.qualifier, visitor, isEntityName), nodesVisitor(node.typeArguments, visitor, isTypeNode), @@ -83971,45 +85131,45 @@ ${lanes.join("\n")} [298 /* ImportTypeAssertionContainer */]: function visitEachChildOfImportTypeAssertionContainer(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeAssertionContainer( node, - nodeVisitor(node.assertClause, visitor, isAssertClause), + Debug.checkDefined(nodeVisitor(node.assertClause, visitor, isAssertClause)), node.multiLine ); }, [199 /* NamedTupleMember */]: function visitEachChildOfNamedTupleMember(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateNamedTupleMember( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.type, visitor, isTypeNode) + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [193 /* ParenthesizedType */]: function visitEachChildOfParenthesizedType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedType( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [195 /* TypeOperator */]: function visitEachChildOfTypeOperatorNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOperatorNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [196 /* IndexedAccessType */]: function visitEachChildOfIndexedAccessType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexedAccessTypeNode( node, - nodeVisitor(node.objectType, visitor, isTypeNode), - nodeVisitor(node.indexType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.objectType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.indexType, visitor, isTypeNode)) ); }, [197 /* MappedType */]: function visitEachChildOfMappedType(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateMappedTypeNode( node, - nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken), - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration), + tokenVisitor ? nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken) : node.readonlyToken, + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)), nodeVisitor(node.nameType, visitor, isTypeNode), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodesVisitor(node.members, visitor, isTypeElement) ); @@ -84017,21 +85177,21 @@ ${lanes.join("\n")} [198 /* LiteralType */]: function visitEachChildOfLiteralTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLiteralTypeNode( node, - nodeVisitor(node.literal, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.literal, visitor, isLiteralTypeLiteral)) ); }, [200 /* TemplateLiteralType */]: function visitEachChildOfTemplateLiteralType(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralType( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateLiteralTypeSpan) ); }, [201 /* TemplateLiteralTypeSpan */]: function visitEachChildOfTemplateLiteralTypeSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralTypeSpan( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Binding patterns @@ -84050,9 +85210,9 @@ ${lanes.join("\n")} [205 /* BindingElement */]: function visitEachChildOfBindingElement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBindingElement( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, nodeVisitor(node.propertyName, visitor, isPropertyName), - nodeVisitor(node.name, visitor, isBindingName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -84072,37 +85232,37 @@ ${lanes.join("\n")} [208 /* PropertyAccessExpression */]: function visitEachChildOfPropertyAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isPropertyAccessChain(node) ? context.factory.updatePropertyAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ) : context.factory.updatePropertyAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ); }, [209 /* ElementAccessExpression */]: function visitEachChildOfElementAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isElementAccessChain(node) ? context.factory.updateElementAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ) : context.factory.updateElementAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ); }, [210 /* CallExpression */]: function visitEachChildOfCallExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return isCallChain(node) ? context.factory.updateCallChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ) : context.factory.updateCallExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -84110,7 +85270,7 @@ ${lanes.join("\n")} [211 /* NewExpression */]: function visitEachChildOfNewExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNewExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -84118,29 +85278,29 @@ ${lanes.join("\n")} [212 /* TaggedTemplateExpression */]: function visitEachChildOfTaggedTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTaggedTemplateExpression( node, - nodeVisitor(node.tag, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.tag, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.template, visitor, isTemplateLiteral) + Debug.checkDefined(nodeVisitor(node.template, visitor, isTemplateLiteral)) ); }, [213 /* TypeAssertionExpression */]: function visitEachChildOfTypeAssertionExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAssertion( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [214 /* ParenthesizedExpression */]: function visitEachChildOfParenthesizedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [215 /* FunctionExpression */]: function visitEachChildOfFunctionExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateFunctionExpression( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -84155,82 +85315,82 @@ ${lanes.join("\n")} nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken)) : node.equalsGreaterThanToken, visitFunctionBody(node.body, visitor, context, nodeVisitor) ); }, [217 /* DeleteExpression */]: function visitEachChildOfDeleteExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDeleteExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [218 /* TypeOfExpression */]: function visitEachChildOfTypeOfExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOfExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [219 /* VoidExpression */]: function visitEachChildOfVoidExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVoidExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [220 /* AwaitExpression */]: function visitEachChildOfAwaitExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAwaitExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [221 /* PrefixUnaryExpression */]: function visitEachChildOfPrefixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePrefixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [222 /* PostfixUnaryExpression */]: function visitEachChildOfPostfixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePostfixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [223 /* BinaryExpression */]: function visitEachChildOfBinaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBinaryExpression( node, - nodeVisitor(node.left, visitor, isExpression), - nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken), - nodeVisitor(node.right, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.left, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken)) : node.operatorToken, + Debug.checkDefined(nodeVisitor(node.right, visitor, isExpression)) ); }, [224 /* ConditionalExpression */]: function visitEachChildOfConditionalExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateConditionalExpression( node, - nodeVisitor(node.condition, visitor, isExpression), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.whenTrue, visitor, isExpression), - nodeVisitor(node.colonToken, tokenVisitor, isColonToken), - nodeVisitor(node.whenFalse, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.condition, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken)) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.whenTrue, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.colonToken, tokenVisitor, isColonToken)) : node.colonToken, + Debug.checkDefined(nodeVisitor(node.whenFalse, visitor, isExpression)) ); }, [225 /* TemplateExpression */]: function visitEachChildOfTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateExpression( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateSpan) ); }, [226 /* YieldExpression */]: function visitEachChildOfYieldExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateYieldExpression( node, - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.expression, visitor, isExpression) ); }, [227 /* SpreadElement */]: function visitEachChildOfSpreadElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadElement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [228 /* ClassExpression */]: function visitEachChildOfClassExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -84246,45 +85406,45 @@ ${lanes.join("\n")} [230 /* ExpressionWithTypeArguments */]: function visitEachChildOfExpressionWithTypeArguments(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionWithTypeArguments( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, [231 /* AsExpression */]: function visitEachChildOfAsExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAsExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [235 /* SatisfiesExpression */]: function visitEachChildOfSatisfiesExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSatisfiesExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [232 /* NonNullExpression */]: function visitEachChildOfNonNullExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return isOptionalChain(node) ? context.factory.updateNonNullChain( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ) : context.factory.updateNonNullExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [233 /* MetaProperty */]: function visitEachChildOfMetaProperty(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateMetaProperty( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Misc [236 /* TemplateSpan */]: function visitEachChildOfTemplateSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateSpan( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Element @@ -84297,21 +85457,21 @@ ${lanes.join("\n")} [240 /* VariableStatement */]: function visitEachChildOfVariableStatement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVariableStatement( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.declarationList, visitor, isVariableDeclarationList) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.declarationList, visitor, isVariableDeclarationList)) ); }, [241 /* ExpressionStatement */]: function visitEachChildOfExpressionStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [242 /* IfStatement */]: function visitEachChildOfIfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIfStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock)), nodeVisitor(node.elseStatement, visitor, isStatement, context.factory.liftToBlock) ); }, @@ -84319,13 +85479,13 @@ ${lanes.join("\n")} return context.factory.updateDoStatement( node, visitIterationBody(node.statement, visitor, context, nodeVisitor), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [244 /* WhileStatement */]: function visitEachChildOfWhileStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWhileStatement( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -84341,17 +85501,17 @@ ${lanes.join("\n")} [246 /* ForInStatement */]: function visitEachChildOfForInStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateForInStatement( node, - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, [247 /* ForOfStatement */]: function visitEachChildOfForOfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateForOfStatement( node, - nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword), - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + tokenVisitor ? nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword) : node.awaitModifier, + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -84376,34 +85536,34 @@ ${lanes.join("\n")} [251 /* WithStatement */]: function visitEachChildOfWithStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWithStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [252 /* SwitchStatement */]: function visitEachChildOfSwitchStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSwitchStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.caseBlock, visitor, isCaseBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.caseBlock, visitor, isCaseBlock)) ); }, [253 /* LabeledStatement */]: function visitEachChildOfLabeledStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLabeledStatement( node, - nodeVisitor(node.label, visitor, isIdentifier), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.label, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [254 /* ThrowStatement */]: function visitEachChildOfThrowStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateThrowStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [255 /* TryStatement */]: function visitEachChildOfTryStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTryStatement( node, - nodeVisitor(node.tryBlock, visitor, isBlock), + Debug.checkDefined(nodeVisitor(node.tryBlock, visitor, isBlock)), nodeVisitor(node.catchClause, visitor, isCatchClause), nodeVisitor(node.finallyBlock, visitor, isBlock) ); @@ -84411,8 +85571,8 @@ ${lanes.join("\n")} [257 /* VariableDeclaration */]: function visitEachChildOfVariableDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateVariableDeclaration( node, - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken) : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -84427,7 +85587,7 @@ ${lanes.join("\n")} return context.factory.updateFunctionDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -84448,8 +85608,8 @@ ${lanes.join("\n")} [261 /* InterfaceDeclaration */]: function visitEachChildOfInterfaceDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInterfaceDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), nodesVisitor(node.heritageClauses, visitor, isHeritageClause), nodesVisitor(node.members, visitor, isTypeElement) @@ -84458,25 +85618,25 @@ ${lanes.join("\n")} [262 /* TypeAliasDeclaration */]: function visitEachChildOfTypeAliasDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAliasDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [263 /* EnumDeclaration */]: function visitEachChildOfEnumDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.members, visitor, isEnumMember) ); }, [264 /* ModuleDeclaration */]: function visitEachChildOfModuleDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateModuleDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isModuleName), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isModuleName)), nodeVisitor(node.body, visitor, isModuleBody) ); }, @@ -84495,24 +85655,24 @@ ${lanes.join("\n")} [267 /* NamespaceExportDeclaration */]: function visitEachChildOfNamespaceExportDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExportDeclaration( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [268 /* ImportEqualsDeclaration */]: function visitEachChildOfImportEqualsDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportEqualsDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.moduleReference, visitor, isModuleReference) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.moduleReference, visitor, isModuleReference)) ); }, [269 /* ImportDeclaration */]: function visitEachChildOfImportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), nodeVisitor(node.importClause, visitor, isImportClause), - nodeVisitor(node.moduleSpecifier, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.moduleSpecifier, visitor, isExpression)), nodeVisitor(node.assertClause, visitor, isAssertClause) ); }, @@ -84526,8 +85686,8 @@ ${lanes.join("\n")} [297 /* AssertEntry */]: function visitEachChildOfAssertEntry(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAssertEntry( node, - nodeVisitor(node.name, visitor, isAssertionKey), - nodeVisitor(node.value, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isAssertionKey)), + Debug.checkDefined(nodeVisitor(node.value, visitor, isExpression)) ); }, [270 /* ImportClause */]: function visitEachChildOfImportClause(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -84541,13 +85701,13 @@ ${lanes.join("\n")} [271 /* NamespaceImport */]: function visitEachChildOfNamespaceImport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceImport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [277 /* NamespaceExport */]: function visitEachChildOfNamespaceExport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [272 /* NamedImports */]: function visitEachChildOfNamedImports(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -84561,20 +85721,20 @@ ${lanes.join("\n")} node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [274 /* ExportAssignment */]: function visitEachChildOfExportAssignment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportAssignment( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.expression, visitor, isExpression) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [275 /* ExportDeclaration */]: function visitEachChildOfExportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, nodeVisitor(node.exportClause, visitor, isNamedExportBindings), nodeVisitor(node.moduleSpecifier, visitor, isExpression), @@ -84592,59 +85752,59 @@ ${lanes.join("\n")} node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Module references [280 /* ExternalModuleReference */]: function visitEachChildOfExternalModuleReference(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExternalModuleReference( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // JSX [281 /* JsxElement */]: function visitEachChildOfJsxElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxElement( node, - nodeVisitor(node.openingElement, visitor, isJsxOpeningElement), + Debug.checkDefined(nodeVisitor(node.openingElement, visitor, isJsxOpeningElement)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingElement, visitor, isJsxClosingElement) + Debug.checkDefined(nodeVisitor(node.closingElement, visitor, isJsxClosingElement)) ); }, [282 /* JsxSelfClosingElement */]: function visitEachChildOfJsxSelfClosingElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSelfClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [283 /* JsxOpeningElement */]: function visitEachChildOfJsxOpeningElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxOpeningElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [284 /* JsxClosingElement */]: function visitEachChildOfJsxClosingElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression) + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)) ); }, [285 /* JsxFragment */]: function visitEachChildOfJsxFragment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxFragment( node, - nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment), + Debug.checkDefined(nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment) + Debug.checkDefined(nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment)) ); }, [288 /* JsxAttribute */]: function visitEachChildOfJsxAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxAttribute( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.initializer, visitor, isStringLiteralOrJsxExpression) ); }, @@ -84657,20 +85817,20 @@ ${lanes.join("\n")} [290 /* JsxSpreadAttribute */]: function visitEachChildOfJsxSpreadAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSpreadAttribute( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [291 /* JsxExpression */]: function visitEachChildOfJsxExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Clauses [292 /* CaseClause */]: function visitEachChildOfCaseClause(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateCaseClause( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.statements, visitor, isStatement) ); }, @@ -84690,35 +85850,35 @@ ${lanes.join("\n")} return context.factory.updateCatchClause( node, nodeVisitor(node.variableDeclaration, visitor, isVariableDeclaration), - nodeVisitor(node.block, visitor, isBlock) + Debug.checkDefined(nodeVisitor(node.block, visitor, isBlock)) ); }, // Property assignments [299 /* PropertyAssignment */]: function visitEachChildOfPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePropertyAssignment( node, - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.initializer, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isExpression)) ); }, [300 /* ShorthandPropertyAssignment */]: function visitEachChildOfShorthandPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateShorthandPropertyAssignment( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.objectAssignmentInitializer, visitor, isExpression) ); }, [301 /* SpreadAssignment */]: function visitEachChildOfSpreadAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadAssignment( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Enum [302 /* EnumMember */]: function visitEachChildOfEnumMember(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumMember( node, - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -84730,13 +85890,13 @@ ${lanes.join("\n")} ); }, // Transformation nodes - [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [356 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [357 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -85622,10 +86782,13 @@ ${lanes.join("\n")} parameters }; } - function getAllDecoratorsOfClassElement(member, parent2) { + function getAllDecoratorsOfClassElement(member, parent2, useLegacyDecorators) { switch (member.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: + if (!useLegacyDecorators) { + return getAllDecoratorsOfMethod(member); + } return getAllDecoratorsOfAccessors(member, parent2); case 171 /* MethodDeclaration */: return getAllDecoratorsOfMethod(member); @@ -85674,6 +86837,34 @@ ${lanes.join("\n")} } return { decorators }; } + function walkUpLexicalEnvironments(env, cb) { + while (env) { + const result = cb(env); + if (result !== void 0) + return result; + env = env.previous; + } + } + function newPrivateEnvironment(data) { + return { data }; + } + function getPrivateIdentifier(privateEnv, name) { + var _a2, _b; + return isGeneratedPrivateIdentifier(name) ? (_a2 = privateEnv == null ? void 0 : privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(getNodeForGeneratedName(name)) : (_b = privateEnv == null ? void 0 : privateEnv.identifiers) == null ? void 0 : _b.get(name.escapedText); + } + function setPrivateIdentifier(privateEnv, name, entry) { + var _a2, _b; + if (isGeneratedPrivateIdentifier(name)) { + (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); + privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), entry); + } else { + (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); + privateEnv.identifiers.set(name.escapedText, entry); + } + } + function accessPrivateIdentifier(env, name) { + return walkUpLexicalEnvironments(env, (env2) => getPrivateIdentifier(env2.privateEnv, name)); + } var init_utilities3 = __esm({ "src/compiler/transformers/utilities.ts"() { "use strict"; @@ -85692,7 +86883,7 @@ ${lanes.join("\n")} location = node = value; value = node.right; } else { - return visitNode(value, visitor, isExpression); + return Debug.checkDefined(visitNode(value, visitor, isExpression)); } } } @@ -85711,6 +86902,7 @@ ${lanes.join("\n")} }; if (value) { value = visitNode(value, visitor, isExpression); + Debug.assert(value); if (isIdentifier(value) && bindingOrAssignmentElementAssignsToName(node, value.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node)) { value = ensureIdentifier( flattenContext, @@ -85752,7 +86944,7 @@ ${lanes.join("\n")} function emitBindingOrAssignment(target, value2, location2, original) { Debug.assertNode(target, createAssignmentCallback ? isIdentifier : isExpression); const expression = createAssignmentCallback ? createAssignmentCallback(target, value2, location2) : setTextRange( - context.factory.createAssignment(visitNode(target, visitor, isExpression), value2), + context.factory.createAssignment(Debug.checkDefined(visitNode(target, visitor, isExpression)), value2), location2 ); expression.original = original; @@ -85809,7 +87001,7 @@ ${lanes.join("\n")} if (initializer && (isIdentifier(initializer) && bindingOrAssignmentElementAssignsToName(node, initializer.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node))) { initializer = ensureIdentifier( flattenContext, - visitNode(initializer, flattenContext.visitor), + Debug.checkDefined(visitNode(initializer, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, initializer @@ -85930,7 +87122,7 @@ ${lanes.join("\n")} if (!getRestIndicatorOfBindingOrAssignmentElement(element)) { const propertyName = getPropertyNameOfBindingOrAssignmentElement(element); if (flattenContext.level >= 1 /* ObjectRest */ && !(element.transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !(getTargetOfBindingOrAssignmentElement(element).transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !isComputedPropertyName(propertyName)) { - bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor)); + bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor, isBindingOrAssignmentElement)); } else { if (bindingElements) { flattenContext.emitBindingOrAssignment(flattenContext.createObjectBindingOrAssignmentPattern(bindingElements), value, location, pattern); @@ -86068,7 +87260,7 @@ ${lanes.join("\n")} if (isComputedPropertyName(propertyName)) { const argumentExpression = ensureIdentifier( flattenContext, - visitNode(propertyName.expression, flattenContext.visitor), + Debug.checkDefined(visitNode(propertyName.expression, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, /*location*/ @@ -86111,6 +87303,7 @@ ${lanes.join("\n")} return factory2.createArrayBindingPattern(elements); } function makeArrayAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isArrayBindingOrAssignmentElement); return factory2.createArrayLiteralExpression(map(elements, factory2.converters.convertToArrayAssignmentElement)); } function makeObjectBindingPattern(factory2, elements) { @@ -86118,6 +87311,7 @@ ${lanes.join("\n")} return factory2.createObjectBindingPattern(elements); } function makeObjectAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isObjectBindingOrAssignmentElement); return factory2.createObjectLiteralExpression(map(elements, factory2.converters.convertToObjectAssignmentElement)); } function makeBindingElement(factory2, name) { @@ -86148,6 +87342,7 @@ ${lanes.join("\n")} // src/compiler/transformers/taggedTemplate.ts function processTaggedTemplateExpression(context, node, visitor, currentSourceFile, recordTaggedTemplateString, level) { const tag = visitNode(node.tag, visitor, isExpression); + Debug.assert(tag); const templateArguments = [void 0]; const cookedStrings = []; const rawStrings = []; @@ -86164,7 +87359,7 @@ ${lanes.join("\n")} for (const templateSpan of template.templateSpans) { cookedStrings.push(createTemplateCooked(templateSpan.literal)); rawStrings.push(getRawLiteral(templateSpan.literal, currentSourceFile)); - templateArguments.push(visitNode(templateSpan.expression, visitor, isExpression)); + templateArguments.push(Debug.checkDefined(visitNode(templateSpan.expression, visitor, isExpression))); } } const helperCall = context.getEmitHelperFactory().createTemplateObjectHelper( @@ -86235,6 +87430,7 @@ ${lanes.join("\n")} const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const typeSerializer = compilerOptions.emitDecoratorMetadata ? createRuntimeTypeSerializer(context) : void 0; const previousOnEmitNode = context.onEmitNode; const previousOnSubstituteNode = context.onSubstituteNode; @@ -86409,6 +87605,12 @@ ${lanes.join("\n")} return Debug.failBadSyntaxKind(node); } } + function decoratorElidingVisitor(node) { + return isDecorator(node) ? void 0 : visitor(node); + } + function modifierElidingVisitor(node) { + return isModifier(node) ? void 0 : visitor(node); + } function modifierVisitor(node) { if (isDecorator(node)) return void 0; @@ -86548,19 +87750,25 @@ ${lanes.join("\n")} function visitObjectLiteralExpression(node) { return factory2.updateObjectLiteralExpression( node, - visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElement) + visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElementLike) ); } - function getClassFacts(node, staticProperties) { + function getClassFacts(node) { let facts = 0 /* None */; - if (some(staticProperties)) + if (some(getProperties( + node, + /*requireInitialized*/ + true, + /*isStatic*/ + true + ))) facts |= 1 /* HasStaticInitializedProperties */; const extendsClauseElement = getEffectiveBaseTypeNode(node); if (extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */) facts |= 64 /* IsDerivedClass */; - if (classOrConstructorParameterIsDecorated(node)) - facts |= 2 /* HasConstructorDecorators */; - if (childIsDecorated(node)) + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) + facts |= 2 /* HasClassOrConstructorParameterDecorators */; + if (childIsDecorated(legacyDecorators, node)) facts |= 4 /* HasMemberDecorators */; if (isExportOfNamespace(node)) facts |= 8 /* IsExportOfNamespace */; @@ -86568,8 +87776,6 @@ ${lanes.join("\n")} facts |= 32 /* IsDefaultExternalExport */; else if (isNamedExternalModuleExport(node)) facts |= 16 /* IsNamedExternalExport */; - if (languageVersion <= 1 /* ES5 */ && facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */) - facts |= 128 /* UseImmediatelyInvokedFunctionExpression */; return facts; } function hasTypeScriptClassSyntax(node) { @@ -86579,7 +87785,10 @@ ${lanes.join("\n")} return hasDecorators(node) || some(node.typeParameters) || some(node.heritageClauses, hasTypeScriptClassSyntax) || some(node.members, hasTypeScriptClassSyntax); } function visitClassDeclaration(node) { - if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !(currentNamespace && hasSyntacticModifier(node, 1 /* Export */))) { + var _a2; + const facts = getClassFacts(node); + const promoteToIIFE = languageVersion <= 1 /* ES5 */ && !!(facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */); + if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !classOrConstructorParameterIsDecorated(legacyDecorators, node) && !isExportOfNamespace(node)) { return factory2.updateClassDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), @@ -86590,24 +87799,19 @@ ${lanes.join("\n")} visitNodes2(node.members, getClassElementVisitor(node), isClassElement) ); } - const staticProperties = getProperties( - node, - /*requireInitializer*/ - true, - /*isStatic*/ - true - ); - const facts = getClassFacts(node, staticProperties); - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + if (promoteToIIFE) { context.startLexicalEnvironment(); } - const name = node.name || (facts & 5 /* NeedsName */ ? factory2.getGeneratedNameForNode(node) : void 0); - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); - const modifiers = !(facts & 128 /* UseImmediatelyInvokedFunctionExpression */) ? visitNodes2(node.modifiers, modifierVisitor, isModifier) : elideNodes(factory2, node.modifiers); - const classStatement = factory2.updateClassDeclaration( + const moveModifiers = promoteToIIFE || facts & 8 /* IsExportOfNamespace */ || facts & 2 /* HasClassOrConstructorParameterDecorators */ && legacyDecorators || facts & 1 /* HasStaticInitializedProperties */; + let modifiers = moveModifiers ? visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, visitor, isModifierLike); + if (facts & 2 /* HasClassOrConstructorParameterDecorators */) { + modifiers = injectClassTypeMetadata(modifiers, node); + } + const needsName = moveModifiers && !node.name || facts & 4 /* HasMemberDecorators */ || facts & 1 /* HasStaticInitializedProperties */; + const name = needsName ? (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node) : node.name; + const classDeclaration = factory2.updateClassDeclaration( node, - concatenate(decorators, modifiers), + modifiers, name, /*typeParameters*/ void 0, @@ -86618,24 +87822,25 @@ ${lanes.join("\n")} if (facts & 1 /* HasStaticInitializedProperties */) { emitFlags |= 64 /* NoTrailingSourceMap */; } - setEmitFlags(classStatement, emitFlags); - let statements = [classStatement]; - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + setEmitFlags(classDeclaration, emitFlags); + let statement; + if (promoteToIIFE) { + const statements = [classDeclaration]; const closingBraceLocation = createTokenRange(skipTrivia(currentSourceFile.text, node.members.end), 19 /* CloseBraceToken */); const localName = factory2.getInternalName(node); const outer = factory2.createPartiallyEmittedExpression(localName); setTextRangeEnd(outer, closingBraceLocation.end); setEmitFlags(outer, 3072 /* NoComments */); - const statement = factory2.createReturnStatement(outer); - setTextRangePos(statement, closingBraceLocation.pos); - setEmitFlags(statement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); - statements.push(statement); + const returnStatement = factory2.createReturnStatement(outer); + setTextRangePos(returnStatement, closingBraceLocation.pos); + setEmitFlags(returnStatement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); + statements.push(returnStatement); insertStatementsAfterStandardPrologue(statements, context.endLexicalEnvironment()); const iife = factory2.createImmediatelyInvokedArrowFunction(statements); - setEmitFlags(iife, 67108864 /* TypeScriptClassWrapper */); + setInternalEmitFlags(iife, 1 /* TypeScriptClassWrapper */); + const modifiers2 = facts & 16 /* IsNamedExternalExport */ ? factory2.createModifiersFromModifierFlags(1 /* Export */) : void 0; const varStatement = factory2.createVariableStatement( - /*modifiers*/ - void 0, + modifiers2, factory2.createVariableDeclarationList([ factory2.createVariableDeclaration( factory2.getLocalName( @@ -86651,114 +87856,133 @@ ${lanes.join("\n")} void 0, iife ) - ]) + ], 1 /* Let */) ); setOriginalNode(varStatement, node); setCommentRange(varStatement, node); setSourceMapRange(varStatement, moveRangePastDecorators(node)); startOnNewLine(varStatement); - statements = [varStatement]; + statement = varStatement; + } else { + statement = classDeclaration; } - if (facts & 8 /* IsExportOfNamespace */) { - addExportMemberAssignment(statements, node); - } else if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */ || facts & 2 /* HasConstructorDecorators */) { + if (moveModifiers) { + if (facts & 8 /* IsExportOfNamespace */) { + return demarcateMultiStatementExport( + statement, + createExportMemberAssignmentStatement(node) + ); + } if (facts & 32 /* IsDefaultExternalExport */) { - statements.push(factory2.createExportDefault(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); - } else if (facts & 16 /* IsNamedExternalExport */) { - statements.push(factory2.createExternalModuleExport(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); + return demarcateMultiStatementExport( + statement, + factory2.createExportDefault(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); + } + if (facts & 16 /* IsNamedExternalExport */ && !promoteToIIFE) { + return demarcateMultiStatementExport( + statement, + factory2.createExternalModuleExport(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); } } - if (statements.length > 1) { - statements.push(factory2.createEndOfDeclarationMarker(node)); - setEmitFlags(classStatement, getEmitFlags(classStatement) | 8388608 /* HasEndOfDeclarationMarker */); - } - return singleOrMany(statements); + return statement; + } + function demarcateMultiStatementExport(declarationStatement, exportStatement) { + addEmitFlags(declarationStatement, 8388608 /* HasEndOfDeclarationMarker */); + return [ + declarationStatement, + exportStatement, + factory2.createEndOfDeclarationMarker(declarationStatement) + ]; } function visitClassExpression(node) { - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); + let modifiers = visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike); + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) { + modifiers = injectClassTypeMetadata(modifiers, node); + } return factory2.updateClassExpression( node, - decorators, + modifiers, node.name, /*typeParameters*/ void 0, visitNodes2(node.heritageClauses, visitor, isHeritageClause), - isClassLikeDeclarationWithTypeScriptSyntax(node) ? transformClassMembers(node) : visitNodes2(node.members, getClassElementVisitor(node), isClassElement) + transformClassMembers(node) ); } function transformClassMembers(node) { - const members = []; + const members = visitNodes2(node.members, getClassElementVisitor(node), isClassElement); + let newMembers; const constructor = getFirstConstructorWithBody(node); const parametersWithPropertyAssignments = constructor && filter(constructor.parameters, (p) => isParameterPropertyDeclaration(p, constructor)); if (parametersWithPropertyAssignments) { for (const parameter of parametersWithPropertyAssignments) { - if (isIdentifier(parameter.name)) { - members.push(setOriginalNode(factory2.createPropertyDeclaration( - /*modifiers*/ - void 0, - parameter.name, - /*questionOrExclamationToken*/ - void 0, - /*type*/ - void 0, - /*initializer*/ - void 0 - ), parameter)); - } + const parameterProperty = factory2.createPropertyDeclaration( + /*modifiers*/ + void 0, + parameter.name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + /*initializer*/ + void 0 + ); + setOriginalNode(parameterProperty, parameter); + newMembers = append(newMembers, parameterProperty); } } - addRange(members, visitNodes2(node.members, getClassElementVisitor(node), isClassElement)); - return setTextRange( - factory2.createNodeArray(members), - /*location*/ - node.members - ); - } - function transformAllDecoratorsOfDeclaration(node, container, allDecorators) { - var _a2, _b, _c, _d; - if (!allDecorators) { - return void 0; + if (newMembers) { + newMembers = addRange(newMembers, members); + return setTextRange( + factory2.createNodeArray(newMembers), + /*location*/ + node.members + ); } - const decorators = visitArray(allDecorators.decorators, visitor, isDecorator); - const parameterDecorators = flatMap(allDecorators.parameters, transformDecoratorsOfParameter); - const metadataDecorators = some(decorators) || some(parameterDecorators) ? getTypeMetadata(node, container) : void 0; - const result = factory2.createNodeArray(concatenate(concatenate(decorators, parameterDecorators), metadataDecorators)); - const pos = (_b = (_a2 = firstOrUndefined(allDecorators.decorators)) == null ? void 0 : _a2.pos) != null ? _b : -1; - const end = (_d = (_c = lastOrUndefined(allDecorators.decorators)) == null ? void 0 : _c.end) != null ? _d : -1; - setTextRangePosEnd(result, pos, end); - return result; + return members; } - function transformDecoratorsOfParameter(parameterDecorators, parameterOffset) { - if (parameterDecorators) { - const decorators = []; - for (const parameterDecorator of parameterDecorators) { - const expression = visitNode(parameterDecorator.expression, visitor, isExpression); - const helper = emitHelpers().createParamHelper(expression, parameterOffset); - setTextRange(helper, parameterDecorator.expression); - setEmitFlags(helper, 3072 /* NoComments */); - const decorator = factory2.createDecorator(helper); - setSourceMapRange(decorator, parameterDecorator.expression); - setCommentRange(decorator, parameterDecorator.expression); - setEmitFlags(decorator, 3072 /* NoComments */); - decorators.push(decorator); + function injectClassTypeMetadata(modifiers, node) { + const metadata = getTypeMetadata(node, node); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, takeWhile(modifiers, isExportOrDefaultModifier)); + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(skipWhile(modifiers, isExportOrDefaultModifier), isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); + } + return modifiers; + } + function injectClassElementTypeMetadata(modifiers, node, container) { + if (isClassLike(container) && classElementOrClassElementParameterIsDecorated(legacyDecorators, node, container)) { + const metadata = getTypeMetadata(node, container); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(modifiers, isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); } - return decorators; } + return modifiers; } function getTypeMetadata(node, container) { + if (!legacyDecorators) + return void 0; return USE_NEW_TYPE_METADATA_FORMAT ? getNewTypeMetadata(node, container) : getOldTypeMetadata(node, container); } function getOldTypeMetadata(node, container) { @@ -86867,8 +88091,9 @@ ${lanes.join("\n")} } function visitPropertyNameOfClassElement(member) { const name = member.name; - if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member))) { + if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member) && legacyDecorators)) { const expression = visitNode(name.expression, visitor, isExpression); + Debug.assert(expression); const innerExpression = skipPartiallyEmittedExpressions(expression); if (!isSimpleInlineableExpression(innerExpression)) { const generatedName = factory2.getGeneratedNameForNode(name); @@ -86876,7 +88101,7 @@ ${lanes.join("\n")} return factory2.updateComputedPropertyName(name, factory2.createAssignment(generatedName, expression)); } } - return visitNode(name, visitor, isPropertyName); + return Debug.checkDefined(visitNode(name, visitor, isPropertyName)); } function visitHeritageClause(node) { if (node.token === 117 /* ImplementsKeyword */) { @@ -86887,7 +88112,7 @@ ${lanes.join("\n")} function visitExpressionWithTypeArguments(node) { return factory2.updateExpressionWithTypeArguments( node, - visitNode(node.expression, visitor, isLeftHandSideExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression)), /*typeArguments*/ void 0 ); @@ -86897,16 +88122,16 @@ ${lanes.join("\n")} } function visitPropertyDeclaration(node, parent2) { const isAmbient = node.flags & 16777216 /* Ambient */ || hasSyntacticModifier(node, 256 /* Abstract */); - if (isAmbient && !hasDecorators(node)) { + if (isAmbient && !(legacyDecorators && hasDecorators(node))) { return void 0; } - const allDecorators = getAllDecoratorsOfClassElement(node, parent2); - const decorators = transformAllDecoratorsOfDeclaration(node, parent2, allDecorators); + let modifiers = isClassLike(parent2) ? !isAmbient ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); if (isAmbient) { return factory2.updatePropertyDeclaration( node, - concatenate(decorators, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), - visitNode(node.name, visitor, isPropertyName), + concatenate(modifiers, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -86917,13 +88142,13 @@ ${lanes.join("\n")} } return factory2.updatePropertyDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), /*questionOrExclamationToken*/ void 0, /*type*/ void 0, - visitNode(node.initializer, visitor) + visitNode(node.initializer, visitor, isExpression) ); } function visitConstructor(node) { @@ -87024,11 +88249,11 @@ ${lanes.join("\n")} if (!shouldEmitFunctionLikeDeclaration(node)) { return void 0; } - const allDecorators = isClassLike(parent2) ? getAllDecoratorsOfClassElement(node, parent2) : void 0; - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, allDecorators) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateMethodDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, node.asteriskToken, visitPropertyNameOfClassElement(node), /*questionToken*/ @@ -87051,10 +88276,11 @@ ${lanes.join("\n")} if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateGetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), /*type*/ @@ -87069,10 +88295,11 @@ ${lanes.join("\n")} if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateSetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), visitFunctionBody(node.body, visitor, context) || factory2.createBlock([]) @@ -87139,10 +88366,9 @@ ${lanes.join("\n")} } const updated = factory2.updateParameterDeclaration( node, - elideNodes(factory2, node.modifiers), - // preserve positions, if available + visitNodes2(node.modifiers, (node2) => isDecorator(node2) ? visitor(node2) : void 0, isModifierLike), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -87191,7 +88417,7 @@ ${lanes.join("\n")} return setTextRange( factory2.createAssignment( getNamespaceMemberNameWithSourceMapsAndWithoutComments(name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), /*location*/ node @@ -87201,7 +88427,7 @@ ${lanes.join("\n")} function visitVariableDeclaration(node) { const updated = factory2.updateVariableDeclaration( node, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*exclamationToken*/ void 0, /*type*/ @@ -87217,26 +88443,30 @@ ${lanes.join("\n")} const innerExpression = skipOuterExpressions(node.expression, ~6 /* Assertions */); if (isAssertionExpression(innerExpression)) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } return visitEachChild(node, visitor, context); } function visitAssertionExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitNonNullExpression(node) { const expression = visitNode(node.expression, visitor, isLeftHandSideExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitSatisfiesExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitCallExpression(node) { return factory2.updateCallExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -87245,7 +88475,7 @@ ${lanes.join("\n")} function visitNewExpression(node) { return factory2.updateNewExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -87254,28 +88484,28 @@ ${lanes.join("\n")} function visitTaggedTemplateExpression(node) { return factory2.updateTaggedTemplateExpression( node, - visitNode(node.tag, visitor, isExpression), + Debug.checkDefined(visitNode(node.tag, visitor, isExpression)), /*typeArguments*/ void 0, - visitNode(node.template, visitor, isExpression) + Debug.checkDefined(visitNode(node.template, visitor, isTemplateLiteral)) ); } function visitJsxSelfClosingElement(node) { return factory2.updateJsxSelfClosingElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function visitJsxJsxOpeningElement(node) { return factory2.updateJsxOpeningElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function shouldEmitEnumDeclaration(node) { @@ -87421,7 +88651,7 @@ ${lanes.join("\n")} } else { enableSubstitutionForNonQualifiedEnumMembers(); if (member.initializer) { - return visitNode(member.initializer, visitor, isExpression); + return Debug.checkDefined(visitNode(member.initializer, visitor, isExpression)); } else { return factory2.createVoidZero(); } @@ -87663,7 +88893,7 @@ ${lanes.join("\n")} if (node.kind === 271 /* NamespaceImport */) { return shouldEmitAliasDeclaration(node) ? node : void 0; } else { - const allowEmpty = compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const elements = visitNodes2(node.elements, visitImportSpecifier, isImportSpecifier); return allowEmpty || some(elements) ? factory2.updateNamedImports(node, elements) : void 0; } @@ -87672,7 +88902,7 @@ ${lanes.join("\n")} return !node.isTypeOnly && shouldEmitAliasDeclaration(node) ? node : void 0; } function visitExportAssignment(node) { - return resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; + return compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; } function visitExportDeclaration(node) { if (node.isTypeOnly) { @@ -87681,7 +88911,7 @@ ${lanes.join("\n")} if (!node.exportClause || isNamespaceExport(node.exportClause)) { return node; } - const allowEmpty = !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const exportClause = visitNode( node.exportClause, (bindings) => visitNamedExportBindings(bindings, allowEmpty), @@ -87702,13 +88932,13 @@ ${lanes.join("\n")} return allowEmpty || some(elements) ? factory2.updateNamedExports(node, elements) : void 0; } function visitNamespaceExports(node) { - return factory2.updateNamespaceExport(node, visitNode(node.name, visitor, isIdentifier)); + return factory2.updateNamespaceExport(node, Debug.checkDefined(visitNode(node.name, visitor, isIdentifier))); } function visitNamedExportBindings(node, allowEmpty) { return isNamespaceExport(node) ? visitNamespaceExports(node) : visitNamedExports(node, allowEmpty); } function visitExportSpecifier(node) { - return !node.isTypeOnly && resolver.isValueAliasDeclaration(node) ? node : void 0; + return !node.isTypeOnly && (compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node)) ? node : void 0; } function shouldEmitImportEqualsDeclaration(node) { return shouldEmitAliasDeclaration(node) || !isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node); @@ -87768,7 +88998,7 @@ ${lanes.join("\n")} ); } else { return setOriginalNode( - createNamespaceExport2( + createNamespaceExport( node.name, moduleReference, node @@ -87789,7 +89019,7 @@ ${lanes.join("\n")} function isDefaultExternalModuleExport(node) { return isExternalModuleExport(node) && hasSyntacticModifier(node, 1024 /* Default */); } - function addExportMemberAssignment(statements, node) { + function createExportMemberAssignmentStatement(node) { const expression = factory2.createAssignment( factory2.getExternalModuleOrNamespaceExportName( currentNamespaceContainerName, @@ -87804,9 +89034,12 @@ ${lanes.join("\n")} setSourceMapRange(expression, createRange(node.name ? node.name.pos : node.pos, node.end)); const statement = factory2.createExpressionStatement(expression); setSourceMapRange(statement, createRange(-1, node.end)); - statements.push(statement); + return statement; } - function createNamespaceExport2(exportName, exportValue, location) { + function addExportMemberAssignment(statements, node) { + statements.push(createExportMemberAssignmentStatement(node)); + } + function createNamespaceExport(exportName, exportValue, location) { return setTextRange( factory2.createExpressionStatement( factory2.createAssignment( @@ -87967,7 +89200,7 @@ ${lanes.join("\n")} return isPropertyAccessExpression(node) || isElementAccessExpression(node) ? resolver.getConstantValue(node) : void 0; } function shouldEmitAliasDeclaration(node) { - return isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); + return compilerOptions.verbatimModuleSyntax || isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); } } var USE_NEW_TYPE_METADATA_FORMAT; @@ -87983,6 +89216,7 @@ ${lanes.join("\n")} function transformClassFields(context) { const { factory: factory2, + getEmitHelperFactory: emitHelpers, hoistVariableDeclaration, endLexicalEnvironment, startLexicalEnvironment, @@ -87993,6 +89227,7 @@ ${lanes.join("\n")} const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const shouldTransformInitializersUsingSet = !useDefineForClassFields; const shouldTransformInitializersUsingDefine = useDefineForClassFields && languageVersion < 9 /* ES2022 */; const shouldTransformInitializers = shouldTransformInitializersUsingSet || shouldTransformInitializersUsingDefine; @@ -88005,42 +89240,69 @@ ${lanes.join("\n")} context.onSubstituteNode = onSubstituteNode; const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; + let shouldTransformPrivateStaticElementsInFile = false; let enabledSubstitutions; let classAliases; let pendingExpressions; let pendingStatements; - const classLexicalEnvironmentStack = []; - const classLexicalEnvironmentMap = /* @__PURE__ */ new Map(); - let currentClassLexicalEnvironment; + let lexicalEnvironment; + const lexicalEnvironmentMap = /* @__PURE__ */ new Map(); let currentClassContainer; - let currentComputedPropertyNameClassLexicalEnvironment; let currentStaticPropertyDeclarationOrStaticBlock; + let shouldSubstituteThisWithClassThis = false; + let previousShouldSubstituteThisWithClassThis = false; return chainBundle(context, transformSourceFile); function transformSourceFile(node) { - if (node.isDeclarationFile || !shouldTransformAnything) { + if (node.isDeclarationFile) { + return node; + } + lexicalEnvironment = void 0; + shouldTransformPrivateStaticElementsInFile = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (!shouldTransformAnything && !shouldTransformPrivateStaticElementsInFile) { return node; } const visited = visitEachChild(node, visitor, context); addEmitHelpers(visited, context.readEmitHelpers()); return visited; } + function modifierVisitor(node) { + switch (node.kind) { + case 127 /* AccessorKeyword */: + return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + default: + return tryCast(node, isModifier); + } + } function visitor(node) { if (!(node.transformFlags & 16777216 /* ContainsClassFields */) && !(node.transformFlags & 134234112 /* ContainsLexicalThisOrSuper */)) { return node; } switch (node.kind) { case 127 /* AccessorKeyword */: - return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + return Debug.fail("Use `modifierVisitor` instead."); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); case 228 /* ClassExpression */: - return visitClassExpression(node); + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); case 172 /* ClassStaticBlockDeclaration */: - return visitClassStaticBlockDeclaration(node); case 169 /* PropertyDeclaration */: - return visitPropertyDeclaration(node); + return Debug.fail("Use `classElementVisitor` instead."); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); case 240 /* VariableStatement */: return visitVariableStatement(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); case 80 /* PrivateIdentifier */: return visitPrivateIdentifier(node); case 208 /* PropertyAccessExpression */: @@ -88051,15 +89313,23 @@ ${lanes.join("\n")} case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); case 210 /* CallExpression */: return visitCallExpression(node); case 241 /* ExpressionStatement */: @@ -88088,21 +89358,57 @@ ${lanes.join("\n")} function fallbackVisitor(node) { return visitEachChild(node, visitor, context); } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } function discardedValueVisitor(node) { switch (node.kind) { case 221 /* PrefixUnaryExpression */: case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); default: return visitor(node); } @@ -88146,10 +89452,20 @@ ${lanes.join("\n")} visitPropertyDeclaration, node ); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); case 164 /* ComputedPropertyName */: return visitComputedPropertyName(node); case 237 /* SemicolonClassElement */: return node; + default: + return isModifierLike(node) ? modifierVisitor(node) : visitor(node); + } + } + function propertyNameVisitor(node) { + switch (node.kind) { + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); default: return visitor(node); } @@ -88175,20 +89491,25 @@ ${lanes.join("\n")} } return setOriginalNode(factory2.createIdentifier(""), node); } - function isPrivateIdentifierInExpression(node) { - return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; - } function transformPrivateIdentifierInInExpression(node) { - const info = accessPrivateIdentifier(node.left); + const info = accessPrivateIdentifier2(node.left); if (info) { const receiver = visitNode(node.right, visitor, isExpression); return setOriginalNode( - context.getEmitHelperFactory().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), + emitHelpers().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), node ); } return visitEachChild(node, visitor, context); } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } function visitVariableStatement(node) { const savedPendingStatements = pendingStatements; pendingStatements = []; @@ -88197,17 +89518,90 @@ ${lanes.join("\n")} pendingStatements = savedPendingStatements; return statement; } - function visitComputedPropertyName(node) { - let expression = visitNode(node.expression, visitor, isExpression); + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function injectPendingExpressions(expression) { if (some(pendingExpressions)) { if (isParenthesizedExpression(expression)) { - expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions([...pendingExpressions, expression.expression])); + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); } else { - expression = factory2.inlineExpressions([...pendingExpressions, expression]); + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); } pendingExpressions = void 0; } - return factory2.updateComputedPropertyName(node, expression); + return expression; + } + function visitComputedPropertyName(node) { + const expression = visitNode(node.expression, visitor, isExpression); + return factory2.updateComputedPropertyName(node, injectPendingExpressions(expression)); } function visitConstructorDeclaration(node) { if (currentClassContainer) { @@ -88215,12 +89609,19 @@ ${lanes.join("\n")} } return fallbackVisitor(node); } + function shouldTransformClassElementToWeakMap(node) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) + return true; + if (hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) + return true; + return false; + } function visitMethodOrAccessorDeclaration(node) { Debug.assert(!hasDecorators(node)); - if (!shouldTransformPrivateElementsOrClassStaticBlocks || !isPrivateIdentifier(node.name)) { + if (!isPrivateIdentifierClassElementDeclaration(node) || !shouldTransformClassElementToWeakMap(node)) { return visitEachChild(node, classElementVisitor, context); } - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (!info.isValid) { return node; @@ -88255,7 +89656,7 @@ ${lanes.join("\n")} } function getHoistedFunctionName(node) { Debug.assert(isPrivateIdentifier(node.name)); - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (info.kind === "m" /* Method */) { return info.methodName; @@ -88270,42 +89671,61 @@ ${lanes.join("\n")} } } function transformAutoAccessor(node) { - Debug.assertEachNode(node.modifiers, isModifier); const commentRange = getCommentRange(node); const sourceMapRange = getSourceMapRange(node); const name = node.name; let getterName = name; let setterName = name; if (isComputedPropertyName(name) && !isSimpleInlineableExpression(name.expression)) { - const temp = factory2.createTempVariable(hoistVariableDeclaration); - setSourceMapRange(temp, name.expression); - const expression = visitNode(name.expression, visitor, isExpression); - const assignment = factory2.createAssignment(temp, expression); - setSourceMapRange(assignment, name.expression); - getterName = factory2.updateComputedPropertyName(name, factory2.inlineExpressions([assignment, temp])); - setterName = factory2.updateComputedPropertyName(name, temp); + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name, visitNode(name.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name.expression); + const expression = visitNode(name.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name.expression); + getterName = factory2.updateComputedPropertyName(name, assignment); + setterName = factory2.updateComputedPropertyName(name, temp); + } } - const backingField = createAccessorPropertyBackingField(factory2, node, node.modifiers, node.initializer); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiers, node.initializer); setOriginalNode(backingField, node); setEmitFlags(backingField, 3072 /* NoComments */); setSourceMapRange(backingField, sourceMapRange); - const getter = createAccessorPropertyGetRedirector(factory2, node, node.modifiers, getterName); + const getter = createAccessorPropertyGetRedirector(factory2, node, modifiers, getterName); setOriginalNode(getter, node); setCommentRange(getter, commentRange); setSourceMapRange(getter, sourceMapRange); - const setter = createAccessorPropertySetRedirector(factory2, node, node.modifiers, setterName); + const setter = createAccessorPropertySetRedirector(factory2, node, modifiers, setterName); setOriginalNode(setter, node); setEmitFlags(setter, 3072 /* NoComments */); setSourceMapRange(setter, sourceMapRange); return visitArray([backingField, getter, setter], accessorFieldResultVisitor, isClassElement); } function transformPrivateFieldInitializer(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { - const info = accessPrivateIdentifier(node.name); + if (shouldTransformClassElementToWeakMap(node)) { + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); - return info.isValid ? void 0 : node; + if (!info.isValid) { + return node; + } + if (info.isStatic && !shouldTransformPrivateElementsOrClassStaticBlocks) { + const statement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); + if (statement) { + return factory2.createClassStaticBlockDeclaration(factory2.createBlock( + [statement], + /*multiLine*/ + true + )); + } + } + return void 0; } - if (shouldTransformInitializersUsingSet && !isStatic(node) && currentClassLexicalEnvironment && currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */) { + if (shouldTransformInitializersUsingSet && !isStatic(node) && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */) { return factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, visitor, isModifierLike), @@ -88318,6 +89738,19 @@ ${lanes.join("\n")} void 0 ); } + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, (child) => namedEvaluationVisitor(child, referencedName), isExpression) + ); + } return visitEachChild(node, visitor, context); } function transformPublicFieldInitializer(node) { @@ -88325,10 +89758,12 @@ ${lanes.join("\n")} const expr = getPropertyNameExpressionIfNeeded( node.name, /*shouldHoist*/ - !!node.initializer || useDefineForClassFields + !!node.initializer || useDefineForClassFields, + /*captureReferencedName*/ + isNamedEvaluation(node, isAnonymousClassNeedingAssignedName) ); if (expr) { - getPendingExpressions().push(expr); + getPendingExpressions().push(...flattenCommaList(expr)); } if (isStatic(node) && !shouldTransformPrivateElementsOrClassStaticBlocks) { const initializerStatement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); @@ -88346,17 +89781,26 @@ ${lanes.join("\n")} } return void 0; } - return visitEachChild(node, classElementVisitor, context); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + visitNode(node.name, propertyNameVisitor, isPropertyName), + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); } function transformFieldInitializer(node) { Debug.assert(!hasDecorators(node), "Decorators should already have been transformed and elided."); return isPrivateIdentifierClassElementDeclaration(node) ? transformPrivateFieldInitializer(node) : transformPublicFieldInitializer(node); } function shouldTransformAutoAccessorsInCurrentClass() { - return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!currentClassLexicalEnvironment && !!(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */); + return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && !!(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */); } function visitPropertyDeclaration(node) { - if (shouldTransformAutoAccessorsInCurrentClass() && isAutoAccessorPropertyDeclaration(node)) { + if (isAutoAccessorPropertyDeclaration(node) && (shouldTransformAutoAccessorsInCurrentClass() || hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */)) { return transformAutoAccessor(node); } return transformFieldInitializer(node); @@ -88368,33 +89812,35 @@ ${lanes.join("\n")} setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.getterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.methodName ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } } function visitPropertyAccessExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(node.name)) { - const privateIdentifierInfo = accessPrivateIdentifier(node.name); + if (isPrivateIdentifier(node.name)) { + const privateIdentifierInfo = accessPrivateIdentifier2(node.name); if (privateIdentifierInfo) { return setTextRange( setOriginalNode( @@ -88405,8 +89851,8 @@ ${lanes.join("\n")} ); } } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -88424,8 +89870,8 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitElementAccessExpression(node) { - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -88442,16 +89888,16 @@ ${lanes.join("\n")} } return visitEachChild(node, visitor, context); } - function visitPreOrPostfixUnaryExpression(node, valueIsDiscarded) { + function visitPreOrPostfixUnaryExpression(node, discarded) { if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { const operand = skipParentheses(node.operand); - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(operand)) { + if (isPrivateIdentifierPropertyAccessExpression(operand)) { let info; - if (info = accessPrivateIdentifier(operand.name)) { + if (info = accessPrivateIdentifier2(operand.name)) { const receiver = visitNode(operand.expression, visitor, isExpression); const { readExpression, initializeExpression } = createCopiableReceiverExpr(receiver); let expression = createPrivateIdentifierAccess(info, readExpression); - const temp = isPrefixUnaryExpression(node) || valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = isPrefixUnaryExpression(node) || discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = createPrivateIdentifierAssignment( info, @@ -88467,8 +89913,8 @@ ${lanes.join("\n")} } return expression; } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { const expression = visitInvalidSuperProperty(operand); return isPrefixUnaryExpression(node) ? factory2.updatePrefixUnaryExpression(node, expression) : factory2.updatePostfixUnaryExpression(node, expression); @@ -88491,7 +89937,7 @@ ${lanes.join("\n")} if (setterName && getterName) { let expression = factory2.createReflectGetCall(superClassReference, getterName, classConstructor); setTextRange(expression, operand); - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = factory2.createReflectSetCall(superClassReference, setterName, expression, classConstructor); setOriginalNode(expression, node); @@ -88532,12 +89978,13 @@ ${lanes.join("\n")} return { readExpression, initializeExpression }; } function visitCallExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.expression)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.expression) && accessPrivateIdentifier2(node.expression.name)) { const { thisArg, target } = factory2.createCallBinding(node.expression, hoistVariableDeclaration, languageVersion); if (isCallChain(node)) { return factory2.updateCallChain( node, - factory2.createPropertyAccessChain(visitNode(target, visitor), node.questionDotToken, "call"), + factory2.createPropertyAccessChain(visitNode(target, visitor, isExpression), node.questionDotToken, "call"), /*questionDotToken*/ void 0, /*typeArguments*/ @@ -88547,16 +89994,16 @@ ${lanes.join("\n")} } return factory2.updateCallExpression( node, - factory2.createPropertyAccessExpression(visitNode(target, visitor), "call"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "call"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression), ...visitNodes2(node.arguments, visitor, isExpression)] ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionCallCall( visitNode(node.expression, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, visitNodes2(node.arguments, visitor, isExpression) ); setOriginalNode(invocation, node); @@ -88566,12 +90013,13 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitTaggedTemplateExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.tag)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.tag) && accessPrivateIdentifier2(node.tag.name)) { const { thisArg, target } = factory2.createCallBinding(node.tag, hoistVariableDeclaration, languageVersion); return factory2.updateTaggedTemplateExpression( node, factory2.createCallExpression( - factory2.createPropertyAccessExpression(visitNode(target, visitor), "bind"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "bind"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression)] @@ -88581,10 +90029,10 @@ ${lanes.join("\n")} visitNode(node.template, visitor, isTemplateLiteral) ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionBindCall( visitNode(node.tag, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, [] ); setOriginalNode(invocation, node); @@ -88600,10 +90048,10 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function transformClassStaticBlockDeclaration(node) { + if (lexicalEnvironment) { + lexicalEnvironmentMap.set(getOriginalNode(node), lexicalEnvironment); + } if (shouldTransformPrivateElementsOrClassStaticBlocks) { - if (currentClassLexicalEnvironment) { - classLexicalEnvironmentMap.set(getOriginalNodeId(node), currentClassLexicalEnvironment); - } startLexicalEnvironment(); let statements = setCurrentStaticPropertyDeclarationOrStaticBlockAnd( node, @@ -88618,23 +90066,45 @@ ${lanes.join("\n")} return iife; } } - function visitBinaryExpression(node, valueIsDiscarded) { + function isAnonymousClassNeedingAssignedName(node) { + if (isClassExpression(node) && !node.name) { + const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); + const classStaticBlock = find(staticPropertiesOrClassStaticBlocks, isClassStaticBlockDeclaration); + if (classStaticBlock) { + for (const statement of classStaticBlock.body.statements) { + if (isExpressionStatement(statement) && isCallToHelper(statement.expression, "___setFunctionName")) { + return false; + } + } + } + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || !!(getInternalEmitFlags(node) && 32 /* TransformPrivateStaticElements */)) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + return hasTransformableStatics; + } + return false; + } + function visitBinaryExpression(node, discarded) { if (isDestructuringAssignment(node)) { const savedPendingExpressions = pendingExpressions; pendingExpressions = void 0; node = factory2.updateBinaryExpression( node, - visitNode(node.left, assignmentTargetVisitor), + visitNode(node.left, assignmentTargetVisitor, isExpression), node.operatorToken, - visitNode(node.right, visitor) + visitNode(node.right, visitor, isExpression) ); const expr = some(pendingExpressions) ? factory2.inlineExpressions(compact([...pendingExpressions, node])) : node; pendingExpressions = savedPendingExpressions; return expr; } if (isAssignmentExpression(node)) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.left)) { - const info = accessPrivateIdentifier(node.left.name); + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isPrivateIdentifierPropertyAccessExpression(node.left)) { + const info = accessPrivateIdentifier2(node.left.name); if (info) { return setTextRange( setOriginalNode( @@ -88644,8 +90114,8 @@ ${lanes.join("\n")} node ); } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return factory2.updateBinaryExpression( node, @@ -88678,7 +90148,7 @@ ${lanes.join("\n")} ); setTextRange(expression, node); } - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); if (temp) { expression = factory2.createAssignment(temp, expression); setTextRange(temp, node); @@ -88700,11 +90170,42 @@ ${lanes.join("\n")} } } } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierInExpression(node)) { + if (isPrivateIdentifierInExpression(node)) { return transformPrivateIdentifierInInExpression(node); } return visitEachChild(node, visitor, context); } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.createTempVariable(hoistVariableDeclaration); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } function createPrivateIdentifierAssignment(info, receiver, right, operator) { receiver = visitNode(receiver, visitor, isExpression); right = visitNode(right, visitor, isExpression); @@ -88720,7 +90221,7 @@ ${lanes.join("\n")} setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -88728,7 +90229,7 @@ ${lanes.join("\n")} info.setterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -88737,13 +90238,15 @@ ${lanes.join("\n")} void 0 ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } @@ -88754,7 +90257,7 @@ ${lanes.join("\n")} function getClassFacts(node) { let facts = 0 /* None */; const original = getOriginalNode(node); - if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(original)) { + if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(legacyDecorators, original)) { facts |= 1 /* ClassWasDecorated */; } let containsPublicInstanceFields = false; @@ -88798,7 +90301,8 @@ ${lanes.join("\n")} return facts; } function visitExpressionWithTypeArgumentsInHeritageClause(node) { - const facts = (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts) || 0 /* None */; + var _a2; + const facts = ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts) || 0 /* None */; if (facts & 4 /* NeedsClassSuperReference */) { const temp = factory2.createTempVariable( hoistVariableDeclaration, @@ -88818,20 +90322,24 @@ ${lanes.join("\n")} } return visitEachChild(node, visitor, context); } - function visitInNewClassLexicalEnvironment(node, visitor2) { + function visitInNewClassLexicalEnvironment(node, referencedName, visitor2) { const savedCurrentClassContainer = currentClassContainer; const savedPendingExpressions = pendingExpressions; + const savedLexicalEnvironment = lexicalEnvironment; currentClassContainer = node; pendingExpressions = void 0; startClassLexicalEnvironment(); - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldAlwaysTransformPrivateStaticElements = getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */; + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldAlwaysTransformPrivateStaticElements) { const name = getNameOfDeclaration(node); if (name && isIdentifier(name)) { - getPrivateIdentifierEnvironment().className = name; + getPrivateIdentifierEnvironment().data.className = name; } + } + if (shouldTransformPrivateElementsOrClassStaticBlocks) { const privateInstanceMethodsAndAccessors = getPrivateInstanceMethodsAndAccessors(node); if (some(privateInstanceMethodsAndAccessors)) { - getPrivateIdentifierEnvironment().weakSetName = createHoistedVariableForClass( + getPrivateIdentifierEnvironment().data.weakSetName = createHoistedVariableForClass( "instances", privateInstanceMethodsAndAccessors[0].name ); @@ -88844,27 +90352,42 @@ ${lanes.join("\n")} if (facts & 8 /* NeedsSubstitutionForThisInClassStaticField */) { enableSubstitutionForClassStaticThisOrSuperReference(); } - const result = visitor2(node, facts); + const result = visitor2(node, facts, referencedName); endClassLexicalEnvironment(); + Debug.assert(lexicalEnvironment === savedLexicalEnvironment); currentClassContainer = savedCurrentClassContainer; pendingExpressions = savedPendingExpressions; return result; } function visitClassDeclaration(node) { - return visitInNewClassLexicalEnvironment(node, visitClassDeclarationInNewClassLexicalEnvironment); + return visitInNewClassLexicalEnvironment( + node, + /*referencedName*/ + void 0, + visitClassDeclarationInNewClassLexicalEnvironment + ); } function visitClassDeclarationInNewClassLexicalEnvironment(node, facts) { + var _a2, _b; let pendingClassReferenceAssignment; if (facts & 2 /* NeedsClassConstructorReference */) { - const temp = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); - pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis)) { + getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + pendingClassReferenceAssignment = factory2.createAssignment(node.emitNode.classThis, factory2.getInternalName(node)); + } else { + const temp = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + } + if ((_b = node.emitNode) == null ? void 0 : _b.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; + } } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); const classDecl = factory2.updateClassDeclaration( @@ -88887,7 +90410,7 @@ ${lanes.join("\n")} if (some(pendingExpressions)) { statements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); } - if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks) { + if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) { const staticProperties = getStaticPropertiesAndClassStaticBlock(node); if (some(staticProperties)) { addPropertyOrClassStaticBlockStatements(statements, staticProperties, factory2.getInternalName(node)); @@ -88895,28 +90418,37 @@ ${lanes.join("\n")} } return statements; } - function visitClassExpression(node) { - return visitInNewClassLexicalEnvironment(node, visitClassExpressionInNewClassLexicalEnvironment); + function visitClassExpression(node, referencedName) { + return visitInNewClassLexicalEnvironment(node, referencedName, visitClassExpressionInNewClassLexicalEnvironment); } - function visitClassExpressionInNewClassLexicalEnvironment(node, facts) { + function visitClassExpressionInNewClassLexicalEnvironment(node, facts, referencedName) { + var _a2, _b, _c, _d, _e, _f; const isDecoratedClassDeclaration = !!(facts & 1 /* ClassWasDecorated */); const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); const isClassWithConstructorReference = resolver.getNodeCheckFlags(node) & 1048576 /* ClassWithConstructorReference */; let temp; function createClassTempVar() { + var _a3; + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a3 = node.emitNode) == null ? void 0 : _a3.classThis)) { + return getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + } const classCheckFlags = resolver.getNodeCheckFlags(node); const isClassWithConstructorReference2 = classCheckFlags & 1048576 /* ClassWithConstructorReference */; const requiresBlockScopedVar = classCheckFlags & 32768 /* BlockScopedBindingInLoop */; - return factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + const temp2 = factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp2); + return temp2; + } + if ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; } if (facts & 2 /* NeedsClassConstructorReference */) { - temp = createClassTempVar(); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + temp != null ? temp : temp = createClassTempVar(); } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); - const classExpression = factory2.updateClassExpression( + let classExpression = factory2.updateClassExpression( node, modifiers, node.name, @@ -88929,46 +90461,68 @@ ${lanes.join("\n")} if (prologue) { expressions.push(prologue); } - const hasTransformableStatics = shouldTransformPrivateElementsOrClassStaticBlocks && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); - if (hasTransformableStatics || some(pendingExpressions)) { + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + if (hasTransformableStatics || some(pendingExpressions) || referencedName) { if (isDecoratedClassDeclaration) { Debug.assertIsDefined(pendingStatements, "Decorated classes transformed by TypeScript are expected to be within a variable declaration."); - if (pendingStatements && pendingExpressions && some(pendingExpressions)) { - pendingStatements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); + if (some(pendingExpressions)) { + addRange(pendingStatements, map(pendingExpressions, factory2.createExpressionStatement)); } - if (pendingStatements && some(staticPropertiesOrClassStaticBlocks)) { - addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, factory2.getInternalName(node)); - } - if (temp) { - expressions.push( - startOnNewLine(factory2.createAssignment(temp, classExpression)), - startOnNewLine(temp) - ); - } else { - expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); + if (referencedName) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const setNameExpression = emitHelpers().createSetFunctionNameHelper((_c = temp != null ? temp : (_b = node.emitNode) == null ? void 0 : _b.classThis) != null ? _c : factory2.getInternalName(node), referencedName); + pendingStatements.push(factory2.createExpressionStatement(setNameExpression)); + } else { + const setNameExpression = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), referencedName); + classExpression = factory2.updateClassExpression( + classExpression, + classExpression.modifiers, + classExpression.name, + classExpression.typeParameters, + classExpression.heritageClauses, + [ + factory2.createClassStaticBlockDeclaration( + factory2.createBlock([ + factory2.createExpressionStatement(setNameExpression) + ]) + ), + ...classExpression.members + ] + ); } } + if (some(staticPropertiesOrClassStaticBlocks)) { + addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, (_e = (_d = node.emitNode) == null ? void 0 : _d.classThis) != null ? _e : factory2.getInternalName(node)); + } + if (temp) { + expressions.push(factory2.createAssignment(temp, classExpression)); + } else if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_f = node.emitNode) == null ? void 0 : _f.classThis)) { + expressions.push(factory2.createAssignment(node.emitNode.classThis, classExpression)); + } else { + expressions.push(classExpression); + } } else { - temp || (temp = createClassTempVar()); + temp != null ? temp : temp = createClassTempVar(); if (isClassWithConstructorReference) { enableSubstitutionForClassAliases(); const alias = factory2.cloneNode(temp); - alias.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; + alias.emitNode.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; classAliases[getOriginalNodeId(node)] = alias; } - setEmitFlags(classExpression, 131072 /* Indented */ | getEmitFlags(classExpression)); - expressions.push(startOnNewLine(factory2.createAssignment(temp, classExpression))); - addRange(expressions, map(pendingExpressions, startOnNewLine)); + expressions.push(factory2.createAssignment(temp, classExpression)); + addRange(expressions, pendingExpressions); + if (referencedName) { + expressions.push(emitHelpers().createSetFunctionNameHelper(temp, referencedName)); + } addRange(expressions, generateInitializedPropertyExpressionsOrClassStaticBlock(staticPropertiesOrClassStaticBlocks, temp)); - expressions.push(startOnNewLine(temp)); + expressions.push(factory2.cloneNode(temp)); } } else { expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); - } + } + if (expressions.length > 1) { + addEmitFlags(classExpression, 131072 /* Indented */); + expressions.forEach(startOnNewLine); } return factory2.inlineExpressions(expressions); } @@ -88979,16 +90533,24 @@ ${lanes.join("\n")} return void 0; } function transformClassMembers(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldTransformPrivateStaticElementsInClass = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInFile) { for (const member of node.members) { if (isPrivateIdentifierClassElementDeclaration(member)) { - addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + if (shouldTransformClassElementToWeakMap(member)) { + addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, member.name, { kind: "untransformed" }); + } } } - if (some(getPrivateInstanceMethodsAndAccessors(node))) { - createBrandCheckWeakSetForPrivateMethods(); + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + if (some(getPrivateInstanceMethodsAndAccessors(node))) { + createBrandCheckWeakSetForPrivateMethods(); + } } - if (shouldTransformAutoAccessors) { + if (shouldTransformAutoAccessorsInCurrentClass()) { for (const member of node.members) { if (isAutoAccessorPropertyDeclaration(member)) { const storageName = factory2.getGeneratedPrivateNameForNode( @@ -88997,7 +90559,12 @@ ${lanes.join("\n")} void 0, "_accessor_storage" ); - addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInClass && hasStaticModifier(member)) { + addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, storageName, { kind: "untransformed" }); + } } } } @@ -89056,7 +90623,7 @@ ${lanes.join("\n")} return { members, prologue }; } function createBrandCheckWeakSetForPrivateMethods() { - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); getPendingExpressions().push( factory2.createAssignment( @@ -89072,7 +90639,7 @@ ${lanes.join("\n")} } function transformConstructor(constructor, container) { constructor = visitNode(constructor, visitor, isConstructorDeclaration); - if (!currentClassLexicalEnvironment || !(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */)) { + if (!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) || !(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */)) { return constructor; } const extendsClauseElement = getEffectiveBaseTypeNode(container); @@ -89109,13 +90676,14 @@ ${lanes.join("\n")} } function transformConstructorBody(node, constructor, isDerivedClass) { var _a2, _b; - let properties = getProperties( + const instanceProperties = getProperties( node, /*requireInitializer*/ false, /*isStatic*/ false ); + let properties = instanceProperties; if (!useDefineForClassFields) { properties = filter(properties, (property) => !!property.initializer || isPrivateIdentifier(property.name) || hasAccessorModifier(property)); } @@ -89169,37 +90737,30 @@ ${lanes.join("\n")} } let parameterPropertyDeclarationCount = 0; if (constructor == null ? void 0 : constructor.body) { - if (useDefineForClassFields) { - statements = statements.filter((statement) => !isParameterPropertyDeclaration(getOriginalNode(statement), constructor)); - } else { - for (const statement of constructor.body.statements) { - if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - parameterPropertyDeclarationCount++; - } - } - if (parameterPropertyDeclarationCount > 0) { - const parameterProperties = visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue, parameterPropertyDeclarationCount); - if (superStatementIndex >= 0) { - addRange(statements, parameterProperties); - } else { - let superAndPrologueStatementCount = prologueStatementCount; - if (needsSyntheticConstructor) - superAndPrologueStatementCount++; - statements = [ - ...statements.slice(0, superAndPrologueStatementCount), - ...parameterProperties, - ...statements.slice(superAndPrologueStatementCount) - ]; - } - indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + for (let i = indexOfFirstStatementAfterSuperAndPrologue; i < constructor.body.statements.length; i++) { + const statement = constructor.body.statements[i]; + if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { + parameterPropertyDeclarationCount++; + } else { + break; } } + if (parameterPropertyDeclarationCount > 0) { + indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + } } const receiver = factory2.createThis(); - addMethodStatements(statements, privateMethodsAndAccessors, receiver); - addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + addInstanceMethodStatements(statements, privateMethodsAndAccessors, receiver); if (constructor) { - addRange(statements, visitNodes2(constructor.body.statements, visitBodyStatement, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); + const parameterProperties = filter(instanceProperties, (prop) => isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + const nonParameterProperties = filter(properties, (prop) => !isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + addPropertyOrClassStaticBlockStatements(statements, parameterProperties, receiver); + addPropertyOrClassStaticBlockStatements(statements, nonParameterProperties, receiver); + } else { + addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + } + if (constructor) { + addRange(statements, visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); } statements = factory2.mergeLexicalEnvironment(statements, endLexicalEnvironment()); if (statements.length === 0 && !constructor) { @@ -89218,16 +90779,10 @@ ${lanes.join("\n")} /*location*/ constructor ? constructor.body : void 0 ); - function visitBodyStatement(statement) { - if (useDefineForClassFields && isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - return void 0; - } - return visitor(statement); - } } function addPropertyOrClassStaticBlockStatements(statements, properties, receiver) { for (const property of properties) { - if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks && !useDefineForClassFields) { + if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks) { continue; } const statement = transformPropertyOrClassStaticBlock(property, receiver); @@ -89245,10 +90800,19 @@ ${lanes.join("\n")} const statement = factory2.createExpressionStatement(expression); setOriginalNode(statement, property); addEmitFlags(statement, getEmitFlags(property) & 3072 /* NoComments */); - setSourceMapRange(statement, moveRangePastModifiers(property)); setCommentRange(statement, property); + const propertyOriginalNode = getOriginalNode(property); + if (isParameter(propertyOriginalNode)) { + setSourceMapRange(statement, propertyOriginalNode); + removeAllComments(statement); + } else { + setSourceMapRange(statement, moveRangePastModifiers(property)); + } setSyntheticLeadingComments(expression, void 0); setSyntheticTrailingComments(expression, void 0); + if (hasAccessorModifier(propertyOriginalNode)) { + addEmitFlags(statement, 3072 /* NoComments */); + } return statement; } function generateInitializedPropertyExpressionsOrClassStaticBlock(propertiesOrClassStaticBlocks, receiver) { @@ -89268,37 +90832,49 @@ ${lanes.join("\n")} return expressions; } function transformProperty(property, receiver) { + var _a2; const savedCurrentStaticPropertyDeclarationOrStaticBlock = currentStaticPropertyDeclarationOrStaticBlock; const transformed = transformPropertyWorker(property, receiver); - if (transformed && hasStaticModifier(property) && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts)) { + if (transformed && hasStaticModifier(property) && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts)) { setOriginalNode(transformed, property); addEmitFlags(transformed, 4 /* AdviseOnEmitNode */); - classLexicalEnvironmentMap.set(getOriginalNodeId(transformed), currentClassLexicalEnvironment); + setSourceMapRange(transformed, getSourceMapRange(property.name)); + lexicalEnvironmentMap.set(getOriginalNode(property), lexicalEnvironment); } currentStaticPropertyDeclarationOrStaticBlock = savedCurrentStaticPropertyDeclarationOrStaticBlock; return transformed; } function transformPropertyWorker(property, receiver) { - var _a2; const emitAssignment = !useDefineForClassFields; + let referencedName; + if (isNamedEvaluation(property, isAnonymousClassNeedingAssignedName)) { + if (isPropertyNameLiteral(property.name) || isPrivateIdentifier(property.name)) { + referencedName = factory2.createStringLiteralFromNode(property.name); + } else if (isPropertyNameLiteral(property.name.expression) && !isIdentifier(property.name.expression)) { + referencedName = factory2.createStringLiteralFromNode(property.name.expression); + } else { + referencedName = factory2.getGeneratedNameForNode(property.name); + } + } const propertyName = hasAccessorModifier(property) ? factory2.getGeneratedPrivateNameForNode(property.name) : isComputedPropertyName(property.name) && !isSimpleInlineableExpression(property.name.expression) ? factory2.updateComputedPropertyName(property.name, factory2.getGeneratedNameForNode(property.name)) : property.name; if (hasStaticModifier(property)) { currentStaticPropertyDeclarationOrStaticBlock = property; } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(propertyName)) { - const privateIdentifierInfo = accessPrivateIdentifier(propertyName); + const initializerVisitor = referencedName ? (child) => namedEvaluationVisitor(child, referencedName) : visitor; + if (isPrivateIdentifier(propertyName) && shouldTransformClassElementToWeakMap(property)) { + const privateIdentifierInfo = accessPrivateIdentifier2(propertyName); if (privateIdentifierInfo) { if (privateIdentifierInfo.kind === "f" /* Field */) { if (!privateIdentifierInfo.isStatic) { return createPrivateInstanceFieldInitializer( receiver, - visitNode(property.initializer, visitor, isExpression), + visitNode(property.initializer, initializerVisitor, isExpression), privateIdentifierInfo.brandCheckIdentifier ); } else { return createPrivateStaticFieldInitializer( privateIdentifierInfo.variableName, - visitNode(property.initializer, visitor, isExpression) + visitNode(property.initializer, initializerVisitor, isExpression) ); } } else { @@ -89315,7 +90891,23 @@ ${lanes.join("\n")} if (hasSyntacticModifier(propertyOriginalNode, 256 /* Abstract */)) { return void 0; } - const initializer = property.initializer || emitAssignment ? (_a2 = visitNode(property.initializer, visitor, isExpression)) != null ? _a2 : factory2.createVoidZero() : isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName) ? propertyName : factory2.createVoidZero(); + let initializer = visitNode(property.initializer, initializerVisitor, isExpression); + if (isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName)) { + const localName = factory2.cloneNode(propertyName); + if (initializer) { + if (isParenthesizedExpression(initializer) && isCommaExpression(initializer.expression) && isCallToHelper(initializer.expression.left, "___runInitializers") && isVoidExpression(initializer.expression.right) && isNumericLiteral(initializer.expression.right.expression)) { + initializer = initializer.expression.left; + } + initializer = factory2.inlineExpressions([initializer, localName]); + } else { + initializer = localName; + } + setEmitFlags(propertyName, 3072 /* NoComments */ | 96 /* NoSourceMap */); + setSourceMapRange(localName, propertyOriginalNode.name); + setEmitFlags(localName, 3072 /* NoComments */); + } else { + initializer != null ? initializer : initializer = factory2.createVoidZero(); + } if (emitAssignment || isPrivateIdentifier(propertyName)) { const memberAccess = createMemberAccessForPropertyName( factory2, @@ -89324,7 +90916,9 @@ ${lanes.join("\n")} /*location*/ propertyName ); - return factory2.createAssignment(memberAccess, initializer); + addEmitFlags(memberAccess, 1024 /* NoLeadingComments */); + const expression = factory2.createAssignment(memberAccess, initializer); + return expression; } else { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; const descriptor = factory2.createPropertyDescriptor({ value: initializer, configurable: true, writable: true, enumerable: true }); @@ -89352,11 +90946,11 @@ ${lanes.join("\n")} context.enableEmitNotification(164 /* ComputedPropertyName */); } } - function addMethodStatements(statements, methods, receiver) { + function addInstanceMethodStatements(statements, methods, receiver) { if (!shouldTransformPrivateElementsOrClassStaticBlocks || !some(methods)) { return; } - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); statements.push( factory2.createExpressionStatement( @@ -89375,20 +90969,352 @@ ${lanes.join("\n")} visitNode(node.argumentExpression, visitor, isExpression) ); } + function getPropertyNameExpressionIfNeeded(name, shouldHoist, captureReferencedName) { + if (isComputedPropertyName(name)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + let expression = visitNode(name.expression, visitor, isExpression); + const innerExpression = skipPartiallyEmittedExpressions(expression); + const inlinable = isSimpleInlineableExpression(innerExpression); + const alreadyTransformed = !!cacheAssignment || isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); + if (!alreadyTransformed && !inlinable && shouldHoist) { + const generatedName = factory2.getGeneratedNameForNode(name); + if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(generatedName); + } else { + hoistVariableDeclaration(generatedName); + } + if (captureReferencedName) { + expression = emitHelpers().createPropKeyHelper(expression); + } + return factory2.createAssignment(generatedName, expression); + } + return inlinable || isIdentifier(innerExpression) ? void 0 : expression; + } + } + function startClassLexicalEnvironment() { + lexicalEnvironment = { previous: lexicalEnvironment, data: void 0 }; + } + function endClassLexicalEnvironment() { + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + } + function getClassLexicalEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.data) != null ? _a2 : lexicalEnvironment.data = { + facts: 0 /* None */, + classConstructor: void 0, + classThis: void 0, + superClassReference: void 0 + // privateIdentifierEnvironment: undefined, + }; + } + function getPrivateIdentifierEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.privateEnv) != null ? _a2 : lexicalEnvironment.privateEnv = newPrivateEnvironment({ + className: void 0, + weakSetName: void 0 + }); + } + function getPendingExpressions() { + return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + } + function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + if (isAutoAccessorPropertyDeclaration(node)) { + addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isPropertyDeclaration(node)) { + addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isMethodDeclaration(node)) { + addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isGetAccessorDeclaration(node)) { + addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isSetAccessorDeclaration(node)) { + addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + } + function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + if (isStatic2) { + const brandCheckIdentifier = Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment"); + const variableName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: true, + brandCheckIdentifier, + variableName, + isValid + }); + } else { + const weakMapName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: false, + brandCheckIdentifier: weakMapName, + isValid + }); + getPendingExpressions().push(factory2.createAssignment( + weakMapName, + factory2.createNewExpression( + factory2.createIdentifier("WeakMap"), + /*typeArguments*/ + void 0, + [] + ) + )); + } + } + function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const methodName = createHoistedVariableForPrivateName(name); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "m" /* Method */, + methodName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { + previousInfo.getterName = getterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName: void 0, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { + previousInfo.setterName = setterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName: void 0, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { + const lex = getClassLexicalEnvironment(); + const privateEnv = getPrivateIdentifierEnvironment(); + const previousInfo = getPrivateIdentifier(privateEnv, name); + const isStatic2 = hasStaticModifier(node); + const isValid = !isReservedPrivateName(name) && previousInfo === void 0; + addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + function createHoistedVariableForClass(name, node, suffix) { + const { className } = getPrivateIdentifierEnvironment().data; + const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; + const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( + /*recordTempVariable*/ + void 0, + /*reserveInNestedScopes*/ + true, + prefix, + suffix + ); + if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(identifier); + } else { + hoistVariableDeclaration(identifier); + } + return identifier; + } + function createHoistedVariableForPrivateName(name, suffix) { + var _a2; + const text = tryGetTextOfPropertyName(name); + return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); + } + function accessPrivateIdentifier2(name) { + const info = accessPrivateIdentifier(lexicalEnvironment, name); + return (info == null ? void 0 : info.kind) === "untransformed" ? void 0 : info; + } + function wrapPrivateIdentifierForDestructuringTarget(node) { + const parameter = factory2.getGeneratedNameForNode(node); + const info = accessPrivateIdentifier2(node.name); + if (!info) { + return visitEachChild(node, visitor, context); + } + let receiver = node.expression; + if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { + receiver = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); + } + return factory2.createAssignmentTargetWrapper( + parameter, + createPrivateIdentifierAssignment( + info, + receiver, + parameter, + 63 /* EqualsToken */ + ) + ); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isPrivateIdentifierPropertyAccessExpression(node)) { + return wrapPrivateIdentifierForDestructuringTarget(node); + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */) { + return visitInvalidSuperProperty(node); + } else if (classConstructor && superClassReference) { + const name = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (name) { + const temp = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + return factory2.createAssignmentTargetWrapper( + temp, + factory2.createReflectSetCall( + superClassReference, + name, + temp, + classConstructor + ) + ); + } + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const left = visitDestructuringAssignmentTarget(node.left); + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const left = visitDestructuringAssignmentTarget(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitDestructuringAssignmentTarget(node); + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, node.name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + return factory2.updateArrayLiteralExpression( + node, + visitNodes2(node.elements, visitArrayAssignmentElement, isExpression) + ); + } else { + return factory2.updateObjectLiteralExpression( + node, + visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike) + ); + } + } function onEmitNode(hint, node, emitCallback) { const original = getOriginalNode(node); - if (original.id) { - const classLexicalEnvironment = classLexicalEnvironmentMap.get(original.id); - if (classLexicalEnvironment) { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = classLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = classLexicalEnvironment; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + const lex = lexicalEnvironmentMap.get(original); + if (lex) { + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = lex; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = !isClassStaticBlockDeclaration(original) || !(getInternalEmitFlags(original) & 32 /* TransformPrivateStaticElements */); + previousOnEmitNode(hint, node, emitCallback); + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; + return; } switch (node.kind) { case 215 /* FunctionExpression */: @@ -89396,37 +91322,30 @@ ${lanes.join("\n")} break; } case 259 /* FunctionDeclaration */: - case 173 /* Constructor */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; - currentComputedPropertyNameClassLexicalEnvironment = void 0; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + case 173 /* Constructor */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: case 169 /* PropertyDeclaration */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = currentClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = void 0; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = false; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } case 164 /* ComputedPropertyName */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = savedShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } } @@ -89449,15 +91368,16 @@ ${lanes.join("\n")} return node; } function substituteThisExpression(node) { - if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && currentClassLexicalEnvironment) { - const { facts, classConstructor } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { + if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { facts, classConstructor, classThis } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */ && legacyDecorators) { return factory2.createParenthesizedExpression(factory2.createVoidZero()); } - if (classConstructor) { + const substituteThis = shouldSubstituteThisWithClassThis ? classThis != null ? classThis : classConstructor : classConstructor; + if (substituteThis) { return setTextRange( setOriginalNode( - factory2.cloneNode(classConstructor), + factory2.cloneNode(substituteThis), node ), node @@ -89486,350 +91406,6 @@ ${lanes.join("\n")} } return void 0; } - function getPropertyNameExpressionIfNeeded(name, shouldHoist) { - if (isComputedPropertyName(name)) { - const expression = visitNode(name.expression, visitor, isExpression); - const innerExpression = skipPartiallyEmittedExpressions(expression); - const inlinable = isSimpleInlineableExpression(innerExpression); - const alreadyTransformed = isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); - if (!alreadyTransformed && !inlinable && shouldHoist) { - const generatedName = factory2.getGeneratedNameForNode(name); - if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(generatedName); - } else { - hoistVariableDeclaration(generatedName); - } - return factory2.createAssignment(generatedName, expression); - } - return inlinable || isIdentifier(innerExpression) ? void 0 : expression; - } - } - function startClassLexicalEnvironment() { - classLexicalEnvironmentStack.push(currentClassLexicalEnvironment); - currentClassLexicalEnvironment = void 0; - } - function endClassLexicalEnvironment() { - currentClassLexicalEnvironment = classLexicalEnvironmentStack.pop(); - } - function getClassLexicalEnvironment() { - return currentClassLexicalEnvironment || (currentClassLexicalEnvironment = { - facts: 0 /* None */, - classConstructor: void 0, - superClassReference: void 0, - privateIdentifierEnvironment: void 0 - }); - } - function getPrivateIdentifierEnvironment() { - const lex = getClassLexicalEnvironment(); - lex.privateIdentifierEnvironment || (lex.privateIdentifierEnvironment = { - className: void 0, - weakSetName: void 0, - identifiers: void 0, - generatedIdentifiers: void 0 - }); - return lex.privateIdentifierEnvironment; - } - function getPendingExpressions() { - return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; - } - function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - if (isAutoAccessorPropertyDeclaration(node)) { - addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isPropertyDeclaration(node)) { - addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isMethodDeclaration(node)) { - addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isGetAccessorDeclaration(node)) { - addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isSetAccessorDeclaration(node)) { - addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - } - function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - if (isStatic2) { - Debug.assert(lex.classConstructor, "classConstructor should be set in private identifier environment"); - const variableName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: lex.classConstructor, - variableName, - isStatic: true, - isValid - }); - } else { - const weakMapName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: weakMapName, - variableName: void 0, - isStatic: false, - isValid - }); - getPendingExpressions().push(factory2.createAssignment( - weakMapName, - factory2.createNewExpression( - factory2.createIdentifier("WeakMap"), - /*typeArguments*/ - void 0, - [] - ) - )); - } - } - function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const methodName = createHoistedVariableForPrivateName(name); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "m" /* Method */, - methodName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { - previousInfo.getterName = getterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName: void 0, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { - previousInfo.setterName = setterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName: void 0, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { - const lex = getClassLexicalEnvironment(); - const privateEnv = getPrivateIdentifierEnvironment(); - const previousInfo = getPrivateIdentifier(privateEnv, name); - const isStatic2 = hasStaticModifier(node); - const isValid = !isReservedPrivateName(name) && previousInfo === void 0; - addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - function createHoistedVariableForClass(name, node, suffix) { - const { className } = getPrivateIdentifierEnvironment(); - const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; - const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( - /*recordTempVariable*/ - void 0, - /*reserveInNestedScopes*/ - true, - prefix, - suffix - ); - if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(identifier); - } else { - hoistVariableDeclaration(identifier); - } - return identifier; - } - function createHoistedVariableForPrivateName(name, suffix) { - var _a2; - const text = tryGetTextOfPropertyName(name); - return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); - } - function accessPrivateIdentifier(name) { - if (isGeneratedPrivateIdentifier(name)) { - return accessGeneratedPrivateIdentifier(name); - } else { - return accessPrivateIdentifierByText(name.escapedText); - } - } - function accessPrivateIdentifierByText(text) { - return accessPrivateIdentifierWorker(getPrivateIdentifierInfo, text); - } - function accessGeneratedPrivateIdentifier(name) { - return accessPrivateIdentifierWorker(getGeneratedPrivateIdentifierInfo, getNodeForGeneratedName(name)); - } - function accessPrivateIdentifierWorker(getPrivateIdentifierInfo2, privateIdentifierKey) { - if (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(currentClassLexicalEnvironment.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - for (let i = classLexicalEnvironmentStack.length - 1; i >= 0; --i) { - const env = classLexicalEnvironmentStack[i]; - if (!env) { - continue; - } - if (env.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(env.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - } - return void 0; - } - function wrapPrivateIdentifierForDestructuringTarget(node) { - const parameter = factory2.getGeneratedNameForNode(node); - const info = accessPrivateIdentifier(node.name); - if (!info) { - return visitEachChild(node, visitor, context); - } - let receiver = node.expression; - if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { - receiver = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); - } - return factory2.createAssignmentTargetWrapper( - parameter, - createPrivateIdentifierAssignment( - info, - receiver, - parameter, - 63 /* EqualsToken */ - ) - ); - } - function visitArrayAssignmentTarget(node) { - const target = getTargetOfBindingOrAssignmentElement(node); - if (target) { - let wrapped; - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - if (wrapped) { - if (isAssignmentExpression(node)) { - return factory2.updateBinaryExpression( - node, - wrapped, - node.operatorToken, - visitNode(node.right, visitor, isExpression) - ); - } else if (isSpreadElement(node)) { - return factory2.updateSpreadElement(node, wrapped); - } else { - return wrapped; - } - } - } - return visitNode(node, assignmentTargetVisitor); - } - function visitObjectAssignmentTarget(node) { - if (isObjectBindingOrAssignmentElement(node) && !isShorthandPropertyAssignment(node)) { - const target = getTargetOfBindingOrAssignmentElement(node); - let wrapped; - if (target) { - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - } - if (isPropertyAssignment(node)) { - const initializer = getInitializerOfBindingOrAssignmentElement(node); - return factory2.updatePropertyAssignment( - node, - visitNode(node.name, visitor, isPropertyName), - wrapped ? initializer ? factory2.createAssignment(wrapped, visitNode(initializer, visitor)) : wrapped : visitNode(node.initializer, assignmentTargetVisitor, isExpression) - ); - } - if (isSpreadAssignment(node)) { - return factory2.updateSpreadAssignment( - node, - wrapped || visitNode(node.expression, assignmentTargetVisitor, isExpression) - ); - } - Debug.assert(wrapped === void 0, "Should not have generated a wrapped target"); - } - return visitNode(node, visitor); - } - function visitAssignmentPattern(node) { - if (isArrayLiteralExpression(node)) { - return factory2.updateArrayLiteralExpression( - node, - visitNodes2(node.elements, visitArrayAssignmentTarget, isExpression) - ); - } else { - return factory2.updateObjectLiteralExpression( - node, - visitNodes2(node.properties, visitObjectAssignmentTarget, isObjectLiteralElementLike) - ); - } - } } function createPrivateStaticFieldInitializer(variableName, initializer) { return factory.createAssignment( @@ -89858,38 +91434,13 @@ ${lanes.join("\n")} function isReservedPrivateName(node) { return !isGeneratedPrivateIdentifier(node) && node.escapedText === "#constructor"; } - function getPrivateIdentifier(privateEnv, name) { - return isGeneratedPrivateIdentifier(name) ? getGeneratedPrivateIdentifierInfo(privateEnv, getNodeForGeneratedName(name)) : getPrivateIdentifierInfo(privateEnv, name.escapedText); + function isPrivateIdentifierInExpression(node) { + return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; } - function setPrivateIdentifier(privateEnv, name, info) { - var _a2, _b; - if (isGeneratedPrivateIdentifier(name)) { - (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); - privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), info); - } else { - (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); - privateEnv.identifiers.set(name.escapedText, info); - } - } - function getPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.identifiers) == null ? void 0 : _a2.get(key); - } - function getGeneratedPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(key); - } - var PrivateIdentifierKind2; var init_classFields = __esm({ "src/compiler/transformers/classFields.ts"() { "use strict"; init_ts2(); - PrivateIdentifierKind2 = /* @__PURE__ */ ((PrivateIdentifierKind3) => { - PrivateIdentifierKind3["Field"] = "f"; - PrivateIdentifierKind3["Method"] = "m"; - PrivateIdentifierKind3["Accessor"] = "a"; - return PrivateIdentifierKind3; - })(PrivateIdentifierKind2 || {}); } }); @@ -90302,9 +91853,22 @@ ${lanes.join("\n")} } } function visitClassDeclaration(node) { - if (!(classOrConstructorParameterIsDecorated(node) || childIsDecorated(node))) + if (!(classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + true, + node + ) || childIsDecorated( + /*legacyDecorators*/ + true, + node + ))) { return visitEachChild(node, visitor, context); - const statements = hasDecorators(node) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); + } + const statements = classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + true, + node + ) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); if (statements.length > 1) { statements.push(factory2.createEndOfDeclarationMarker(node)); setEmitFlags(statements[0], getEmitFlags(statements[0]) | 8388608 /* HasEndOfDeclarationMarker */); @@ -90321,7 +91885,12 @@ ${lanes.join("\n")} for (const member of node.members) { if (!canHaveDecorators(member)) continue; - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); if (some(allDecorators == null ? void 0 : allDecorators.decorators, decoratorContainsPrivateIdentifierInExpression)) return true; if (some(allDecorators == null ? void 0 : allDecorators.parameters, parameterDecoratorsContainPrivateIdentifierInExpression)) @@ -90398,7 +91967,7 @@ ${lanes.join("\n")} const classExpression = factory2.createClassExpression( /*modifiers*/ void 0, - name, + name && isGeneratedIdentifier(name) ? void 0 : name, /*typeParameters*/ void 0, heritageClauses, @@ -90443,7 +92012,7 @@ ${lanes.join("\n")} return factory2.updateConstructorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ); } @@ -90459,12 +92028,12 @@ ${lanes.join("\n")} node, visitNodes2(node.modifiers, modifierVisitor, isModifier), node.asteriskToken, - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionToken*/ void 0, /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -90474,8 +92043,8 @@ ${lanes.join("\n")} return finishClassElement(factory2.updateGetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -90485,8 +92054,8 @@ ${lanes.join("\n")} return finishClassElement(factory2.updateSetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ), node); } @@ -90497,7 +92066,7 @@ ${lanes.join("\n")} return finishClassElement(factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -90510,7 +92079,7 @@ ${lanes.join("\n")} node, elideNodes(factory2, node.modifiers), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -90525,20 +92094,30 @@ ${lanes.join("\n")} } return updated; } + function isSyntheticMetadataDecorator(node) { + return isCallToHelper(node.expression, "___metadata"); + } function transformAllDecoratorsOfDeclaration(allDecorators) { if (!allDecorators) { return void 0; } + const { false: decorators, true: metadata } = groupBy(allDecorators.decorators, isSyntheticMetadataDecorator); const decoratorExpressions = []; - addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + addRange(decoratorExpressions, map(decorators, transformDecorator)); addRange(decoratorExpressions, flatMap(allDecorators.parameters, transformDecoratorsOfParameter)); + addRange(decoratorExpressions, map(metadata, transformDecorator)); return decoratorExpressions; } function addClassElementDecorationStatements(statements, node, isStatic2) { addRange(statements, map(generateClassElementDecorationExpressions(node, isStatic2), (expr) => factory2.createExpressionStatement(expr))); } function isDecoratedClassElement(member, isStaticElement, parent2) { - return nodeOrChildIsDecorated(member, parent2) && isStaticElement === isStatic(member); + return nodeOrChildIsDecorated( + /*legacyDecorators*/ + true, + member, + parent2 + ) && isStaticElement === isStatic(member); } function getDecoratedClassElements(node, isStatic2) { return filter(node.members, (m) => isDecoratedClassElement(m, isStatic2, node)); @@ -90552,7 +92131,12 @@ ${lanes.join("\n")} return expressions; } function generateClassElementDecorationExpression(node, member) { - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); const decoratorExpressions = transformAllDecoratorsOfDeclaration(allDecorators); if (!decoratorExpressions) { return void 0; @@ -90607,7 +92191,7 @@ ${lanes.join("\n")} return expression; } function transformDecorator(decorator) { - return visitNode(decorator.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(decorator.expression, visitor, isExpression)); } function transformDecoratorsOfParameter(decorators, parameterOffset) { let expressions; @@ -90701,6 +92285,1719 @@ ${lanes.join("\n")} } }); + // src/compiler/transformers/esDecorators.ts + function transformESDecorators(context) { + const { + factory: factory2, + getEmitHelperFactory: emitHelpers, + startLexicalEnvironment, + endLexicalEnvironment, + hoistVariableDeclaration + } = context; + let top; + let classInfo; + let classThis; + let classSuper; + let pendingExpressions; + let shouldTransformPrivateStaticElementsInFile; + return chainBundle(context, transformSourceFile); + function transformSourceFile(node) { + top = void 0; + shouldTransformPrivateStaticElementsInFile = false; + const visited = visitEachChild(node, visitor, context); + addEmitHelpers(visited, context.readEmitHelpers()); + if (shouldTransformPrivateStaticElementsInFile) { + addInternalEmitFlags(visited, 32 /* TransformPrivateStaticElements */); + shouldTransformPrivateStaticElementsInFile = false; + } + return visited; + } + function updateState() { + classInfo = void 0; + classThis = void 0; + classSuper = void 0; + switch (top == null ? void 0 : top.kind) { + case "class": + classInfo = top.classInfo; + break; + case "class-element": + classInfo = top.next.classInfo; + classThis = top.classThis; + classSuper = top.classSuper; + break; + case "name": + const grandparent = top.next.next.next; + if ((grandparent == null ? void 0 : grandparent.kind) === "class-element") { + classInfo = grandparent.next.classInfo; + classThis = grandparent.classThis; + classSuper = grandparent.classSuper; + } + break; + } + } + function enterClass(classInfo2) { + top = { kind: "class", next: top, classInfo: classInfo2, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + function exitClass() { + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + function enterClassElement(node) { + var _a2, _b; + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "class-element", next: top }; + if (isClassStaticBlockDeclaration(node) || isPropertyDeclaration(node) && hasStaticModifier(node)) { + top.classThis = (_a2 = top.next.classInfo) == null ? void 0 : _a2.classThis; + top.classSuper = (_b = top.next.classInfo) == null ? void 0 : _b.classSuper; + } + updateState(); + } + function exitClassElement() { + var _a2; + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + Debug.assert(((_a2 = top.next) == null ? void 0 : _a2.kind) === "class", "Incorrect value for top.next.kind.", () => { + var _a3; + return `Expected top.next.kind to be 'class' but got '${(_a3 = top.next) == null ? void 0 : _a3.kind}' instead.`; + }); + top = top.next; + updateState(); + } + function enterName() { + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "name", next: top }; + updateState(); + } + function exitName() { + Debug.assert((top == null ? void 0 : top.kind) === "name", "Incorrect value for top.kind.", () => `Expected top.kind to be 'name' but got '${top == null ? void 0 : top.kind}' instead.`); + top = top.next; + updateState(); + } + function enterOther() { + if ((top == null ? void 0 : top.kind) === "other") { + Debug.assert(!pendingExpressions); + top.depth++; + } else { + top = { kind: "other", next: top, depth: 0, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + } + function exitOther() { + Debug.assert((top == null ? void 0 : top.kind) === "other", "Incorrect value for top.kind.", () => `Expected top.kind to be 'other' but got '${top == null ? void 0 : top.kind}' instead.`); + if (top.depth > 0) { + Debug.assert(!pendingExpressions); + top.depth--; + } else { + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + } + function shouldVisitNode(node) { + return !!(node.transformFlags & 33554432 /* ContainsDecorators */) || !!classThis && !!(node.transformFlags & 16384 /* ContainsLexicalThis */) || !!classThis && !!classSuper && !!(node.transformFlags & 134217728 /* ContainsLexicalSuper */); + } + function visitor(node) { + if (!shouldVisitNode(node)) { + return node; + } + switch (node.kind) { + case 167 /* Decorator */: + return Debug.fail("Use `modifierVisitor` instead."); + case 260 /* ClassDeclaration */: + return visitClassDeclaration(node); + case 228 /* ClassExpression */: + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); + case 173 /* Constructor */: + case 169 /* PropertyDeclaration */: + case 172 /* ClassStaticBlockDeclaration */: + return Debug.fail("Not supported outside of a class. Use 'classElementVisitor' instead."); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + false + ); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); + case 108 /* ThisKeyword */: + return visitThisExpression(node); + case 245 /* ForStatement */: + return visitForStatement(node); + case 241 /* ExpressionStatement */: + return visitExpressionStatement(node); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + false + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 210 /* CallExpression */: + return visitCallExpression(node); + case 212 /* TaggedTemplateExpression */: + return visitTaggedTemplateExpression(node); + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discard*/ + false + ); + case 208 /* PropertyAccessExpression */: + return visitPropertyAccessExpression(node); + case 209 /* ElementAccessExpression */: + return visitElementAccessExpression(node); + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); + case 171 /* MethodDeclaration */: + case 175 /* SetAccessor */: + case 174 /* GetAccessor */: + case 215 /* FunctionExpression */: + case 259 /* FunctionDeclaration */: { + enterOther(); + const result = visitEachChild(node, fallbackVisitor, context); + exitOther(); + return result; + } + default: + return visitEachChild(node, fallbackVisitor, context); + } + } + function fallbackVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return visitor(node); + } + } + function modifierVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return node; + } + } + function classElementVisitor(node) { + switch (node.kind) { + case 173 /* Constructor */: + return visitConstructorDeclaration(node); + case 171 /* MethodDeclaration */: + return visitMethodDeclaration(node); + case 174 /* GetAccessor */: + return visitGetAccessorDeclaration(node); + case 175 /* SetAccessor */: + return visitSetAccessorDeclaration(node); + case 169 /* PropertyDeclaration */: + return visitPropertyDeclaration(node); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); + default: + return visitor(node); + } + } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } + function discardedValueVisitor(node) { + switch (node.kind) { + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discarded*/ + true + ); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + true + ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); + default: + return visitor(node); + } + } + function getHelperVariableName(node) { + let declarationName = node.name && isIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name) : node.name && isPrivateIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name).slice(1) : node.name && isStringLiteral(node.name) && isIdentifierText(node.name.text, 99 /* ESNext */) ? node.name.text : isClassLike(node) ? "class" : "member"; + if (isGetAccessor(node)) + declarationName = `get_${declarationName}`; + if (isSetAccessor(node)) + declarationName = `set_${declarationName}`; + if (node.name && isPrivateIdentifier(node.name)) + declarationName = `private_${declarationName}`; + if (isStatic(node)) + declarationName = `static_${declarationName}`; + return "_" + declarationName; + } + function createHelperVariable(node, suffix) { + return factory2.createUniqueName(`${getHelperVariableName(node)}_${suffix}`, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */); + } + function createLet(name, initializer) { + return factory2.createVariableStatement( + /*modifiers*/ + void 0, + factory2.createVariableDeclarationList([ + factory2.createVariableDeclaration( + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ) + ], 1 /* Let */) + ); + } + function createClassInfo(node) { + let instanceExtraInitializersName; + let staticExtraInitializersName; + let hasStaticInitializers = false; + let hasNonAmbientInstanceFields = false; + let hasStaticPrivateClassElements = false; + for (const member of node.members) { + if (isNamedClassElement(member) && nodeOrChildIsDecorated( + /*legacyDecorators*/ + false, + member, + node + )) { + if (hasStaticModifier(member)) { + staticExtraInitializersName != null ? staticExtraInitializersName : staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */); + } else { + instanceExtraInitializersName != null ? instanceExtraInitializersName : instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + } + } + if (isClassStaticBlockDeclaration(member)) { + hasStaticInitializers = true; + } else if (isPropertyDeclaration(member)) { + if (hasStaticModifier(member)) { + hasStaticInitializers || (hasStaticInitializers = !!member.initializer || hasDecorators(member)); + } else { + hasNonAmbientInstanceFields || (hasNonAmbientInstanceFields = !isAmbientPropertyDeclaration(member)); + } + } + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + hasStaticPrivateClassElements = true; + } + if (staticExtraInitializersName && instanceExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) { + break; + } + } + return { + class: node, + instanceExtraInitializersName, + staticExtraInitializersName, + hasStaticInitializers, + hasNonAmbientInstanceFields, + hasStaticPrivateClassElements + }; + } + function containsLexicalSuperInStaticInitializer(node) { + for (const member of node.members) { + if (isClassStaticBlockDeclaration(member) || isPropertyDeclaration(member) && hasStaticModifier(member)) { + if (member.transformFlags & 134217728 /* ContainsLexicalSuper */) { + return true; + } + } + } + return false; + } + function transformClassLike(node, className) { + var _a2, _b, _c, _d, _e; + startLexicalEnvironment(); + const classReference = (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node); + const classInfo2 = createClassInfo(node); + const classDefinitionStatements = []; + let leadingBlockStatements; + let trailingBlockStatements; + let syntheticConstructor; + let heritageClauses; + let shouldTransformPrivateStaticElementsInClass = false; + const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass(node)); + if (classDecorators) { + classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */); + classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */); + classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */); + classInfo2.classThis = factory2.createUniqueName("_classThis", 16 /* Optimistic */); + classDefinitionStatements.push( + createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)), + createLet(classInfo2.classDescriptorName), + createLet(classInfo2.classExtraInitializersName, factory2.createArrayLiteralExpression()), + createLet(classInfo2.classThis) + ); + if (classInfo2.hasStaticPrivateClassElements) { + shouldTransformPrivateStaticElementsInClass = true; + shouldTransformPrivateStaticElementsInFile = true; + } + } + if (classDecorators && containsLexicalSuperInStaticInitializer(node)) { + const extendsClause = getHeritageClause(node.heritageClauses, 94 /* ExtendsKeyword */); + const extendsElement = extendsClause && firstOrUndefined(extendsClause.types); + const extendsExpression = extendsElement && visitNode(extendsElement.expression, visitor, isExpression); + if (extendsExpression) { + classInfo2.classSuper = factory2.createUniqueName("_classSuper", 16 /* Optimistic */); + const unwrapped = skipOuterExpressions(extendsExpression); + const safeExtendsExpression = isClassExpression(unwrapped) && !unwrapped.name || isFunctionExpression(unwrapped) && !unwrapped.name || isArrowFunction(unwrapped) ? factory2.createComma(factory2.createNumericLiteral(0), extendsExpression) : extendsExpression; + classDefinitionStatements.push(createLet(classInfo2.classSuper, safeExtendsExpression)); + const updatedExtendsElement = factory2.updateExpressionWithTypeArguments( + extendsElement, + classInfo2.classSuper, + /*typeArguments*/ + void 0 + ); + const updatedExtendsClause = factory2.updateHeritageClause(extendsClause, [updatedExtendsElement]); + heritageClauses = factory2.createNodeArray([updatedExtendsClause]); + } + } else { + heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + } + const renamedClassThis = (_b = classInfo2.classThis) != null ? _b : factory2.createThis(); + const needsSetNameHelper = !((_c = getOriginalNode(node, isClassLike)) == null ? void 0 : _c.name) && (classDecorators || !isStringLiteral(className) || !isEmptyStringLiteral(className)); + if (needsSetNameHelper) { + const setNameExpr = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), className); + leadingBlockStatements = append(leadingBlockStatements, factory2.createExpressionStatement(setNameExpr)); + } + enterClass(classInfo2); + let members = visitNodes2(node.members, classElementVisitor, isClassElement); + if (pendingExpressions) { + let outerThis; + for (let expression of pendingExpressions) { + expression = visitNode(expression, function thisVisitor(node2) { + if (!(node2.transformFlags & 16384 /* ContainsLexicalThis */)) { + return node2; + } + switch (node2.kind) { + case 108 /* ThisKeyword */: + if (!outerThis) { + outerThis = factory2.createUniqueName("_outerThis", 16 /* Optimistic */); + classDefinitionStatements.unshift(createLet(outerThis, factory2.createThis())); + } + return outerThis; + default: + return visitEachChild(node2, thisVisitor, context); + } + }, isExpression); + const statement = factory2.createExpressionStatement(expression); + leadingBlockStatements = append(leadingBlockStatements, statement); + } + pendingExpressions = void 0; + } + exitClass(); + if (classInfo2.instanceExtraInitializersName && !getFirstConstructorWithBody(node)) { + const initializerStatements = prepareConstructor(node, classInfo2); + if (initializerStatements) { + const extendsClauseElement = getEffectiveBaseTypeNode(node); + const isDerivedClass = !!(extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */); + const constructorStatements = []; + if (isDerivedClass) { + const spreadArguments = factory2.createSpreadElement(factory2.createIdentifier("arguments")); + const superCall = factory2.createCallExpression( + factory2.createSuper(), + /*typeArguments*/ + void 0, + [spreadArguments] + ); + constructorStatements.push(factory2.createExpressionStatement(superCall)); + } + addRange(constructorStatements, initializerStatements); + const constructorBody = factory2.createBlock( + constructorStatements, + /*multiLine*/ + true + ); + syntheticConstructor = factory2.createConstructorDeclaration( + /*modifiers*/ + void 0, + [], + constructorBody + ); + } + } + if (classInfo2.staticExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.staticExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.instanceExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.instanceExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (!isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticFieldDecorationStatements); + if (classInfo2.classDescriptorName && classInfo2.classDecoratorsName && classInfo2.classExtraInitializersName && classInfo2.classThis) { + leadingBlockStatements != null ? leadingBlockStatements : leadingBlockStatements = []; + const valueProperty = factory2.createPropertyAssignment("value", factory2.createThis()); + const classDescriptor = factory2.createObjectLiteralExpression([valueProperty]); + const classDescriptorAssignment = factory2.createAssignment(classInfo2.classDescriptorName, classDescriptor); + const classNameReference = factory2.createPropertyAccessExpression(factory2.createThis(), "name"); + const esDecorateHelper2 = emitHelpers().createESDecorateHelper( + factory2.createNull(), + classDescriptorAssignment, + classInfo2.classDecoratorsName, + { kind: "class", name: classNameReference }, + factory2.createNull(), + classInfo2.classExtraInitializersName + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateHelper2); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(node)); + leadingBlockStatements.push(esDecorateStatement); + const classDescriptorValueReference = factory2.createPropertyAccessExpression(classInfo2.classDescriptorName, "value"); + const classThisAssignment = factory2.createAssignment(classInfo2.classThis, classDescriptorValueReference); + const classReferenceAssignment = factory2.createAssignment(classReference, classThisAssignment); + leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment)); + } + if (classInfo2.staticExtraInitializersName) { + const runStaticInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.staticExtraInitializersName); + const runStaticInitializersStatement = factory2.createExpressionStatement(runStaticInitializersHelper); + setSourceMapRange(runStaticInitializersStatement, (_d = node.name) != null ? _d : moveRangePastDecorators(node)); + leadingBlockStatements = append(leadingBlockStatements, runStaticInitializersStatement); + } + if (classInfo2.classExtraInitializersName) { + const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName); + const runClassInitializersStatement = factory2.createExpressionStatement(runClassInitializersHelper); + setSourceMapRange(runClassInitializersStatement, (_e = node.name) != null ? _e : moveRangePastDecorators(node)); + trailingBlockStatements = append(trailingBlockStatements, runClassInitializersStatement); + } + if (leadingBlockStatements && trailingBlockStatements && !classInfo2.hasStaticInitializers) { + addRange(leadingBlockStatements, trailingBlockStatements); + trailingBlockStatements = void 0; + } + let newMembers = members; + if (leadingBlockStatements) { + const leadingStaticBlockBody = factory2.createBlock( + leadingBlockStatements, + /*multiline*/ + true + ); + const leadingStaticBlock = factory2.createClassStaticBlockDeclaration(leadingStaticBlockBody); + if (shouldTransformPrivateStaticElementsInClass) { + setInternalEmitFlags(leadingStaticBlock, 32 /* TransformPrivateStaticElements */); + } + newMembers = [leadingStaticBlock, ...newMembers]; + } + if (syntheticConstructor) { + newMembers = [...newMembers, syntheticConstructor]; + } + if (trailingBlockStatements) { + const trailingStaticBlockBody = factory2.createBlock( + trailingBlockStatements, + /*multiline*/ + true + ); + const trailingStaticBlock = factory2.createClassStaticBlockDeclaration(trailingStaticBlockBody); + newMembers = [...newMembers, trailingStaticBlock]; + } + if (newMembers !== members) { + members = setTextRange(factory2.createNodeArray(newMembers), members); + } + const lexicalEnvironment = endLexicalEnvironment(); + let classExpression; + if (classDecorators) { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + const classReferenceDeclaration = factory2.createVariableDeclaration( + classReference, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + classExpression + ); + const classReferenceVarDeclList = factory2.createVariableDeclarationList([classReferenceDeclaration]); + const returnExpr = classInfo2.classThis ? factory2.createAssignment(classReference, classInfo2.classThis) : classReference; + classDefinitionStatements.push( + factory2.createVariableStatement( + /*modifiers*/ + void 0, + classReferenceVarDeclList + ), + factory2.createReturnStatement(returnExpr) + ); + } else { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + classDefinitionStatements.push(factory2.createReturnStatement(classExpression)); + } + if (shouldTransformPrivateStaticElementsInClass) { + addInternalEmitFlags(classExpression, 32 /* TransformPrivateStaticElements */); + for (const member of classExpression.members) { + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + addInternalEmitFlags(member, 32 /* TransformPrivateStaticElements */); + } + } + } + setOriginalNode(classExpression, node); + getOrCreateEmitNode(classExpression).classThis = classInfo2.classThis; + return factory2.createImmediatelyInvokedArrowFunction(factory2.mergeLexicalEnvironment(classDefinitionStatements, lexicalEnvironment)); + } + function isDecoratedClassLike(node) { + return classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + false, + node + ) || childIsDecorated( + /*legacyDecorators*/ + false, + node + ); + } + function visitClassDeclaration(node) { + var _a2; + if (isDecoratedClassLike(node)) { + if (hasSyntacticModifier(node, 1 /* Export */) && hasSyntacticModifier(node, 1024 /* Default */)) { + const originalClass = (_a2 = getOriginalNode(node, isClassLike)) != null ? _a2 : node; + const className = originalClass.name ? factory2.createStringLiteralFromNode(originalClass.name) : factory2.createStringLiteral("default"); + const iife = transformClassLike(node, className); + const statement = factory2.createExportDefault(iife); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + setSourceMapRange(statement, moveRangePastDecorators(node)); + return statement; + } else { + Debug.assertIsDefined(node.name, "A class declaration that is not a default export must have a name."); + const iife = transformClassLike(node, factory2.createStringLiteralFromNode(node.name)); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const varDecl = factory2.createVariableDeclaration( + node.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + iife + ); + const varDecls = factory2.createVariableDeclarationList([varDecl], 1 /* Let */); + const statement = factory2.createVariableStatement(modifiers, varDecls); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + return statement; + } + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassDeclaration( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function visitClassExpression(node, referencedName) { + if (isDecoratedClassLike(node)) { + const className = node.name ? factory2.createStringLiteralFromNode(node.name) : referencedName != null ? referencedName : factory2.createStringLiteral(""); + const iife = transformClassLike(node, className); + setOriginalNode(iife, node); + return iife; + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassExpression( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function prepareConstructor(_parent, classInfo2) { + if (classInfo2.instanceExtraInitializersName && !classInfo2.hasNonAmbientInstanceFields) { + const statements = []; + statements.push( + factory2.createExpressionStatement( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo2.instanceExtraInitializersName + ) + ) + ); + return statements; + } + } + function visitConstructorDeclaration(node) { + enterClassElement(node); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const parameters = visitNodes2(node.parameters, visitor, isParameter); + let body; + if (node.body && classInfo) { + const initializerStatements = prepareConstructor(classInfo.class, classInfo); + if (initializerStatements) { + const statements = []; + const nonPrologueStart = factory2.copyPrologue( + node.body.statements, + statements, + /*ensureUseStrict*/ + false, + visitor + ); + addRange(statements, initializerStatements); + addRange(statements, visitNodes2(node.body.statements, visitor, isStatement, nonPrologueStart)); + body = factory2.createBlock( + statements, + /*multiLine*/ + true + ); + setOriginalNode(body, node.body); + setTextRange(body, node.body); + } + } + body != null ? body : body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return factory2.updateConstructorDeclaration(node, modifiers, parameters, body); + } + function finishClassElement(updated, original) { + if (updated !== original) { + setCommentRange(updated, original); + setSourceMapRange(updated, moveRangePastDecorators(original)); + } + return updated; + } + function partialTransformClassElement(member, useNamedEvaluation, classInfo2, createDescriptor) { + var _a2, _b, _c, _d, _e, _f, _g, _h; + let referencedName; + let name; + let initializersName; + let thisArg; + let descriptorName; + if (!classInfo2) { + const modifiers2 = visitNodes2(member.modifiers, modifierVisitor, isModifier); + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + return { modifiers: modifiers2, referencedName, name, initializersName, descriptorName, thisArg }; + } + const memberDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClassElement( + member, + classInfo2.class, + /*useLegacyDecorators*/ + false + )); + const modifiers = visitNodes2(member.modifiers, modifierVisitor, isModifier); + if (memberDecorators) { + const memberDecoratorsName = createHelperVariable(member, "decorators"); + const memberDecoratorsArray = factory2.createArrayLiteralExpression(memberDecorators); + const memberDecoratorsAssignment = factory2.createAssignment(memberDecoratorsName, memberDecoratorsArray); + const memberInfo = { memberDecoratorsName }; + (_a2 = classInfo2.memberInfos) != null ? _a2 : classInfo2.memberInfos = /* @__PURE__ */ new Map(); + classInfo2.memberInfos.set(member, memberInfo); + pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + pendingExpressions.push(memberDecoratorsAssignment); + const statements = isMethodOrAccessor(member) || isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_b = classInfo2.staticNonFieldDecorationStatements) != null ? _b : classInfo2.staticNonFieldDecorationStatements = [] : (_c = classInfo2.nonStaticNonFieldDecorationStatements) != null ? _c : classInfo2.nonStaticNonFieldDecorationStatements = [] : isPropertyDeclaration(member) && !isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_d = classInfo2.staticFieldDecorationStatements) != null ? _d : classInfo2.staticFieldDecorationStatements = [] : (_e = classInfo2.nonStaticFieldDecorationStatements) != null ? _e : classInfo2.nonStaticFieldDecorationStatements = [] : Debug.fail(); + const kind = isGetAccessorDeclaration(member) ? "getter" : isSetAccessorDeclaration(member) ? "setter" : isMethodDeclaration(member) ? "method" : isAutoAccessorPropertyDeclaration(member) ? "accessor" : isPropertyDeclaration(member) ? "field" : Debug.fail(); + let propertyName; + if (isIdentifier(member.name) || isPrivateIdentifier(member.name)) { + propertyName = { computed: false, name: member.name }; + } else if (isPropertyNameLiteral(member.name)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(member.name) }; + } else { + const expression = member.name.expression; + if (isPropertyNameLiteral(expression) && !isIdentifier(expression)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(expression) }; + } else { + enterName(); + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + propertyName = { computed: true, name: referencedName }; + exitName(); + } + } + const context2 = { + kind, + name: propertyName, + static: isStatic(member), + private: isPrivateIdentifier(member.name), + access: { + // 15.7.3 CreateDecoratorAccessObject (kind, name) + // 2. If _kind_ is ~field~, ~method~, ~accessor~, or ~getter~, then ... + get: isPropertyDeclaration(member) || isGetAccessorDeclaration(member) || isMethodDeclaration(member), + // 3. If _kind_ is ~field~, ~accessor~, or ~setter~, then ... + set: isPropertyDeclaration(member) || isSetAccessorDeclaration(member) + } + }; + const extraInitializers = isStatic(member) ? (_f = classInfo2.staticExtraInitializersName) != null ? _f : classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */) : (_g = classInfo2.instanceExtraInitializersName) != null ? _g : classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + if (isMethodOrAccessor(member)) { + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) { + descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier)); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor != null ? descriptor : factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), extraInitializers); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } else if (isPropertyDeclaration(member)) { + initializersName = (_h = memberInfo.memberInitializersName) != null ? _h : memberInfo.memberInitializersName = createHelperVariable(member, "initializers"); + if (isStatic(member)) { + thisArg = classInfo2.classThis; + } + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && hasAccessorModifier(member) && createDescriptor) { + descriptor = createDescriptor( + member, + /*modifiers*/ + void 0 + ); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper( + isAutoAccessorPropertyDeclaration(member) ? factory2.createThis() : factory2.createNull(), + descriptor != null ? descriptor : factory2.createNull(), + memberDecoratorsName, + context2, + initializersName, + extraInitializers + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } + } + if (name === void 0) { + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + } + if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) { + setEmitFlags(name, 1024 /* NoLeadingComments */); + } + return { modifiers, referencedName, name, initializersName, descriptorName, thisArg }; + } + function visitMethodDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createMethodDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createMethodDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateMethodDeclaration( + node, + modifiers, + node.asteriskToken, + name, + /*questionToken*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitGetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createGetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createGetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateGetAccessorDeclaration( + node, + modifiers, + name, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitSetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createSetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createSetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateSetAccessorDeclaration(node, modifiers, name, parameters, body), node); + } + } + function visitClassStaticBlockDeclaration(node) { + enterClassElement(node); + if (classInfo) + classInfo.hasStaticInitializers = true; + const result = visitEachChild(node, visitor, context); + exitClassElement(); + return result; + } + function visitPropertyDeclaration(node) { + enterClassElement(node); + Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented."); + const useNamedEvaluation = isNamedEvaluation(node, isAnonymousClassNeedingAssignedName); + const { modifiers, name, referencedName, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, useNamedEvaluation, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0); + startLexicalEnvironment(); + let initializer = referencedName ? visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression) : visitNode(node.initializer, visitor, isExpression); + if (initializersName) { + initializer = emitHelpers().createRunInitializersHelper( + thisArg != null ? thisArg : factory2.createThis(), + initializersName, + initializer != null ? initializer : factory2.createVoidZero() + ); + } + if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) { + classInfo.hasInjectedInstanceInitializers = true; + initializer != null ? initializer : initializer = factory2.createVoidZero(); + initializer = factory2.createParenthesizedExpression(factory2.createComma( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo.instanceExtraInitializersName + ), + initializer + )); + } + if (isStatic(node) && classInfo && initializer) { + classInfo.hasStaticInitializers = true; + } + const declarations = endLexicalEnvironment(); + if (some(declarations)) { + initializer = factory2.createImmediatelyInvokedArrowFunction([ + ...declarations, + factory2.createReturnStatement(initializer) + ]); + } + exitClassElement(); + if (hasAccessorModifier(node) && descriptorName) { + const commentRange = getCommentRange(node); + const sourceMapRange = getSourceMapRange(node); + const name2 = node.name; + let getterName = name2; + let setterName = name2; + if (isComputedPropertyName(name2) && !isSimpleInlineableExpression(name2.expression)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name2); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name2, visitNode(name2.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name2, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name2.expression); + const expression = visitNode(name2.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name2.expression); + getterName = factory2.updateComputedPropertyName(name2, assignment); + setterName = factory2.updateComputedPropertyName(name2, temp); + } + } + const modifiersWithoutAccessor = visitNodes2(modifiers, (node2) => node2.kind !== 127 /* AccessorKeyword */ ? node2 : void 0, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiersWithoutAccessor, initializer); + setOriginalNode(backingField, node); + setEmitFlags(backingField, 3072 /* NoComments */); + setSourceMapRange(backingField, sourceMapRange); + setSourceMapRange(backingField.name, node.name); + const getter = createGetAccessorDescriptorForwarder(modifiersWithoutAccessor, getterName, descriptorName); + setOriginalNode(getter, node); + setCommentRange(getter, commentRange); + setSourceMapRange(getter, sourceMapRange); + const setter = createSetAccessorDescriptorForwarder(modifiersWithoutAccessor, setterName, descriptorName); + setOriginalNode(setter, node); + setEmitFlags(setter, 3072 /* NoComments */); + setSourceMapRange(setter, sourceMapRange); + return [backingField, getter, setter]; + } + return finishClassElement(factory2.updatePropertyDeclaration( + node, + modifiers, + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ), node); + } + function visitThisExpression(node) { + return classThis != null ? classThis : node; + } + function visitCallExpression(node) { + if (isSuperProperty(node.expression) && classThis) { + const expression = visitNode(node.expression, visitor, isExpression); + const argumentsList = visitNodes2(node.arguments, visitor, isExpression); + const invocation = factory2.createFunctionCallCall(expression, classThis, argumentsList); + setOriginalNode(invocation, node); + setTextRange(invocation, node); + return invocation; + } + return visitEachChild(node, visitor, context); + } + function visitTaggedTemplateExpression(node) { + if (isSuperProperty(node.tag) && classThis) { + const tag = visitNode(node.tag, visitor, isExpression); + const boundTag = factory2.createFunctionBindCall(tag, classThis, []); + setOriginalNode(boundTag, node); + setTextRange(boundTag, node); + const template = visitNode(node.template, visitor, isTemplateLiteral); + return factory2.updateTaggedTemplateExpression( + node, + boundTag, + /*typeArguments*/ + void 0, + template + ); + } + return visitEachChild(node, visitor, context); + } + function visitPropertyAccessExpression(node) { + if (isSuperProperty(node) && isIdentifier(node.name) && classThis && classSuper) { + const propertyName = factory2.createStringLiteralFromNode(node.name); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitElementAccessExpression(node) { + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = visitNode(node.argumentExpression, visitor, isExpression); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + let updated; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } else { + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + node.dotDotDotToken, + visitNode(node.name, visitor, isBindingName), + /*questionToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); + } + if (updated !== node) { + setCommentRange(updated, node); + setTextRange(updated, moveRangePastModifiers(node)); + setSourceMapRange(updated, moveRangePastModifiers(node)); + setEmitFlags(updated.name, 64 /* NoTrailingSourceMap */); + } + return updated; + } + function isAnonymousClassNeedingAssignedName(node) { + return isClassExpression(node) && !node.name && isDecoratedClassLike(node); + } + function visitForStatement(node) { + return factory2.updateForStatement( + node, + visitNode(node.initializer, discardedValueVisitor, isForInitializer), + visitNode(node.condition, visitor, isExpression), + visitNode(node.incrementor, discardedValueVisitor, isExpression), + visitIterationBody(node.statement, visitor, context) + ); + } + function visitExpressionStatement(node) { + return visitEachChild(node, discardedValueVisitor, context); + } + function visitBinaryExpression(node, discarded) { + if (isDestructuringAssignment(node)) { + const left = visitAssignmentPattern(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression(node)) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isSuperProperty(node.left) && classThis && classSuper) { + let setterName = isElementAccessExpression(node.left) ? visitNode(node.left.argumentExpression, visitor, isExpression) : isIdentifier(node.left.name) ? factory2.createStringLiteralFromNode(node.left.name) : void 0; + if (setterName) { + let expression = visitNode(node.right, visitor, isExpression); + if (isCompoundAssignment(node.operatorToken.kind)) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + const superPropertyGet = factory2.createReflectGetCall( + classSuper, + getterName, + classThis + ); + setOriginalNode(superPropertyGet, node.left); + setTextRange(superPropertyGet, node.left); + expression = factory2.createBinaryExpression( + superPropertyGet, + getNonAssignmentOperatorForCompoundAssignment(node.operatorToken.kind), + expression + ); + setTextRange(expression, node); + } + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + if (temp) { + expression = factory2.createAssignment(temp, expression); + setTextRange(temp, node); + } + expression = factory2.createReflectSetCall( + classSuper, + setterName, + expression, + classThis + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + if (node.operatorToken.kind === 27 /* CommaToken */) { + const left = visitNode(node.left, discardedValueVisitor, isExpression); + const right = visitNode(node.right, discarded ? discardedValueVisitor : visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitEachChild(node, visitor, context); + } + function visitPreOrPostfixUnaryExpression(node, discarded) { + if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { + const operand = skipParentheses(node.operand); + if (isSuperProperty(operand) && classThis && classSuper) { + let setterName = isElementAccessExpression(operand) ? visitNode(operand.argumentExpression, visitor, isExpression) : isIdentifier(operand.name) ? factory2.createStringLiteralFromNode(operand.name) : void 0; + if (setterName) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + let expression = factory2.createReflectGetCall(classSuper, getterName, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); + expression = factory2.createReflectSetCall(classSuper, setterName, expression, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + return visitEachChild(node, visitor, context); + } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.getGeneratedNameForNode(node); + hoistVariableDeclaration(referencedName); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } + function visitPropertyName(node) { + if (isComputedPropertyName(node)) { + return visitComputedPropertyName(node); + } + return visitNode(node, visitor, isPropertyName); + } + function visitComputedPropertyName(node) { + let expression = visitNode(node.expression, visitor, isExpression); + if (!isSimpleInlineableExpression(expression)) { + expression = injectPendingExpressions(expression); + } + return factory2.updateComputedPropertyName(node, expression); + } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (propertyName) { + const paramName = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + const expression = factory2.createAssignmentTargetWrapper( + paramName, + factory2.createReflectSetCall( + classSuper, + propertyName, + paramName, + classThis + ) + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + return expression; + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentTarget = visitDestructuringAssignmentTarget(node.left); + let initializer; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + initializer = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + } else { + initializer = visitNode(node.right, visitor, isExpression); + } + return factory2.updateBinaryExpression(node, assignmentTarget, node.operatorToken, initializer); + } else { + return visitDestructuringAssignmentTarget(node); + } + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const name = visitNode(node.name, visitor, isIdentifier); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + const elements = visitNodes2(node.elements, visitArrayAssignmentElement, isExpression); + return factory2.updateArrayLiteralExpression(node, elements); + } else { + const properties = visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike); + return factory2.updateObjectLiteralExpression(node, properties); + } + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const referencedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function injectPendingExpressions(expression) { + if (some(pendingExpressions)) { + if (isParenthesizedExpression(expression)) { + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); + } else { + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); + } + pendingExpressions = void 0; + } + return expression; + } + function transformAllDecoratorsOfDeclaration(allDecorators) { + if (!allDecorators) { + return void 0; + } + const decoratorExpressions = []; + addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + return decoratorExpressions; + } + function transformDecorator(decorator) { + const expression = visitNode(decorator.expression, visitor, isExpression); + setEmitFlags(expression, 3072 /* NoComments */); + return expression; + } + function createDescriptorMethod(original, name, modifiers, asteriskToken, kind, parameters, body) { + const func = factory2.createFunctionExpression( + modifiers, + asteriskToken, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body != null ? body : factory2.createBlock([]) + ); + setOriginalNode(func, original); + setSourceMapRange(func, moveRangePastDecorators(original)); + setEmitFlags(func, 3072 /* NoComments */); + const prefix = kind === "get" || kind === "set" ? kind : void 0; + const functionName = factory2.createStringLiteralFromNode( + name, + /*isSingleQuote*/ + void 0 + ); + const namedFunction = emitHelpers().createSetFunctionNameHelper(func, functionName, prefix); + const method = factory2.createPropertyAssignment(factory2.createIdentifier(kind), namedFunction); + setOriginalNode(method, original); + setSourceMapRange(method, moveRangePastDecorators(original)); + setEmitFlags(method, 3072 /* NoComments */); + return method; + } + function createMethodDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + node.asteriskToken, + "value", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createGetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createSetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createAccessorPropertyDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ) + ) + ]) + ), + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createExpressionStatement( + factory2.createAssignment( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ), + factory2.createIdentifier("value") + ) + ) + ]) + ) + ]); + } + function createMethodDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("value") + ) + ) + ]) + ); + } + function createGetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("get") + ), + factory2.createThis(), + [] + ) + ) + ]) + ); + } + function createSetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createSetAccessorDeclaration( + modifiers, + name, + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("set") + ), + factory2.createThis(), + [factory2.createIdentifier("value")] + ) + ) + ]) + ); + } + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + } + var init_esDecorators = __esm({ + "src/compiler/transformers/esDecorators.ts"() { + "use strict"; + init_ts2(); + } + }); + // src/compiler/transformers/es2017.ts function transformES2017(context) { const { @@ -90879,21 +94176,21 @@ ${lanes.join("\n")} node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } function visitForOfStatementInAsyncBody(node) { return factory2.updateForOfStatement( node, - visitNode(node.awaitModifier, visitor, isToken), + visitNode(node.awaitModifier, visitor, isAwaitKeyword), isVariableDeclarationListWithCollidingName(node.initializer) ? visitVariableDeclarationListWithCollidingNames( node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } @@ -90930,7 +94227,7 @@ ${lanes.join("\n")} function visitConstructorDeclaration(node) { return factory2.updateConstructorDeclaration( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), visitParameterList(node.parameters, visitor, context), transformMethodBody(node) ); @@ -90988,7 +94285,7 @@ ${lanes.join("\n")} function visitFunctionExpression(node) { return factory2.updateFunctionExpression( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), node.asteriskToken, node.name, /*typeParameters*/ @@ -91002,7 +94299,7 @@ ${lanes.join("\n")} function visitArrowFunction(node) { return factory2.updateArrowFunction( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), /*typeParameters*/ void 0, visitParameterList(node.parameters, visitor, context), @@ -91059,7 +94356,7 @@ ${lanes.join("\n")} ), node ); - return visitNode(converted, visitor, isExpression); + return Debug.checkDefined(visitNode(converted, visitor, isExpression)); } function collidesWithParameterName({ name }) { if (isIdentifier(name)) { @@ -91191,7 +94488,7 @@ ${lanes.join("\n")} if (isBlock(body)) { return factory2.updateBlock(body, visitNodes2(body.statements, asyncBodyVisitor, isStatement, start)); } else { - return factory2.converters.convertToFunctionBlock(visitNode(body, asyncBodyVisitor, isConciseBody)); + return factory2.converters.convertToFunctionBlock(Debug.checkDefined(visitNode(body, asyncBodyVisitor, isConciseBody))); } } function getPromiseConstructor(type) { @@ -91552,7 +94849,7 @@ ${lanes.join("\n")} return visitObjectLiteralExpression(node); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 295 /* CatchClause */: return visitCatchClause(node); @@ -92310,7 +95607,7 @@ ${lanes.join("\n")} /*questionToken*/ void 0, visitor, - isToken + isQuestionToken ), /*typeParameters*/ void 0, @@ -93002,15 +96299,10 @@ ${lanes.join("\n")} if ((node.transformFlags & 16 /* ContainsES2021 */) === 0) { return node; } - switch (node.kind) { - case 223 /* BinaryExpression */: - const binaryExpression = node; - if (isLogicalOrCoalescingAssignmentExpression(binaryExpression)) { - return transformLogicalAssignment(binaryExpression); - } - default: - return visitEachChild(node, visitor, context); + if (isLogicalOrCoalescingAssignmentExpression(node)) { + return transformLogicalAssignment(node); } + return visitEachChild(node, visitor, context); } function transformLogicalAssignment(binaryExpression) { const operator = binaryExpression.operatorToken; @@ -93152,7 +96444,7 @@ ${lanes.join("\n")} factory2.createIdentifier(name), generatedName ); - generatedName.generatedImportReference = specifier; + setIdentifierGeneratedImportReference(generatedName, specifier); specifierSourceImports.set(name, specifier); return generatedName; } @@ -93468,7 +96760,7 @@ ${lanes.join("\n")} return element; } function transformJsxSpreadAttributeToSpreadAssignment(node) { - return factory2.createSpreadAssignment(visitNode(node.expression, visitor, isExpression)); + return factory2.createSpreadAssignment(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); } function transformJsxAttributesToObjectProps(attrs, children) { const target = getEmitScriptTarget(compilerOptions); @@ -93498,7 +96790,7 @@ ${lanes.join("\n")} return singleOrUndefined(expressions) || emitHelpers().createAssignHelper(expressions); } function transformJsxSpreadAttributeToExpression(node) { - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } function transformJsxAttributeToObjectLiteralElement(node) { const name = getAttributeName(node); @@ -93518,7 +96810,7 @@ ${lanes.join("\n")} if (node.expression === void 0) { return factory2.createTrue(); } - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } if (isJsxElement(node)) { return visitJsxElement( @@ -94042,7 +97334,7 @@ ${lanes.join("\n")} node, /*lookInLabeledStatements*/ false - ) && shouldConvertIterationStatement(node) || (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) !== 0; + ) && shouldConvertIterationStatement(node) || (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) !== 0; } function visitor(node) { return shouldVisitNode(node) ? visitorWorker( @@ -94173,7 +97465,7 @@ ${lanes.join("\n")} return visitParenthesizedExpression(node, expressionResultIsUnused2); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 14 /* NoSubstitutionTemplateLiteral */: case 15 /* TemplateHead */: @@ -94276,7 +97568,7 @@ ${lanes.join("\n")} [ factory2.createPropertyAssignment( factory2.createIdentifier("value"), - node.expression ? visitNode(node.expression, visitor, isExpression) : factory2.createVoidZero() + node.expression ? Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) : factory2.createVoidZero() ) ] ) @@ -94308,7 +97600,7 @@ ${lanes.join("\n")} return convertedLoopState.argumentsName || (convertedLoopState.argumentsName = factory2.createUniqueName("arguments")); } } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { return setOriginalNode(setTextRange( factory2.createIdentifier(unescapeLeadingUnderscores(node.escapedText)), node @@ -94447,7 +97739,7 @@ ${lanes.join("\n")} outer, /*typeArguments*/ void 0, - extendsClauseElement ? [visitNode(extendsClauseElement.expression, visitor, isExpression)] : [] + extendsClauseElement ? [Debug.checkDefined(visitNode(extendsClauseElement.expression, visitor, isExpression))] : [] ) ); addSyntheticLeadingComment(result, 3 /* MultiLineCommentTrivia */, "* @class "); @@ -94789,7 +98081,7 @@ ${lanes.join("\n")} factory2.createExpressionStatement( factory2.createAssignment( factory2.getGeneratedNameForNode(parameter), - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ) ), 2097152 /* CustomPrologue */ @@ -94800,7 +98092,7 @@ ${lanes.join("\n")} return false; } function insertDefaultValueAssignmentForInitializer(statements, parameter, name, initializer) { - initializer = visitNode(initializer, visitor, isExpression); + initializer = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); const statement = factory2.createIfStatement( factory2.createTypeCheck(factory2.cloneNode(name), "undefined"), setEmitFlags( @@ -95076,6 +98368,7 @@ ${lanes.join("\n")} container ); const propertyName = visitNode(member.name, visitor, isPropertyName); + Debug.assert(propertyName); let e; if (!isPrivateIdentifier(propertyName) && getUseDefineForClassFields(context.getCompilerOptions())) { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; @@ -95119,6 +98412,7 @@ ${lanes.join("\n")} setEmitFlags(target, 3072 /* NoComments */ | 64 /* NoTrailingSourceMap */); setSourceMapRange(target, firstAccessor.name); const visitedAccessorName = visitNode(firstAccessor.name, visitor, isPropertyName); + Debug.assert(visitedAccessorName); if (isPrivateIdentifier(visitedAccessorName)) { return Debug.failBadSyntaxKind(visitedAccessorName, "Encountered unhandled private identifier while transforming ES2015."); } @@ -95391,9 +98685,9 @@ ${lanes.join("\n")} if (node.operatorToken.kind === 27 /* CommaToken */) { return factory2.updateBinaryExpression( node, - visitNode(node.left, visitorWithUnusedExpressionResult, isExpression), + Debug.checkDefined(visitNode(node.left, visitorWithUnusedExpressionResult, isExpression)), node.operatorToken, - visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression) + Debug.checkDefined(visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -95408,6 +98702,7 @@ ${lanes.join("\n")} const visited = visitNode(element, i < node.elements.length - 1 ? visitorWithUnusedExpressionResult : visitor, isExpression); if (result || visited !== element) { result || (result = node.elements.slice(0, i)); + Debug.assert(visited); result.push(visited); } } @@ -95415,7 +98710,7 @@ ${lanes.join("\n")} return factory2.updateCommaListExpression(node, elements); } function isVariableStatementOfTypeScriptClassWrapper(node) { - return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getEmitFlags(node.declarationList.declarations[0].initializer) & 67108864 /* TypeScriptClassWrapper */); + return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getInternalEmitFlags(node.declarationList.declarations[0].initializer) & 1 /* TypeScriptClassWrapper */); } function visitVariableStatement(node) { const ancestorFacts = enterSubtree(0 /* None */, hasSyntacticModifier(node, 1 /* Export */) ? 32 /* ExportedVariableStatement */ : 0 /* None */); @@ -95434,7 +98729,7 @@ ${lanes.join("\n")} 0 /* All */ ); } else { - assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, visitNode(decl.initializer, visitor, isExpression)); + assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, Debug.checkDefined(visitNode(decl.initializer, visitor, isExpression))); setTextRange(assignment, decl); } assignments = append(assignments, assignment); @@ -95456,7 +98751,7 @@ ${lanes.join("\n")} if (node.flags & 3 /* BlockScoped */) { enableSubstitutionsForBlockScopedBindings(); } - const declarations = flatMap(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration); + const declarations = visitNodes2(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration, isVariableDeclaration); const declarationList = factory2.createVariableDeclarationList(declarations); setOriginalNode(declarationList, node); setTextRange(declarationList, node); @@ -95540,7 +98835,7 @@ ${lanes.join("\n")} statement, /*outermostLabeledStatement*/ node - ) : factory2.restoreEnclosingLabel(visitNode(statement, visitor, isStatement, factory2.liftToBlock), node, convertedLoopState && resetLabel); + ) : factory2.restoreEnclosingLabel(Debug.checkDefined(visitNode(statement, visitor, isStatement, factory2.liftToBlock)), node, convertedLoopState && resetLabel); } function visitIterationStatement(node, outermostLabeledStatement) { switch (node.kind) { @@ -95583,7 +98878,7 @@ ${lanes.join("\n")} visitNode(node.initializer, visitorWithUnusedExpressionResult, isForInitializer), visitNode(node.condition, visitor, isExpression), visitNode(node.incrementor, visitorWithUnusedExpressionResult, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } function visitForInStatement(node, outermostLabeledStatement) { @@ -95669,13 +98964,14 @@ ${lanes.join("\n")} ))); } else { setTextRangeEnd(assignment, initializer.end); - statements.push(setTextRange(factory2.createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1))); + statements.push(setTextRange(factory2.createExpressionStatement(Debug.checkDefined(visitNode(assignment, visitor, isExpression))), moveRangeEnd(initializer, -1))); } } if (convertedLoopBodyStatements) { return createSyntheticBlockForConvertedStatements(addRange(statements, convertedLoopBodyStatements)); } else { const statement = visitNode(node.statement, visitor, isStatement, factory2.liftToBlock); + Debug.assert(statement); if (isBlock(statement)) { return factory2.updateBlock(statement, setTextRange(factory2.createNodeArray(concatenate(statements, statement.statements)), statement.statements)); } else { @@ -95696,6 +98992,7 @@ ${lanes.join("\n")} } function convertForOfStatementForArray(node, outermostLabeledStatement, convertedLoopBodyStatements) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const counter = factory2.createLoopVariable(); const rhsReference = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ @@ -95755,6 +99052,7 @@ ${lanes.join("\n")} } function convertForOfStatementForIterable(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const iterator = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ void 0 @@ -96012,7 +99310,7 @@ ${lanes.join("\n")} loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } } else { - const clone2 = convertIterationStatementCore(node, initializerFunction, visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)); + const clone2 = convertIterationStatementCore(node, initializerFunction, Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock))); loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } statements.push(loop); @@ -96050,16 +99348,16 @@ ${lanes.join("\n")} node, /*awaitModifier*/ void 0, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } function convertForInStatement(node, convertedLoopBody) { return factory2.updateForInStatement( node, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -96067,13 +99365,13 @@ ${lanes.join("\n")} return factory2.updateDoStatement( node, convertedLoopBody, - visitNode(node.expression, visitor, isExpression) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) ); } function convertWhileStatement(node, convertedLoopBody) { return factory2.updateWhileStatement( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -96235,7 +99533,7 @@ ${lanes.join("\n")} void 0, /*type*/ void 0, - visitNode( + Debug.checkDefined(visitNode( factory2.createBlock( statements, /*multiLine*/ @@ -96243,7 +99541,7 @@ ${lanes.join("\n")} ), visitor, isBlock - ) + )) ), emitFlags ) @@ -96266,7 +99564,7 @@ ${lanes.join("\n")} if (node.incrementor) { statements.push(factory2.createIfStatement( currentState.conditionVariable, - factory2.createExpressionStatement(visitNode(node.incrementor, visitor, isExpression)), + factory2.createExpressionStatement(Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression))), factory2.createExpressionStatement(factory2.createAssignment(currentState.conditionVariable, factory2.createTrue())) )); } else { @@ -96277,11 +99575,12 @@ ${lanes.join("\n")} } if (shouldConvertConditionOfForStatement(node)) { statements.push(factory2.createIfStatement( - factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, visitNode(node.condition, visitor, isExpression)), - visitNode(factory2.createBreakStatement(), visitor, isStatement) + factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))), + Debug.checkDefined(visitNode(factory2.createBreakStatement(), visitor, isStatement)) )); } } + Debug.assert(statement); if (isBlock(statement)) { addRange(statements, statement.statements); } else { @@ -96549,9 +99848,9 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), - visitNode(property.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(property.initializer, visitor, isExpression)) ); setTextRange(expression, property); if (startsOnNewLine) { @@ -96564,7 +99863,7 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), factory2.cloneNode(property.name) ); @@ -96579,7 +99878,7 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(method.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(method.name, visitor, isPropertyName)) ), transformFunctionLikeToExpression( method, @@ -96700,7 +99999,7 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitCallExpression(node) { - if (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) { + if (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) { return visitTypeScriptClassWrapper(node); } const expression = skipOuterExpressions(node.expression); @@ -96713,7 +100012,7 @@ ${lanes.join("\n")} } return factory2.updateCallExpression( node, - visitNode(node.expression, callExpressionVisitor, isExpression), + Debug.checkDefined(visitNode(node.expression, callExpressionVisitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -96765,7 +100064,14 @@ ${lanes.join("\n")} if (classBodyEnd < -1) { addRange(statements, funcStatements, classBodyEnd + 1); } - addRange(statements, remainingStatements); + const returnStatement = tryCast(elementAt(funcStatements, classBodyEnd), isReturnStatement); + for (const statement of remainingStatements) { + if (isReturnStatement(statement) && (returnStatement == null ? void 0 : returnStatement.expression) && !isIdentifier(returnStatement.expression)) { + statements.push(returnStatement); + } else { + statements.push(statement); + } + } addRange( statements, classStatements, @@ -96825,8 +100131,8 @@ ${lanes.join("\n")} let resultingCall; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { resultingCall = factory2.createFunctionApplyCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), transformAndSpreadElements( node.arguments, /*isArgumentList*/ @@ -96840,8 +100146,8 @@ ${lanes.join("\n")} } else { resultingCall = setTextRange( factory2.createFunctionCallCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), visitNodes2(node.arguments, visitor, isExpression) ), node @@ -96863,7 +100169,7 @@ ${lanes.join("\n")} const { target, thisArg } = factory2.createCallBinding(factory2.createPropertyAccessExpression(node.expression, "bind"), hoistVariableDeclaration); return factory2.createNewExpression( factory2.createFunctionApplyCall( - visitNode(target, visitor, isExpression), + Debug.checkDefined(visitNode(target, visitor, isExpression)), thisArg, transformAndSpreadElements( factory2.createNodeArray([factory2.createVoidZero(), ...node.arguments]), @@ -96920,7 +100226,9 @@ ${lanes.join("\n")} return map(chunk, visitExpressionOfSpread); } function visitExpressionOfSpread(node) { + Debug.assertNode(node, isSpreadElement); let expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const isCallToReadHelper = isCallToHelper(expression, "___read"); let kind = isCallToReadHelper || isPackedArrayLiteral(expression) ? 2 /* PackedSpread */ : 1 /* UnpackedSpread */; if (compilerOptions.downlevelIteration && kind === 1 /* UnpackedSpread */ && !isArrayLiteralExpression(expression) && !isCallToReadHelper) { @@ -96971,7 +100279,7 @@ ${lanes.join("\n")} function visitTemplateExpression(node) { let expression = factory2.createStringLiteral(node.head.text); for (const span of node.templateSpans) { - const args = [visitNode(span.expression, visitor, isExpression)]; + const args = [Debug.checkDefined(visitNode(span.expression, visitor, isExpression))]; if (span.literal.text.length > 0) { args.push(factory2.createStringLiteral(span.literal.text)); } @@ -97195,7 +100503,7 @@ ${lanes.join("\n")} return node; } function trySubstituteReservedName(name) { - const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(idText(name)) : void 0); + const token = identifierToKeywordKind(name); if (token !== void 0 && token >= 81 /* FirstReservedWord */ && token <= 116 /* LastReservedWord */) { return setTextRange(factory2.createStringLiteralFromNode(name), name); } @@ -97337,7 +100645,7 @@ ${lanes.join("\n")} switch (node.kind) { case 223 /* BinaryExpression */: return visitBinaryExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node); case 224 /* ConditionalExpression */: return visitConditionalExpression(node); @@ -97549,19 +100857,19 @@ ${lanes.join("\n")} case 208 /* PropertyAccessExpression */: target = factory2.updatePropertyAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), left.name ); break; case 209 /* ElementAccessExpression */: target = factory2.updateElementAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), - cacheExpression(visitNode(left.argumentExpression, visitor, isExpression)) + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), + cacheExpression(Debug.checkDefined(visitNode(left.argumentExpression, visitor, isExpression))) ); break; default: - target = visitNode(left, visitor, isExpression); + target = Debug.checkDefined(visitNode(left, visitor, isExpression)); break; } const operator = node.operatorToken.kind; @@ -97573,7 +100881,7 @@ ${lanes.join("\n")} factory2.createBinaryExpression( cacheExpression(target), getNonAssignmentOperatorForCompoundAssignment(operator), - visitNode(right, visitor, isExpression) + Debug.checkDefined(visitNode(right, visitor, isExpression)) ), node ) @@ -97581,7 +100889,7 @@ ${lanes.join("\n")} node ); } else { - return factory2.updateBinaryExpression(node, target, node.operatorToken, visitNode(right, visitor, isExpression)); + return factory2.updateBinaryExpression(node, target, node.operatorToken, Debug.checkDefined(visitNode(right, visitor, isExpression))); } } return visitEachChild(node, visitor, context); @@ -97595,9 +100903,9 @@ ${lanes.join("\n")} } return factory2.updateBinaryExpression( node, - cacheExpression(visitNode(node.left, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(node.left, visitor, isExpression))), node.operatorToken, - visitNode(node.right, visitor, isExpression) + Debug.checkDefined(visitNode(node.right, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -97616,7 +100924,7 @@ ${lanes.join("\n")} emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(node2, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(node2, visitor, isExpression))); } } } @@ -97630,7 +100938,7 @@ ${lanes.join("\n")} emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(elem, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(elem, visitor, isExpression))); } } return factory2.inlineExpressions(pendingExpressions); @@ -97640,7 +100948,7 @@ ${lanes.join("\n")} const resultLocal = declareLocal(); emitAssignment( resultLocal, - visitNode(node.left, visitor, isExpression), + Debug.checkDefined(visitNode(node.left, visitor, isExpression)), /*location*/ node.left ); @@ -97661,7 +100969,7 @@ ${lanes.join("\n")} } emitAssignment( resultLocal, - visitNode(node.right, visitor, isExpression), + Debug.checkDefined(visitNode(node.right, visitor, isExpression)), /*location*/ node.right ); @@ -97675,13 +100983,13 @@ ${lanes.join("\n")} const resultLocal = declareLocal(); emitBreakWhenFalse( whenFalseLabel, - visitNode(node.condition, visitor, isExpression), + Debug.checkDefined(visitNode(node.condition, visitor, isExpression)), /*location*/ node.condition ); emitAssignment( resultLocal, - visitNode(node.whenTrue, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenTrue, visitor, isExpression)), /*location*/ node.whenTrue ); @@ -97689,7 +100997,7 @@ ${lanes.join("\n")} markLabel(whenFalseLabel); emitAssignment( resultLocal, - visitNode(node.whenFalse, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenFalse, visitor, isExpression)), /*location*/ node.whenFalse ); @@ -97769,7 +101077,7 @@ ${lanes.join("\n")} leadingElement = void 0; expressions2 = []; } - expressions2.push(visitNode(element, visitor, isExpression)); + expressions2.push(Debug.checkDefined(visitNode(element, visitor, isExpression))); return expressions2; } } @@ -97808,8 +101116,8 @@ ${lanes.join("\n")} if (containsYield(node.argumentExpression)) { return factory2.updateElementAccessExpression( node, - cacheExpression(visitNode(node.expression, visitor, isLeftHandSideExpression)), - visitNode(node.argumentExpression, visitor, isExpression) + cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression))), + Debug.checkDefined(visitNode(node.argumentExpression, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -97826,7 +101134,7 @@ ${lanes.join("\n")} return setOriginalNode( setTextRange( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isLeftHandSideExpression))), thisArg, visitElements(node.arguments) ), @@ -97844,7 +101152,7 @@ ${lanes.join("\n")} setTextRange( factory2.createNewExpression( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isExpression))), thisArg, visitElements( node.arguments, @@ -97960,7 +101268,7 @@ ${lanes.join("\n")} return setSourceMapRange( factory2.createAssignment( setSourceMapRange(factory2.cloneNode(node.name), node.name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), node ); @@ -97972,7 +101280,7 @@ ${lanes.join("\n")} const elseLabel = node.elseStatement ? defineLabel() : void 0; emitBreakWhenFalse( node.elseStatement ? elseLabel : endLabel, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*location*/ node.expression ); @@ -98001,7 +101309,7 @@ ${lanes.join("\n")} markLabel(loopLabel); transformAndEmitEmbeddedStatement(node.statement); markLabel(conditionLabel); - emitBreakWhenTrue(loopLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenTrue(loopLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); endLoopBlock(); } else { emitStatement(visitNode(node, visitor, isStatement)); @@ -98022,7 +101330,7 @@ ${lanes.join("\n")} const loopLabel = defineLabel(); const endLabel = beginLoopBlock(loopLabel); markLabel(loopLabel); - emitBreakWhenFalse(endLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); transformAndEmitEmbeddedStatement(node.statement); emitBreak(loopLabel); endLoopBlock(); @@ -98053,7 +101361,7 @@ ${lanes.join("\n")} emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ), initializer ) @@ -98062,7 +101370,7 @@ ${lanes.join("\n")} } markLabel(conditionLabel); if (node.condition) { - emitBreakWhenFalse(endLabel, visitNode(node.condition, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))); } transformAndEmitEmbeddedStatement(node.statement); markLabel(incrementLabel); @@ -98070,7 +101378,7 @@ ${lanes.join("\n")} emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(node.incrementor, visitor, isExpression) + Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression)) ), node.incrementor ) @@ -98115,7 +101423,7 @@ ${lanes.join("\n")} const keysIndex = factory2.createLoopVariable(); const initializer = node.initializer; hoistVariableDeclaration(keysIndex); - emitAssignment(obj, visitNode(node.expression, visitor, isExpression)); + emitAssignment(obj, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); emitAssignment(keysArray, factory2.createArrayLiteralExpression()); emitStatement( factory2.createForInStatement( @@ -98146,7 +101454,7 @@ ${lanes.join("\n")} } variable = factory2.cloneNode(initializer.declarations[0].name); } else { - variable = visitNode(initializer, visitor, isExpression); + variable = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); Debug.assert(isLeftHandSideExpression(variable)); } emitAssignment(variable, key); @@ -98171,8 +101479,8 @@ ${lanes.join("\n")} node = factory2.updateForInStatement( node, initializer.declarations[0].name, - visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } else { node = visitEachChild(node, visitor, context); @@ -98248,7 +101556,7 @@ ${lanes.join("\n")} } function transformAndEmitWithStatement(node) { if (containsYield(node)) { - beginWithBlock(cacheExpression(visitNode(node.expression, visitor, isExpression))); + beginWithBlock(cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression)))); transformAndEmitEmbeddedStatement(node.statement); endWithBlock(); } else { @@ -98260,7 +101568,7 @@ ${lanes.join("\n")} const caseBlock = node.caseBlock; const numClauses = caseBlock.clauses.length; const endLabel = beginSwitchBlock(); - const expression = cacheExpression(visitNode(node.expression, visitor, isExpression)); + const expression = cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); const clauseLabels = []; let defaultClauseIndex = -1; for (let i = 0; i < numClauses; i++) { @@ -98282,7 +101590,7 @@ ${lanes.join("\n")} } pendingClauses.push( factory2.createCaseClause( - visitNode(clause.expression, visitor, isExpression), + Debug.checkDefined(visitNode(clause.expression, visitor, isExpression)), [ createInlineBreak( clauseLabels[i], @@ -98352,7 +101660,7 @@ ${lanes.join("\n")} function transformAndEmitThrowStatement(node) { var _a2; emitThrow( - visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression), + Debug.checkDefined(visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression)), /*location*/ node ); @@ -98708,7 +102016,7 @@ ${lanes.join("\n")} } return 0; } - function createLabel2(label) { + function createLabel(label) { if (label !== void 0 && label > 0) { if (labelExpressions === void 0) { labelExpressions = []; @@ -98734,7 +102042,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), location @@ -98939,10 +102247,10 @@ ${lanes.join("\n")} void 0, [ factory2.createArrayLiteralExpression([ - createLabel2(startLabel), - createLabel2(catchLabel), - createLabel2(finallyLabel), - createLabel2(endLabel) + createLabel(startLabel), + createLabel(catchLabel), + createLabel(finallyLabel), + createLabel(endLabel) ]) ] ) @@ -99118,7 +102426,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99137,7 +102445,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99159,7 +102467,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99642,7 +102950,7 @@ ${lanes.join("\n")} } function addExportEqualsIfNeeded(statements, emitAsReturn) { if (currentModuleInfo.exportEquals) { - const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor); + const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor, isExpression); if (expressionResult) { if (emitAsReturn) { const statement = factory2.createReturnStatement(expressionResult); @@ -99682,9 +102990,9 @@ ${lanes.join("\n")} return visitFunctionDeclaration(node); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -99701,7 +103009,7 @@ ${lanes.join("\n")} return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 210 /* CallExpression */: if (isImportCall(node) && currentSourceFile.impliedNodeFormat === void 0) { @@ -99837,7 +103145,7 @@ ${lanes.join("\n")} } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; const containsLexicalThis = !!(node.transformFlags & 16384 /* ContainsLexicalThis */); switch (compilerOptions.module) { @@ -100046,7 +103354,7 @@ ${lanes.join("\n")} return downleveledImport; } function getHelperExpressionForExport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getExportNeedsImportStarHelper(node)) { @@ -100055,7 +103363,7 @@ ${lanes.join("\n")} return innerExpr; } function getHelperExpressionForImport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getImportNeedsImportStarHelper(node)) { @@ -100300,7 +103608,7 @@ ${lanes.join("\n")} ) ); } else { - const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; + const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; const exportedValue = factory2.createPropertyAccessExpression( exportNeedsImportDefault ? emitHelpers().createImportDefaultHelper(generatedName) : generatedName, specifier.propertyName || specifier.name @@ -100366,7 +103674,7 @@ ${lanes.join("\n")} deferredExports[id] = appendExportStatement( deferredExports[id], factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -100376,7 +103684,7 @@ ${lanes.join("\n")} statements = appendExportStatement( statements, factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -100404,7 +103712,7 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitEachChild(node.body, visitor, context) @@ -100445,8 +103753,8 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.heritageClauses, visitor), - visitNodes2(node.members, visitor) + visitNodes2(node.heritageClauses, visitor, isHeritageClause), + visitNodes2(node.members, visitor, isClassElement) ), node ), @@ -100476,7 +103784,23 @@ ${lanes.join("\n")} if (!modifiers) { modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); } - variables = append(variables, variable); + if (variable.initializer) { + const updatedVariable = factory2.updateVariableDeclaration( + variable, + variable.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + createExportExpression( + variable.name, + visitNode(variable.initializer, visitor, isExpression) + ) + ); + variables = append(variables, updatedVariable); + } else { + variables = append(variables, variable); + } } else if (variable.initializer) { if (!isBindingPattern(variable.name) && (isArrowFunction(variable.initializer) || isFunctionExpression(variable.initializer) || isClassExpression(variable.initializer))) { const expression = factory2.createAssignment( @@ -100494,7 +103818,7 @@ ${lanes.join("\n")} variable.name, variable.exclamationToken, variable.type, - visitNode(variable.initializer, visitor) + visitNode(variable.initializer, visitor, isExpression) ); variables = append(variables, updatedVariable); expressions = append(expressions, expression); @@ -100545,9 +103869,8 @@ ${lanes.join("\n")} function transformInitializedVariable(node) { if (isBindingPattern(node.name)) { return flattenDestructuringAssignment( - visitNode(node, visitor), - /*visitor*/ - void 0, + visitNode(node, visitor, isInitializedVariable), + visitor, context, 0 /* All */, /*needsValue*/ @@ -100564,7 +103887,7 @@ ${lanes.join("\n")} /*location*/ node.name ), - node.initializer ? visitNode(node.initializer, visitor) : factory2.createVoidZero() + node.initializer ? visitNode(node.initializer, visitor, isExpression) : factory2.createVoidZero() ); } } @@ -100834,7 +104157,7 @@ ${lanes.join("\n")} const expression = substituteExpressionIdentifier(node.expression); noSubstitution[getNodeId(expression)] = true; if (!isIdentifier(expression) && !(getEmitFlags(node.expression) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateCallExpression( node, expression, @@ -100842,7 +104165,7 @@ ${lanes.join("\n")} void 0, node.arguments ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -100853,7 +104176,7 @@ ${lanes.join("\n")} const tag = substituteExpressionIdentifier(node.tag); noSubstitution[getNodeId(tag)] = true; if (!isIdentifier(tag) && !(getEmitFlags(node.tag) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateTaggedTemplateExpression( node, tag, @@ -100861,7 +104184,7 @@ ${lanes.join("\n")} void 0, node.template ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -100875,7 +104198,7 @@ ${lanes.join("\n")} return factory2.createPropertyAccessExpression(externalHelpersModuleName, node); } return node; - } else if (!(isGeneratedIdentifier(node) && !(node.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { + } else if (!(isGeneratedIdentifier(node) && !(node.emitNode.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); if (exportContainer && exportContainer.kind === 308 /* SourceFile */) { return setTextRange( @@ -101514,7 +104837,7 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -101611,7 +104934,7 @@ ${lanes.join("\n")} return (getEmitFlags(node) & 4194304 /* NoHoisting */) === 0 && (enclosingBlockScopedContainer.kind === 308 /* SourceFile */ || (getOriginalNode(node).flags & 3 /* BlockScoped */) === 0); } function transformInitializedVariable(node, isExportedDeclaration) { - const createAssignment3 = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; + const createAssignment = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; return isBindingPattern(node.name) ? flattenDestructuringAssignment( node, visitor, @@ -101619,8 +104942,8 @@ ${lanes.join("\n")} 0 /* All */, /*needsValue*/ false, - createAssignment3 - ) : node.initializer ? createAssignment3(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; + createAssignment + ) : node.initializer ? createAssignment(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; } function createExportedVariableAssignment(name, value, location) { return createVariableAssignment( @@ -101824,9 +105147,9 @@ ${lanes.join("\n")} return visitCatchClause(node); case 238 /* Block */: return visitBlock(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -101888,7 +105211,7 @@ ${lanes.join("\n")} } return expressions ? factory2.inlineExpressions(expressions) : factory2.createOmittedExpression(); } else { - return visitNode(node, discardedValueVisitor, isExpression); + return visitNode(node, discardedValueVisitor, isForInitializer); } } function visitDoStatement(node) { @@ -101909,21 +105232,21 @@ ${lanes.join("\n")} return factory2.updateLabeledStatement( node, node.label, - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitWithStatement(node) { return factory2.updateWithStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitSwitchStatement(node) { return factory2.updateSwitchStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock) + Debug.checkDefined(visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock)) ); } function visitCaseBlock(node) { @@ -101955,7 +105278,7 @@ ${lanes.join("\n")} node = factory2.updateCatchClause( node, node.variableDeclaration, - visitNode(node.block, topLevelNestedVisitor, isBlock) + Debug.checkDefined(visitNode(node.block, topLevelNestedVisitor, isBlock)) ); enclosingBlockScopedContainer = savedEnclosingBlockScopedContainer; return node; @@ -101982,7 +105305,7 @@ ${lanes.join("\n")} return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 223 /* BinaryExpression */: if (isDestructuringAssignment(node)) { @@ -102025,7 +105348,7 @@ ${lanes.join("\n")} } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; return factory2.createCallExpression( factory2.createPropertyAccessExpression( @@ -103169,7 +106492,7 @@ ${lanes.join("\n")} sourceFile, /*bundled*/ true - )) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + )) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); const newFile = factory2.updateSourceFile( sourceFile, [factory2.createModuleDeclaration( @@ -103191,7 +106514,7 @@ ${lanes.join("\n")} return newFile; } needsDeclare = true; - const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); return factory2.updateSourceFile( sourceFile, transformAndReplaceLatePaintedStatements(updated2), @@ -103260,7 +106583,7 @@ ${lanes.join("\n")} refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); } else { - const statements = visitNodes2(node.statements, visitDeclarationStatements); + const statements = visitNodes2(node.statements, visitDeclarationStatements, isStatement); combinedStatements = setTextRange(factory2.createNodeArray(transformAndReplaceLatePaintedStatements(statements)), node.statements); refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); @@ -103377,9 +106700,9 @@ ${lanes.join("\n")} return name; } else { if (name.kind === 204 /* ArrayBindingPattern */) { - return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isArrayBindingElement)); } else { - return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isBindingElement)); } } function visitBindingElement(elem) { @@ -103449,10 +106772,10 @@ ${lanes.join("\n")} } const shouldUseResolverType = node.kind === 166 /* Parameter */ && (resolver.isRequiredInitializedParameter(node) || resolver.isOptionalUninitializedParameterProperty(node)); if (type && !shouldUseResolverType) { - return visitNode(type, visitDeclarationSubtree); + return visitNode(type, visitDeclarationSubtree, isTypeNode); } if (!getParseTreeNode(node)) { - return type ? visitNode(type, visitDeclarationSubtree) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); + return type ? visitNode(type, visitDeclarationSubtree, isTypeNode) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); } if (node.kind === 175 /* SetAccessor */) { return factory2.createKeywordTypeNode(131 /* AnyKeyword */); @@ -103522,11 +106845,11 @@ ${lanes.join("\n")} } function updateParamsList(node, params, modifierMask) { if (hasEffectiveModifier(node, 8 /* Private */)) { - return void 0; + return factory2.createNodeArray(); } const newParams = map(params, (p) => ensureParameter(p, modifierMask)); if (!newParams) { - return void 0; + return factory2.createNodeArray(); } return factory2.createNodeArray(newParams, params.hasTrailingComma); } @@ -103566,7 +106889,7 @@ ${lanes.join("\n")} return factory2.createNodeArray(newParams || emptyArray); } function ensureTypeParams(node, params) { - return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree); + return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree, isTypeParameterDeclaration); } function isEnclosingDeclaration(node) { return isSourceFile(node) || isTypeAliasDeclaration(node) || isModuleDeclaration(node) || isClassDeclaration(node) || isInterfaceDeclaration(node) || isFunctionLike(node) || isIndexSignatureDeclaration(node) || isMappedTypeNode(node); @@ -103701,7 +107024,7 @@ ${lanes.join("\n")} needsDeclare = priorNeedsDeclare; lateStatementReplacementMap.set(getOriginalNodeId(i), result); } - return visitNodes2(statements, visitLateVisibilityMarkedStatements); + return visitNodes2(statements, visitLateVisibilityMarkedStatements, isStatement); function visitLateVisibilityMarkedStatements(statement) { if (isLateVisibilityPaintedStatement(statement)) { const key = getOriginalNodeId(statement); @@ -103915,7 +107238,7 @@ ${lanes.join("\n")} input, ensureModifiers(input), updateParamsList(input, input.parameters), - visitNode(input.type, visitDeclarationSubtree) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(input.type, visitDeclarationSubtree, isTypeNode) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) )); } case 257 /* VariableDeclaration */: { @@ -103948,20 +107271,24 @@ ${lanes.join("\n")} return cleanup(visitEachChild(input, visitDeclarationSubtree, context)); } case 191 /* ConditionalType */: { - const checkType = visitNode(input.checkType, visitDeclarationSubtree); - const extendsType = visitNode(input.extendsType, visitDeclarationSubtree); + const checkType = visitNode(input.checkType, visitDeclarationSubtree, isTypeNode); + const extendsType = visitNode(input.extendsType, visitDeclarationSubtree, isTypeNode); const oldEnclosingDecl = enclosingDeclaration; enclosingDeclaration = input.trueType; - const trueType = visitNode(input.trueType, visitDeclarationSubtree); + const trueType = visitNode(input.trueType, visitDeclarationSubtree, isTypeNode); enclosingDeclaration = oldEnclosingDecl; - const falseType = visitNode(input.falseType, visitDeclarationSubtree); + const falseType = visitNode(input.falseType, visitDeclarationSubtree, isTypeNode); + Debug.assert(checkType); + Debug.assert(extendsType); + Debug.assert(trueType); + Debug.assert(falseType); return cleanup(factory2.updateConditionalTypeNode(input, checkType, extendsType, trueType, falseType)); } case 181 /* FunctionType */: { - return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 182 /* ConstructorType */: { - return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 202 /* ImportType */: { if (!isLiteralImportTypeNode(input)) @@ -104105,7 +107432,7 @@ ${lanes.join("\n")} ensureModifiers(input), input.name, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), - visitNode(input.type, visitDeclarationSubtree, isTypeNode) + Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)) )); needsDeclare = previousNeedsDeclare; return clean2; @@ -104117,7 +107444,7 @@ ${lanes.join("\n")} input.name, ensureTypeParams(input, input.typeParameters), transformHeritageClauses(input.heritageClauses), - visitNodes2(input.members, visitDeclarationSubtree) + visitNodes2(input.members, visitDeclarationSubtree, isTypeElement) )); } case 259 /* FunctionDeclaration */: { @@ -104234,7 +107561,7 @@ ${lanes.join("\n")} const oldHasScopeFix = resultHasScopeMarker; resultHasScopeMarker = false; needsScopeFixMarker = false; - const statements = visitNodes2(inner.statements, visitDeclarationStatements); + const statements = visitNodes2(inner.statements, visitDeclarationStatements, isStatement); let lateStatements = transformAndReplaceLatePaintedStatements(statements); if (input.flags & 16777216 /* Ambient */) { needsScopeFixMarker = false; @@ -104243,7 +107570,7 @@ ${lanes.join("\n")} if (needsScopeFixMarker) { lateStatements = factory2.createNodeArray([...lateStatements, createEmptyExports(factory2)]); } else { - lateStatements = visitNodes2(lateStatements, stripExportModifiers); + lateStatements = visitNodes2(lateStatements, stripExportModifiers, isStatement); } } const body = factory2.updateModuleBlock(inner, lateStatements); @@ -104339,7 +107666,7 @@ ${lanes.join("\n")} void 0 ) ] : void 0; - const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree)); + const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); const members = factory2.createNodeArray(memberNodes); const extendsClause = getEffectiveBaseTypeNode(input); if (extendsClause && !isEntityNameExpression(extendsClause.expression) && extendsClause.expression.kind !== 104 /* NullKeyword */) { @@ -104363,11 +107690,11 @@ ${lanes.join("\n")} if (clause.token === 94 /* ExtendsKeyword */) { const oldDiag2 = getSymbolAccessibilityDiagnostic; getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(clause.types[0]); - const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree)))); + const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree, isTypeNode)))); getSymbolAccessibilityDiagnostic = oldDiag2; return newClause; } - return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree)); + return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree, isExpressionWithTypeArguments)); })); return [statement, cleanup(factory2.updateClassDeclaration( input, @@ -104423,7 +107750,7 @@ ${lanes.join("\n")} function transformVariableStatement(input) { if (!forEach(input.declarationList.declarations, getBindingNameVisible)) return; - const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree); + const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree, isVariableDeclaration); if (!length(nodes)) return; return factory2.updateVariableStatement(input, factory2.createNodeArray(ensureModifiers(input)), factory2.updateVariableDeclarationList(input.declarationList, nodes)); @@ -104514,7 +107841,7 @@ ${lanes.join("\n")} function transformHeritageClauses(nodes) { return factory2.createNodeArray(filter(map(nodes, (clause) => factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => { return isEntityNameExpression(t.expression) || clause.token === 94 /* ExtendsKeyword */ && t.expression.kind === 104 /* NullKeyword */; - })), visitDeclarationSubtree))), (clause) => clause.types && !!clause.types.length)); + })), visitDeclarationSubtree, isExpressionWithTypeArguments))), (clause) => clause.types && !!clause.types.length)); } } function isAlwaysType(node) { @@ -104631,10 +107958,15 @@ ${lanes.join("\n")} return emptyArray; const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const transformers = []; addRange(transformers, customTransformers && map(customTransformers.before, wrapScriptTransformerFactory)); transformers.push(transformTypeScript); - transformers.push(transformLegacyDecorators); + if (compilerOptions.experimentalDecorators) { + transformers.push(transformLegacyDecorators); + } else if (languageVersion < 99 /* ESNext */ || !useDefineForClassFields) { + transformers.push(transformESDecorators); + } transformers.push(transformClassFields); if (getJSXTransformEnabled(compilerOptions)) { transformers.push(transformJsx); @@ -104700,7 +108032,7 @@ ${lanes.join("\n")} } function transformNodes(resolver, host, factory2, options, nodes, transformers, allowDtsFiles) { var _a2, _b; - const enabledSyntaxKindFeatures = new Array(360 /* Count */); + const enabledSyntaxKindFeatures = new Array(361 /* Count */); let lexicalEnvironmentVariableDeclarations; let lexicalEnvironmentFunctionDeclarations; let lexicalEnvironmentStatements; @@ -105270,7 +108602,7 @@ ${lanes.join("\n")} const sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions) ? [] : void 0; const emittedFilesList = compilerOptions.listEmittedFiles ? [] : void 0; const emitterDiagnostics = createDiagnosticCollection(); - const newLine = getNewLineCharacter(compilerOptions, () => host.getNewLine()); + const newLine = getNewLineCharacter(compilerOptions); const writer = createTextWriter(newLine); const { enter, exit } = createTimer("printTime", "beforePrint", "afterPrint"); let bundleBuildInfo; @@ -105727,7 +109059,6 @@ ${lanes.join("\n")} getCommonSourceDirectory: () => getNormalizedAbsolutePath(buildInfo.bundle.commonSourceDirectory, buildInfoDirectory), getCompilerOptions: () => config.options, getCurrentDirectory: () => host.getCurrentDirectory(), - getNewLine: () => host.getNewLine(), getSourceFile: returnUndefined, getSourceFileByPath: returnUndefined, getSourceFiles: () => sourceFilesForJsEmit, @@ -105813,6 +109144,7 @@ ${lanes.join("\n")} const bundledHelpers = /* @__PURE__ */ new Map(); let currentSourceFile; let nodeIdToGeneratedName; + let nodeIdToGeneratedPrivateName; let autoGeneratedIdToGeneratedName; let generatedNames; let formattedNameTempFlagsStack; @@ -106109,6 +109441,7 @@ ${lanes.join("\n")} } function reset2() { nodeIdToGeneratedName = []; + nodeIdToGeneratedPrivateName = []; autoGeneratedIdToGeneratedName = []; generatedNames = /* @__PURE__ */ new Set(); formattedNameTempFlagsStack = []; @@ -106160,7 +109493,7 @@ ${lanes.join("\n")} pipelineEmit(isStringLiteral(node) ? 6 /* JsxAttributeValue */ : 4 /* Unspecified */, node); } function beforeEmitNode(node) { - if (preserveSourceNewlines && getEmitFlags(node) & 268435456 /* IgnoreSourceNewlines */) { + if (preserveSourceNewlines && getInternalEmitFlags(node) & 4 /* IgnoreSourceNewlines */) { preserveSourceNewlines = false; } } @@ -106550,6 +109883,7 @@ ${lanes.join("\n")} case 346 /* JSDocThisTag */: case 347 /* JSDocTypeTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return emitJSDocSimpleTypedTag(node); case 348 /* JSDocTemplateTag */: return emitJSDocTemplateTag(node); @@ -106557,9 +109891,9 @@ ${lanes.join("\n")} return emitJSDocTypedefTag(node); case 350 /* JSDocSeeTag */: return emitJSDocSeeTag(node); - case 354 /* NotEmittedStatement */: - case 358 /* EndOfDeclarationMarker */: - case 357 /* MergeDeclarationMarker */: + case 355 /* NotEmittedStatement */: + case 359 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return; } if (isExpression(node)) { @@ -106652,24 +109986,26 @@ ${lanes.join("\n")} return emitMetaProperty(node); case 234 /* SyntheticExpression */: return Debug.fail("SyntheticExpression should never be printed."); + case 279 /* MissingDeclaration */: + return; case 281 /* JsxElement */: return emitJsxElement(node); case 282 /* JsxSelfClosingElement */: return emitJsxSelfClosingElement(node); case 285 /* JsxFragment */: return emitJsxFragment(node); - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return Debug.fail("SyntaxList should not be printed"); - case 354 /* NotEmittedStatement */: + case 355 /* NotEmittedStatement */: return; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return emitPartiallyEmittedExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return emitCommaList(node); - case 357 /* MergeDeclarationMarker */: - case 358 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return; - case 359 /* SyntheticReferenceExpression */: + case 360 /* SyntheticReferenceExpression */: return Debug.fail("SyntheticReferenceExpression should not be printed"); } } @@ -106842,7 +110178,7 @@ ${lanes.join("\n")} /*includeTrivia*/ false ), node.symbol); - emitList(node, node.typeArguments, 53776 /* TypeParameters */); + emitList(node, getIdentifierTypeArguments(node), 53776 /* TypeParameters */); } function emitPrivateIdentifier(node) { write(getTextOfNode2( @@ -106873,7 +110209,7 @@ ${lanes.join("\n")} pushPrivateNameGenerationScope(savedPrivateNameTempFlags, savedReservedMemberNames); } function emitTypeParameter(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); if (node.constraint) { writeSpace(); @@ -106889,7 +110225,12 @@ ${lanes.join("\n")} } } function emitParameter(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.dotDotDotToken); emitNodeWithWriter(node.name, writeParameter); emit(node.questionToken); @@ -106905,14 +110246,19 @@ ${lanes.join("\n")} emitExpression(decorator.expression, parenthesizer.parenthesizeLeftSideOfAccess); } function emitPropertySignature(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitNodeWithWriter(node.name, writeProperty); emit(node.questionToken); emitTypeAnnotation(node.type); writeTrailingSemicolon(); } function emitPropertyDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.name); emit(node.questionToken); emit(node.exclamationToken); @@ -106922,7 +110268,7 @@ ${lanes.join("\n")} } function emitMethodSignature(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); emit(node.questionToken); emitTypeParameters(node, node.typeParameters); @@ -106932,7 +110278,12 @@ ${lanes.join("\n")} popNameGenerationScope(node); } function emitMethodDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.asteriskToken); emit(node.name); emit(node.questionToken); @@ -106943,13 +110294,24 @@ ${lanes.join("\n")} emitBlockFunctionBody(node.body); } function emitConstructor(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("constructor"); emitSignatureAndBody(node, emitSignatureHead); } function emitAccessorDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword(node.kind === 174 /* GetAccessor */ ? "get" : "set"); + const pos = emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + const token = node.kind === 174 /* GetAccessor */ ? 137 /* GetKeyword */ : 151 /* SetKeyword */; + emitTokenWithComment(token, pos, writeKeyword, node); writeSpace(); emit(node.name); emitSignatureAndBody(node, emitSignatureHead); @@ -106973,7 +110335,12 @@ ${lanes.join("\n")} popNameGenerationScope(node); } function emitIndexSignature(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitParametersForIndexSignature(node, node.parameters); emitTypeAnnotation(node.type); writeTrailingSemicolon(); @@ -107032,7 +110399,7 @@ ${lanes.join("\n")} } function emitConstructorType(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); writeKeyword("new"); writeSpace(); emitTypeParameters(node, node.typeParameters); @@ -107308,7 +110675,7 @@ ${lanes.join("\n")} emitTokenWithComment(23 /* CloseBracketToken */, node.argumentExpression.end, writePunctuation, node); } function emitCallExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -107331,7 +110698,7 @@ ${lanes.join("\n")} emitExpressionList(node, node.arguments, 18960 /* NewExpressionArguments */, parenthesizer.parenthesizeExpressionForDisallowedComma); } function emitTaggedTemplateExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -107369,7 +110736,7 @@ ${lanes.join("\n")} emitFunctionDeclarationOrExpression(node); } function emitArrowFunction(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitSignatureAndBody(node, emitArrowFunctionHead); } function emitArrowFunctionHead(node) { @@ -107635,7 +111002,12 @@ ${lanes.join("\n")} ); } function emitVariableStatement(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emit(node.declarationList); writeTrailingSemicolon(); } @@ -107893,7 +111265,12 @@ ${lanes.join("\n")} emitFunctionDeclarationOrExpression(node); } function emitFunctionDeclarationOrExpression(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("function"); emit(node.asteriskToken); writeSpace(); @@ -108001,8 +111378,13 @@ ${lanes.join("\n")} void 0 ); forEach(node.members, generateMemberNames); - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword("class"); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + emitTokenWithComment(84 /* ClassKeyword */, moveRangePastModifiers(node).pos, writeKeyword, node); if (node.name) { writeSpace(); emitIdentifierName(node.name); @@ -108028,7 +111410,12 @@ ${lanes.join("\n")} /*newReservedMemberNames*/ void 0 ); - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("interface"); writeSpace(); emit(node.name); @@ -108041,7 +111428,12 @@ ${lanes.join("\n")} popPrivateNameGenerationScope(); } function emitTypeAliasDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("type"); writeSpace(); emit(node.name); @@ -108053,7 +111445,12 @@ ${lanes.join("\n")} writeTrailingSemicolon(); } function emitEnumDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("enum"); writeSpace(); emit(node.name); @@ -108063,7 +111460,12 @@ ${lanes.join("\n")} writePunctuation("}"); } function emitModuleDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); if (~node.flags & 1024 /* GlobalAugmentation */) { writeKeyword(node.flags & 16 /* Namespace */ ? "namespace" : "module"); writeSpace(); @@ -108103,7 +111505,12 @@ ${lanes.join("\n")} ); } function emitImportEqualsDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -108125,7 +111532,12 @@ ${lanes.join("\n")} } } function emitImportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.importClause) { @@ -108178,7 +111590,12 @@ ${lanes.join("\n")} writeTrailingSemicolon(); } function emitExportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); let nextPos = emitTokenWithComment(93 /* ExportKeyword */, node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -108801,23 +112218,27 @@ ${lanes.join("\n")} emit(node); write = savedWrite; } - function emitDecoratorsAndModifiers(node, modifiers) { + function emitDecoratorsAndModifiers(node, modifiers, allowDecorators) { if (modifiers == null ? void 0 : modifiers.length) { if (every(modifiers, isModifier)) { - return emitModifiers(node, modifiers); + return emitModifierList(node, modifiers); } if (every(modifiers, isDecorator)) { - return emitDecorators(node, modifiers); + if (allowDecorators) { + return emitDecoratorList(node, modifiers); + } + return node.pos; } onBeforeEmitNodeArray == null ? void 0 : onBeforeEmitNodeArray(modifiers); let lastMode; let mode; let start = 0; let pos = 0; + let lastModifier; while (start < modifiers.length) { while (pos < modifiers.length) { - const modifier = modifiers[pos]; - mode = isDecorator(modifier) ? "decorators" : "modifiers"; + lastModifier = modifiers[pos]; + mode = isDecorator(lastModifier) ? "decorators" : "modifiers"; if (lastMode === void 0) { lastMode = mode; } else if (mode !== lastMode) { @@ -108830,28 +112251,36 @@ ${lanes.join("\n")} textRange.pos = modifiers.pos; if (pos === modifiers.length - 1) textRange.end = modifiers.end; - emitNodeListItems( - emit, - node, - modifiers, - lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, - /*parenthesizerRule*/ - void 0, - start, - pos - start, - /*hasTrailingComma*/ - false, - textRange - ); + if (lastMode === "modifiers" || allowDecorators) { + emitNodeListItems( + emit, + node, + modifiers, + lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, + /*parenthesizerRule*/ + void 0, + start, + pos - start, + /*hasTrailingComma*/ + false, + textRange + ); + } start = pos; lastMode = mode; pos++; } onAfterEmitNodeArray == null ? void 0 : onAfterEmitNodeArray(modifiers); + if (lastModifier && !positionIsSynthesized(lastModifier.end)) { + return lastModifier.end; + } } + return node.pos; } - function emitModifiers(node, modifiers) { + function emitModifierList(node, modifiers) { emitList(node, modifiers, 2359808 /* Modifiers */); + const lastModifier = lastOrUndefined(modifiers); + return lastModifier && !positionIsSynthesized(lastModifier.end) ? lastModifier.end : node.pos; } function emitTypeAnnotation(node) { if (node) { @@ -108907,8 +112336,10 @@ ${lanes.join("\n")} decreaseIndent(); } } - function emitDecorators(parentNode, decorators) { + function emitDecoratorList(parentNode, decorators) { emitList(parentNode, decorators, 2146305 /* Decorators */); + const lastDecorator = lastOrUndefined(decorators); + return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? lastDecorator.end : parentNode.pos; } function emitTypeArguments(parentNode, typeArguments) { emitList(parentNode, typeArguments, 53776 /* TypeArguments */, typeArgumentParenthesizerRuleSelector); @@ -109035,7 +112466,10 @@ ${lanes.join("\n")} writeDelimiter(format); } else if (previousSibling) { if (format & 60 /* DelimitersMask */ && previousSibling.end !== (parentNode ? parentNode.end : -1)) { - emitLeadingCommentsOfPosition(previousSibling.end); + const previousSiblingEmitFlags = getEmitFlags(previousSibling); + if (!(previousSiblingEmitFlags & 2048 /* NoTrailingComments */)) { + emitLeadingCommentsOfPosition(previousSibling.end); + } } writeDelimiter(format); recordBundleFileInternalSectionEnd(previousSourceFileTextKind); @@ -109560,16 +112994,18 @@ ${lanes.join("\n")} } } function generateName(name) { - if ((name.autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { - return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), name.autoGenerate.flags, name.autoGenerate.prefix, name.autoGenerate.suffix); + const autoGenerate = name.emitNode.autoGenerate; + if ((autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { + return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), autoGenerate.flags, autoGenerate.prefix, autoGenerate.suffix); } else { - const autoGenerateId = name.autoGenerate.id; + const autoGenerateId = autoGenerate.id; return autoGeneratedIdToGeneratedName[autoGenerateId] || (autoGeneratedIdToGeneratedName[autoGenerateId] = makeName(name)); } } function generateNameCached(node, privateName, flags, prefix, suffix) { const nodeId = getNodeId(node); - return nodeIdToGeneratedName[nodeId] || (nodeIdToGeneratedName[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); + const cache = privateName ? nodeIdToGeneratedPrivateName : nodeIdToGeneratedName; + return cache[nodeId] || (cache[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); } function isUniqueName(name, privateName) { return isFileLevelUniqueName2(name, privateName) && !isReservedName(name, privateName) && !generatedNames.has(name); @@ -109811,7 +113247,21 @@ ${lanes.join("\n")} Debug.assert(!prefix && !suffix && !privateName); return generateNameForImportOrExportDeclaration(node); case 259 /* FunctionDeclaration */: - case 260 /* ClassDeclaration */: + case 260 /* ClassDeclaration */: { + Debug.assert(!prefix && !suffix && !privateName); + const name = node.name; + if (name && !isGeneratedIdentifier(name)) { + return generateNameForNode( + name, + /*privateName*/ + false, + flags, + prefix, + suffix + ); + } + return generateNameForExportDefault(); + } case 274 /* ExportAssignment */: Debug.assert(!prefix && !suffix && !privateName); return generateNameForExportDefault(); @@ -109843,16 +113293,17 @@ ${lanes.join("\n")} } } function makeName(name) { - const prefix = formatGeneratedNamePart(name.autoGenerate.prefix, generateName); - const suffix = formatGeneratedNamePart(name.autoGenerate.suffix); - switch (name.autoGenerate.flags & 7 /* KindMask */) { + const autoGenerate = name.emitNode.autoGenerate; + const prefix = formatGeneratedNamePart(autoGenerate.prefix, generateName); + const suffix = formatGeneratedNamePart(autoGenerate.suffix); + switch (autoGenerate.flags & 7 /* KindMask */) { case 1 /* Auto */: - return makeTempVariableName(TempFlags.Auto, !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); + return makeTempVariableName(TempFlags.Auto, !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); case 2 /* Loop */: Debug.assertNode(name, isIdentifier); return makeTempVariableName( TempFlags._i, - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), /*privateName*/ false, prefix, @@ -109861,16 +113312,16 @@ ${lanes.join("\n")} case 3 /* Unique */: return makeUniqueName2( idText(name), - name.autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, - !!(name.autoGenerate.flags & 16 /* Optimistic */), - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, + !!(autoGenerate.flags & 16 /* Optimistic */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix ); } return Debug.fail(`Unsupported GeneratedIdentifierKind: ${Debug.formatEnum( - name.autoGenerate.flags & 7 /* KindMask */, + autoGenerate.flags & 7 /* KindMask */, GeneratedIdentifierFlags, /*isFlags*/ true @@ -109915,7 +113366,7 @@ ${lanes.join("\n")} emitLeadingComments( pos, /*isEmittedNode*/ - node.kind !== 354 /* NotEmittedStatement */ + node.kind !== 355 /* NotEmittedStatement */ ); } if (!skipLeadingComments || pos >= 0 && (emitFlags & 1024 /* NoLeadingComments */) !== 0) { @@ -109939,7 +113390,7 @@ ${lanes.join("\n")} containerPos = savedContainerPos; containerEnd = savedContainerEnd; declarationListContainerEnd = savedDeclarationListContainerEnd; - if (!skipTrailingComments && node.kind !== 354 /* NotEmittedStatement */) { + if (!skipTrailingComments && node.kind !== 355 /* NotEmittedStatement */) { emitTrailingComments(end); } } @@ -110211,7 +113662,7 @@ ${lanes.join("\n")} } } else { const source = sourceMapRange.source || sourceMapSource; - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, skipSourceTrivia(source, sourceMapRange.pos)); } if (emitFlags & 128 /* NoNestedSourceMaps */) { @@ -110226,7 +113677,7 @@ ${lanes.join("\n")} if (emitFlags & 128 /* NoNestedSourceMaps */) { sourceMapsDisabled = false; } - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, sourceMapRange.end); } } @@ -110997,7 +114448,7 @@ ${lanes.join("\n")} function getDefaultLibLocation() { return getDirectoryPath(normalizePath(system.getExecutingFilePath())); } - const newLine = getNewLineCharacter(options, () => system.newLine); + const newLine = getNewLineCharacter(options); const realpath = system.realpath && ((path) => system.realpath(path)); const compilerHost = { getSourceFile: createGetSourceFile((fileName) => compilerHost.readFile(fileName), () => options, setParentNodes), @@ -112399,7 +115850,6 @@ ${lanes.join("\n")} getCommonSourceDirectory: program.getCommonSourceDirectory, getCompilerOptions: program.getCompilerOptions, getCurrentDirectory: () => currentDirectory, - getNewLine: () => host.getNewLine(), getSourceFile: program.getSourceFile, getSourceFileByPath: program.getSourceFileByPath, getSourceFiles: program.getSourceFiles, @@ -112778,8 +116228,26 @@ ${lanes.join("\n")} } } function walkArray(nodes, parent2) { - if (canHaveModifiers(parent2) && parent2.modifiers === nodes && some(nodes, isDecorator) && !options.experimentalDecorators) { - diagnostics.push(createDiagnosticForNode2(parent2, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)); + if (canHaveIllegalDecorators(parent2)) { + const decorator = find(parent2.modifiers, isDecorator); + if (decorator) { + diagnostics.push(createDiagnosticForNode2(decorator, Diagnostics.Decorators_are_not_valid_here)); + } + } else if (canHaveDecorators(parent2) && parent2.modifiers) { + const decoratorIndex = findIndex(parent2.modifiers, isDecorator); + if (decoratorIndex >= 0) { + if (isParameter(parent2) && !options.experimentalDecorators) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } else if (isClassDeclaration(parent2)) { + const exportIndex = findIndex(parent2.modifiers, isExportModifier); + const defaultIndex = findIndex(parent2.modifiers, isDefaultModifier); + if (exportIndex >= 0 && decoratorIndex < exportIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_must_come_after_export_or_export_default_in_JavaScript_files)); + } else if (defaultIndex >= 0 && decoratorIndex < defaultIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } + } + } } switch (parent2.kind) { case 260 /* ClassDeclaration */: @@ -112938,7 +116406,7 @@ ${lanes.join("\n")} /*assertClause*/ void 0 ); - addEmitFlags(importDecl, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(importDecl, 2 /* NeverApplyImportHelper */); setParent(externalHelpersModuleReference, importDecl); setParent(importDecl, file); externalHelpersModuleReference.flags &= ~8 /* Synthesized */; @@ -113205,7 +116673,7 @@ ${lanes.join("\n")} if (filesByName.has(path)) { const file2 = filesByName.get(path); addFileIncludeReason(file2 || void 0, reason); - if (file2 && options.forceConsistentCasingInFileNames) { + if (file2 && !(options.forceConsistentCasingInFileNames === false)) { const checkedName = file2.fileName; const isRedirect = toPath3(checkedName) !== toPath3(fileName); if (isRedirect) { @@ -113804,24 +117272,12 @@ ${lanes.join("\n")} } const languageVersion = getEmitScriptTarget(options); const firstNonAmbientExternalModuleSourceFile = find(files, (f) => isExternalModule(f) && !f.isDeclarationFile); - if (options.isolatedModules) { - if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */) { + if (options.isolatedModules || options.verbatimModuleSyntax) { + if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */ && options.isolatedModules) { createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); } if (options.preserveConstEnums === false) { - createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); - } - for (const file of files) { - if (!isExternalModule(file) && !isSourceFileJS(file) && !file.isDeclarationFile && file.scriptKind !== 6 /* JSON */) { - const span = getErrorSpanForNode(file, file); - programDiagnostics.add(createFileDiagnostic( - file, - span.start, - span.length, - Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, - getBaseFileName(file.fileName) - )); - } + createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled, options.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules", "preserveConstEnums"); } } else if (firstNonAmbientExternalModuleSourceFile && languageVersion < 2 /* ES2015 */ && options.module === 0 /* None */) { const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, typeof firstNonAmbientExternalModuleSourceFile.externalModuleIndicator === "boolean" ? firstNonAmbientExternalModuleSourceFile : firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); @@ -113903,10 +117359,25 @@ ${lanes.join("\n")} } } if (options.preserveValueImports && getEmitModuleKind(options) < 5 /* ES2015 */) { - createOptionValueDiagnostic("importsNotUsedAsValues", Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later); + createDiagnosticForOptionName(Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later, "preserveValueImports"); + } + if (options.verbatimModuleSyntax) { + const moduleKind = getEmitModuleKind(options); + if (moduleKind === 2 /* AMD */ || moduleKind === 3 /* UMD */ || moduleKind === 4 /* System */) { + createDiagnosticForOptionName(Diagnostics.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System, "verbatimModuleSyntax"); + } + if (options.isolatedModules) { + createRedundantOptionDiagnostic("isolatedModules", "verbatimModuleSyntax"); + } + if (options.preserveValueImports) { + createRedundantOptionDiagnostic("preserveValueImports", "verbatimModuleSyntax"); + } + if (options.importsNotUsedAsValues) { + createRedundantOptionDiagnostic("importsNotUsedAsValues", "verbatimModuleSyntax"); + } } if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly)) { - createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set); + createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set); } const moduleResolution = getEmitModuleResolutionKind(options); if (options.resolvePackageJsonExports && !moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { @@ -113952,16 +117423,25 @@ ${lanes.join("\n")} } } } - function verifyDeprecatedCompilerOptions() { + function getVersionForDeprecationDiagnostics(reportInvalidIgnoreDeprecations) { const version2 = typeScriptVersion3 || versionMajorMinor; const ignoreDeprecations = options.ignoreDeprecations; if (ignoreDeprecations) { if (ignoreDeprecations === "5.0" /* v5_0 */ && (version2 === "5.0" /* v5_0 */ || version2 === "5.5" /* v5_5 */)) { return; - } else { + } else if (reportInvalidIgnoreDeprecations) { createOptionValueDiagnostic("ignoreDeprecations", Diagnostics.Invalid_value_for_ignoreDeprecations); } } + return version2; + } + function verifyDeprecatedCompilerOptions() { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + true + ); + if (!version2) + return; if (options.target === 0 /* ES3 */) { createDeprecatedDiagnosticForOption(version2, "target", "ES3"); } @@ -113986,30 +117466,83 @@ ${lanes.join("\n")} if (options.out) { createDeprecatedDiagnosticForOption(version2, "out"); } + if (options.importsNotUsedAsValues) { + createDeprecatedDiagnosticForOption( + version2, + "importsNotUsedAsValues", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } + if (options.preserveValueImports) { + createDeprecatedDiagnosticForOption( + version2, + "preserveValueImports", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } } - function createDeprecatedDiagnosticForOption(version2, name, value) { + function verifyDeprecatedProjectReference(ref, parentFile, index) { + if (ref.prepend) { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + false + ); + if (version2) { + createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => createDiagnosticForReference(parentFile, index, message, arg0, arg1, arg2), + "prepend" + ); + } + } + } + function createDeprecatedDiagnosticForOption(version2, name, value, useInstead) { + return createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => { + if (useInstead) { + const details = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Use_0_instead, + useInstead + ); + const chain = chainDiagnosticMessages(details, message, arg0, arg1, arg2); + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + chain + ); + } else { + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + message, + arg0, + arg1, + arg2 + ); + } + }, + name, + value + ); + } + function createDeprecatedOptionForVersionDiagnostic(version2, createDiagnostic, name, value) { if (version2 === "6.0" /* v6_0 */) { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, - value || name - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, value || name); } else { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, - value || name, - "5.5" /* v5_5 */, - "5.0" /* v5_0 */ - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, value || name, "5.5" /* v5_5 */, "5.0" /* v5_0 */); } } function createDiagnosticExplainingFile(file, fileProcessingReason, diagnostic, args) { @@ -114155,6 +117688,7 @@ ${lanes.join("\n")} forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent2, index) => { const ref = (parent2 ? parent2.commandLine.projectReferences : projectReferences)[index]; const parentFile = parent2 && parent2.sourceFile; + verifyDeprecatedProjectReference(ref, parentFile, index); if (!resolvedRef) { createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); return; @@ -114262,22 +117796,26 @@ ${lanes.join("\n")} arg1 ); } - function createDiagnosticForReference(sourceFile, index, message, arg0, arg1) { + function createDiagnosticForReference(sourceFile, index, message, arg0, arg1, arg2) { const referencesSyntax = firstDefined( getTsConfigPropArray(sourceFile || options.configFile, "references"), (property) => isArrayLiteralExpression(property.initializer) ? property.initializer : void 0 ); if (referencesSyntax && referencesSyntax.elements.length > index) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1)); + programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1, arg2)); } else { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1)); + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); } } function createDiagnosticForOption(onKey, option1, option2, message, arg0, arg1, arg2) { const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); const needCompilerDiagnostic = !compilerOptionsObjectLiteralSyntax || !createOptionDiagnosticInObjectLiteralSyntax(compilerOptionsObjectLiteralSyntax, onKey, option1, option2, message, arg0, arg1, arg2); if (needCompilerDiagnostic) { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createCompilerDiagnosticFromMessageChain(message)); + } else { + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + } } } function getCompilerOptionsObjectLiteralSyntax() { @@ -114298,10 +117836,32 @@ ${lanes.join("\n")} function createOptionDiagnosticInObjectLiteralSyntax(objectLiteral, onKey, key1, key2, message, arg0, arg1, arg2) { const props = getPropertyAssignment(objectLiteral, key1, key2); for (const prop of props) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createDiagnosticForNodeFromMessageChain(options.configFile, onKey ? prop.name : prop.initializer, message)); + } else { + programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + } } return !!props.length; } + function createRedundantOptionDiagnostic(errorOnOption, redundantWithOption) { + const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); + if (compilerOptionsObjectLiteralSyntax) { + createOptionDiagnosticInObjectLiteralSyntax( + compilerOptionsObjectLiteralSyntax, + /*onKey*/ + true, + errorOnOption, + /*key2*/ + void 0, + Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, + errorOnOption, + redundantWithOption + ); + } else { + createDiagnosticForOptionName(Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, errorOnOption, redundantWithOption); + } + } function blockEmittingOfFile(emitFileName, diag2) { hasEmitBlockingDiagnostics.set(toPath3(emitFileName), true); programDiagnostics.add(diag2); @@ -114552,9 +118112,8 @@ ${lanes.join("\n")} } return nodes || emptyArray; } - function resolveProjectReferencePath(hostOrRef, ref) { - const passedInRef = ref ? ref : hostOrRef; - return resolveConfigFileProjectName(passedInRef.path); + function resolveProjectReferencePath(ref) { + return resolveConfigFileProjectName(ref.path); } function getResolutionDiagnostic(options, { extension }, { isDeclarationFile }) { switch (extension) { @@ -117323,6 +120882,9 @@ ${lanes.join("\n")} } ); return filesInError.map((fileName) => { + if (fileName === void 0) { + return void 0; + } const diagnosticForFileName = find( diagnostics, (diagnostic) => diagnostic.file !== void 0 && diagnostic.file.fileName === fileName @@ -117693,7 +121255,6 @@ ${lanes.join("\n")} } function createCompilerHostFromProgramHost(host, getCompilerOptions, directoryStructureHost = host) { const useCaseSensitiveFileNames = host.useCaseSensitiveFileNames(); - const hostGetNewLine = memoize(() => host.getNewLine()); const compilerHost = { getSourceFile: createGetSourceFile( (fileName, encoding) => !encoding ? compilerHost.readFile(fileName) : host.readFile(fileName, encoding), @@ -117711,7 +121272,7 @@ ${lanes.join("\n")} getCurrentDirectory: memoize(() => host.getCurrentDirectory()), useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getCanonicalFileName: createGetCanonicalFileName(useCaseSensitiveFileNames), - getNewLine: () => getNewLineCharacter(getCompilerOptions(), hostGetNewLine), + getNewLine: () => getNewLineCharacter(getCompilerOptions()), fileExists: (f) => host.fileExists(f), readFile: (f) => host.readFile(f), trace: maybeBind(host, host.trace), @@ -117797,7 +121358,7 @@ ${lanes.join("\n")} copyProperties(result, createWatchHost(system, reportWatchStatus2)); result.afterProgramCreate = (builderProgram) => { const compilerOptions = builderProgram.getCompilerOptions(); - const newLine = getNewLineCharacter(compilerOptions, () => system.newLine); + const newLine = getNewLineCharacter(compilerOptions); emitFilesAndReportErrors( builderProgram, reportDiagnostic, @@ -118007,11 +121568,13 @@ ${lanes.join("\n")} } reportWatchDiagnostic(Diagnostics.Starting_compilation_in_watch_mode); if (configFileName && !host.configFileParsingResult) { - newLine = getNewLineCharacter(optionsToExtendForConfigFile, () => host.getNewLine()); + newLine = getNewLineCharacter(optionsToExtendForConfigFile); Debug.assert(!rootFileNames); parseConfigFile2(); newLine = updateNewLine(); } + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); const { watchFile: watchFile2, watchDirectory, writeLog } = createWatchFactory(host, compilerOptions); const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames); writeLog(`Current directory: ${currentDirectory} CaseSensitiveFileNames: ${useCaseSensitiveFileNames}`); @@ -118114,6 +121677,8 @@ ${lanes.join("\n")} } function synchronizeProgram() { writeLog(`Synchronizing program`); + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); clearInvalidateResolutionsOfFailedLookupLocations(); const program = getCurrentBuilderProgram(); if (hasChangedCompilerOptions) { @@ -118199,7 +121764,7 @@ ${lanes.join("\n")} scheduleProgramUpdate(); } function updateNewLine() { - return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile, () => host.getNewLine()); + return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile); } function toPath3(fileName) { return toPath(fileName, currentDirectory, getCanonicalFileName); @@ -118353,6 +121918,8 @@ ${lanes.join("\n")} } function reloadFileNamesFromConfigFile() { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); + Debug.assert(configFileName); reloadLevel = 0 /* None */; rootFileNames = getFileNamesFromConfigSpecs(compilerOptions.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName), currentDirectory), compilerOptions, parseConfigFileHost, extraFileExtensions); if (updateErrorForNoInputFiles(rootFileNames, getNormalizedAbsolutePath(configFileName, currentDirectory), compilerOptions.configFile.configFileSpecs, configFileParsingDiagnostics, canConfigFileJsonReportNoInputFiles)) { @@ -118361,6 +121928,7 @@ ${lanes.join("\n")} synchronizeProgram(); } function reloadConfigFile() { + Debug.assert(configFileName); writeLog(`Reloading config file: ${configFileName}`); reloadLevel = 0 /* None */; if (cachedDirectoryStructureHost) { @@ -118373,6 +121941,7 @@ ${lanes.join("\n")} updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); } function parseConfigFile2() { + Debug.assert(configFileName); setConfigFileParsingResult(getParsedCommandLineOfConfigFile( configFileName, optionsToExtendForConfigFile, @@ -118400,6 +121969,7 @@ ${lanes.join("\n")} return config.parsedCommandLine; if (config.parsedCommandLine && config.reloadLevel === 1 /* Partial */ && !host.getParsedCommandLine) { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); const fileNames = getFileNamesFromConfigSpecs( config.parsedCommandLine.options.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName2), currentDirectory), @@ -118491,7 +122061,8 @@ ${lanes.join("\n")} return watchDirectory( directory, (fileOrDirectory) => { - Debug.assert(!!configFileName); + Debug.assert(configFileName); + Debug.assert(compilerOptions); const fileOrDirectoryPath = toPath3(fileOrDirectory); if (cachedDirectoryStructureHost) { cachedDirectoryStructureHost.addOrDeleteFileOrDirectory(fileOrDirectory, fileOrDirectoryPath); @@ -118522,6 +122093,7 @@ ${lanes.join("\n")} ); } function updateExtendedConfigFilesWatches(forProjectPath, options, watchOptions2, watchType) { + Debug.assert(configFileName); updateSharedExtendedConfigFileWatcher( forProjectPath, options, @@ -120678,6 +124250,7 @@ ${lanes.join("\n")} init_classFields(); init_typeSerializer(); init_legacyDecorators(); + init_esDecorators(); init_es2017(); init_es2018(); init_es2019(); @@ -121987,7 +125560,7 @@ ${lanes.join("\n")} Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); return syntaxList; } - function isDefaultModifier(node) { + function isDefaultModifier2(node) { return node.kind === 88 /* DefaultKeyword */; } function isClassKeyword(node) { @@ -122001,7 +125574,7 @@ ${lanes.join("\n")} return node.name; } if (isClassDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -122016,7 +125589,7 @@ ${lanes.join("\n")} return node.name; } if (isFunctionDeclaration(node)) { - const defaultModifier = find(node.modifiers, isDefaultModifier); + const defaultModifier = find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -122934,16 +126507,19 @@ ${lanes.join("\n")} function findModifier(node, kind) { return canHaveModifiers(node) ? find(node.modifiers, (m) => m.kind === kind) : void 0; } - function insertImports(changes, sourceFile, imports, blankLineBetween) { + function insertImports(changes, sourceFile, imports, blankLineBetween, preferences) { const decl = isArray(imports) ? imports[0] : imports; const importKindPredicate = decl.kind === 240 /* VariableStatement */ ? isRequireVariableStatement : isAnyImportSyntax; const existingImportStatements = filter(sourceFile.statements, importKindPredicate); - const sortedNewImports = isArray(imports) ? stableSort(imports, ts_OrganizeImports_exports.compareImportsOrRequireStatements) : [imports]; + let sortKind = isArray(imports) ? ts_OrganizeImports_exports.detectImportDeclarationSorting(imports, preferences) : 3 /* Both */; + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const sortedNewImports = isArray(imports) ? stableSort(imports, (a, b) => ts_OrganizeImports_exports.compareImportsOrRequireStatements(a, b, comparer)) : [imports]; if (!existingImportStatements.length) { changes.insertNodesAtTopOfFile(sourceFile, sortedNewImports, blankLineBetween); - } else if (existingImportStatements && ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements)) { + } else if (existingImportStatements && (sortKind = ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements, preferences))) { + const comparer2 = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); for (const newImport of sortedNewImports) { - const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport); + const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport, comparer2); if (insertionIndex === 0) { const options = existingImportStatements[0] === sourceFile.statements[0] ? { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude } : {}; changes.insertNodeBefore( @@ -123274,7 +126850,7 @@ ${lanes.join("\n")} } function getNewLineOrDefaultFromHost(host, formatSettings) { var _a2; - return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || carriageReturnLineFeed2; + return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || lineFeed2; } function lineBreakPart() { return displayPart("\n", 6 /* lineBreak */); @@ -123987,7 +127563,7 @@ ${lanes.join("\n")} if (!sourceFile.externalModuleIndicator && !sourceFile.commonJsModuleIndicator) { return false; } - return isInJSFile(declaration) || !findAncestor(declaration, isGlobalScopeAugmentation); + return isInJSFile(declaration) || !findAncestor(declaration, (d) => isModuleDeclaration(d) && isGlobalScopeAugmentation(d)); } function isDeprecatedDeclaration(decl) { return !!(getCombinedNodeFlagsAlwaysIncludeJSDoc(decl) & 8192 /* Deprecated */); @@ -124020,7 +127596,7 @@ ${lanes.join("\n")} function isSourceFileFromLibrary(program, node) { return program.isSourceFileFromExternalLibrary(node) || program.isSourceFileDefaultLibrary(node); } - var scanner, SemanticMeaning, tripleSlashDirectivePrefixRegex, typeKeywords, QuotePreference, displayPartWriter, carriageReturnLineFeed2, ANONYMOUS, syntaxMayBeASICandidate; + var scanner, SemanticMeaning, tripleSlashDirectivePrefixRegex, typeKeywords, QuotePreference, displayPartWriter, lineFeed2, ANONYMOUS, syntaxMayBeASICandidate; var init_utilities4 = __esm({ "src/services/utilities.ts"() { "use strict"; @@ -124066,7 +127642,7 @@ ${lanes.join("\n")} return QuotePreference5; })(QuotePreference || {}); displayPartWriter = getDisplayPartWriter(); - carriageReturnLineFeed2 = "\r\n"; + lineFeed2 = "\n"; ANONYMOUS = "anonymous function"; syntaxMayBeASICandidate = or( syntaxRequiresTrailingCommaOrSemicolonOrASI, @@ -124328,7 +127904,7 @@ ${lanes.join("\n")} } function forEachExternalModule(checker, allSourceFiles, excludePatterns, cb) { var _a2; - const isExcluded = (fileName) => excludePatterns == null ? void 0 : excludePatterns.some((p) => p.test(fileName)); + const isExcluded = excludePatterns && ((fileName) => excludePatterns.some((p) => p.test(fileName))); for (const ambient of checker.getAmbientModules()) { if (!stringContains(ambient.name, "*") && !(excludePatterns && ((_a2 = ambient.declarations) == null ? void 0 : _a2.every((d) => isExcluded(d.getSourceFile().fileName))))) { cb( @@ -124339,7 +127915,7 @@ ${lanes.join("\n")} } } for (const sourceFile of allSourceFiles) { - if (isExternalOrCommonJsModule(sourceFile) && !isExcluded(sourceFile.fileName)) { + if (isExternalOrCommonJsModule(sourceFile) && !(isExcluded == null ? void 0 : isExcluded(sourceFile.fileName))) { cb(checker.getMergedSymbol(sourceFile.symbol), sourceFile); } } @@ -124436,10 +128012,10 @@ ${lanes.join("\n")} function getDefaultExportInfoWorker(defaultExport, checker, compilerOptions) { const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) - return { symbolForMeaning: localSymbol, name: localSymbol.name }; + return { resolvedSymbol: localSymbol, name: localSymbol.name }; const name = getNameForExportDefault(defaultExport); if (name !== void 0) - return { symbolForMeaning: defaultExport, name }; + return { resolvedSymbol: defaultExport, name }; if (defaultExport.flags & 2097152 /* Alias */) { const aliased = checker.getImmediateAliasedSymbol(defaultExport); if (aliased && aliased.parent) { @@ -124447,9 +128023,9 @@ ${lanes.join("\n")} } } if (defaultExport.escapedName !== "default" /* Default */ && defaultExport.escapedName !== "export=" /* ExportEquals */) { - return { symbolForMeaning: defaultExport, name: defaultExport.getName() }; + return { resolvedSymbol: defaultExport, name: defaultExport.getName() }; } - return { symbolForMeaning: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; + return { resolvedSymbol: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; } function getNameForExportDefault(symbol) { return symbol.declarations && firstDefined(symbol.declarations, (declaration) => { @@ -128338,7 +131914,7 @@ ${lanes.join("\n")} } } function createSyntaxList(nodes, parent2) { - const list = createNode(353 /* SyntaxList */, nodes.pos, nodes.end, parent2); + const list = createNode(354 /* SyntaxList */, nodes.pos, nodes.end, parent2); list._children = []; let pos = nodes.pos; for (const node of nodes) { @@ -128583,7 +132159,7 @@ ${lanes.join("\n")} getCancellationToken: () => cancellationToken, getCanonicalFileName, useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, - getNewLine: () => getNewLineCharacter(newSettings, () => getNewLineOrDefaultFromHost(host)), + getNewLine: () => getNewLineCharacter(newSettings), getDefaultLibFileName: (options2) => host.getDefaultLibFileName(options2), writeFile: noop, getCurrentDirectory: () => currentDirectory, @@ -129129,22 +132705,22 @@ ${lanes.join("\n")} } return []; } - function getCodeFixesAtPosition(fileName, start, end, errorCodes64, formatOptions, preferences = emptyOptions) { + function getCodeFixesAtPosition(fileName, start, end, errorCodes63, formatOptions, preferences = emptyOptions) { synchronizeHostData(); const sourceFile = getValidSourceFile(fileName); const span = createTextSpanFromBounds(start, end); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return flatMap(deduplicate(errorCodes64, equateValues, compareValues), (errorCode) => { + return flatMap(deduplicate(errorCodes63, equateValues, compareValues), (errorCode) => { cancellationToken.throwIfCancellationRequested(); return ts_codefix_exports.getFixes({ errorCode, sourceFile, span, program, host, cancellationToken, formatContext, preferences }); }); } - function getCombinedCodeFix(scope, fixId52, formatOptions, preferences = emptyOptions) { + function getCombinedCodeFix(scope, fixId51, formatOptions, preferences = emptyOptions) { synchronizeHostData(); Debug.assert(scope.type === "file"); const sourceFile = getValidSourceFile(scope.fileName); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return ts_codefix_exports.getAllFixes({ fixId: fixId52, sourceFile, program, host, cancellationToken, formatContext, preferences }); + return ts_codefix_exports.getAllFixes({ fixId: fixId51, sourceFile, program, host, cancellationToken, formatContext, preferences }); } function organizeImports2(args, formatOptions, preferences = emptyOptions) { var _a3; @@ -129168,7 +132744,11 @@ ${lanes.join("\n")} return host.installPackage ? host.installPackage({ fileName: getPath(action.file), packageName: action.packageName }) : Promise.reject("Host does not implement `installPackage`"); } function getDocCommentTemplateAtPosition2(fileName, position, options) { - return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); + return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost( + host, + /*formatSettings*/ + void 0 + ), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); } function isValidBraceCompletionAtPosition(fileName, position, openingBrace) { if (openingBrace === 60 /* lessThan */) { @@ -129799,7 +133379,7 @@ ${lanes.join("\n")} if (!children.length) { return void 0; } - const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 352 /* LastJSDocNode */); + const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 353 /* LastJSDocNode */); return child.kind < 163 /* FirstNode */ ? child : child.getFirstToken(sourceFile); } getLastToken(sourceFile) { @@ -130762,7 +134342,11 @@ ${lanes.join("\n")} ); } realizeDiagnostics(diagnostics) { - const newLine = getNewLineOrDefaultFromHost(this.host); + const newLine = getNewLineOrDefaultFromHost( + this.host, + /*formatSettings*/ + void 0 + ); return realizeDiagnostics(diagnostics, newLine); } getSyntacticClassifications(fileName, start, length2) { @@ -131895,9 +135479,9 @@ ${lanes.join("\n")} return node.name; if (isConstNamedExpression(node)) return node.parent.name; - return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier2)); + return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier3)); } - function isDefaultModifier2(node) { + function isDefaultModifier3(node) { return node.kind === 88 /* DefaultKeyword */; } function getSymbolOfCallHierarchyDeclaration(typeChecker, node) { @@ -131909,7 +135493,7 @@ ${lanes.join("\n")} return { text: node.fileName, pos: 0, end: 0 }; } if ((isFunctionDeclaration(node) || isClassDeclaration(node)) && !isNamedDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier3); if (defaultModifier) { return { text: "default", pos: defaultModifier.getStart(), end: defaultModifier.getEnd() }; } @@ -132610,23 +136194,23 @@ ${lanes.join("\n")} void 0 ); } - function createCodeFixAction(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, diagnosticToString(fixAllDescription), command); + function createCodeFixAction(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, diagnosticToString(fixAllDescription), command); } - function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, fixAllDescription && diagnosticToString(fixAllDescription), command); + function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, fixAllDescription && diagnosticToString(fixAllDescription), command); } - function createCodeFixActionWorker(fixName8, description2, changes, fixId52, fixAllDescription, command) { - return { fixName: fixName8, description: description2, changes, fixId: fixId52, fixAllDescription, commands: command ? [command] : void 0 }; + function createCodeFixActionWorker(fixName8, description2, changes, fixId51, fixAllDescription, command) { + return { fixName: fixName8, description: description2, changes, fixId: fixId51, fixAllDescription, commands: command ? [command] : void 0 }; } function registerCodeFix(reg) { for (const error of reg.errorCodes) { errorCodeToFixes.add(String(error), reg); } if (reg.fixIds) { - for (const fixId52 of reg.fixIds) { - Debug.assert(!fixIdToRegistration.has(fixId52)); - fixIdToRegistration.set(fixId52, reg); + for (const fixId51 of reg.fixIds) { + Debug.assert(!fixIdToRegistration.has(fixId51)); + fixIdToRegistration.set(fixId51, reg); } } } @@ -132634,17 +136218,17 @@ ${lanes.join("\n")} return arrayFrom(errorCodeToFixes.keys()); } function removeFixIdIfFixAllUnavailable(registration, diagnostics) { - const { errorCodes: errorCodes64 } = registration; + const { errorCodes: errorCodes63 } = registration; let maybeFixableDiagnostics = 0; for (const diag2 of diagnostics) { - if (contains(errorCodes64, diag2.code)) + if (contains(errorCodes63, diag2.code)) maybeFixableDiagnostics++; if (maybeFixableDiagnostics > 1) break; } const fixAllUnavailable = maybeFixableDiagnostics < 2; - return ({ fixId: fixId52, fixAllDescription, ...action }) => { - return fixAllUnavailable ? action : { ...action, fixId: fixId52, fixAllDescription }; + return ({ fixId: fixId51, fixAllDescription, ...action }) => { + return fixAllUnavailable ? action : { ...action, fixId: fixId51, fixAllDescription }; }; } function getFixes(context) { @@ -132661,14 +136245,14 @@ ${lanes.join("\n")} function createFileTextChanges(fileName, textChanges2) { return { fileName, textChanges: textChanges2 }; } - function codeFixAll(context, errorCodes64, use) { + function codeFixAll(context, errorCodes63, use) { const commands = []; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes64, (diag2) => use(t, diag2, commands))); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes63, (diag2) => use(t, diag2, commands))); return createCombinedCodeActions(changes, commands.length === 0 ? void 0 : commands); } - function eachDiagnostic(context, errorCodes64, cb) { + function eachDiagnostic(context, errorCodes63, cb) { for (const diag2 of getDiagnostics(context)) { - if (contains(errorCodes64, diag2.code)) { + if (contains(errorCodes63, diag2.code)) { cb(diag2); } } @@ -133411,7 +136995,7 @@ ${lanes.join("\n")} if (!param.type) { const paramType = getJSDocType(param); if (paramType) - changes.tryInsertTypeAnnotation(sourceFile, param, transformJSDocType(paramType)); + changes.tryInsertTypeAnnotation(sourceFile, param, visitNode(paramType, transformJSDocType, isTypeNode)); } } if (needParens) @@ -133419,12 +137003,12 @@ ${lanes.join("\n")} if (!decl.type) { const returnType = getJSDocReturnType(decl); if (returnType) - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(returnType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(returnType, transformJSDocType, isTypeNode)); } } else { const jsdocType = Debug.checkDefined(getJSDocType(decl), "A JSDocType for this declaration should exist"); Debug.assert(!decl.type, "The JSDocType decl should have a type"); - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(jsdocType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(jsdocType, transformJSDocType, isTypeNode)); } } function isDeclarationWithType(node) { @@ -133461,19 +137045,19 @@ ${lanes.join("\n")} void 0, isIdentifier(tag.name) ? tag.name : tag.name.right, isOptionalJSDocPropertyLikeTag(tag) ? factory.createToken(57 /* QuestionToken */) : void 0, - tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ))); setEmitFlags(typeNode, 1 /* SingleLine */); return typeNode; } function transformJSDocOptionalType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("undefined", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("undefined", emptyArray)]); } function transformJSDocNullableType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("null", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("null", emptyArray)]); } function transformJSDocVariadicType(node) { - return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType)); + return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType, isTypeNode)); } function transformJSDocFunctionType(node) { var _a2; @@ -133484,7 +137068,7 @@ ${lanes.join("\n")} const isRest = node.type.kind === 321 /* JSDocVariadicType */ && index === node.parent.parameters.length - 1; const name = node.name || (isRest ? "rest" : "arg" + index); const dotdotdot = isRest ? factory.createToken(25 /* DotDotDotToken */) : node.dotDotDotToken; - return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType), node.initializer); + return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType, isTypeNode), node.initializer); } function transformJSDocTypeReference(node) { let name = node.typeName; @@ -133511,7 +137095,7 @@ ${lanes.join("\n")} if ((text === "Array" || text === "Promise") && !node.typeArguments) { args = factory.createNodeArray([factory.createTypeReferenceNode("any", emptyArray)]); } else { - args = visitNodes2(node.typeArguments, transformJSDocType); + args = visitNodes2(node.typeArguments, transformJSDocType, isTypeNode); } } return factory.createTypeReferenceNode(name, args); @@ -134624,8 +138208,8 @@ ${lanes.join("\n")} function collectExportRenames(sourceFile, checker, identifiers) { const res = /* @__PURE__ */ new Map(); forEachExportReference(sourceFile, (node) => { - const { text, originalKeywordKind } = node.name; - if (!res.has(text) && (originalKeywordKind !== void 0 && isNonContextualKeyword(originalKeywordKind) || checker.resolveName( + const { text } = node.name; + if (!res.has(text) && (isIdentifierANonContextualKeyword(node.name) || checker.resolveName( text, node, 111551 /* Value */, @@ -135225,7 +138809,7 @@ ${lanes.join("\n")} "use strict"; init_ts4(); init_ts_codefix(); - errorCodes13 = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code]; + errorCodes13 = [Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code]; fixId12 = "convertToTypeOnlyExport"; registerCodeFix({ errorCodes: errorCodes13, @@ -135509,7 +139093,7 @@ ${lanes.join("\n")} Debug.checkDefined(exportInfo), moduleSymbol, program, - /*useNamespaceInfo*/ + /*position*/ void 0, !!isValidTypeOnlyUseSite, useRequire, @@ -135654,7 +139238,8 @@ ${lanes.join("\n")} sourceFile, newDeclarations, /*blankLineBetween*/ - true + true, + preferences ); } } @@ -135666,10 +139251,10 @@ ${lanes.join("\n")} const packageJsonImportFilter = createPackageJsonImportFilter(importingFile, preferences, host); const importMap = createExistingImportMap(program.getTypeChecker(), importingFile, program.getCompilerOptions()); return { getModuleSpecifierForBestExportInfo }; - function getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, fromCacheOnly) { + function getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, fromCacheOnly) { const { fixes, computedWithoutCacheCount } = getImportFixes( exportInfo, - { symbolName: symbolName2, position }, + position, isValidTypeOnlyUseSite, /*useRequire*/ false, @@ -135690,7 +139275,7 @@ ${lanes.join("\n")} Debug.assertIsDefined(exportInfos); const useRequire = shouldUseRequire(sourceFile, program); const isValidTypeOnlyUseSite = isValidTypeOnlyAliasUseSite(getTokenAtPosition(sourceFile, position)); - const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, { symbolName: symbolName2, position }, isValidTypeOnlyUseSite, useRequire, host, preferences)); + const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences)); return { moduleSpecifier: fix.moduleSpecifier, codeAction: codeFixActionToCodeAction(codeActionForFix( @@ -135712,10 +139297,10 @@ ${lanes.join("\n")} const includeSymbolNameInDescription = symbolName2 !== symbolToken.text; return fix && codeFixActionToCodeAction(codeActionForFix({ host, formatContext, preferences }, sourceFile, symbolName2, fix, includeSymbolNameInDescription, compilerOptions, preferences)); } - function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, host, preferences) { + function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences) { Debug.assert(exportInfos.some((info) => info.moduleSymbol === moduleSymbol || info.symbol.parent === moduleSymbol), "Some exportInfo should match the specified moduleSymbol"); const packageJsonImportFilter = createPackageJsonImportFilter(sourceFile, preferences, host); - return getBestFix(getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); + return getBestFix(getImportFixes(exportInfos, position, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); } function codeFixActionToCodeAction({ description: description2, changes, commands }) { return { description: description2, changes, commands }; @@ -135756,10 +139341,10 @@ ${lanes.join("\n")} } } } - function getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { + function getImportFixes(exportInfos, usagePosition, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { const checker = program.getTypeChecker(); const existingImports = flatMap(exportInfos, importMap.getImportsForExportInfo); - const useNamespace = useNamespaceInfo && tryUseExistingNamespaceImport(existingImports, useNamespaceInfo.symbolName, useNamespaceInfo.position, checker); + const useNamespace = usagePosition !== void 0 && tryUseExistingNamespaceImport(existingImports, usagePosition); const addToExisting = tryAddToExistingImport(existingImports, isValidTypeOnlyUseSite, checker, program.getCompilerOptions()); if (addToExisting) { return { @@ -135772,7 +139357,7 @@ ${lanes.join("\n")} existingImports, program, sourceFile, - useNamespaceInfo == null ? void 0 : useNamespaceInfo.position, + usagePosition, isValidTypeOnlyUseSite, useRequire, host, @@ -135784,33 +139369,18 @@ ${lanes.join("\n")} fixes: [...useNamespace ? [useNamespace] : emptyArray, ...fixes] }; } - function tryUseExistingNamespaceImport(existingImports, symbolName2, position, checker) { - return firstDefined(existingImports, ({ declaration }) => { + function tryUseExistingNamespaceImport(existingImports, position) { + return firstDefined(existingImports, ({ declaration, importKind }) => { var _a2; + if (importKind !== 0 /* Named */) + return void 0; const namespacePrefix = getNamespaceLikeImportText(declaration); - const moduleSpecifier = (_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text; - if (namespacePrefix && moduleSpecifier) { - const moduleSymbol = getTargetModuleFromNamespaceLikeImport(declaration, checker); - if (moduleSymbol && moduleSymbol.exports.has(escapeLeadingUnderscores(symbolName2))) { - return { kind: 0 /* UseNamespace */, namespacePrefix, position, moduleSpecifier }; - } + const moduleSpecifier = namespacePrefix && ((_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text); + if (moduleSpecifier) { + return { kind: 0 /* UseNamespace */, namespacePrefix, usagePosition: position, moduleSpecifier }; } }); } - function getTargetModuleFromNamespaceLikeImport(declaration, checker) { - var _a2; - switch (declaration.kind) { - case 257 /* VariableDeclaration */: - return checker.resolveExternalModuleName(declaration.initializer.arguments[0]); - case 268 /* ImportEqualsDeclaration */: - return checker.getAliasedSymbol(declaration.symbol); - case 269 /* ImportDeclaration */: - const namespaceImport = tryCast((_a2 = declaration.importClause) == null ? void 0 : _a2.namedBindings, isNamespaceImport); - return namespaceImport && checker.getAliasedSymbol(namespaceImport.symbol); - default: - return Debug.assertNever(declaration); - } - } function getNamespaceLikeImportText(declaration) { var _a2, _b, _c; switch (declaration.kind) { @@ -135831,7 +139401,7 @@ ${lanes.join("\n")} if (isForNewImportDeclaration && compilerOptions.importsNotUsedAsValues === 2 /* Error */) { return 2 /* Required */; } - if (compilerOptions.isolatedModules && compilerOptions.preserveValueImports && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { + if ((compilerOptions.isolatedModules && compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { return 2 /* Required */; } return 1 /* Allowed */; @@ -135926,7 +139496,7 @@ ${lanes.join("\n")} function createGetChecker(program, host) { return memoizeOne((isFromPackageJson) => isFromPackageJson ? host.getPackageJsonAutoImportProvider().getTypeChecker() : program.getTypeChecker()); } - function getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { + function getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { const isJs = isSourceFileJS(sourceFile); const compilerOptions = program.getCompilerOptions(); const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); @@ -135949,27 +139519,47 @@ ${lanes.join("\n")} compilerOptions ); computedWithoutCacheCount += computedWithoutCache ? 1 : 0; - return mapDefined( - moduleSpecifiers, - (moduleSpecifier) => rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier) ? void 0 : ( - // `position` should only be undefined at a missing jsx namespace, in which case we shouldn't be looking for pure types. - !importedSymbolHasValueMeaning && isJs && position !== void 0 ? { kind: 1 /* JsdocTypeImport */, moduleSpecifier, position, exportInfo: exportInfo2, isReExport: i > 0 } : { - kind: 3 /* AddNew */, - moduleSpecifier, - importKind: getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions), - useRequire, - addAsTypeOnly, - exportInfo: exportInfo2, - isReExport: i > 0 + return mapDefined(moduleSpecifiers, (moduleSpecifier) => { + var _a2; + if (rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier)) { + return void 0; + } + if (!importedSymbolHasValueMeaning && isJs && usagePosition !== void 0) { + return { kind: 1 /* JsdocTypeImport */, moduleSpecifier, usagePosition, exportInfo: exportInfo2, isReExport: i > 0 }; + } + const importKind = getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions); + let qualification; + if (usagePosition !== void 0 && importKind === 3 /* CommonJS */ && exportInfo2.exportKind === 0 /* Named */) { + const exportEquals = checker.resolveExternalModuleSymbol(exportInfo2.moduleSymbol); + let namespacePrefix; + if (exportEquals !== exportInfo2.moduleSymbol) { + namespacePrefix = (_a2 = getDefaultExportInfoWorker(exportEquals, checker, compilerOptions)) == null ? void 0 : _a2.name; } - ) - ); + namespacePrefix || (namespacePrefix = moduleSymbolToValidIdentifier( + exportInfo2.moduleSymbol, + getEmitScriptTarget(compilerOptions), + /*forceCapitalize*/ + false + )); + qualification = { namespacePrefix, usagePosition }; + } + return { + kind: 3 /* AddNew */, + moduleSpecifier, + importKind, + useRequire, + addAsTypeOnly, + exportInfo: exportInfo2, + isReExport: i > 0, + qualification + }; + }); }); return { computedWithoutCacheCount, fixes }; } - function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { + function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { const existingDeclaration = firstDefined(existingImports, (info) => newImportInfoFromExistingSpecifier(info, isValidTypeOnlyUseSite, useRequire, program.getTypeChecker(), program.getCompilerOptions())); - return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); + return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); } function newImportInfoFromExistingSpecifier({ declaration, importKind, symbol, targetFlags }, isValidTypeOnlyUseSite, useRequire, checker, compilerOptions) { var _a2; @@ -136069,10 +139659,10 @@ ${lanes.join("\n")} const symbolName2 = umdSymbol.name; const exportInfo = [{ symbol: umdSymbol, moduleSymbol: symbol, moduleFileName: void 0, exportKind: 3 /* UMD */, targetFlags: symbol.flags, isFromPackageJson: false }]; const useRequire = shouldUseRequire(sourceFile, program); - const position = isIdentifier(token) ? token.getStart(sourceFile) : void 0; const fixes = getImportFixes( exportInfo, - position ? { position, symbolName: symbolName2 } : void 0, + /*usagePosition*/ + void 0, /*isValidTypeOnlyUseSite*/ false, useRequire, @@ -136091,15 +139681,24 @@ ${lanes.join("\n")} if (isUMDExportSymbol(umdSymbol)) return umdSymbol; const { parent: parent2 } = token; - return isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2) ? tryCast(checker.resolveName( - checker.getJsxNamespace(parent2), - isJsxOpeningLikeElement(parent2) ? token : parent2, - 111551 /* Value */, - /*excludeGlobals*/ - false - ), isUMDExportSymbol) : void 0; + if (isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2)) { + const parentSymbol = checker.resolveName( + checker.getJsxNamespace(parent2), + isJsxOpeningLikeElement(parent2) ? token : parent2, + 111551 /* Value */, + /*excludeGlobals*/ + false + ); + if (isUMDExportSymbol(parentSymbol)) { + return parentSymbol; + } + } + return void 0; } function getImportKind(importingFile, exportKind, compilerOptions, forceImportKeyword) { + if (compilerOptions.verbatimModuleSyntax && (getEmitModuleKind(compilerOptions) === 1 /* CommonJS */ || importingFile.impliedNodeFormat === 1 /* CommonJS */)) { + return 3 /* CommonJS */; + } switch (exportKind) { case 0 /* Named */: return 0 /* Named */; @@ -136151,7 +139750,7 @@ ${lanes.join("\n")} const useRequire = shouldUseRequire(sourceFile, program); const exportInfo = getExportInfos(symbolName2, isJSXTagName(symbolToken), getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, program, useAutoImportProvider, host, preferences); return arrayFrom( - flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, { symbolName: symbolName2, position: symbolToken.getStart(sourceFile) }, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), + flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, symbolToken.getStart(sourceFile), isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), (fix) => ({ fix, symbolName: symbolName2, errorIdentifierText: symbolToken.text, isJsxNamespaceFix: symbolName2 !== symbolToken.text }) ); }); @@ -136221,7 +139820,7 @@ ${lanes.join("\n")} cancellationToken.throwIfCancellationRequested(); const compilerOptions = program2.getCompilerOptions(); const defaultInfo = getDefaultLikeExportInfo(moduleSymbol, checker, compilerOptions); - if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.symbolForMeaning, currentTokenMeaning)) { + if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.resolvedSymbol, currentTokenMeaning)) { addSymbol(moduleSymbol, sourceFile, defaultInfo.symbol, defaultInfo.exportKind, program2, isFromPackageJson); } const exportSymbolWithIdenticalName = checker.tryGetMemberInModuleExportsAndProperties(symbolName2, moduleSymbol); @@ -136278,23 +139877,27 @@ ${lanes.join("\n")} return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifierWithoutQuotes] : [Diagnostics.Update_import_from_0, moduleSpecifierWithoutQuotes]; } case 3 /* AddNew */: { - const { importKind, moduleSpecifier, addAsTypeOnly, useRequire } = fix; + const { importKind, moduleSpecifier, addAsTypeOnly, useRequire, qualification } = fix; const getDeclarations = useRequire ? getNewRequires : getNewImports; const defaultImport = importKind === 1 /* Default */ ? { name: symbolName2, addAsTypeOnly } : void 0; const namedImports = importKind === 0 /* Named */ ? [{ name: symbolName2, addAsTypeOnly }] : void 0; - const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: symbolName2, addAsTypeOnly } : void 0; + const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: (qualification == null ? void 0 : qualification.namespacePrefix) || symbolName2, addAsTypeOnly } : void 0; insertImports( changes, sourceFile, getDeclarations(moduleSpecifier, quotePreference, defaultImport, namedImports, namespaceLikeImport), /*blankLineBetween*/ - true + true, + preferences ); + if (qualification) { + addNamespaceQualifier(changes, sourceFile, qualification); + } return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifier] : [Diagnostics.Add_import_from_0, moduleSpecifier]; } case 4 /* PromoteTypeOnly */: { const { typeOnlyAliasDeclaration } = fix; - const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile); + const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile, preferences); return promotedDeclaration.kind === 273 /* ImportSpecifier */ ? [Diagnostics.Remove_type_from_import_of_0_from_1, symbolName2, getModuleSpecifierText(promotedDeclaration.parent.parent)] : [Diagnostics.Remove_type_from_import_declaration_from_0, getModuleSpecifierText(promotedDeclaration)]; } default: @@ -136305,12 +139908,12 @@ ${lanes.join("\n")} var _a2, _b; return promotedDeclaration.kind === 268 /* ImportEqualsDeclaration */ ? ((_b = tryCast((_a2 = tryCast(promotedDeclaration.moduleReference, isExternalModuleReference)) == null ? void 0 : _a2.expression, isStringLiteralLike)) == null ? void 0 : _b.text) || promotedDeclaration.moduleReference.getText() : cast(promotedDeclaration.parent.moduleSpecifier, isStringLiteral).text; } - function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile) { - const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules; + function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile, preferences) { + const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax; switch (aliasDeclaration.kind) { case 273 /* ImportSpecifier */: if (aliasDeclaration.isTypeOnly) { - const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements); + const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements, preferences); if (aliasDeclaration.parent.elements.length > 1 && sortKind) { changes.delete(sourceFile, aliasDeclaration); const newSpecifier = factory.updateImportSpecifier( @@ -136320,7 +139923,8 @@ ${lanes.join("\n")} aliasDeclaration.propertyName, aliasDeclaration.name ); - const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, sortKind === 2 /* CaseInsensitive */); + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, comparer); changes.insertImportSpecifierAtIndex(sourceFile, newSpecifier, aliasDeclaration.parent, insertionIndex); } else { changes.deleteRange(sourceFile, aliasDeclaration.getFirstToken()); @@ -136348,7 +139952,7 @@ ${lanes.join("\n")} if (convertExistingToTypeOnly) { const namedImports = tryCast(importClause.namedBindings, isNamedImports); if (namedImports && namedImports.elements.length > 1) { - if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { + if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements, preferences) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { changes.delete(sourceFile, aliasDeclaration); changes.insertImportSpecifierAtIndex(sourceFile, aliasDeclaration, namedImports, 0); } @@ -136379,7 +139983,7 @@ ${lanes.join("\n")} } const promoteFromTypeOnly2 = clause.isTypeOnly && some([defaultImport, ...namedImports], (i) => (i == null ? void 0 : i.addAsTypeOnly) === 4 /* NotAllowed */); const existingSpecifiers = clause.namedBindings && ((_a2 = tryCast(clause.namedBindings, isNamedImports)) == null ? void 0 : _a2.elements); - const convertExistingToTypeOnly = promoteFromTypeOnly2 && compilerOptions.preserveValueImports && compilerOptions.isolatedModules; + const convertExistingToTypeOnly = promoteFromTypeOnly2 && (compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax); if (defaultImport) { Debug.assert(!clause.name, "Cannot add a default import to an import clause that already has one"); changes.insertNodeAt(sourceFile, clause.getStart(sourceFile), factory.createIdentifier(defaultImport.name), { suffix: ", " }); @@ -136389,14 +139993,15 @@ ${lanes.join("\n")} if (typeof preferences.organizeImportsIgnoreCase === "boolean") { ignoreCaseForSorting = preferences.organizeImportsIgnoreCase; } else if (existingSpecifiers) { - const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (targetImportSorting !== 3 /* Both */) { ignoreCaseForSorting = targetImportSorting === 2 /* CaseInsensitive */; } } if (ignoreCaseForSorting === void 0) { - ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile) === 2 /* CaseInsensitive */; + ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile, preferences) === 2 /* CaseInsensitive */; } + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, ignoreCaseForSorting); const newSpecifiers = stableSort( namedImports.map((namedImport) => factory.createImportSpecifier( (!clause.isTypeOnly || promoteFromTypeOnly2) && needsTypeOnly(namedImport), @@ -136404,12 +140009,12 @@ ${lanes.join("\n")} void 0, factory.createIdentifier(namedImport.name) )), - (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, ignoreCaseForSorting) + (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, comparer) ); - const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (specifierSort && !(ignoreCaseForSorting && specifierSort === 1 /* CaseSensitive */)) { for (const spec of newSpecifiers) { - const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, ignoreCaseForSorting); + const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, comparer); changes.insertImportSpecifierAtIndex(sourceFile, spec, clause.namedBindings, insertionIndex); } } else if (existingSpecifiers == null ? void 0 : existingSpecifiers.length) { @@ -136449,10 +140054,10 @@ ${lanes.join("\n")} } } } - function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, position }) { - changes.insertText(sourceFile, position, namespacePrefix + "."); + function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, usagePosition }) { + changes.insertText(sourceFile, usagePosition, namespacePrefix + "."); } - function addImportType(changes, sourceFile, { moduleSpecifier, position }, quotePreference) { + function addImportType(changes, sourceFile, { moduleSpecifier, usagePosition: position }, quotePreference) { changes.insertText(sourceFile, position, getImportTypePrefix(moduleSpecifier, quotePreference)); } function getImportTypePrefix(moduleSpecifier, quotePreference) { @@ -136928,10 +140533,10 @@ ${lanes.join("\n")} const info = errorCodeFixIdMap[errorCode]; if (!info) return emptyArray; - const { descriptions, fixId: fixId52, fixAllDescriptions } = info; + const { descriptions, fixId: fixId51, fixAllDescriptions } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => dispatchChanges(changes2, context, errorCode, span.start)); return [ - createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId52, fixAllDescriptions) + createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId51, fixAllDescriptions) ]; }, fixIds: [fixName, fixAddOverrideId, fixRemoveOverrideId], @@ -138263,7 +141868,7 @@ ${lanes.join("\n")} }, fixIds: [fixMissingMember, fixMissingFunctionDeclaration, fixMissingProperties, fixMissingAttributes], getAllCodeActions: (context) => { - const { program, fixId: fixId52 } = context; + const { program, fixId: fixId51 } = context; const checker = program.getTypeChecker(); const seen = /* @__PURE__ */ new Map(); const typeDeclToMembers = /* @__PURE__ */ new Map(); @@ -138273,11 +141878,11 @@ ${lanes.join("\n")} if (!info || !addToSeen(seen, getNodeId(info.parentDeclaration) + "#" + info.token.text)) { return; } - if (fixId52 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { + if (fixId51 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { addFunctionDeclaration(changes, context, info); - } else if (fixId52 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { + } else if (fixId51 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { addObjectLiteralProperties(changes, context, info); - } else if (fixId52 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { + } else if (fixId51 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { addJsxAttributes(changes, context, info); } else { if (info.kind === 1 /* Enum */) { @@ -138565,56 +142170,20 @@ ${lanes.join("\n")} } }); - // src/services/codefixes/fixEnableExperimentalDecorators.ts - function doChange12(changeTracker, configFile) { - setJsonCompilerOptionValue(changeTracker, configFile, "experimentalDecorators", factory.createTrue()); - } - var fixId27, errorCodes32; - var init_fixEnableExperimentalDecorators = __esm({ - "src/services/codefixes/fixEnableExperimentalDecorators.ts"() { - "use strict"; - init_ts4(); - init_ts_codefix(); - fixId27 = "enableExperimentalDecorators"; - errorCodes32 = [ - Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning.code - ]; - registerCodeFix({ - errorCodes: errorCodes32, - getCodeActions: function getCodeActionsToEnableExperimentalDecorators(context) { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => doChange12(changeTracker, configFile)); - return [createCodeFixActionWithoutFixAll(fixId27, changes, Diagnostics.Enable_the_experimentalDecorators_option_in_your_configuration_file)]; - }, - fixIds: [fixId27], - getAllCodeActions: (context) => codeFixAll(context, errorCodes32, (changes) => { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - doChange12(changes, configFile); - }) - }); - } - }); - // src/services/codefixes/fixEnableJsxFlag.ts - function doChange13(changeTracker, configFile) { + function doChange12(changeTracker, configFile) { setJsonCompilerOptionValue(changeTracker, configFile, "jsx", factory.createStringLiteral("react")); } - var fixID, errorCodes33; + var fixID, errorCodes32; var init_fixEnableJsxFlag = __esm({ "src/services/codefixes/fixEnableJsxFlag.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixID = "fixEnableJsxFlag"; - errorCodes33 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; + errorCodes32 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; registerCodeFix({ - errorCodes: errorCodes33, + errorCodes: errorCodes32, getCodeActions: function getCodeActionsToFixEnableJsxFlag(context) { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { @@ -138622,19 +142191,19 @@ ${lanes.join("\n")} } const changes = ts_textChanges_exports.ChangeTracker.with( context, - (changeTracker) => doChange13(changeTracker, configFile) + (changeTracker) => doChange12(changeTracker, configFile) ); return [ createCodeFixActionWithoutFixAll(fixID, changes, Diagnostics.Enable_the_jsx_flag_in_your_configuration_file) ]; }, fixIds: [fixID], - getAllCodeActions: (context) => codeFixAll(context, errorCodes33, (changes) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes32, (changes) => { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { return void 0; } - doChange13(changes, configFile); + doChange12(changes, configFile); }) }); } @@ -138656,7 +142225,7 @@ ${lanes.join("\n")} } return void 0; } - function doChange14(changes, sourceFile, arg, expression) { + function doChange13(changes, sourceFile, arg, expression) { const callExpression = factory.createCallExpression( factory.createPropertyAccessExpression(factory.createIdentifier("Number"), factory.createIdentifier("isNaN")), /*typeArguments*/ @@ -138674,33 +142243,33 @@ ${lanes.join("\n")} const [_, suggestion] = flattenDiagnosticMessageText(messageText, "\n", 0).match(/\'(.*)\'/) || []; return suggestion; } - var fixId28, errorCodes34; + var fixId27, errorCodes33; var init_fixNaNEquality = __esm({ "src/services/codefixes/fixNaNEquality.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId28 = "fixNaNEquality"; - errorCodes34 = [ + fixId27 = "fixNaNEquality"; + errorCodes33 = [ Diagnostics.This_condition_will_always_return_0.code ]; registerCodeFix({ - errorCodes: errorCodes34, + errorCodes: errorCodes33, getCodeActions(context) { const { sourceFile, span, program } = context; const info = getInfo8(program, sourceFile, span); if (info === void 0) return; const { suggestion, expression, arg } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, sourceFile, arg, expression)); - return [createCodeFixAction(fixId28, changes, [Diagnostics.Use_0, suggestion], fixId28, Diagnostics.Use_Number_isNaN_in_all_conditions)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange13(t, sourceFile, arg, expression)); + return [createCodeFixAction(fixId27, changes, [Diagnostics.Use_0, suggestion], fixId27, Diagnostics.Use_Number_isNaN_in_all_conditions)]; }, - fixIds: [fixId28], + fixIds: [fixId27], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes34, (changes, diag2) => { + return codeFixAll(context, errorCodes33, (changes, diag2) => { const info = getInfo8(context.program, diag2.file, createTextSpan(diag2.start, diag2.length)); if (info) { - doChange14(changes, diag2.file, info.arg, info.expression); + doChange13(changes, diag2.file, info.arg, info.expression); } }); } @@ -138756,32 +142325,32 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixPropertyAssignment.ts - function doChange15(changes, sourceFile, node) { + function doChange14(changes, sourceFile, node) { changes.replaceNode(sourceFile, node, factory.createPropertyAssignment(node.name, node.objectAssignmentInitializer)); } function getProperty2(sourceFile, pos) { return cast(getTokenAtPosition(sourceFile, pos).parent, isShorthandPropertyAssignment); } - var fixId29, errorCodes35; + var fixId28, errorCodes34; var init_fixPropertyAssignment = __esm({ "src/services/codefixes/fixPropertyAssignment.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId29 = "fixPropertyAssignment"; - errorCodes35 = [ + fixId28 = "fixPropertyAssignment"; + errorCodes34 = [ Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code ]; registerCodeFix({ - errorCodes: errorCodes35, - fixIds: [fixId29], + errorCodes: errorCodes34, + fixIds: [fixId28], getCodeActions(context) { const { sourceFile, span } = context; const property = getProperty2(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, context.sourceFile, property)); - return [createCodeFixAction(fixId29, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId29, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, context.sourceFile, property)); + return [createCodeFixAction(fixId28, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId28, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => doChange15(changes, diag2.file, getProperty2(diag2.file, diag2.start))) + getAllCodeActions: (context) => codeFixAll(context, errorCodes34, (changes, diag2) => doChange14(changes, diag2.file, getProperty2(diag2.file, diag2.start))) }); } }); @@ -138807,16 +142376,16 @@ ${lanes.join("\n")} changes.deleteRange(sourceFile, { pos: implementsToken.getStart(), end }); } } - var fixId30, errorCodes36; + var fixId29, errorCodes35; var init_fixExtendsInterfaceBecomesImplements = __esm({ "src/services/codefixes/fixExtendsInterfaceBecomesImplements.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId30 = "extendsInterfaceBecomesImplements"; - errorCodes36 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; + fixId29 = "extendsInterfaceBecomesImplements"; + errorCodes35 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; registerCodeFix({ - errorCodes: errorCodes36, + errorCodes: errorCodes35, getCodeActions(context) { const { sourceFile } = context; const nodes = getNodes2(sourceFile, context.span.start); @@ -138824,10 +142393,10 @@ ${lanes.join("\n")} return void 0; const { extendsToken, heritageClauses } = nodes; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChanges2(t, sourceFile, extendsToken, heritageClauses)); - return [createCodeFixAction(fixId30, changes, Diagnostics.Change_extends_to_implements, fixId30, Diagnostics.Change_all_extended_interfaces_to_implements)]; + return [createCodeFixAction(fixId29, changes, Diagnostics.Change_extends_to_implements, fixId29, Diagnostics.Change_all_extended_interfaces_to_implements)]; }, - fixIds: [fixId30], - getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { + fixIds: [fixId29], + getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => { const nodes = getNodes2(diag2.file, diag2.start); if (nodes) doChanges2(changes, diag2.file, nodes.extendsToken, nodes.heritageClauses); @@ -138843,39 +142412,39 @@ ${lanes.join("\n")} return { node, className: diagCode === didYouMeanStaticMemberCode ? getContainingClass(node).name.text : void 0 }; } } - function doChange16(changes, sourceFile, { node, className }) { + function doChange15(changes, sourceFile, { node, className }) { suppressLeadingAndTrailingTrivia(node); changes.replaceNode(sourceFile, node, factory.createPropertyAccessExpression(className ? factory.createIdentifier(className) : factory.createThis(), node)); } - var fixId31, didYouMeanStaticMemberCode, errorCodes37; + var fixId30, didYouMeanStaticMemberCode, errorCodes36; var init_fixForgottenThisPropertyAccess = __esm({ "src/services/codefixes/fixForgottenThisPropertyAccess.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId31 = "forgottenThisPropertyAccess"; + fixId30 = "forgottenThisPropertyAccess"; didYouMeanStaticMemberCode = Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code; - errorCodes37 = [ + errorCodes36 = [ Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, didYouMeanStaticMemberCode ]; registerCodeFix({ - errorCodes: errorCodes37, + errorCodes: errorCodes36, getCodeActions(context) { const { sourceFile } = context; const info = getInfo9(sourceFile, context.span.start, context.errorCode); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16(t, sourceFile, info)); - return [createCodeFixAction(fixId31, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId31, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, sourceFile, info)); + return [createCodeFixAction(fixId30, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId30, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; }, - fixIds: [fixId31], - getAllCodeActions: (context) => codeFixAll(context, errorCodes37, (changes, diag2) => { + fixIds: [fixId30], + getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { const info = getInfo9(diag2.file, diag2.start, diag2.code); if (info) - doChange16(changes, context.sourceFile, info); + doChange15(changes, context.sourceFile, info); }) }); } @@ -138885,7 +142454,7 @@ ${lanes.join("\n")} function isValidCharacter(character) { return hasProperty(htmlEntity, character); } - function doChange17(changes, preferences, sourceFile, start, useHtmlEntity) { + function doChange16(changes, preferences, sourceFile, start, useHtmlEntity) { const character = sourceFile.getText()[start]; if (!isValidCharacter(character)) { return; @@ -138893,7 +142462,7 @@ ${lanes.join("\n")} const replacement = useHtmlEntity ? htmlEntity[character] : `{${quote(sourceFile, preferences, character)}}`; changes.replaceRangeWithText(sourceFile, { pos: start, end: start + 1 }, replacement); } - var fixIdExpression, fixIdHtmlEntity, errorCodes38, htmlEntity; + var fixIdExpression, fixIdHtmlEntity, errorCodes37, htmlEntity; var init_fixInvalidJsxCharacters = __esm({ "src/services/codefixes/fixInvalidJsxCharacters.ts"() { "use strict"; @@ -138901,16 +142470,16 @@ ${lanes.join("\n")} init_ts_codefix(); fixIdExpression = "fixInvalidJsxCharacters_expression"; fixIdHtmlEntity = "fixInvalidJsxCharacters_htmlEntity"; - errorCodes38 = [ + errorCodes37 = [ Diagnostics.Unexpected_token_Did_you_mean_or_gt.code, Diagnostics.Unexpected_token_Did_you_mean_or_rbrace.code ]; registerCodeFix({ - errorCodes: errorCodes38, + errorCodes: errorCodes37, fixIds: [fixIdExpression, fixIdHtmlEntity], getCodeActions(context) { const { sourceFile, preferences, span } = context; - const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -138918,7 +142487,7 @@ ${lanes.join("\n")} /* useHtmlEntity */ false )); - const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -138932,7 +142501,7 @@ ${lanes.join("\n")} ]; }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes38, (changes, diagnostic) => doChange17(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); + return codeFixAll(context, errorCodes37, (changes, diagnostic) => doChange16(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); } }); htmlEntity = { @@ -138943,8 +142512,8 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixUnmatchedParameter.ts - function getDeleteAction(context, { name, signature, jsDocParameterTag }) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, signature, (t) => t !== jsDocParameterTag)); + function getDeleteAction(context, { name, jsDocHost, jsDocParameterTag }) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, jsDocHost, (t) => t !== jsDocParameterTag)); return createCodeFixAction( deleteUnmatchedParameter, changes, @@ -138983,14 +142552,15 @@ ${lanes.join("\n")} const token = getTokenAtPosition(sourceFile, pos); if (token.parent && isJSDocParameterTag(token.parent) && isIdentifier(token.parent.name)) { const jsDocParameterTag = token.parent; + const jsDocHost = getJSDocHost(jsDocParameterTag); const signature = getHostSignatureFromJSDoc(jsDocParameterTag); - if (signature) { - return { signature, name: token.parent.name, jsDocParameterTag }; + if (jsDocHost && signature) { + return { jsDocHost, signature, name: token.parent.name, jsDocParameterTag }; } } return void 0; } - var deleteUnmatchedParameter, renameUnmatchedParameter, errorCodes39; + var deleteUnmatchedParameter, renameUnmatchedParameter, errorCodes38; var init_fixUnmatchedParameter = __esm({ "src/services/codefixes/fixUnmatchedParameter.ts"() { "use strict"; @@ -138998,12 +142568,12 @@ ${lanes.join("\n")} init_ts_codefix(); deleteUnmatchedParameter = "deleteUnmatchedParameter"; renameUnmatchedParameter = "renameUnmatchedParameter"; - errorCodes39 = [ + errorCodes38 = [ Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code ]; registerCodeFix({ fixIds: [deleteUnmatchedParameter, renameUnmatchedParameter], - errorCodes: errorCodes39, + errorCodes: errorCodes38, getCodeActions: function getCodeActionsToFixUnmatchedParameter(context) { const { sourceFile, span } = context; const actions2 = []; @@ -139018,7 +142588,7 @@ ${lanes.join("\n")} getAllCodeActions: function getAllCodeActionsToFixUnmatchedParameter(context) { const tagsToSignature = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes39, ({ file, start }) => { + eachDiagnostic(context, errorCodes38, ({ file, start }) => { const info = getInfo10(file, start); if (info) { tagsToSignature.set(info.signature, append(tagsToSignature.get(info.signature), info.jsDocParameterTag)); @@ -139067,16 +142637,16 @@ ${lanes.join("\n")} function doNamespaceImportChange(changes, sourceFile, importDeclaration, program) { ts_refactor_exports.doChangeNamedToNamespaceOrDefault(sourceFile, program, changes, importDeclaration.parent); } - var fixId32, errorCodes40; + var fixId31, errorCodes39; var init_fixUnreferenceableDecoratorMetadata = __esm({ "src/services/codefixes/fixUnreferenceableDecoratorMetadata.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId32 = "fixUnreferenceableDecoratorMetadata"; - errorCodes40 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; + fixId31 = "fixUnreferenceableDecoratorMetadata"; + errorCodes39 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; registerCodeFix({ - errorCodes: errorCodes40, + errorCodes: errorCodes39, getCodeActions: (context) => { const importDeclaration = getImportDeclaration(context.sourceFile, context.program, context.span.start); if (!importDeclaration) @@ -139085,14 +142655,14 @@ ${lanes.join("\n")} const typeOnlyChanges = ts_textChanges_exports.ChangeTracker.with(context, (t) => doTypeOnlyImportChange(t, context.sourceFile, importDeclaration, context.program)); let actions2; if (namespaceChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); } if (typeOnlyChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); } return actions2; }, - fixIds: [fixId32] + fixIds: [fixId31] }); } }); @@ -139245,7 +142815,7 @@ ${lanes.join("\n")} function mayDeleteExpression(node) { return (isBinaryExpression(node.parent) && node.parent.left === node || (isPostfixUnaryExpression(node.parent) || isPrefixUnaryExpression(node.parent)) && node.parent.operand === node) && isExpressionStatement(node.parent.parent); } - var fixName3, fixIdPrefix, fixIdDelete, fixIdDeleteImports, fixIdInfer, errorCodes41; + var fixName3, fixIdPrefix, fixIdDelete, fixIdDeleteImports, fixIdInfer, errorCodes40; var init_fixUnusedIdentifier = __esm({ "src/services/codefixes/fixUnusedIdentifier.ts"() { "use strict"; @@ -139256,7 +142826,7 @@ ${lanes.join("\n")} fixIdDelete = "unusedIdentifier_delete"; fixIdDeleteImports = "unusedIdentifier_deleteImports"; fixIdInfer = "unusedIdentifier_infer"; - errorCodes41 = [ + errorCodes40 = [ Diagnostics._0_is_declared_but_its_value_is_never_read.code, Diagnostics._0_is_declared_but_never_used.code, Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code, @@ -139266,7 +142836,7 @@ ${lanes.join("\n")} Diagnostics.All_type_parameters_are_unused.code ]; registerCodeFix({ - errorCodes: errorCodes41, + errorCodes: errorCodes40, getCodeActions(context) { const { errorCode, sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); @@ -139352,7 +142922,7 @@ ${lanes.join("\n")} const { sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles(); - return codeFixAll(context, errorCodes41, (changes, diag2) => { + return codeFixAll(context, errorCodes40, (changes, diag2) => { const token = getTokenAtPosition(sourceFile, diag2.start); switch (context.fixId) { case fixIdPrefix: @@ -139424,7 +142994,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixUnreachableCode.ts - function doChange18(changes, sourceFile, start, length2, errorCode) { + function doChange17(changes, sourceFile, start, length2, errorCode) { const token = getTokenAtPosition(sourceFile, start); const statement = findAncestor(token, isStatement); if (statement.getStart(sourceFile) !== token.getStart(sourceFile)) { @@ -139472,31 +143042,31 @@ ${lanes.join("\n")} } return last2; } - var fixId33, errorCodes42; + var fixId32, errorCodes41; var init_fixUnreachableCode = __esm({ "src/services/codefixes/fixUnreachableCode.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId33 = "fixUnreachableCode"; - errorCodes42 = [Diagnostics.Unreachable_code_detected.code]; + fixId32 = "fixUnreachableCode"; + errorCodes41 = [Diagnostics.Unreachable_code_detected.code]; registerCodeFix({ - errorCodes: errorCodes42, + errorCodes: errorCodes41, getCodeActions(context) { const syntacticDiagnostics = context.program.getSyntacticDiagnostics(context.sourceFile, context.cancellationToken); if (syntacticDiagnostics.length) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); - return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unreachable_code, fixId33, Diagnostics.Remove_all_unreachable_code)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); + return [createCodeFixAction(fixId32, changes, Diagnostics.Remove_unreachable_code, fixId32, Diagnostics.Remove_all_unreachable_code)]; }, - fixIds: [fixId33], - getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start, diag2.length, diag2.code)) + fixIds: [fixId32], + getAllCodeActions: (context) => codeFixAll(context, errorCodes41, (changes, diag2) => doChange17(changes, diag2.file, diag2.start, diag2.length, diag2.code)) }); } }); // src/services/codefixes/fixUnusedLabel.ts - function doChange19(changes, sourceFile, start) { + function doChange18(changes, sourceFile, start) { const token = getTokenAtPosition(sourceFile, start); const labeledStatement = cast(token.parent, isLabeledStatement); const pos = token.getStart(sourceFile); @@ -139509,28 +143079,28 @@ ${lanes.join("\n")} ); changes.deleteRange(sourceFile, { pos, end }); } - var fixId34, errorCodes43; + var fixId33, errorCodes42; var init_fixUnusedLabel = __esm({ "src/services/codefixes/fixUnusedLabel.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId34 = "fixUnusedLabel"; - errorCodes43 = [Diagnostics.Unused_label.code]; + fixId33 = "fixUnusedLabel"; + errorCodes42 = [Diagnostics.Unused_label.code]; registerCodeFix({ - errorCodes: errorCodes43, + errorCodes: errorCodes42, getCodeActions(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId34, changes, Diagnostics.Remove_unused_label, fixId34, Diagnostics.Remove_all_unused_labels)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unused_label, fixId33, Diagnostics.Remove_all_unused_labels)]; }, - fixIds: [fixId34], - getAllCodeActions: (context) => codeFixAll(context, errorCodes43, (changes, diag2) => doChange19(changes, diag2.file, diag2.start)) + fixIds: [fixId33], + getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start)) }); } }); // src/services/codefixes/fixJSDocTypes.ts - function doChange20(changes, sourceFile, oldTypeNode, newType, checker) { + function doChange19(changes, sourceFile, oldTypeNode, newType, checker) { changes.replaceNode(sourceFile, oldTypeNode, checker.typeToTypeNode( newType, /*enclosingDeclaration*/ @@ -139579,7 +143149,7 @@ ${lanes.join("\n")} } return checker.getTypeFromTypeNode(node); } - var fixIdPlain, fixIdNullable, errorCodes44; + var fixIdPlain, fixIdNullable, errorCodes43; var init_fixJSDocTypes = __esm({ "src/services/codefixes/fixJSDocTypes.ts"() { "use strict"; @@ -139587,13 +143157,13 @@ ${lanes.join("\n")} init_ts_codefix(); fixIdPlain = "fixJSDocTypes_plain"; fixIdNullable = "fixJSDocTypes_nullable"; - errorCodes44 = [ + errorCodes43 = [ Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code, Diagnostics._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code, Diagnostics._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code ]; registerCodeFix({ - errorCodes: errorCodes44, + errorCodes: errorCodes43, getCodeActions(context) { const { sourceFile } = context; const checker = context.program.getTypeChecker(); @@ -139607,22 +143177,22 @@ ${lanes.join("\n")} actions2.push(fix(type, fixIdNullable, Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)); } return actions2; - function fix(type2, fixId52, fixAllDescription) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, sourceFile, typeNode, type2, checker)); - return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId52, fixAllDescription); + function fix(type2, fixId51, fixAllDescription) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, sourceFile, typeNode, type2, checker)); + return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId51, fixAllDescription); } }, fixIds: [fixIdPlain, fixIdNullable], getAllCodeActions(context) { - const { fixId: fixId52, program, sourceFile } = context; + const { fixId: fixId51, program, sourceFile } = context; const checker = program.getTypeChecker(); - return codeFixAll(context, errorCodes44, (changes, err) => { + return codeFixAll(context, errorCodes43, (changes, err) => { const info = getInfo11(err.file, err.start, checker); if (!info) return; const { typeNode, type } = info; - const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId52 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; - doChange20(changes, sourceFile, typeNode, fixedType, checker); + const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId51 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; + doChange19(changes, sourceFile, typeNode, fixedType, checker); }); } }); @@ -139630,7 +143200,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixMissingCallParentheses.ts - function doChange21(changes, sourceFile, name) { + function doChange20(changes, sourceFile, name) { changes.replaceNodeWithText(sourceFile, name, `${name.text}()`); } function getCallName(sourceFile, start) { @@ -139647,31 +143217,31 @@ ${lanes.join("\n")} } return void 0; } - var fixId35, errorCodes45; + var fixId34, errorCodes44; var init_fixMissingCallParentheses = __esm({ "src/services/codefixes/fixMissingCallParentheses.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId35 = "fixMissingCallParentheses"; - errorCodes45 = [ + fixId34 = "fixMissingCallParentheses"; + errorCodes44 = [ Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code ]; registerCodeFix({ - errorCodes: errorCodes45, - fixIds: [fixId35], + errorCodes: errorCodes44, + fixIds: [fixId34], getCodeActions(context) { const { sourceFile, span } = context; const callName = getCallName(sourceFile, span.start); if (!callName) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, context.sourceFile, callName)); - return [createCodeFixAction(fixId35, changes, Diagnostics.Add_missing_call_parentheses, fixId35, Diagnostics.Add_all_missing_call_parentheses)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, context.sourceFile, callName)); + return [createCodeFixAction(fixId34, changes, Diagnostics.Add_missing_call_parentheses, fixId34, Diagnostics.Add_all_missing_call_parentheses)]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes45, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes44, (changes, diag2) => { const callName = getCallName(diag2.file, diag2.start); if (callName) - doChange21(changes, diag2.file, callName); + doChange20(changes, diag2.file, callName); }) }); } @@ -139713,7 +143283,7 @@ ${lanes.join("\n")} returnType: getReturnType(containingFunction) }; } - function doChange22(changes, sourceFile, { insertBefore, returnType }) { + function doChange21(changes, sourceFile, { insertBefore, returnType }) { if (returnType) { const entityName = getEntityNameFromTypeNode(returnType); if (!entityName || entityName.kind !== 79 /* Identifier */ || entityName.text !== "Promise") { @@ -139722,36 +143292,36 @@ ${lanes.join("\n")} } changes.insertModifierBefore(sourceFile, 132 /* AsyncKeyword */, insertBefore); } - var fixId36, errorCodes46; + var fixId35, errorCodes45; var init_fixAwaitInSyncFunction = __esm({ "src/services/codefixes/fixAwaitInSyncFunction.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId36 = "fixAwaitInSyncFunction"; - errorCodes46 = [ + fixId35 = "fixAwaitInSyncFunction"; + errorCodes45 = [ Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code ]; registerCodeFix({ - errorCodes: errorCodes46, + errorCodes: errorCodes45, getCodeActions(context) { const { sourceFile, span } = context; const nodes = getNodes3(sourceFile, span.start); if (!nodes) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange22(t, sourceFile, nodes)); - return [createCodeFixAction(fixId36, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId36, Diagnostics.Add_all_missing_async_modifiers)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, sourceFile, nodes)); + return [createCodeFixAction(fixId35, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId35, Diagnostics.Add_all_missing_async_modifiers)]; }, - fixIds: [fixId36], + fixIds: [fixId35], getAllCodeActions: function getAllCodeActionsToFixAwaitInSyncFunction(context) { const seen = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes46, (changes, diag2) => { + return codeFixAll(context, errorCodes45, (changes, diag2) => { const nodes = getNodes3(diag2.file, diag2.start); if (!nodes || !addToSeen(seen, getNodeId(nodes.insertBefore))) return; - doChange22(changes, context.sourceFile, nodes); + doChange21(changes, context.sourceFile, nodes); }); } }); @@ -139759,7 +143329,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixPropertyOverrideAccessor.ts - function doChange23(file, start, length2, code, context) { + function doChange22(file, start, length2, code, context) { let startPosition; let endPosition; if (code === Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code) { @@ -139786,28 +143356,28 @@ ${lanes.join("\n")} } return generateAccessorFromProperty(file, context.program, startPosition, endPosition, context, Diagnostics.Generate_get_and_set_accessors.message); } - var errorCodes47, fixId37; + var errorCodes46, fixId36; var init_fixPropertyOverrideAccessor = __esm({ "src/services/codefixes/fixPropertyOverrideAccessor.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - errorCodes47 = [ + errorCodes46 = [ Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code, Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code ]; - fixId37 = "fixPropertyOverrideAccessor"; + fixId36 = "fixPropertyOverrideAccessor"; registerCodeFix({ - errorCodes: errorCodes47, + errorCodes: errorCodes46, getCodeActions(context) { - const edits = doChange23(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); + const edits = doChange22(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); if (edits) { - return [createCodeFixAction(fixId37, edits, Diagnostics.Generate_get_and_set_accessors, fixId37, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; + return [createCodeFixAction(fixId36, edits, Diagnostics.Generate_get_and_set_accessors, fixId36, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; } }, - fixIds: [fixId37], - getAllCodeActions: (context) => codeFixAll(context, errorCodes47, (changes, diag2) => { - const edits = doChange23(diag2.file, diag2.start, diag2.length, diag2.code, context); + fixIds: [fixId36], + getAllCodeActions: (context) => codeFixAll(context, errorCodes46, (changes, diag2) => { + const edits = doChange22(diag2.file, diag2.start, diag2.length, diag2.code, context); if (edits) { for (const edit of edits) { changes.pushRaw(context.sourceFile, edit); @@ -139854,7 +143424,7 @@ ${lanes.join("\n")} } return errorCode; } - function doChange24(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { + function doChange23(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { if (!isParameterPropertyModifier(token.kind) && token.kind !== 79 /* Identifier */ && token.kind !== 25 /* DotDotDotToken */ && token.kind !== 108 /* ThisKeyword */) { return void 0; } @@ -140748,14 +144318,14 @@ ${lanes.join("\n")} } } } - var fixId38, errorCodes48; + var fixId37, errorCodes47; var init_inferFromUsage = __esm({ "src/services/codefixes/inferFromUsage.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId38 = "inferFromUsage"; - errorCodes48 = [ + fixId37 = "inferFromUsage"; + errorCodes47 = [ // Variable declarations Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code, // Variable uses @@ -140789,13 +144359,13 @@ ${lanes.join("\n")} Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code ]; registerCodeFix({ - errorCodes: errorCodes48, + errorCodes: errorCodes47, getCodeActions(context) { const { sourceFile, program, span: { start }, errorCode, cancellationToken, host, preferences } = context; const token = getTokenAtPosition(sourceFile, start); let declaration; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => { - declaration = doChange24( + declaration = doChange23( changes2, sourceFile, token, @@ -140809,14 +144379,14 @@ ${lanes.join("\n")} ); }); const name = declaration && getNameOfDeclaration(declaration); - return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId38, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId38, Diagnostics.Infer_all_types_from_usage)]; + return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId37, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId37, Diagnostics.Infer_all_types_from_usage)]; }, - fixIds: [fixId38], + fixIds: [fixId37], getAllCodeActions(context) { const { sourceFile, program, cancellationToken, host, preferences } = context; const markSeen = nodeSeenTracker(); - return codeFixAll(context, errorCodes48, (changes, err) => { - doChange24(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); + return codeFixAll(context, errorCodes47, (changes, err) => { + doChange23(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); }); } }); @@ -140847,22 +144417,22 @@ ${lanes.join("\n")} return { returnTypeNode, returnType, promisedTypeNode, promisedType }; } } - function doChange25(changes, sourceFile, returnTypeNode, promisedTypeNode) { + function doChange24(changes, sourceFile, returnTypeNode, promisedTypeNode) { changes.replaceNode(sourceFile, returnTypeNode, factory.createTypeReferenceNode("Promise", [promisedTypeNode])); } - var fixId39, errorCodes49; + var fixId38, errorCodes48; var init_fixReturnTypeInAsyncFunction = __esm({ "src/services/codefixes/fixReturnTypeInAsyncFunction.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId39 = "fixReturnTypeInAsyncFunction"; - errorCodes49 = [ + fixId38 = "fixReturnTypeInAsyncFunction"; + errorCodes48 = [ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code ]; registerCodeFix({ - errorCodes: errorCodes49, - fixIds: [fixId39], + errorCodes: errorCodes48, + fixIds: [fixId38], getCodeActions: function getCodeActionsToFixReturnTypeInAsyncFunction(context) { const { sourceFile, program, span } = context; const checker = program.getTypeChecker(); @@ -140871,23 +144441,23 @@ ${lanes.join("\n")} return void 0; } const { returnTypeNode, returnType, promisedTypeNode, promisedType } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, sourceFile, returnTypeNode, promisedTypeNode)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange24(t, sourceFile, returnTypeNode, promisedTypeNode)); return [createCodeFixAction( - fixId39, + fixId38, changes, [ Diagnostics.Replace_0_with_Promise_1, checker.typeToString(returnType), checker.typeToString(promisedType) ], - fixId39, + fixId38, Diagnostics.Fix_all_incorrect_return_type_of_an_async_functions )]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes49, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes48, (changes, diag2) => { const info = getInfo12(diag2.file, context.program.getTypeChecker(), diag2.start); if (info) { - doChange25(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); + doChange24(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); } }) }); @@ -140901,20 +144471,20 @@ ${lanes.join("\n")} changes.insertCommentBeforeLine(sourceFile, lineNumber, position, " @ts-ignore"); } } - var fixName4, fixId40, errorCodes50; + var fixName4, fixId39, errorCodes49; var init_disableJsDiagnostics = __esm({ "src/services/codefixes/disableJsDiagnostics.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixName4 = "disableJsDiagnostics"; - fixId40 = "disableJsDiagnostics"; - errorCodes50 = mapDefined(Object.keys(Diagnostics), (key) => { + fixId39 = "disableJsDiagnostics"; + errorCodes49 = mapDefined(Object.keys(Diagnostics), (key) => { const diag2 = Diagnostics[key]; return diag2.category === 1 /* Error */ ? diag2.code : void 0; }); registerCodeFix({ - errorCodes: errorCodes50, + errorCodes: errorCodes49, getCodeActions: function getCodeActionsToDisableJsDiagnostics(context) { const { sourceFile, program, span, host, formatContext } = context; if (!isInJSFile(sourceFile) || !isCheckJsEnabledForFile(sourceFile, program.getCompilerOptions())) { @@ -140932,14 +144502,14 @@ ${lanes.join("\n")} ) ]; if (ts_textChanges_exports.isValidLocationToAddComment(sourceFile, span.start)) { - fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId40, Diagnostics.Add_ts_ignore_to_all_error_messages)); + fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId39, Diagnostics.Add_ts_ignore_to_all_error_messages)); } return fixes; }, - fixIds: [fixId40], + fixIds: [fixId39], getAllCodeActions: (context) => { const seenLines = /* @__PURE__ */ new Set(); - return codeFixAll(context, errorCodes50, (changes, diag2) => { + return codeFixAll(context, errorCodes49, (changes, diag2) => { if (ts_textChanges_exports.isValidLocationToAddComment(diag2.file, diag2.start)) { makeChange8(changes, diag2.file, diag2.start, seenLines); } @@ -141549,18 +145119,17 @@ ${lanes.join("\n")} } function tryGetAutoImportableReferenceFromTypeNode(importTypeNode, scriptTarget) { let symbols; - const typeNode = visitNode(importTypeNode, visit); + const typeNode = visitNode(importTypeNode, visit, isTypeNode); if (symbols && typeNode) { return { typeNode, symbols }; } function visit(node) { - var _a2; if (isLiteralImportTypeNode(node) && node.qualifier) { const firstIdentifier = getFirstIdentifier(node.qualifier); const name = getNameForExportedSymbol(firstIdentifier.symbol, scriptTarget); const qualifier = name !== firstIdentifier.text ? replaceFirstIdentifierOfEntityName(node.qualifier, factory.createIdentifier(name)) : node.qualifier; symbols = append(symbols, firstIdentifier.symbol); - const typeArguments = (_a2 = node.typeArguments) == null ? void 0 : _a2.map(visit); + const typeArguments = visitNodes2(node.typeArguments, visit, isTypeNode); return factory.createTypeReferenceNode(qualifier, typeArguments); } return visitEachChild(node, visit, nullTransformationContext); @@ -141711,9 +145280,7 @@ ${lanes.join("\n")} return factory.createGetAccessorDeclaration( modifiers, accessorName, - /*parameters*/ - void 0, - // TODO: GH#18217 + [], type, factory.createBlock( [ @@ -142038,7 +145605,7 @@ ${lanes.join("\n")} } return void 0; } - var fixName6, fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer, errorCodes51; + var fixName6, fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer, errorCodes50; var init_fixStrictClassInitialization = __esm({ "src/services/codefixes/fixStrictClassInitialization.ts"() { "use strict"; @@ -142048,9 +145615,9 @@ ${lanes.join("\n")} fixIdAddDefiniteAssignmentAssertions = "addMissingPropertyDefiniteAssignmentAssertions"; fixIdAddUndefinedType = "addMissingPropertyUndefinedType"; fixIdAddInitializer = "addMissingPropertyInitializer"; - errorCodes51 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; + errorCodes50 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; registerCodeFix({ - errorCodes: errorCodes51, + errorCodes: errorCodes50, getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) { const info = getInfo13(context.sourceFile, context.span.start); if (!info) @@ -142063,7 +145630,7 @@ ${lanes.join("\n")} }, fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes51, (changes, diag2) => { + return codeFixAll(context, errorCodes50, (changes, diag2) => { const info = getInfo13(diag2.file, diag2.start); if (!info) return; @@ -142091,7 +145658,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/requireInTs.ts - function doChange26(changes, sourceFile, info) { + function doChange25(changes, sourceFile, info) { const { allowSyntheticDefaults, defaultImportName, namedImports, statement, required } = info; changes.replaceNode(sourceFile, statement, defaultImportName && !allowSyntheticDefaults ? factory.createImportEqualsDeclaration( /*modifiers*/ @@ -142153,29 +145720,29 @@ ${lanes.join("\n")} return factory.createNamedImports(importSpecifiers); } } - var fixId41, errorCodes52; + var fixId40, errorCodes51; var init_requireInTs = __esm({ "src/services/codefixes/requireInTs.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId41 = "requireInTs"; - errorCodes52 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; + fixId40 = "requireInTs"; + errorCodes51 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; registerCodeFix({ - errorCodes: errorCodes52, + errorCodes: errorCodes51, getCodeActions(context) { const info = getInfo14(context.sourceFile, context.program, context.span.start); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, context.sourceFile, info)); - return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_require_to_import, fixId41, Diagnostics.Convert_all_require_to_import)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, context.sourceFile, info)); + return [createCodeFixAction(fixId40, changes, Diagnostics.Convert_require_to_import, fixId40, Diagnostics.Convert_all_require_to_import)]; }, - fixIds: [fixId41], - getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { + fixIds: [fixId40], + getAllCodeActions: (context) => codeFixAll(context, errorCodes51, (changes, diag2) => { const info = getInfo14(diag2.file, context.program, diag2.start); if (info) { - doChange26(changes, context.sourceFile, info); + doChange25(changes, context.sourceFile, info); } }) }); @@ -142195,7 +145762,7 @@ ${lanes.join("\n")} return { importNode, name, moduleSpecifier: importNode.moduleSpecifier }; } } - function doChange27(changes, sourceFile, info, preferences) { + function doChange26(changes, sourceFile, info, preferences) { changes.replaceNode(sourceFile, info.importNode, makeImport( info.name, /*namedImports*/ @@ -142204,29 +145771,29 @@ ${lanes.join("\n")} getQuotePreference(sourceFile, preferences) )); } - var fixId42, errorCodes53; + var fixId41, errorCodes52; var init_useDefaultImport = __esm({ "src/services/codefixes/useDefaultImport.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId42 = "useDefaultImport"; - errorCodes53 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; + fixId41 = "useDefaultImport"; + errorCodes52 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; registerCodeFix({ - errorCodes: errorCodes53, + errorCodes: errorCodes52, getCodeActions(context) { const { sourceFile, span: { start } } = context; const info = getInfo15(sourceFile, start); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, info, context.preferences)); - return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_default_import, fixId42, Diagnostics.Convert_all_to_default_imports)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, sourceFile, info, context.preferences)); + return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_to_default_import, fixId41, Diagnostics.Convert_all_to_default_imports)]; }, - fixIds: [fixId42], - getAllCodeActions: (context) => codeFixAll(context, errorCodes53, (changes, diag2) => { + fixIds: [fixId41], + getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { const info = getInfo15(diag2.file, diag2.start); if (info) - doChange27(changes, diag2.file, info, context.preferences); + doChange26(changes, diag2.file, info, context.preferences); }) }); } @@ -142241,27 +145808,27 @@ ${lanes.join("\n")} const newText = numericLiteral.getText(sourceFile) + "n"; changeTracker.replaceNode(sourceFile, numericLiteral, factory.createBigIntLiteral(newText)); } - var fixId43, errorCodes54; + var fixId42, errorCodes53; var init_useBigintLiteral = __esm({ "src/services/codefixes/useBigintLiteral.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId43 = "useBigintLiteral"; - errorCodes54 = [ + fixId42 = "useBigintLiteral"; + errorCodes53 = [ Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code ]; registerCodeFix({ - errorCodes: errorCodes54, + errorCodes: errorCodes53, getCodeActions: function getCodeActionsToUseBigintLiteral(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange9(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId43, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId43, Diagnostics.Convert_all_to_bigint_numeric_literals)]; + return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId42, Diagnostics.Convert_all_to_bigint_numeric_literals)]; } }, - fixIds: [fixId43], + fixIds: [fixId42], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes54, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes53, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); } }); } @@ -142274,7 +145841,7 @@ ${lanes.join("\n")} Debug.assert(token.parent.kind === 202 /* ImportType */, "Token parent should be an ImportType"); return token.parent; } - function doChange28(changes, sourceFile, importType) { + function doChange27(changes, sourceFile, importType) { const newTypeNode = factory.updateImportTypeNode( importType, importType.argument, @@ -142286,25 +145853,25 @@ ${lanes.join("\n")} ); changes.replaceNode(sourceFile, importType, newTypeNode); } - var fixIdAddMissingTypeof, fixId44, errorCodes55; + var fixIdAddMissingTypeof, fixId43, errorCodes54; var init_fixAddModuleReferTypeMissingTypeof = __esm({ "src/services/codefixes/fixAddModuleReferTypeMissingTypeof.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixIdAddMissingTypeof = "fixAddModuleReferTypeMissingTypeof"; - fixId44 = fixIdAddMissingTypeof; - errorCodes55 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; + fixId43 = fixIdAddMissingTypeof; + errorCodes54 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; registerCodeFix({ - errorCodes: errorCodes55, + errorCodes: errorCodes54, getCodeActions: function getCodeActionsToAddMissingTypeof(context) { const { sourceFile, span } = context; const importType = getImportTypeNode(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, importType)); - return [createCodeFixAction(fixId44, changes, Diagnostics.Add_missing_typeof, fixId44, Diagnostics.Add_missing_typeof)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, importType)); + return [createCodeFixAction(fixId43, changes, Diagnostics.Add_missing_typeof, fixId43, Diagnostics.Add_missing_typeof)]; }, - fixIds: [fixId44], - getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => doChange28(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) + fixIds: [fixId43], + getAllCodeActions: (context) => codeFixAll(context, errorCodes54, (changes, diag2) => doChange27(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) }); } }); @@ -142323,7 +145890,7 @@ ${lanes.join("\n")} return void 0; return binaryExpr; } - function doChange29(changeTracker, sf, node) { + function doChange28(changeTracker, sf, node) { const jsx = flattenInvalidBinaryExpr(node); if (jsx) changeTracker.replaceNode(sf, node, factory.createJsxFragment(factory.createJsxOpeningFragment(), jsx, factory.createJsxJsxClosingFragment())); @@ -142346,30 +145913,30 @@ ${lanes.join("\n")} return void 0; } } - var fixID2, errorCodes56; + var fixID2, errorCodes55; var init_wrapJsxInFragment = __esm({ "src/services/codefixes/wrapJsxInFragment.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixID2 = "wrapJsxInFragment"; - errorCodes56 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; + errorCodes55 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; registerCodeFix({ - errorCodes: errorCodes56, + errorCodes: errorCodes55, getCodeActions: function getCodeActionsToWrapJsxInFragment(context) { const { sourceFile, span } = context; const node = findNodeToFix(sourceFile, span.start); if (!node) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, node)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, node)); return [createCodeFixAction(fixID2, changes, Diagnostics.Wrap_in_JSX_fragment, fixID2, Diagnostics.Wrap_all_unparented_JSX_in_JSX_fragment)]; }, fixIds: [fixID2], - getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => { const node = findNodeToFix(context.sourceFile, diag2.start); if (!node) return void 0; - doChange29(changes, context.sourceFile, node); + doChange28(changes, context.sourceFile, node); }) }); } @@ -142389,7 +145956,7 @@ ${lanes.join("\n")} function createTypeAliasFromInterface(declaration, type) { return factory.createTypeAliasDeclaration(declaration.modifiers, declaration.name, declaration.typeParameters, type); } - function doChange30(changes, sourceFile, { indexSignature, container }) { + function doChange29(changes, sourceFile, { indexSignature, container }) { const members = isInterfaceDeclaration(container) ? container.members : container.type.members; const otherMembers = members.filter((member) => !isIndexSignatureDeclaration(member)); const parameter = first(indexSignature.parameters); @@ -142416,48 +145983,48 @@ ${lanes.join("\n")} ]); changes.replaceNode(sourceFile, container, createTypeAliasFromInterface(container, intersectionType)); } - var fixId45, errorCodes57; + var fixId44, errorCodes56; var init_convertToMappedObjectType = __esm({ "src/services/codefixes/convertToMappedObjectType.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId45 = "fixConvertToMappedObjectType"; - errorCodes57 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; + fixId44 = "fixConvertToMappedObjectType"; + errorCodes56 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; registerCodeFix({ - errorCodes: errorCodes57, + errorCodes: errorCodes56, getCodeActions: function getCodeActionsToConvertToMappedTypeObject(context) { const { sourceFile, span } = context; const info = getInfo16(sourceFile, span.start); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, info)); const name = idText(info.container.name); - return [createCodeFixAction(fixId45, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId45, [Diagnostics.Convert_0_to_mapped_object_type, name])]; + return [createCodeFixAction(fixId44, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId44, [Diagnostics.Convert_0_to_mapped_object_type, name])]; }, - fixIds: [fixId45], - getAllCodeActions: (context) => codeFixAll(context, errorCodes57, (changes, diag2) => { + fixIds: [fixId44], + getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { const info = getInfo16(diag2.file, diag2.start); if (info) - doChange30(changes, diag2.file, info); + doChange29(changes, diag2.file, info); }) }); } }); // src/services/codefixes/removeAccidentalCallParentheses.ts - var fixId46, errorCodes58; + var fixId45, errorCodes57; var init_removeAccidentalCallParentheses = __esm({ "src/services/codefixes/removeAccidentalCallParentheses.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId46 = "removeAccidentalCallParentheses"; - errorCodes58 = [ + fixId45 = "removeAccidentalCallParentheses"; + errorCodes57 = [ Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code ]; registerCodeFix({ - errorCodes: errorCodes58, + errorCodes: errorCodes57, getCodeActions(context) { const callExpression = findAncestor(getTokenAtPosition(context.sourceFile, context.span.start), isCallExpression); if (!callExpression) { @@ -142466,9 +146033,9 @@ ${lanes.join("\n")} const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { t.deleteRange(context.sourceFile, { pos: callExpression.expression.end, end: callExpression.end }); }); - return [createCodeFixActionWithoutFixAll(fixId46, changes, Diagnostics.Remove_parentheses)]; + return [createCodeFixActionWithoutFixAll(fixId45, changes, Diagnostics.Remove_parentheses)]; }, - fixIds: [fixId46] + fixIds: [fixId45] }); } }); @@ -142497,27 +146064,27 @@ ${lanes.join("\n")} } changeTracker.replaceNode(sourceFile, expressionToReplace, awaitExpression.expression); } - var fixId47, errorCodes59; + var fixId46, errorCodes58; var init_removeUnnecessaryAwait = __esm({ "src/services/codefixes/removeUnnecessaryAwait.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId47 = "removeUnnecessaryAwait"; - errorCodes59 = [ + fixId46 = "removeUnnecessaryAwait"; + errorCodes58 = [ Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code ]; registerCodeFix({ - errorCodes: errorCodes59, + errorCodes: errorCodes58, getCodeActions: function getCodeActionsToRemoveUnnecessaryAwait(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange10(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId47, changes, Diagnostics.Remove_unnecessary_await, fixId47, Diagnostics.Remove_all_unnecessary_uses_of_await)]; + return [createCodeFixAction(fixId46, changes, Diagnostics.Remove_unnecessary_await, fixId46, Diagnostics.Remove_all_unnecessary_uses_of_await)]; } }, - fixIds: [fixId47], + fixIds: [fixId46], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes59, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes58, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); } }); } @@ -142559,26 +146126,26 @@ ${lanes.join("\n")} importDeclaration.assertClause )); } - var errorCodes60, fixId48; + var errorCodes59, fixId47; var init_splitTypeOnlyImport = __esm({ "src/services/codefixes/splitTypeOnlyImport.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - errorCodes60 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; - fixId48 = "splitTypeOnlyImport"; + errorCodes59 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; + fixId47 = "splitTypeOnlyImport"; registerCodeFix({ - errorCodes: errorCodes60, - fixIds: [fixId48], + errorCodes: errorCodes59, + fixIds: [fixId47], getCodeActions: function getCodeActionsToSplitTypeOnlyImport(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { return splitTypeOnlyImport(t, getImportDeclaration2(context.sourceFile, context.span), context); }); if (changes.length) { - return [createCodeFixAction(fixId48, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId48, Diagnostics.Split_all_invalid_type_only_imports)]; + return [createCodeFixAction(fixId47, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId47, Diagnostics.Split_all_invalid_type_only_imports)]; } }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes60, (changes, error) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes59, (changes, error) => { splitTypeOnlyImport(changes, getImportDeclaration2(context.sourceFile, error), context); }) }); @@ -142600,43 +146167,43 @@ ${lanes.join("\n")} return; return { symbol, token: constToken }; } - function doChange31(changes, sourceFile, token) { + function doChange30(changes, sourceFile, token) { changes.replaceNode(sourceFile, token, factory.createToken(119 /* LetKeyword */)); } - var fixId49, errorCodes61; + var fixId48, errorCodes60; var init_convertConstToLet = __esm({ "src/services/codefixes/convertConstToLet.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId49 = "fixConvertConstToLet"; - errorCodes61 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; + fixId48 = "fixConvertConstToLet"; + errorCodes60 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; registerCodeFix({ - errorCodes: errorCodes61, + errorCodes: errorCodes60, getCodeActions: function getCodeActionsToConvertConstToLet(context) { const { sourceFile, span, program } = context; const info = getInfo17(sourceFile, span.start, program); if (info === void 0) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info.token)); - return [createCodeFixActionMaybeFixAll(fixId49, changes, Diagnostics.Convert_const_to_let, fixId49, Diagnostics.Convert_all_const_to_let)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info.token)); + return [createCodeFixActionMaybeFixAll(fixId48, changes, Diagnostics.Convert_const_to_let, fixId48, Diagnostics.Convert_all_const_to_let)]; }, getAllCodeActions: (context) => { const { program } = context; const seen = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes61, (diag2) => { + eachDiagnostic(context, errorCodes60, (diag2) => { const info = getInfo17(diag2.file, diag2.start, program); if (info) { if (addToSeen(seen, getSymbolId(info.symbol))) { - return doChange31(changes, diag2.file, info.token); + return doChange30(changes, diag2.file, info.token); } } return void 0; }); })); }, - fixIds: [fixId49] + fixIds: [fixId48] }); } }); @@ -142646,40 +146213,40 @@ ${lanes.join("\n")} const node = getTokenAtPosition(sourceFile, pos); return node.kind === 26 /* SemicolonToken */ && node.parent && (isObjectLiteralExpression(node.parent) || isArrayLiteralExpression(node.parent)) ? { node } : void 0; } - function doChange32(changes, sourceFile, { node }) { + function doChange31(changes, sourceFile, { node }) { const newNode = factory.createToken(27 /* CommaToken */); changes.replaceNode(sourceFile, node, newNode); } - var fixId50, expectedErrorCode, errorCodes62; + var fixId49, expectedErrorCode, errorCodes61; var init_fixExpectedComma = __esm({ "src/services/codefixes/fixExpectedComma.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId50 = "fixExpectedComma"; + fixId49 = "fixExpectedComma"; expectedErrorCode = Diagnostics._0_expected.code; - errorCodes62 = [expectedErrorCode]; + errorCodes61 = [expectedErrorCode]; registerCodeFix({ - errorCodes: errorCodes62, + errorCodes: errorCodes61, getCodeActions(context) { const { sourceFile } = context; const info = getInfo18(sourceFile, context.span.start, context.errorCode); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info)); return [createCodeFixAction( - fixId50, + fixId49, changes, [Diagnostics.Change_0_to_1, ";", ","], - fixId50, + fixId49, [Diagnostics.Change_0_to_1, ";", ","] )]; }, - fixIds: [fixId50], - getAllCodeActions: (context) => codeFixAll(context, errorCodes62, (changes, diag2) => { + fixIds: [fixId49], + getAllCodeActions: (context) => codeFixAll(context, errorCodes61, (changes, diag2) => { const info = getInfo18(diag2.file, diag2.start, diag2.code); if (info) - doChange32(changes, context.sourceFile, info); + doChange31(changes, context.sourceFile, info); }) }); } @@ -142735,29 +146302,29 @@ ${lanes.join("\n")} return node.typeArguments; } } - var fixName7, fixId51, errorCodes63; + var fixName7, fixId50, errorCodes62; var init_fixAddVoidToPromise = __esm({ "src/services/codefixes/fixAddVoidToPromise.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixName7 = "addVoidToPromise"; - fixId51 = "addVoidToPromise"; - errorCodes63 = [ + fixId50 = "addVoidToPromise"; + errorCodes62 = [ Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code, Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code ]; registerCodeFix({ - errorCodes: errorCodes63, - fixIds: [fixId51], + errorCodes: errorCodes62, + fixIds: [fixId50], getCodeActions(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange11(t, context.sourceFile, context.span, context.program)); if (changes.length > 0) { - return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId51, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; + return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId50, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; } }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes63, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); + return codeFixAll(context, errorCodes62, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); } }); } @@ -142843,7 +146410,6 @@ ${lanes.join("\n")} init_fixClassDoesntImplementInheritedAbstractMember(); init_fixClassSuperMustPrecedeThisAccess(); init_fixConstructorForDerivedNeedSuperCall(); - init_fixEnableExperimentalDecorators(); init_fixEnableJsxFlag(); init_fixNaNEquality(); init_fixModuleAndTargetOptions(); @@ -142936,9 +146502,9 @@ ${lanes.join("\n")} (_b = host.log) == null ? void 0 : _b.call(host, `${logPrefix}: response is ${skippedAny ? "incomplete" : "complete"}`); (_c = host.log) == null ? void 0 : _c.call(host, `${logPrefix}: ${timestamp() - start}`); return result; - function tryResolve(exportInfo, symbolName2, isFromAmbientModule) { + function tryResolve(exportInfo, isFromAmbientModule) { if (isFromAmbientModule) { - const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite); + const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite); if (result3) { ambientCount++; } @@ -142946,7 +146512,7 @@ ${lanes.join("\n")} } const shouldResolveModuleSpecifier = needsFullResolution || preferences.allowIncompleteCompletions && resolvedCount < moduleSpecifierResolutionLimit; const shouldGetModuleSpecifierFromCache = !shouldResolveModuleSpecifier && preferences.allowIncompleteCompletions && cacheAttemptCount < moduleSpecifierResolutionCacheAttemptLimit; - const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; + const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; if (!shouldResolveModuleSpecifier && !shouldGetModuleSpecifierFromCache || shouldGetModuleSpecifierFromCache && !result2) { skippedAny = true; } @@ -142973,7 +146539,7 @@ ${lanes.join("\n")} const compilerOptions = program.getCompilerOptions(); const incompleteCompletionsCache = preferences.allowIncompleteCompletions ? (_a2 = host.getIncompleteCompletionsCache) == null ? void 0 : _a2.call(host) : void 0; if (incompleteCompletionsCache && completionKind === 3 /* TriggerForIncompleteCompletions */ && previousToken && isIdentifier(previousToken)) { - const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken); + const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken, position); if (incompleteContinuation) { return incompleteContinuation; } @@ -143042,10 +146608,11 @@ ${lanes.join("\n")} function completionEntryDataIsResolved(data) { return !!(data == null ? void 0 : data.moduleSpecifier); } - function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken) { + function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken, position) { const previousResponse = cache.get(); if (!previousResponse) return void 0; + const touchNode = getTouchingPropertyName(file, position); const lowerCaseTokenText = location.text.toLowerCase(); const exportMap = getExportInfoMap(file, host, program, preferences, cancellationToken); const newEntries = resolvingModuleSpecifiers( @@ -143069,7 +146636,7 @@ ${lanes.join("\n")} } const { origin } = Debug.checkDefined(getAutoImportSymbolFromCompletionEntryData(entry.name, entry.data, program, host)); const info = exportMap.get(file.path, entry.data.exportMapKey); - const result = info && context.tryResolve(info, entry.name, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); + const result = info && context.tryResolve(info, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); if (result === "skipped") return entry; if (!result || result === "failed") { @@ -143094,6 +146661,7 @@ ${lanes.join("\n")} ); previousResponse.entries = newEntries; previousResponse.flags = (previousResponse.flags || 0) | 4 /* IsContinuation */; + previousResponse.optionalReplacementSpan = getOptionalReplacementSpan(touchNode); return previousResponse; } function jsdocCompletionInfo(entries) { @@ -143188,6 +146756,7 @@ ${lanes.join("\n")} void 0, contextToken, location, + position, sourceFile, host, program, @@ -143301,10 +146870,10 @@ ${lanes.join("\n")} } else if (!tracker.hasValue(type.value)) { switch (typeof type.value) { case "object": - elements.push(factory.createBigIntLiteral(type.value)); + elements.push(type.value.negative ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createBigIntLiteral({ negative: false, base10Value: type.value.base10Value })) : factory.createBigIntLiteral(type.value)); break; case "number": - elements.push(factory.createNumericLiteral(type.value)); + elements.push(type.value < 0 ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createNumericLiteral(-type.value)) : factory.createNumericLiteral(type.value)); break; case "string": elements.push(factory.createStringLiteral(type.value, quotePreference === 0 /* Single */)); @@ -143316,7 +146885,7 @@ ${lanes.join("\n")} return void 0; } const newClauses = map(elements, (element) => factory.createCaseClause(element, [])); - const newLineChar = getNewLineCharacter(options, maybeBind(host, host.getNewLine)); + const newLineChar = getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options); const printer = createSnippetPrinter({ removeComments: true, module: options.module, @@ -143513,7 +147082,7 @@ ${lanes.join("\n")} function createCompletionEntryForLiteral(sourceFile, preferences, literal) { return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority }; } - function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { + function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, position, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { let insertText; let replacementSpan = getReplacementSpanForContextToken(replacementToken); let data; @@ -143571,7 +147140,7 @@ ${lanes.join("\n")} } if (preferences.includeCompletionsWithClassMemberSnippets && preferences.includeCompletionsWithInsertText && completionKind === CompletionKind.MemberLike && isClassLikeMemberCompletion(symbol, location, sourceFile)) { let importAdder; - ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext)); + ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext)); sortText = SortText.ClassMemberSnippets; if (importAdder == null ? void 0 : importAdder.hasFixes()) { hasAction = true; @@ -143635,7 +147204,7 @@ ${lanes.join("\n")} const memberFlags = 106500 /* ClassMember */ & 900095 /* EnumMemberExcludes */; return !!(symbol.flags & memberFlags) && (isClassLike(location) || location.parent && location.parent.parent && isClassElement(location.parent) && location === location.parent.name && location.parent.getLastToken(sourceFile) === location.parent.name && isClassLike(location.parent.parent) || location.parent && isSyntaxList(location) && isClassLike(location.parent)); } - function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext) { + function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext) { const classLikeDeclaration = findAncestor(location, isClassLike); if (!classLikeDeclaration) { return { insertText: name }; @@ -143650,7 +147219,7 @@ ${lanes.join("\n")} module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); const importAdder = ts_codefix_exports.createImportAdder(sourceFile, program, preferences, host); let body; @@ -143671,7 +147240,7 @@ ${lanes.join("\n")} ); } let modifiers = 0 /* None */; - const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken); + const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken, sourceFile, position); const isAbstract = !!(presentModifiers & 256 /* Abstract */); const completionNodes = []; ts_codefix_exports.addNewNodeForMemberSymbol( @@ -143726,8 +147295,8 @@ ${lanes.join("\n")} } return { insertText, isSnippet, importAdder, replacementSpan }; } - function getPresentModifiers(contextToken) { - if (!contextToken) { + function getPresentModifiers(contextToken, sourceFile, position) { + if (!contextToken || getLineAndCharacterOfPosition(sourceFile, position).line > getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line) { return { modifiers: 0 /* None */ }; } let modifiers = 0 /* None */; @@ -143747,8 +147316,11 @@ ${lanes.join("\n")} if (isModifier(node)) { return node.kind; } - if (isIdentifier(node) && node.originalKeywordKind && isModifierKind(node.originalKeywordKind)) { - return node.originalKeywordKind; + if (isIdentifier(node)) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind && isModifierKind(originalKeywordKind)) { + return originalKeywordKind; + } } return void 0; } @@ -143765,7 +147337,7 @@ ${lanes.join("\n")} module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); if (formatContext) { insertText = printer.printAndFormatSnippetList(16 /* CommaDelimited */ | 64 /* AllowTrailingComma */, factory.createNodeArray( @@ -144090,7 +147662,7 @@ ${lanes.join("\n")} return "TypeOnlyAlias/" /* TypeOnlyAlias */; } } - function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { + function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, position, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { var _a2; const start = timestamp(); const variableDeclaration = getVariableDeclaration(location); @@ -144113,6 +147685,7 @@ ${lanes.join("\n")} replacementToken, contextToken, location, + position, sourceFile, host, program, @@ -144356,6 +147929,7 @@ ${lanes.join("\n")} name, symbol, location, + position, contextToken, formatContext ); @@ -144396,7 +147970,7 @@ ${lanes.join("\n")} targetSymbol, moduleSymbol, sourceFile, - getNameForExportedSymbol(symbol, getEmitScriptTarget(compilerOptions), isJsxOpeningTagName), + name, isJsxOpeningTagName, host, program, @@ -144719,6 +148293,7 @@ ${lanes.join("\n")} case 347 /* JSDocTypeTag */: case 349 /* JSDocTypedefTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return true; case 348 /* JSDocTemplateTag */: return !!tag.constraint; @@ -144861,7 +148436,7 @@ ${lanes.join("\n")} moduleSymbol, symbol: firstAccessibleSymbol, targetFlags: skipAlias(firstAccessibleSymbol, typeChecker).flags - }], firstAccessibleSymbol.name, position, isValidTypeOnlyAliasUseSite(location)) || {}; + }], position, isValidTypeOnlyAliasUseSite(location)) || {}; if (moduleSpecifier) { const origin = { kind: getNullableSymbolOriginInfoKind(6 /* SymbolMemberExport */), @@ -144957,7 +148532,7 @@ ${lanes.join("\n")} symbolToSortTextMap[getSymbolId(symbol)] = SortText.GlobalsOrKeywords; } if (typeOnlyAliasNeedsPromotion && !(symbol.flags & 111551 /* Value */)) { - const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportOrExportDeclaration); + const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportDeclaration); if (typeOnlyAliasDeclaration) { const origin = { kind: 64 /* TypeOnlyAlias */, declaration: typeOnlyAliasDeclaration }; symbolToOriginInfoMap[i] = origin; @@ -145087,7 +148662,7 @@ ${lanes.join("\n")} if (!firstImportableExportInfo) { return; } - const result = context.tryResolve(info, symbolName2, isFromAmbientModule) || {}; + const result = context.tryResolve(info, isFromAmbientModule) || {}; if (result === "failed") return; let exportInfo2 = firstImportableExportInfo, moduleSpecifier; @@ -145917,7 +149492,8 @@ ${lanes.join("\n")} return kind === 132 /* AsyncKeyword */ || kind === 133 /* AwaitKeyword */ || kind === 128 /* AsKeyword */ || kind === 150 /* SatisfiesKeyword */ || kind === 154 /* TypeKeyword */ || !isContextualKeyword(kind) && !isClassMemberCompletionKeyword(kind); } function keywordForNode(node) { - return isIdentifier(node) ? node.originalKeywordKind || 0 /* Unknown */ : node.kind; + var _a2; + return isIdentifier(node) ? (_a2 = identifierToKeywordKind(node)) != null ? _a2 : 0 /* Unknown */ : node.kind; } function getContextualKeywords(contextToken, position) { const entries = []; @@ -145963,8 +149539,9 @@ ${lanes.join("\n")} return type.isUnion() ? Debug.checkEachDefined(checker.getAllPossiblePropertiesOfTypes(type.types), "getAllPossiblePropertiesOfTypes() should all be defined") : Debug.checkEachDefined(type.getApparentProperties(), "getApparentProperties() should all be defined"); } function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken, location, position) { + var _a2; switch (location.kind) { - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return tryCast(location.parent, isObjectTypeDeclaration); case 1 /* EndOfFileToken */: const cls = tryCast(lastOrUndefined(cast(location.parent, isSourceFile).statements), isObjectTypeDeclaration); @@ -145973,8 +149550,8 @@ ${lanes.join("\n")} } break; case 79 /* Identifier */: { - const originalKeywordKind = location.originalKeywordKind; - if (originalKeywordKind && isKeyword(originalKeywordKind)) { + const originalKeywordKind = identifierToKeywordKind(location); + if (originalKeywordKind) { return void 0; } if (isPropertyDeclaration(location.parent) && location.parent.initializer === location) { @@ -146000,14 +149577,14 @@ ${lanes.join("\n")} case 27 /* CommaToken */: return tryCast(contextToken.parent, isObjectTypeDeclaration); default: - if (!isFromObjectTypeDeclaration(contextToken)) { - if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line && isObjectTypeDeclaration(location)) { + if (isObjectTypeDeclaration(location)) { + if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line) { return location; } - return void 0; + const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; + return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword((_a2 = identifierToKeywordKind(contextToken)) != null ? _a2 : 0 /* Unknown */) ? contextToken.parent.parent : void 0; } - const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; - return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword(stringToToken(contextToken.text)) ? contextToken.parent.parent : void 0; + return void 0; } } function tryGetTypeLiteralNode(node) { @@ -146382,10 +149959,10 @@ ${lanes.join("\n")} if (!contextToken || !isStringLiteralLike(contextToken)) return void 0; const entries = getStringLiteralCompletionEntries(sourceFile, contextToken, position, program.getTypeChecker(), options, host, preferences); - return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences); + return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences, position); } } - function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences) { + function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences, position) { if (completion === void 0) { return void 0; } @@ -146401,6 +149978,7 @@ ${lanes.join("\n")} contextToken, contextToken, sourceFile, + position, sourceFile, host, program, @@ -147030,7 +150608,7 @@ ${lanes.join("\n")} } function getAmbientModuleCompletions(fragment, fragmentDirectory, checker) { const ambientModules = checker.getAmbientModules().map((sym) => stripQuotes(sym.name)); - const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment)); + const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment) && moduleName.indexOf("*") < 0); if (fragmentDirectory !== void 0) { const moduleNameWithSeparator = ensureTrailingDirectorySeparator(fragmentDirectory); return nonRelativeModuleNames.map((nonRelativeModuleName) => removePrefix(nonRelativeModuleName, moduleNameWithSeparator)); @@ -149052,7 +152630,7 @@ ${lanes.join("\n")} } } if (!isForRenameWithPrefixAndSuffixText(state.options) || alwaysGetReferences) { - const isDefaultExport = referenceLocation.originalKeywordKind === 88 /* DefaultKeyword */ || exportSpecifier.name.originalKeywordKind === 88 /* DefaultKeyword */; + const isDefaultExport = referenceLocation.escapedText === "default" || exportSpecifier.name.escapedText === "default"; const exportKind = isDefaultExport ? 1 /* Default */ : 0 /* Named */; const exportSymbol = Debug.checkDefined(exportSpecifier.symbol); const exportInfo = getExportInfo(exportSymbol, exportKind, state.checker); @@ -150565,6 +154143,7 @@ ${lanes.join("\n")} } return displayParts; case 347 /* JSDocTypeTag */: + case 353 /* JSDocSatisfiesTag */: return withNode(tag.typeExpression); case 349 /* JSDocTypedefTag */: case 341 /* JSDocCallbackTag */: @@ -150854,6 +154433,7 @@ ${lanes.join("\n")} "readonly", "requires", "returns", + "satisfies", "see", "since", "static", @@ -150901,18 +154481,21 @@ ${lanes.join("\n")} const shouldSort = mode === "SortAndCombine" /* SortAndCombine */ || mode === "All" /* All */; const shouldCombine = shouldSort; const shouldRemove = mode === "RemoveUnused" /* RemoveUnused */ || mode === "All" /* All */; - const maybeRemove = shouldRemove ? removeUnusedImports : identity; - const maybeCoalesce = shouldCombine ? coalesceImports : identity; const topLevelImportGroupDecls = groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)); - const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : shouldSort && detectSortingWorker(topLevelImportGroupDecls) === 2 /* CaseInsensitive */; + const comparer = getOrganizeImportsComparerWithDetection(preferences, shouldSort ? () => detectSortingWorker(topLevelImportGroupDecls, preferences) === 2 /* CaseInsensitive */ : void 0); const processImportsOfSameModuleSpecifier = (importGroup) => { - const processedDeclarations = maybeCoalesce(maybeRemove(importGroup, sourceFile, program), ignoreCase, sourceFile); - return shouldSort ? stableSort(processedDeclarations, (s1, s2) => compareImportsOrRequireStatements(s1, s2)) : processedDeclarations; + if (shouldRemove) + importGroup = removeUnusedImports(importGroup, sourceFile, program); + if (shouldCombine) + importGroup = coalesceImportsWorker(importGroup, comparer, sourceFile); + if (shouldSort) + importGroup = stableSort(importGroup, (s1, s2) => compareImportsOrRequireStatements(s1, s2, comparer)); + return importGroup; }; topLevelImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const topLevelExportDecls = sourceFile.statements.filter(isExportDeclaration); - organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } for (const ambientModule of sourceFile.statements.filter(isAmbientModule)) { if (!ambientModule.body) @@ -150921,7 +154504,7 @@ ${lanes.join("\n")} ambientModuleImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const ambientModuleExportDecls = ambientModule.body.statements.filter(isExportDeclaration); - organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } } return changeTracker.getChanges(); @@ -150931,7 +154514,7 @@ ${lanes.join("\n")} } suppressLeadingTrivia(oldImportDecls[0]); const oldImportGroups = shouldCombine ? group(oldImportDecls, (importDecl) => getExternalModuleName2(importDecl.moduleSpecifier)) : [oldImportDecls]; - const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiers2(group1[0].moduleSpecifier, group2[0].moduleSpecifier)) : oldImportGroups; + const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiersWorker(group1[0].moduleSpecifier, group2[0].moduleSpecifier, comparer)) : oldImportGroups; const newImportDecls = flatMap(sortedImportGroups, (importGroup) => getExternalModuleName2(importGroup[0].moduleSpecifier) ? coalesce(importGroup) : importGroup); if (newImportDecls.length === 0) { changeTracker.deleteNodes( @@ -151054,12 +154637,14 @@ ${lanes.join("\n")} return specifier !== void 0 && isStringLiteralLike(specifier) ? specifier.text : void 0; } function coalesceImports(importGroup, ignoreCase, sourceFile) { - var _a2, _b, _c, _d; + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceImportsWorker(importGroup, comparer, sourceFile); + } + function coalesceImportsWorker(importGroup, comparer, sourceFile) { if (importGroup.length === 0) { return importGroup; } const { importWithoutClause, typeOnlyImports, regularImports } = getCategorizedImports(importGroup); - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; const coalescedImports = []; if (importWithoutClause) { coalescedImports.push(importWithoutClause); @@ -151074,7 +154659,7 @@ ${lanes.join("\n")} ); continue; } - const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => compareIdentifiers(i1.importClause.namedBindings.name, i2.importClause.namedBindings.name)); + const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => comparer(i1.importClause.namedBindings.name.text, i2.importClause.namedBindings.name.text)); for (const namespaceImport of sortedNamespaceImports) { coalescedImports.push( updateImportDeclarationAndClause( @@ -151085,7 +154670,10 @@ ${lanes.join("\n")} ) ); } - if (defaultImports.length === 0 && namedImports.length === 0) { + const firstDefaultImport = firstOrUndefined(defaultImports); + const firstNamedImport = firstOrUndefined(namedImports); + const importDecl = firstDefaultImport != null ? firstDefaultImport : firstNamedImport; + if (!importDecl) { continue; } let newDefaultImport; @@ -151106,12 +154694,11 @@ ${lanes.join("\n")} } newImportSpecifiers.push(...getNewImportSpecifiers(namedImports)); const sortedImportSpecifiers = factory.createNodeArray( - sortSpecifiers(newImportSpecifiers, ignoreCase), - (_b = (_a2 = namedImports[0]) == null ? void 0 : _a2.importClause.namedBindings) == null ? void 0 : _b.elements.hasTrailingComma + sortSpecifiers(newImportSpecifiers, comparer), + firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings.elements.hasTrailingComma ); - const importDecl = defaultImports.length > 0 ? defaultImports[0] : namedImports[0]; - const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : namedImports.length === 0 ? factory.createNamedImports(sortedImportSpecifiers) : factory.updateNamedImports(namedImports[0].importClause.namedBindings, sortedImportSpecifiers); - if (sourceFile && newNamedImports && ((_c = namedImports[0]) == null ? void 0 : _c.importClause.namedBindings) && !rangeIsOnSingleLine(namedImports[0].importClause.namedBindings, sourceFile)) { + const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : firstNamedImport ? factory.updateNamedImports(firstNamedImport.importClause.namedBindings, sortedImportSpecifiers) : factory.createNamedImports(sortedImportSpecifiers); + if (sourceFile && newNamedImports && (firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings) && !rangeIsOnSingleLine(firstNamedImport.importClause.namedBindings, sourceFile)) { setEmitFlags(newNamedImports, 2 /* MultiLine */); } if (isTypeOnly && newDefaultImport && newNamedImports) { @@ -151125,7 +154712,7 @@ ${lanes.join("\n")} ); coalescedImports.push( updateImportDeclarationAndClause( - (_d = namedImports[0]) != null ? _d : importDecl, + firstNamedImport != null ? firstNamedImport : importDecl, /*name*/ void 0, newNamedImports @@ -151168,6 +154755,10 @@ ${lanes.join("\n")} }; } function coalesceExports(exportGroup, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceExportsWorker(exportGroup, comparer); + } + function coalesceExportsWorker(exportGroup, comparer) { if (exportGroup.length === 0) { return exportGroup; } @@ -151182,7 +154773,7 @@ ${lanes.join("\n")} } const newExportSpecifiers = []; newExportSpecifiers.push(...flatMap(exportGroup2, (i) => i.exportClause && isNamedExports(i.exportClause) ? i.exportClause.elements : emptyArray)); - const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, ignoreCase); + const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, comparer); const exportDecl = exportGroup2[0]; coalescedExports.push( factory.updateExportDeclaration( @@ -151226,25 +154817,21 @@ ${lanes.join("\n")} importDeclaration.assertClause ); } - function sortSpecifiers(specifiers, ignoreCase) { - return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); + function sortSpecifiers(specifiers, comparer) { + return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); } - function compareImportOrExportSpecifiers(s1, s2, ignoreCase) { - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; - return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || compareIdentifiers(s1.name, s2.name); - } - function compareIdentifiersCaseSensitive(s1, s2) { - return compareStringsCaseSensitive(s1.text, s2.text); - } - function compareIdentifiersCaseInsensitive(s1, s2) { - return compareStringsCaseInsensitiveEslintCompatible(s1.text, s2.text); + function compareImportOrExportSpecifiers(s1, s2, comparer) { + return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || comparer(s1.name.text, s2.name.text); } function compareModuleSpecifiers2(m1, m2, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(!!ignoreCase); + return compareModuleSpecifiersWorker(m1, m2, comparer); + } + function compareModuleSpecifiersWorker(m1, m2, comparer) { const name1 = m1 === void 0 ? void 0 : getExternalModuleName2(m1); const name2 = m2 === void 0 ? void 0 : getExternalModuleName2(m2); - const compareStrings = ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; return compareBooleans(name1 === void 0, name2 === void 0) || compareBooleans(isExternalModuleNameRelative(name1), isExternalModuleNameRelative(name2)) || // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion - compareStrings(name1, name2); + comparer(name1, name2); } function getModuleSpecifierExpression(declaration) { var _a2; @@ -151257,24 +154844,40 @@ ${lanes.join("\n")} return declaration.declarationList.declarations[0].initializer.arguments[0]; } } - function detectSorting(sourceFile) { + function detectSorting(sourceFile, preferences) { return detectSortingWorker( - groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)) + groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)), + preferences ); } - function detectSortingWorker(importGroups) { + function detectSortingWorker(importGroups, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); let sortState = 3 /* Both */; + let seenUnsortedGroup = false; for (const importGroup of importGroups) { if (importGroup.length > 1) { - sortState &= detectSortCaseSensitivity( + const moduleSpecifierSort = detectSortCaseSensitivity( importGroup, - /*useEslintOrdering*/ - true, (i) => { var _a2, _b; return (_b = (_a2 = tryCast(i.moduleSpecifier, isStringLiteral)) == null ? void 0 : _a2.text) != null ? _b : ""; - } + }, + collateCaseSensitive, + collateCaseInsensitive ); + if (moduleSpecifierSort) { + sortState &= moduleSpecifierSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -151287,7 +154890,11 @@ ${lanes.join("\n")} } ); if (declarationWithNamedImports) { - sortState &= detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements); + const namedImportSort = detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements, preferences); + if (namedImportSort) { + sortState &= namedImportSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -151296,26 +154903,36 @@ ${lanes.join("\n")} return sortState; } } - return sortState; + return seenUnsortedGroup ? 0 /* None */ : sortState; } - function detectImportDeclarationSorting(imports) { + function detectImportDeclarationSorting(imports, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); return detectSortCaseSensitivity( imports, - /*useEslintOrdering*/ - true, - (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "" + (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "", + collateCaseSensitive, + collateCaseInsensitive ); } - function getImportDeclarationInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, ignoreCase)); + function getImportDeclarationInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, comparer)); return index < 0 ? ~index : index; } - function getImportSpecifierInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); + function getImportSpecifierInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); return index < 0 ? ~index : index; } - function compareImportsOrRequireStatements(s1, s2, ignoreCase) { - return compareModuleSpecifiers2(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), ignoreCase) || compareImportKind(s1, s2); + function compareImportsOrRequireStatements(s1, s2, comparer) { + return compareModuleSpecifiersWorker(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), comparer) || compareImportKind(s1, s2); } function compareImportKind(s1, s2) { return compareValues(getImportKindOrder(s1), getImportKindOrder(s2)); @@ -151358,22 +154975,86 @@ ${lanes.join("\n")} var _a2; return ((_a2 = namedImport.importClause) == null ? void 0 : _a2.namedBindings) && isNamedImports(namedImport.importClause.namedBindings) ? namedImport.importClause.namedBindings.elements : void 0; } - var detectImportSpecifierSorting; + function getOrganizeImportsOrdinalStringComparer(ignoreCase) { + return ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; + } + function getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) { + var _a2, _b, _c; + const resolvedLocale = getOrganizeImportsLocale(preferences); + const caseFirst = (_a2 = preferences.organizeImportsCaseFirst) != null ? _a2 : false; + const numeric = (_b = preferences.organizeImportsNumericCollation) != null ? _b : false; + const accents = (_c = preferences.organizeImportsAccentCollation) != null ? _c : true; + const sensitivity = ignoreCase ? accents ? "accent" : "base" : accents ? "variant" : "case"; + const collator = new Intl.Collator(resolvedLocale, { + usage: "sort", + caseFirst: caseFirst || "false", + sensitivity, + numeric + }); + return collator.compare; + } + function getOrganizeImportsLocale(preferences) { + let locale = preferences.organizeImportsLocale; + if (locale === "auto") + locale = getUILocale(); + if (locale === void 0) + locale = "en"; + const supportedLocales = Intl.Collator.supportedLocalesOf(locale); + const resolvedLocale = supportedLocales.length ? supportedLocales[0] : "en"; + return resolvedLocale; + } + function getOrganizeImportsComparer(preferences, ignoreCase) { + var _a2; + const collation = (_a2 = preferences.organizeImportsCollation) != null ? _a2 : "ordinal"; + return collation === "unicode" ? getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) : getOrganizeImportsOrdinalStringComparer(ignoreCase); + } + function getOrganizeImportsComparerWithDetection(preferences, detectIgnoreCase) { + var _a2; + const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : (_a2 = detectIgnoreCase == null ? void 0 : detectIgnoreCase()) != null ? _a2 : false; + return getOrganizeImportsComparer(preferences, ignoreCase); + } + var ImportSpecifierSortingCache, detectImportSpecifierSorting; var init_organizeImports = __esm({ "src/services/organizeImports.ts"() { "use strict"; init_ts4(); - detectImportSpecifierSorting = memoizeWeak((specifiers) => { + ImportSpecifierSortingCache = class { + has([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return false; + return this._cache.has(specifiers); + } + get([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return void 0; + return this._cache.get(specifiers); + } + set([specifiers, preferences], value) { + var _a2; + if (this._lastPreferences !== preferences) { + this._lastPreferences = preferences; + this._cache = void 0; + } + (_a2 = this._cache) != null ? _a2 : this._cache = /* @__PURE__ */ new WeakMap(); + this._cache.set(specifiers, value); + } + }; + detectImportSpecifierSorting = memoizeCached((specifiers, preferences) => { if (!arrayIsSorted(specifiers, (s1, s2) => compareBooleans(s1.isTypeOnly, s2.isTypeOnly))) { return 0 /* None */; } - return detectSortCaseSensitivity( - specifiers, - /*useEslintOrdering*/ - true, - (specifier) => specifier.name.text + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false ); - }); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); + return detectSortCaseSensitivity(specifiers, (specifier) => specifier.name.text, collateCaseSensitive, collateCaseInsensitive); + }, new ImportSpecifierSortingCache()); } }); @@ -151390,6 +155071,7 @@ ${lanes.join("\n")} detectSorting: () => detectSorting, getImportDeclarationInsertionIndex: () => getImportDeclarationInsertionIndex, getImportSpecifierInsertionIndex: () => getImportSpecifierInsertionIndex, + getOrganizeImportsComparer: () => getOrganizeImportsComparer, organizeImports: () => organizeImports }); var init_ts_OrganizeImports = __esm({ @@ -151869,7 +155551,7 @@ ${lanes.join("\n")} return void 0; } } - function doChange33(exportingSourceFile, program, info, changes, cancellationToken) { + function doChange32(exportingSourceFile, program, info, changes, cancellationToken) { changeExport(exportingSourceFile, info, changes, program.getTypeChecker()); changeImports(program, info, changes, cancellationToken); } @@ -152065,7 +155747,7 @@ ${lanes.join("\n")} Debug.assert(actionName2 === defaultToNamedAction.name || actionName2 === namedToDefaultAction.name, "Unexpected action name"); const info = getInfo19(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, info, t, context.cancellationToken)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(context.file, context.program, info, t, context.cancellationToken)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -152100,7 +155782,7 @@ ${lanes.join("\n")} function getShouldUseDefault(program, importClause) { return getAllowSyntheticDefaultImports(program.getCompilerOptions()) && isExportEqualsModule(importClause.parent.moduleSpecifier, program.getTypeChecker()); } - function doChange34(sourceFile, program, changes, info) { + function doChange33(sourceFile, program, changes, info) { const checker = program.getTypeChecker(); if (info.convertTo === 0 /* Named */) { doChangeNamespaceToNamed(sourceFile, checker, changes, info.import, getAllowSyntheticDefaultImports(program.getCompilerOptions())); @@ -152292,7 +155974,7 @@ ${lanes.join("\n")} Debug.assert(some(getOwnValues(actions), (action) => action.name === actionName2), "Unexpected action name"); const info = getImportConversionInfo(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, t, info)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, t, info)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -152634,7 +156316,7 @@ ${lanes.join("\n")} afterLast: afterEndNodeIndex === -1 ? void 0 : statements[afterEndNodeIndex] }; } - function doChange35(oldFile, program, toMove, changes, host, preferences) { + function doChange34(oldFile, program, toMove, changes, host, preferences) { const checker = program.getTypeChecker(); const usage = getUsageInfo(oldFile, toMove.all, checker); const currentDirectory = getDirectoryPath(oldFile.fileName); @@ -152715,7 +156397,8 @@ ${lanes.join("\n")} oldFile, importsFromNewFile, /*blankLineBetween*/ - true + true, + preferences ); } deleteUnusedOldImports(oldFile, toMove.all, changes, usage.unusedImportsFromOldFile, checker); @@ -153408,7 +157091,7 @@ ${lanes.join("\n")} getEditsForAction: function getRefactorEditsToMoveToNewFile(context, actionName2) { Debug.assert(actionName2 === refactorName4, "Wrong refactor invoked"); const statements = Debug.checkDefined(getStatementsToMove(context)); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(context.file, context.program, statements, t, context.host, context.preferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, statements, t, context.host, context.preferences)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -154069,12 +157752,12 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} return void 0; const groupedReferences = getGroupedReferences(functionDeclaration, program, cancellationToken); if (groupedReferences.valid) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange36(file, program, host, t, functionDeclaration, groupedReferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(file, program, host, t, functionDeclaration, groupedReferences)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return { edits: [] }; } - function doChange36(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { + function doChange35(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { const signature = groupedReferences.signature; const newFunctionDeclarationParams = map(createNewParameters(functionDeclaration, program, host), (param) => getSynthesizedDeepClone(param)); if (signature) { @@ -154867,7 +158550,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); const edits = ts_textChanges_exports.ChangeTracker.with( context, - (t) => doChange37(context.file, context.program.getTypeChecker(), t, info, actionName2) + (t) => doChange36(context.file, context.program.getTypeChecker(), t, info, actionName2) ); return { edits, renameFilename: void 0, renameLocation: void 0 }; } @@ -155023,7 +158706,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } return toConvert; } - function doChange37(sourceFile, checker, changes, info, _actionName) { + function doChange36(sourceFile, checker, changes, info, _actionName) { const { finalExpression, occurrences, expression } = info; const firstOccurrence = occurrences[occurrences.length - 1]; const convertedChain = convertOccurrences(checker, finalExpression, occurrences); @@ -155931,7 +159614,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} 111551 /* Value */, /*excludeGlobals*/ false - ) && !isPrivateIdentifier(node.name) && !isKeyword(node.name.originalKeywordKind) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); + ) && !isPrivateIdentifier(node.name) && !identifierToKeywordKind(node.name) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); const isJS = isInJSFile(scope); let variableType = isJS || !checker.isContextSensitive(node) ? void 0 : checker.typeToTypeNode(checker.getContextualType(node), scope, 1 /* NoTruncation */); let initializer = transformConstantInitializer(skipParentheses(node), substitutions); @@ -156168,7 +159851,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} let ignoreReturns = false; const statements = factory.createNodeArray(isBlock(body) ? body.statements.slice(0) : [isStatement(body) ? body : factory.createReturnStatement(skipParentheses(body))]); if (hasWritesOrVariableDeclarations || substitutions.size) { - const rewrittenStatements = visitNodes2(statements, visitor).slice(); + const rewrittenStatements = visitNodes2(statements, visitor, isStatement).slice(); if (hasWritesOrVariableDeclarations && !hasReturn2 && isStatement(body)) { const assignments = getPropertyAssignmentsForWritesAndVariableDeclarations(exposedVariableDeclarations, writes); if (assignments.length === 1) { @@ -156196,7 +159879,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (!returnValueProperty) { returnValueProperty = "__return"; } - assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor))); + assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor, isExpression))); } if (assignments.length === 1) { return factory.createReturnStatement(assignments[0].name); @@ -156769,7 +160452,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} function getRefactorEditsToInferReturnType(context) { const info = getInfo21(context); if (info && !isRefactorErrorInfo(info)) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange38(context.file, t, info.declaration, info.returnTypeNode)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange37(context.file, t, info.declaration, info.returnTypeNode)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return void 0; @@ -156794,7 +160477,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } return emptyArray; } - function doChange38(sourceFile, changes, declaration, typeNode) { + function doChange37(sourceFile, changes, declaration, typeNode) { const closeParen = findChildOfKind(declaration, 21 /* CloseParenToken */, sourceFile); const needParens = isArrowFunction(declaration) && closeParen === void 0; const endNode2 = needParens ? first(declaration.parameters) : closeParen; @@ -156946,7 +160629,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (declarations.some((declaration) => isDefinedInLibraryFile(program, declaration))) { return getRenameInfoError(Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library); } - if (isIdentifier(node) && node.originalKeywordKind === 88 /* DefaultKeyword */ && symbol.parent && symbol.parent.flags & 1536 /* Module */) { + if (isIdentifier(node) && node.escapedText === "default" && symbol.parent && symbol.parent.flags & 1536 /* Module */) { return void 0; } if (isStringLiteralLike(node) && tryGetImportFromModuleSpecifier(node)) { @@ -158651,7 +162334,6 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } const jsDocNode = parent2.parent.kind === 169 /* PropertyDeclaration */ ? parent2.parent : parent2.parent.parent; jsDocNode.jsDoc = parent2.jsDoc; - jsDocNode.jsDocCache = parent2.jsDocCache; return jsDocNode; } function tryMergeJsdocTags(oldTag, newTag) { @@ -158765,6 +162447,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (!visited) { return visited; } + Debug.assert(nodes); const nodeArray = visited === nodes ? factory.createNodeArray(visited.slice(0)) : visited; setTextRangePosEnd(nodeArray, getPos2(nodes), getEnd(nodes)); return nodeArray; @@ -162703,7 +166386,7 @@ ${options.prefix}` : "\n" : options.prefix const errorAfter = typeof options.errorAfter === "string" ? new Version(options.errorAfter) : options.errorAfter; const warnAfter = typeof options.warnAfter === "string" ? new Version(options.warnAfter) : options.warnAfter; const since = typeof options.since === "string" ? new Version(options.since) : (_b = options.since) != null ? _b : warnAfter; - const error = options.error || errorAfter && version2.compareTo(errorAfter) <= 0; + const error = options.error || errorAfter && version2.compareTo(errorAfter) >= 0; const warn = !warnAfter || version2.compareTo(warnAfter) >= 0; return error ? createErrorDeprecation(name, errorAfter, since, options.message) : warn ? createWarningDeprecation(name, errorAfter, since, options.message) : noop; } @@ -162779,1338 +166462,51 @@ ${options.prefix}` : "\n" : options.prefix } }); - // src/deprecatedCompat/4.0/nodeFactoryTopLevelExports.ts - var factoryDeprecation, createNodeArray, createNumericLiteral, createBigIntLiteral, createStringLiteral, createStringLiteralFromNode, createRegularExpressionLiteral, createLoopVariable, createUniqueName, createPrivateIdentifier, createSuper, createThis, createNull, createTrue, createFalse, createModifier, createModifiersFromModifierFlags, createQualifiedName, updateQualifiedName, createComputedPropertyName, updateComputedPropertyName, createTypeParameterDeclaration, updateTypeParameterDeclaration, createParameter, updateParameter, createDecorator, updateDecorator, createProperty, updateProperty, createMethod, updateMethod, createConstructor, updateConstructor, createGetAccessor, updateGetAccessor, createSetAccessor, updateSetAccessor, createCallSignature, updateCallSignature, createConstructSignature, updateConstructSignature, updateIndexSignature, createKeywordTypeNode, createTypePredicateNodeWithModifier, updateTypePredicateNodeWithModifier, createTypeReferenceNode, updateTypeReferenceNode, createFunctionTypeNode, updateFunctionTypeNode, createConstructorTypeNode, updateConstructorTypeNode, createTypeQueryNode, updateTypeQueryNode, createTypeLiteralNode, updateTypeLiteralNode, createArrayTypeNode, updateArrayTypeNode, createTupleTypeNode, updateTupleTypeNode, createOptionalTypeNode, updateOptionalTypeNode, createRestTypeNode, updateRestTypeNode, createUnionTypeNode, updateUnionTypeNode, createIntersectionTypeNode, updateIntersectionTypeNode, createConditionalTypeNode, updateConditionalTypeNode, createInferTypeNode, updateInferTypeNode, createImportTypeNode, updateImportTypeNode, createParenthesizedType, updateParenthesizedType, createThisTypeNode, updateTypeOperatorNode, createIndexedAccessTypeNode, updateIndexedAccessTypeNode, createMappedTypeNode, updateMappedTypeNode, createLiteralTypeNode, updateLiteralTypeNode, createObjectBindingPattern, updateObjectBindingPattern, createArrayBindingPattern, updateArrayBindingPattern, createBindingElement, updateBindingElement, createArrayLiteral, updateArrayLiteral, createObjectLiteral, updateObjectLiteral, createPropertyAccess, updatePropertyAccess, createPropertyAccessChain, updatePropertyAccessChain, createElementAccess, updateElementAccess, createElementAccessChain, updateElementAccessChain, createCall, updateCall, createCallChain, updateCallChain, createNew, updateNew, createTypeAssertion, updateTypeAssertion, createParen, updateParen, createFunctionExpression, updateFunctionExpression, createDelete, updateDelete, createTypeOf, updateTypeOf, createVoid, updateVoid, createAwait, updateAwait, createPrefix, updatePrefix, createPostfix, updatePostfix, createBinary, updateConditional, createTemplateExpression, updateTemplateExpression, createTemplateHead, createTemplateMiddle, createTemplateTail, createNoSubstitutionTemplateLiteral, updateYield, createSpread, updateSpread, createOmittedExpression, createAsExpression, updateAsExpression, createNonNullExpression, updateNonNullExpression, createNonNullChain, updateNonNullChain, createMetaProperty, updateMetaProperty, createTemplateSpan, updateTemplateSpan, createSemicolonClassElement, createBlock, updateBlock, createVariableStatement, updateVariableStatement, createEmptyStatement, createExpressionStatement, updateExpressionStatement, createStatement, updateStatement, createIf, updateIf, createDo, updateDo, createWhile, updateWhile, createFor, updateFor, createForIn, updateForIn, createForOf, updateForOf, createContinue, updateContinue, createBreak, updateBreak, createReturn, updateReturn, createWith, updateWith, createSwitch, updateSwitch, createLabel, updateLabel, createThrow, updateThrow, createTry, updateTry, createDebuggerStatement, createVariableDeclarationList, updateVariableDeclarationList, createFunctionDeclaration, updateFunctionDeclaration, createClassDeclaration, updateClassDeclaration, createInterfaceDeclaration, updateInterfaceDeclaration, createTypeAliasDeclaration, updateTypeAliasDeclaration, createEnumDeclaration, updateEnumDeclaration, createModuleDeclaration, updateModuleDeclaration, createModuleBlock, updateModuleBlock, createCaseBlock, updateCaseBlock, createNamespaceExportDeclaration, updateNamespaceExportDeclaration, createImportEqualsDeclaration, updateImportEqualsDeclaration, createImportDeclaration, updateImportDeclaration, createNamespaceImport, updateNamespaceImport, createNamedImports, updateNamedImports, createImportSpecifier, updateImportSpecifier, createExportAssignment2, updateExportAssignment, createNamedExports, updateNamedExports, createExportSpecifier, updateExportSpecifier, createExternalModuleReference, updateExternalModuleReference, createJSDocTypeExpression, createJSDocTypeTag, createJSDocReturnTag, createJSDocThisTag, createJSDocComment, createJSDocParameterTag, createJSDocClassTag, createJSDocAugmentsTag, createJSDocEnumTag, createJSDocTemplateTag, createJSDocTypedefTag, createJSDocCallbackTag, createJSDocSignature, createJSDocPropertyTag, createJSDocTypeLiteral, createJSDocImplementsTag, createJSDocAuthorTag, createJSDocPublicTag, createJSDocPrivateTag, createJSDocProtectedTag, createJSDocReadonlyTag, createJSDocTag, createJsxElement, updateJsxElement, createJsxSelfClosingElement, updateJsxSelfClosingElement, createJsxOpeningElement, updateJsxOpeningElement, createJsxClosingElement, updateJsxClosingElement, createJsxFragment, createJsxText, updateJsxText, createJsxOpeningFragment, createJsxJsxClosingFragment, updateJsxFragment, createJsxAttribute, updateJsxAttribute, createJsxAttributes, updateJsxAttributes, createJsxSpreadAttribute, updateJsxSpreadAttribute, createJsxExpression, updateJsxExpression, createCaseClause, updateCaseClause, createDefaultClause, updateDefaultClause, createHeritageClause, updateHeritageClause, createCatchClause, updateCatchClause, createPropertyAssignment, updatePropertyAssignment, createShorthandPropertyAssignment, updateShorthandPropertyAssignment, createSpreadAssignment, updateSpreadAssignment, createEnumMember, updateEnumMember, updateSourceFileNode, createNotEmittedStatement, createPartiallyEmittedExpression, updatePartiallyEmittedExpression, createCommaList, updateCommaList, createBundle, updateBundle, createImmediatelyInvokedFunctionExpression, createImmediatelyInvokedArrowFunction, createVoidZero, createExportDefault, createExternalModuleExport, createNamespaceExport, updateNamespaceExport, createToken, createIdentifier, createTempVariable, getGeneratedNameForNode, createOptimisticUniqueName, createFileLevelUniqueName, createIndexSignature, createTypePredicateNode, updateTypePredicateNode, createLiteral, createMethodSignature, updateMethodSignature, createTypeOperatorNode, createTaggedTemplate, updateTaggedTemplate, updateBinary, createConditional, createYield, createClassExpression, updateClassExpression, createPropertySignature, updatePropertySignature, createExpressionWithTypeArguments, updateExpressionWithTypeArguments, createArrowFunction, updateArrowFunction, createVariableDeclaration, updateVariableDeclaration, createImportClause, updateImportClause, createExportDeclaration, updateExportDeclaration, createJSDocParamTag, createComma, createLessThan, createAssignment, createStrictEquality, createStrictInequality, createAdd, createSubtract, createLogicalAnd, createLogicalOr, createPostfixIncrement, createLogicalNot, createNode2, getMutableClone; - var init_nodeFactoryTopLevelExports = __esm({ - "src/deprecatedCompat/4.0/nodeFactoryTopLevelExports.ts"() { + // src/deprecatedCompat/5.0/identifierProperties.ts + var init_identifierProperties = __esm({ + "src/deprecatedCompat/5.0/identifierProperties.ts"() { "use strict"; init_ts5(); init_deprecate(); - factoryDeprecation = { since: "4.0", warnAfter: "4.1", message: "Use the appropriate method on 'ts.factory' or the 'factory' supplied by your transformation context instead." }; - createNodeArray = deprecate(factory.createNodeArray, factoryDeprecation); - createNumericLiteral = deprecate(factory.createNumericLiteral, factoryDeprecation); - createBigIntLiteral = deprecate(factory.createBigIntLiteral, factoryDeprecation); - createStringLiteral = deprecate(factory.createStringLiteral, factoryDeprecation); - createStringLiteralFromNode = deprecate(factory.createStringLiteralFromNode, factoryDeprecation); - createRegularExpressionLiteral = deprecate(factory.createRegularExpressionLiteral, factoryDeprecation); - createLoopVariable = deprecate(factory.createLoopVariable, factoryDeprecation); - createUniqueName = deprecate(factory.createUniqueName, factoryDeprecation); - createPrivateIdentifier = deprecate(factory.createPrivateIdentifier, factoryDeprecation); - createSuper = deprecate(factory.createSuper, factoryDeprecation); - createThis = deprecate(factory.createThis, factoryDeprecation); - createNull = deprecate(factory.createNull, factoryDeprecation); - createTrue = deprecate(factory.createTrue, factoryDeprecation); - createFalse = deprecate(factory.createFalse, factoryDeprecation); - createModifier = deprecate(factory.createModifier, factoryDeprecation); - createModifiersFromModifierFlags = deprecate(factory.createModifiersFromModifierFlags, factoryDeprecation); - createQualifiedName = deprecate(factory.createQualifiedName, factoryDeprecation); - updateQualifiedName = deprecate(factory.updateQualifiedName, factoryDeprecation); - createComputedPropertyName = deprecate(factory.createComputedPropertyName, factoryDeprecation); - updateComputedPropertyName = deprecate(factory.updateComputedPropertyName, factoryDeprecation); - createTypeParameterDeclaration = deprecate(factory.createTypeParameterDeclaration, factoryDeprecation); - updateTypeParameterDeclaration = deprecate(factory.updateTypeParameterDeclaration, factoryDeprecation); - createParameter = deprecate(factory.createParameterDeclaration, factoryDeprecation); - updateParameter = deprecate(factory.updateParameterDeclaration, factoryDeprecation); - createDecorator = deprecate(factory.createDecorator, factoryDeprecation); - updateDecorator = deprecate(factory.updateDecorator, factoryDeprecation); - createProperty = deprecate(factory.createPropertyDeclaration, factoryDeprecation); - updateProperty = deprecate(factory.updatePropertyDeclaration, factoryDeprecation); - createMethod = deprecate(factory.createMethodDeclaration, factoryDeprecation); - updateMethod = deprecate(factory.updateMethodDeclaration, factoryDeprecation); - createConstructor = deprecate(factory.createConstructorDeclaration, factoryDeprecation); - updateConstructor = deprecate(factory.updateConstructorDeclaration, factoryDeprecation); - createGetAccessor = deprecate(factory.createGetAccessorDeclaration, factoryDeprecation); - updateGetAccessor = deprecate(factory.updateGetAccessorDeclaration, factoryDeprecation); - createSetAccessor = deprecate(factory.createSetAccessorDeclaration, factoryDeprecation); - updateSetAccessor = deprecate(factory.updateSetAccessorDeclaration, factoryDeprecation); - createCallSignature = deprecate(factory.createCallSignature, factoryDeprecation); - updateCallSignature = deprecate(factory.updateCallSignature, factoryDeprecation); - createConstructSignature = deprecate(factory.createConstructSignature, factoryDeprecation); - updateConstructSignature = deprecate(factory.updateConstructSignature, factoryDeprecation); - updateIndexSignature = deprecate(factory.updateIndexSignature, factoryDeprecation); - createKeywordTypeNode = deprecate(factory.createKeywordTypeNode, factoryDeprecation); - createTypePredicateNodeWithModifier = deprecate(factory.createTypePredicateNode, factoryDeprecation); - updateTypePredicateNodeWithModifier = deprecate(factory.updateTypePredicateNode, factoryDeprecation); - createTypeReferenceNode = deprecate(factory.createTypeReferenceNode, factoryDeprecation); - updateTypeReferenceNode = deprecate(factory.updateTypeReferenceNode, factoryDeprecation); - createFunctionTypeNode = deprecate(factory.createFunctionTypeNode, factoryDeprecation); - updateFunctionTypeNode = deprecate(factory.updateFunctionTypeNode, factoryDeprecation); - createConstructorTypeNode = deprecate((typeParameters, parameters, type) => { - return factory.createConstructorTypeNode( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); - }, factoryDeprecation); - updateConstructorTypeNode = deprecate((node, typeParameters, parameters, type) => { - return factory.updateConstructorTypeNode(node, node.modifiers, typeParameters, parameters, type); - }, factoryDeprecation); - createTypeQueryNode = deprecate(factory.createTypeQueryNode, factoryDeprecation); - updateTypeQueryNode = deprecate(factory.updateTypeQueryNode, factoryDeprecation); - createTypeLiteralNode = deprecate(factory.createTypeLiteralNode, factoryDeprecation); - updateTypeLiteralNode = deprecate(factory.updateTypeLiteralNode, factoryDeprecation); - createArrayTypeNode = deprecate(factory.createArrayTypeNode, factoryDeprecation); - updateArrayTypeNode = deprecate(factory.updateArrayTypeNode, factoryDeprecation); - createTupleTypeNode = deprecate(factory.createTupleTypeNode, factoryDeprecation); - updateTupleTypeNode = deprecate(factory.updateTupleTypeNode, factoryDeprecation); - createOptionalTypeNode = deprecate(factory.createOptionalTypeNode, factoryDeprecation); - updateOptionalTypeNode = deprecate(factory.updateOptionalTypeNode, factoryDeprecation); - createRestTypeNode = deprecate(factory.createRestTypeNode, factoryDeprecation); - updateRestTypeNode = deprecate(factory.updateRestTypeNode, factoryDeprecation); - createUnionTypeNode = deprecate(factory.createUnionTypeNode, factoryDeprecation); - updateUnionTypeNode = deprecate(factory.updateUnionTypeNode, factoryDeprecation); - createIntersectionTypeNode = deprecate(factory.createIntersectionTypeNode, factoryDeprecation); - updateIntersectionTypeNode = deprecate(factory.updateIntersectionTypeNode, factoryDeprecation); - createConditionalTypeNode = deprecate(factory.createConditionalTypeNode, factoryDeprecation); - updateConditionalTypeNode = deprecate(factory.updateConditionalTypeNode, factoryDeprecation); - createInferTypeNode = deprecate(factory.createInferTypeNode, factoryDeprecation); - updateInferTypeNode = deprecate(factory.updateInferTypeNode, factoryDeprecation); - createImportTypeNode = deprecate(factory.createImportTypeNode, factoryDeprecation); - updateImportTypeNode = deprecate(factory.updateImportTypeNode, factoryDeprecation); - createParenthesizedType = deprecate(factory.createParenthesizedType, factoryDeprecation); - updateParenthesizedType = deprecate(factory.updateParenthesizedType, factoryDeprecation); - createThisTypeNode = deprecate(factory.createThisTypeNode, factoryDeprecation); - updateTypeOperatorNode = deprecate(factory.updateTypeOperatorNode, factoryDeprecation); - createIndexedAccessTypeNode = deprecate(factory.createIndexedAccessTypeNode, factoryDeprecation); - updateIndexedAccessTypeNode = deprecate(factory.updateIndexedAccessTypeNode, factoryDeprecation); - createMappedTypeNode = deprecate(factory.createMappedTypeNode, factoryDeprecation); - updateMappedTypeNode = deprecate(factory.updateMappedTypeNode, factoryDeprecation); - createLiteralTypeNode = deprecate(factory.createLiteralTypeNode, factoryDeprecation); - updateLiteralTypeNode = deprecate(factory.updateLiteralTypeNode, factoryDeprecation); - createObjectBindingPattern = deprecate(factory.createObjectBindingPattern, factoryDeprecation); - updateObjectBindingPattern = deprecate(factory.updateObjectBindingPattern, factoryDeprecation); - createArrayBindingPattern = deprecate(factory.createArrayBindingPattern, factoryDeprecation); - updateArrayBindingPattern = deprecate(factory.updateArrayBindingPattern, factoryDeprecation); - createBindingElement = deprecate(factory.createBindingElement, factoryDeprecation); - updateBindingElement = deprecate(factory.updateBindingElement, factoryDeprecation); - createArrayLiteral = deprecate(factory.createArrayLiteralExpression, factoryDeprecation); - updateArrayLiteral = deprecate(factory.updateArrayLiteralExpression, factoryDeprecation); - createObjectLiteral = deprecate(factory.createObjectLiteralExpression, factoryDeprecation); - updateObjectLiteral = deprecate(factory.updateObjectLiteralExpression, factoryDeprecation); - createPropertyAccess = deprecate(factory.createPropertyAccessExpression, factoryDeprecation); - updatePropertyAccess = deprecate(factory.updatePropertyAccessExpression, factoryDeprecation); - createPropertyAccessChain = deprecate(factory.createPropertyAccessChain, factoryDeprecation); - updatePropertyAccessChain = deprecate(factory.updatePropertyAccessChain, factoryDeprecation); - createElementAccess = deprecate(factory.createElementAccessExpression, factoryDeprecation); - updateElementAccess = deprecate(factory.updateElementAccessExpression, factoryDeprecation); - createElementAccessChain = deprecate(factory.createElementAccessChain, factoryDeprecation); - updateElementAccessChain = deprecate(factory.updateElementAccessChain, factoryDeprecation); - createCall = deprecate(factory.createCallExpression, factoryDeprecation); - updateCall = deprecate(factory.updateCallExpression, factoryDeprecation); - createCallChain = deprecate(factory.createCallChain, factoryDeprecation); - updateCallChain = deprecate(factory.updateCallChain, factoryDeprecation); - createNew = deprecate(factory.createNewExpression, factoryDeprecation); - updateNew = deprecate(factory.updateNewExpression, factoryDeprecation); - createTypeAssertion = deprecate(factory.createTypeAssertion, factoryDeprecation); - updateTypeAssertion = deprecate(factory.updateTypeAssertion, factoryDeprecation); - createParen = deprecate(factory.createParenthesizedExpression, factoryDeprecation); - updateParen = deprecate(factory.updateParenthesizedExpression, factoryDeprecation); - createFunctionExpression = deprecate(factory.createFunctionExpression, factoryDeprecation); - updateFunctionExpression = deprecate(factory.updateFunctionExpression, factoryDeprecation); - createDelete = deprecate(factory.createDeleteExpression, factoryDeprecation); - updateDelete = deprecate(factory.updateDeleteExpression, factoryDeprecation); - createTypeOf = deprecate(factory.createTypeOfExpression, factoryDeprecation); - updateTypeOf = deprecate(factory.updateTypeOfExpression, factoryDeprecation); - createVoid = deprecate(factory.createVoidExpression, factoryDeprecation); - updateVoid = deprecate(factory.updateVoidExpression, factoryDeprecation); - createAwait = deprecate(factory.createAwaitExpression, factoryDeprecation); - updateAwait = deprecate(factory.updateAwaitExpression, factoryDeprecation); - createPrefix = deprecate(factory.createPrefixUnaryExpression, factoryDeprecation); - updatePrefix = deprecate(factory.updatePrefixUnaryExpression, factoryDeprecation); - createPostfix = deprecate(factory.createPostfixUnaryExpression, factoryDeprecation); - updatePostfix = deprecate(factory.updatePostfixUnaryExpression, factoryDeprecation); - createBinary = deprecate(factory.createBinaryExpression, factoryDeprecation); - updateConditional = deprecate(factory.updateConditionalExpression, factoryDeprecation); - createTemplateExpression = deprecate(factory.createTemplateExpression, factoryDeprecation); - updateTemplateExpression = deprecate(factory.updateTemplateExpression, factoryDeprecation); - createTemplateHead = deprecate(factory.createTemplateHead, factoryDeprecation); - createTemplateMiddle = deprecate(factory.createTemplateMiddle, factoryDeprecation); - createTemplateTail = deprecate(factory.createTemplateTail, factoryDeprecation); - createNoSubstitutionTemplateLiteral = deprecate(factory.createNoSubstitutionTemplateLiteral, factoryDeprecation); - updateYield = deprecate(factory.updateYieldExpression, factoryDeprecation); - createSpread = deprecate(factory.createSpreadElement, factoryDeprecation); - updateSpread = deprecate(factory.updateSpreadElement, factoryDeprecation); - createOmittedExpression = deprecate(factory.createOmittedExpression, factoryDeprecation); - createAsExpression = deprecate(factory.createAsExpression, factoryDeprecation); - updateAsExpression = deprecate(factory.updateAsExpression, factoryDeprecation); - createNonNullExpression = deprecate(factory.createNonNullExpression, factoryDeprecation); - updateNonNullExpression = deprecate(factory.updateNonNullExpression, factoryDeprecation); - createNonNullChain = deprecate(factory.createNonNullChain, factoryDeprecation); - updateNonNullChain = deprecate(factory.updateNonNullChain, factoryDeprecation); - createMetaProperty = deprecate(factory.createMetaProperty, factoryDeprecation); - updateMetaProperty = deprecate(factory.updateMetaProperty, factoryDeprecation); - createTemplateSpan = deprecate(factory.createTemplateSpan, factoryDeprecation); - updateTemplateSpan = deprecate(factory.updateTemplateSpan, factoryDeprecation); - createSemicolonClassElement = deprecate(factory.createSemicolonClassElement, factoryDeprecation); - createBlock = deprecate(factory.createBlock, factoryDeprecation); - updateBlock = deprecate(factory.updateBlock, factoryDeprecation); - createVariableStatement = deprecate(factory.createVariableStatement, factoryDeprecation); - updateVariableStatement = deprecate(factory.updateVariableStatement, factoryDeprecation); - createEmptyStatement = deprecate(factory.createEmptyStatement, factoryDeprecation); - createExpressionStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); - updateExpressionStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); - createStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); - updateStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); - createIf = deprecate(factory.createIfStatement, factoryDeprecation); - updateIf = deprecate(factory.updateIfStatement, factoryDeprecation); - createDo = deprecate(factory.createDoStatement, factoryDeprecation); - updateDo = deprecate(factory.updateDoStatement, factoryDeprecation); - createWhile = deprecate(factory.createWhileStatement, factoryDeprecation); - updateWhile = deprecate(factory.updateWhileStatement, factoryDeprecation); - createFor = deprecate(factory.createForStatement, factoryDeprecation); - updateFor = deprecate(factory.updateForStatement, factoryDeprecation); - createForIn = deprecate(factory.createForInStatement, factoryDeprecation); - updateForIn = deprecate(factory.updateForInStatement, factoryDeprecation); - createForOf = deprecate(factory.createForOfStatement, factoryDeprecation); - updateForOf = deprecate(factory.updateForOfStatement, factoryDeprecation); - createContinue = deprecate(factory.createContinueStatement, factoryDeprecation); - updateContinue = deprecate(factory.updateContinueStatement, factoryDeprecation); - createBreak = deprecate(factory.createBreakStatement, factoryDeprecation); - updateBreak = deprecate(factory.updateBreakStatement, factoryDeprecation); - createReturn = deprecate(factory.createReturnStatement, factoryDeprecation); - updateReturn = deprecate(factory.updateReturnStatement, factoryDeprecation); - createWith = deprecate(factory.createWithStatement, factoryDeprecation); - updateWith = deprecate(factory.updateWithStatement, factoryDeprecation); - createSwitch = deprecate(factory.createSwitchStatement, factoryDeprecation); - updateSwitch = deprecate(factory.updateSwitchStatement, factoryDeprecation); - createLabel = deprecate(factory.createLabeledStatement, factoryDeprecation); - updateLabel = deprecate(factory.updateLabeledStatement, factoryDeprecation); - createThrow = deprecate(factory.createThrowStatement, factoryDeprecation); - updateThrow = deprecate(factory.updateThrowStatement, factoryDeprecation); - createTry = deprecate(factory.createTryStatement, factoryDeprecation); - updateTry = deprecate(factory.updateTryStatement, factoryDeprecation); - createDebuggerStatement = deprecate(factory.createDebuggerStatement, factoryDeprecation); - createVariableDeclarationList = deprecate(factory.createVariableDeclarationList, factoryDeprecation); - updateVariableDeclarationList = deprecate(factory.updateVariableDeclarationList, factoryDeprecation); - createFunctionDeclaration = deprecate(factory.createFunctionDeclaration, factoryDeprecation); - updateFunctionDeclaration = deprecate(factory.updateFunctionDeclaration, factoryDeprecation); - createClassDeclaration = deprecate(factory.createClassDeclaration, factoryDeprecation); - updateClassDeclaration = deprecate(factory.updateClassDeclaration, factoryDeprecation); - createInterfaceDeclaration = deprecate(factory.createInterfaceDeclaration, factoryDeprecation); - updateInterfaceDeclaration = deprecate(factory.updateInterfaceDeclaration, factoryDeprecation); - createTypeAliasDeclaration = deprecate(factory.createTypeAliasDeclaration, factoryDeprecation); - updateTypeAliasDeclaration = deprecate(factory.updateTypeAliasDeclaration, factoryDeprecation); - createEnumDeclaration = deprecate(factory.createEnumDeclaration, factoryDeprecation); - updateEnumDeclaration = deprecate(factory.updateEnumDeclaration, factoryDeprecation); - createModuleDeclaration = deprecate(factory.createModuleDeclaration, factoryDeprecation); - updateModuleDeclaration = deprecate(factory.updateModuleDeclaration, factoryDeprecation); - createModuleBlock = deprecate(factory.createModuleBlock, factoryDeprecation); - updateModuleBlock = deprecate(factory.updateModuleBlock, factoryDeprecation); - createCaseBlock = deprecate(factory.createCaseBlock, factoryDeprecation); - updateCaseBlock = deprecate(factory.updateCaseBlock, factoryDeprecation); - createNamespaceExportDeclaration = deprecate(factory.createNamespaceExportDeclaration, factoryDeprecation); - updateNamespaceExportDeclaration = deprecate(factory.updateNamespaceExportDeclaration, factoryDeprecation); - createImportEqualsDeclaration = deprecate(factory.createImportEqualsDeclaration, factoryDeprecation); - updateImportEqualsDeclaration = deprecate(factory.updateImportEqualsDeclaration, factoryDeprecation); - createImportDeclaration = deprecate(factory.createImportDeclaration, factoryDeprecation); - updateImportDeclaration = deprecate(factory.updateImportDeclaration, factoryDeprecation); - createNamespaceImport = deprecate(factory.createNamespaceImport, factoryDeprecation); - updateNamespaceImport = deprecate(factory.updateNamespaceImport, factoryDeprecation); - createNamedImports = deprecate(factory.createNamedImports, factoryDeprecation); - updateNamedImports = deprecate(factory.updateNamedImports, factoryDeprecation); - createImportSpecifier = deprecate(factory.createImportSpecifier, factoryDeprecation); - updateImportSpecifier = deprecate(factory.updateImportSpecifier, factoryDeprecation); - createExportAssignment2 = deprecate(factory.createExportAssignment, factoryDeprecation); - updateExportAssignment = deprecate(factory.updateExportAssignment, factoryDeprecation); - createNamedExports = deprecate(factory.createNamedExports, factoryDeprecation); - updateNamedExports = deprecate(factory.updateNamedExports, factoryDeprecation); - createExportSpecifier = deprecate(factory.createExportSpecifier, factoryDeprecation); - updateExportSpecifier = deprecate(factory.updateExportSpecifier, factoryDeprecation); - createExternalModuleReference = deprecate(factory.createExternalModuleReference, factoryDeprecation); - updateExternalModuleReference = deprecate(factory.updateExternalModuleReference, factoryDeprecation); - createJSDocTypeExpression = deprecate(factory.createJSDocTypeExpression, factoryDeprecation); - createJSDocTypeTag = deprecate(factory.createJSDocTypeTag, factoryDeprecation); - createJSDocReturnTag = deprecate(factory.createJSDocReturnTag, factoryDeprecation); - createJSDocThisTag = deprecate(factory.createJSDocThisTag, factoryDeprecation); - createJSDocComment = deprecate(factory.createJSDocComment, factoryDeprecation); - createJSDocParameterTag = deprecate(factory.createJSDocParameterTag, factoryDeprecation); - createJSDocClassTag = deprecate(factory.createJSDocClassTag, factoryDeprecation); - createJSDocAugmentsTag = deprecate(factory.createJSDocAugmentsTag, factoryDeprecation); - createJSDocEnumTag = deprecate(factory.createJSDocEnumTag, factoryDeprecation); - createJSDocTemplateTag = deprecate(factory.createJSDocTemplateTag, factoryDeprecation); - createJSDocTypedefTag = deprecate(factory.createJSDocTypedefTag, factoryDeprecation); - createJSDocCallbackTag = deprecate(factory.createJSDocCallbackTag, factoryDeprecation); - createJSDocSignature = deprecate(factory.createJSDocSignature, factoryDeprecation); - createJSDocPropertyTag = deprecate(factory.createJSDocPropertyTag, factoryDeprecation); - createJSDocTypeLiteral = deprecate(factory.createJSDocTypeLiteral, factoryDeprecation); - createJSDocImplementsTag = deprecate(factory.createJSDocImplementsTag, factoryDeprecation); - createJSDocAuthorTag = deprecate(factory.createJSDocAuthorTag, factoryDeprecation); - createJSDocPublicTag = deprecate(factory.createJSDocPublicTag, factoryDeprecation); - createJSDocPrivateTag = deprecate(factory.createJSDocPrivateTag, factoryDeprecation); - createJSDocProtectedTag = deprecate(factory.createJSDocProtectedTag, factoryDeprecation); - createJSDocReadonlyTag = deprecate(factory.createJSDocReadonlyTag, factoryDeprecation); - createJSDocTag = deprecate(factory.createJSDocUnknownTag, factoryDeprecation); - createJsxElement = deprecate(factory.createJsxElement, factoryDeprecation); - updateJsxElement = deprecate(factory.updateJsxElement, factoryDeprecation); - createJsxSelfClosingElement = deprecate(factory.createJsxSelfClosingElement, factoryDeprecation); - updateJsxSelfClosingElement = deprecate(factory.updateJsxSelfClosingElement, factoryDeprecation); - createJsxOpeningElement = deprecate(factory.createJsxOpeningElement, factoryDeprecation); - updateJsxOpeningElement = deprecate(factory.updateJsxOpeningElement, factoryDeprecation); - createJsxClosingElement = deprecate(factory.createJsxClosingElement, factoryDeprecation); - updateJsxClosingElement = deprecate(factory.updateJsxClosingElement, factoryDeprecation); - createJsxFragment = deprecate(factory.createJsxFragment, factoryDeprecation); - createJsxText = deprecate(factory.createJsxText, factoryDeprecation); - updateJsxText = deprecate(factory.updateJsxText, factoryDeprecation); - createJsxOpeningFragment = deprecate(factory.createJsxOpeningFragment, factoryDeprecation); - createJsxJsxClosingFragment = deprecate(factory.createJsxJsxClosingFragment, factoryDeprecation); - updateJsxFragment = deprecate(factory.updateJsxFragment, factoryDeprecation); - createJsxAttribute = deprecate(factory.createJsxAttribute, factoryDeprecation); - updateJsxAttribute = deprecate(factory.updateJsxAttribute, factoryDeprecation); - createJsxAttributes = deprecate(factory.createJsxAttributes, factoryDeprecation); - updateJsxAttributes = deprecate(factory.updateJsxAttributes, factoryDeprecation); - createJsxSpreadAttribute = deprecate(factory.createJsxSpreadAttribute, factoryDeprecation); - updateJsxSpreadAttribute = deprecate(factory.updateJsxSpreadAttribute, factoryDeprecation); - createJsxExpression = deprecate(factory.createJsxExpression, factoryDeprecation); - updateJsxExpression = deprecate(factory.updateJsxExpression, factoryDeprecation); - createCaseClause = deprecate(factory.createCaseClause, factoryDeprecation); - updateCaseClause = deprecate(factory.updateCaseClause, factoryDeprecation); - createDefaultClause = deprecate(factory.createDefaultClause, factoryDeprecation); - updateDefaultClause = deprecate(factory.updateDefaultClause, factoryDeprecation); - createHeritageClause = deprecate(factory.createHeritageClause, factoryDeprecation); - updateHeritageClause = deprecate(factory.updateHeritageClause, factoryDeprecation); - createCatchClause = deprecate(factory.createCatchClause, factoryDeprecation); - updateCatchClause = deprecate(factory.updateCatchClause, factoryDeprecation); - createPropertyAssignment = deprecate(factory.createPropertyAssignment, factoryDeprecation); - updatePropertyAssignment = deprecate(factory.updatePropertyAssignment, factoryDeprecation); - createShorthandPropertyAssignment = deprecate(factory.createShorthandPropertyAssignment, factoryDeprecation); - updateShorthandPropertyAssignment = deprecate(factory.updateShorthandPropertyAssignment, factoryDeprecation); - createSpreadAssignment = deprecate(factory.createSpreadAssignment, factoryDeprecation); - updateSpreadAssignment = deprecate(factory.updateSpreadAssignment, factoryDeprecation); - createEnumMember = deprecate(factory.createEnumMember, factoryDeprecation); - updateEnumMember = deprecate(factory.updateEnumMember, factoryDeprecation); - updateSourceFileNode = deprecate(factory.updateSourceFile, factoryDeprecation); - createNotEmittedStatement = deprecate(factory.createNotEmittedStatement, factoryDeprecation); - createPartiallyEmittedExpression = deprecate(factory.createPartiallyEmittedExpression, factoryDeprecation); - updatePartiallyEmittedExpression = deprecate(factory.updatePartiallyEmittedExpression, factoryDeprecation); - createCommaList = deprecate(factory.createCommaListExpression, factoryDeprecation); - updateCommaList = deprecate(factory.updateCommaListExpression, factoryDeprecation); - createBundle = deprecate(factory.createBundle, factoryDeprecation); - updateBundle = deprecate(factory.updateBundle, factoryDeprecation); - createImmediatelyInvokedFunctionExpression = deprecate(factory.createImmediatelyInvokedFunctionExpression, factoryDeprecation); - createImmediatelyInvokedArrowFunction = deprecate(factory.createImmediatelyInvokedArrowFunction, factoryDeprecation); - createVoidZero = deprecate(factory.createVoidZero, factoryDeprecation); - createExportDefault = deprecate(factory.createExportDefault, factoryDeprecation); - createExternalModuleExport = deprecate(factory.createExternalModuleExport, factoryDeprecation); - createNamespaceExport = deprecate(factory.createNamespaceExport, factoryDeprecation); - updateNamespaceExport = deprecate(factory.updateNamespaceExport, factoryDeprecation); - createToken = deprecate(function createToken2(kind) { - return factory.createToken(kind); - }, factoryDeprecation); - createIdentifier = deprecate(function createIdentifier2(text) { - return factory.createIdentifier( - text, - /*typeArguments*/ - void 0, - /*originalKeywordKind*/ - void 0 - ); - }, factoryDeprecation); - createTempVariable = deprecate(function createTempVariable2(recordTempVariable) { - return factory.createTempVariable( - recordTempVariable, - /*reserveInNestedScopes*/ - void 0 - ); - }, factoryDeprecation); - getGeneratedNameForNode = deprecate(function getGeneratedNameForNode2(node) { - return factory.getGeneratedNameForNode( - node, - /*flags*/ - void 0 - ); - }, factoryDeprecation); - createOptimisticUniqueName = deprecate(function createOptimisticUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */); - }, factoryDeprecation); - createFileLevelUniqueName = deprecate(function createFileLevelUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */ | 32 /* FileLevel */); - }, factoryDeprecation); - createIndexSignature = deprecate(function createIndexSignature2(decorators, modifiers, parameters, type) { - return factory.createIndexSignature(decorators, modifiers, parameters, type); - }, factoryDeprecation); - createTypePredicateNode = deprecate(function createTypePredicateNode2(parameterName, type) { - return factory.createTypePredicateNode( - /*assertsModifier*/ - void 0, - parameterName, - type - ); - }, factoryDeprecation); - updateTypePredicateNode = deprecate(function updateTypePredicateNode2(node, parameterName, type) { - return factory.updateTypePredicateNode( - node, - /*assertsModifier*/ - void 0, - parameterName, - type - ); - }, factoryDeprecation); - createLiteral = deprecate(function createLiteral2(value) { - if (typeof value === "number") { - return factory.createNumericLiteral(value); + addObjectAllocatorPatcher((objectAllocator2) => { + const Identifier73 = objectAllocator2.getIdentifierConstructor(); + if (!hasProperty(Identifier73.prototype, "originalKeywordKind")) { + Object.defineProperty(Identifier73.prototype, "originalKeywordKind", { + get: deprecate(function() { + return identifierToKeywordKind(this); + }, { + name: "originalKeywordKind", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use 'identifierToKeywordKind(identifier)' instead." + }) + }); } - if (typeof value === "object" && "base10Value" in value) { - return factory.createBigIntLiteral(value); + if (!hasProperty(Identifier73.prototype, "isInJSDocNamespace")) { + Object.defineProperty(Identifier73.prototype, "isInJSDocNamespace", { + get: deprecate(function() { + return this.flags & 2048 /* IdentifierIsInJSDocNamespace */ ? true : void 0; + }, { + name: "isInJSDocNamespace", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use '.parent' or the surrounding context to determine this instead." + }) + }); } - if (typeof value === "boolean") { - return value ? factory.createTrue() : factory.createFalse(); - } - if (typeof value === "string") { - return factory.createStringLiteral( - value, - /*isSingleQuote*/ - void 0 - ); - } - return factory.createStringLiteralFromNode(value); - }, { since: "4.0", warnAfter: "4.1", message: "Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead." }); - createMethodSignature = deprecate(function createMethodSignature2(typeParameters, parameters, type, name, questionToken) { - return factory.createMethodSignature( - /*modifiers*/ - void 0, - name, - questionToken, - typeParameters, - parameters, - type - ); - }, factoryDeprecation); - updateMethodSignature = deprecate(function updateMethodSignature2(node, typeParameters, parameters, type, name, questionToken) { - return factory.updateMethodSignature(node, node.modifiers, name, questionToken, typeParameters, parameters, type); - }, factoryDeprecation); - createTypeOperatorNode = deprecate(function createTypeOperatorNode2(operatorOrType, type) { - let operator; - if (type) { - operator = operatorOrType; - } else { - type = operatorOrType; - operator = 141 /* KeyOfKeyword */; - } - return factory.createTypeOperatorNode(operator, type); - }, factoryDeprecation); - createTaggedTemplate = deprecate(function createTaggedTemplate2(tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.createTaggedTemplateExpression(tag, typeArguments, template); - }, factoryDeprecation); - updateTaggedTemplate = deprecate(function updateTaggedTemplate2(node, tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.updateTaggedTemplateExpression(node, tag, typeArguments, template); - }, factoryDeprecation); - updateBinary = deprecate(function updateBinary2(node, left, right, operator = node.operatorToken) { - if (typeof operator === "number") { - operator = operator === node.operatorToken.kind ? node.operatorToken : factory.createToken(operator); - } - return factory.updateBinaryExpression(node, left, operator, right); - }, factoryDeprecation); - createConditional = deprecate(function createConditional2(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) { - return arguments.length === 5 ? factory.createConditionalExpression(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) : arguments.length === 3 ? factory.createConditionalExpression(condition, factory.createToken(57 /* QuestionToken */), questionTokenOrWhenTrue, factory.createToken(58 /* ColonToken */), whenTrueOrWhenFalse) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createYield = deprecate(function createYield2(asteriskTokenOrExpression, expression) { - let asteriskToken; - if (expression) { - asteriskToken = asteriskTokenOrExpression; - } else { - expression = asteriskTokenOrExpression; - } - return factory.createYieldExpression(asteriskToken, expression); - }, factoryDeprecation); - createClassExpression = deprecate(function createClassExpression2(modifiers, name, typeParameters, heritageClauses, members) { - return factory.createClassExpression( - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); - }, factoryDeprecation); - updateClassExpression = deprecate(function updateClassExpression2(node, modifiers, name, typeParameters, heritageClauses, members) { - return factory.updateClassExpression( - node, - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); - }, factoryDeprecation); - createPropertySignature = deprecate(function createPropertySignature2(modifiers, name, questionToken, type, initializer) { - const node = factory.createPropertySignature(modifiers, name, questionToken, type); - node.initializer = initializer; - return node; - }, factoryDeprecation); - updatePropertySignature = deprecate(function updatePropertySignature2(node, modifiers, name, questionToken, type, initializer) { - let updated = factory.updatePropertySignature(node, modifiers, name, questionToken, type); - if (node.initializer !== initializer) { - if (updated === node) { - updated = factory.cloneNode(node); - } - updated.initializer = initializer; - } - return updated; - }, factoryDeprecation); - createExpressionWithTypeArguments = deprecate(function createExpressionWithTypeArguments2(typeArguments, expression) { - return factory.createExpressionWithTypeArguments(expression, typeArguments); - }, factoryDeprecation); - updateExpressionWithTypeArguments = deprecate(function updateExpressionWithTypeArguments2(node, typeArguments, expression) { - return factory.updateExpressionWithTypeArguments(node, expression, typeArguments); - }, factoryDeprecation); - createArrowFunction = deprecate(function createArrowFunction2(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 6 ? factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 5 ? factory.createArrowFunction( - modifiers, - typeParameters, - parameters, - type, - /*equalsGreaterThanToken*/ - void 0, - equalsGreaterThanTokenOrBody - ) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - updateArrowFunction = deprecate(function updateArrowFunction2(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 7 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 6 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, node.equalsGreaterThanToken, equalsGreaterThanTokenOrBody) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createVariableDeclaration = deprecate(function createVariableDeclaration2(name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 4 ? factory.createVariableDeclaration(name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length >= 1 && arguments.length <= 3 ? factory.createVariableDeclaration( - name, - /*exclamationToken*/ - void 0, - exclamationTokenOrType, - typeOrInitializer - ) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - updateVariableDeclaration = deprecate(function updateVariableDeclaration2(node, name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 5 ? factory.updateVariableDeclaration(node, name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length === 4 ? factory.updateVariableDeclaration(node, name, node.exclamationToken, exclamationTokenOrType, typeOrInitializer) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createImportClause = deprecate(function createImportClause2(name, namedBindings, isTypeOnly = false) { - return factory.createImportClause(isTypeOnly, name, namedBindings); - }, factoryDeprecation); - updateImportClause = deprecate(function updateImportClause2(node, name, namedBindings, isTypeOnly) { - return factory.updateImportClause(node, isTypeOnly, name, namedBindings); - }, factoryDeprecation); - createExportDeclaration = deprecate(function createExportDeclaration2(decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly = false) { - return factory.createExportDeclaration(decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier); - }, factoryDeprecation); - updateExportDeclaration = deprecate(function updateExportDeclaration2(node, decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly) { - return factory.updateExportDeclaration(node, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, node.assertClause); - }, factoryDeprecation); - createJSDocParamTag = deprecate(function createJSDocParamTag2(name, isBracketed, typeExpression, comment) { - return factory.createJSDocParameterTag( - /*tagName*/ - void 0, - name, - isBracketed, - typeExpression, - /*isNameFirst*/ - false, - comment ? factory.createNodeArray([factory.createJSDocText(comment)]) : void 0 - ); - }, factoryDeprecation); - createComma = deprecate(function createComma2(left, right) { - return factory.createComma(left, right); - }, factoryDeprecation); - createLessThan = deprecate(function createLessThan2(left, right) { - return factory.createLessThan(left, right); - }, factoryDeprecation); - createAssignment = deprecate(function createAssignment2(left, right) { - return factory.createAssignment(left, right); - }, factoryDeprecation); - createStrictEquality = deprecate(function createStrictEquality2(left, right) { - return factory.createStrictEquality(left, right); - }, factoryDeprecation); - createStrictInequality = deprecate(function createStrictInequality2(left, right) { - return factory.createStrictInequality(left, right); - }, factoryDeprecation); - createAdd = deprecate(function createAdd2(left, right) { - return factory.createAdd(left, right); - }, factoryDeprecation); - createSubtract = deprecate(function createSubtract2(left, right) { - return factory.createSubtract(left, right); - }, factoryDeprecation); - createLogicalAnd = deprecate(function createLogicalAnd2(left, right) { - return factory.createLogicalAnd(left, right); - }, factoryDeprecation); - createLogicalOr = deprecate(function createLogicalOr2(left, right) { - return factory.createLogicalOr(left, right); - }, factoryDeprecation); - createPostfixIncrement = deprecate(function createPostfixIncrement2(operand) { - return factory.createPostfixIncrement(operand); - }, factoryDeprecation); - createLogicalNot = deprecate(function createLogicalNot2(operand) { - return factory.createLogicalNot(operand); - }, factoryDeprecation); - createNode2 = deprecate(function createNode3(kind, pos = 0, end = 0) { - return setTextRangePosEnd( - kind === 308 /* SourceFile */ ? parseBaseNodeFactory.createBaseSourceFileNode(kind) : kind === 79 /* Identifier */ ? parseBaseNodeFactory.createBaseIdentifierNode(kind) : kind === 80 /* PrivateIdentifier */ ? parseBaseNodeFactory.createBasePrivateIdentifierNode(kind) : !isNodeKind(kind) ? parseBaseNodeFactory.createBaseTokenNode(kind) : parseBaseNodeFactory.createBaseNode(kind), - pos, - end - ); - }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory` method instead." }); - getMutableClone = deprecate(function getMutableClone2(node) { - const clone2 = factory.cloneNode(node); - setTextRange(clone2, node); - setParent(clone2, node.parent); - return clone2; - }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`." }); - } - }); - - // src/deprecatedCompat/4.0/renamedNodeTests.ts - var isTypeAssertion; - var init_renamedNodeTests = __esm({ - "src/deprecatedCompat/4.0/renamedNodeTests.ts"() { - "use strict"; - init_ts5(); - init_deprecate(); - isTypeAssertion = deprecate(function isTypeAssertion2(node) { - return node.kind === 213 /* TypeAssertionExpression */; - }, { - since: "4.0", - warnAfter: "4.1", - message: "Use `isTypeAssertionExpression` instead." }); } }); - // src/deprecatedCompat/4.2/renamedNodeTests.ts - var isIdentifierOrPrivateIdentifier; - var init_renamedNodeTests2 = __esm({ - "src/deprecatedCompat/4.2/renamedNodeTests.ts"() { - "use strict"; - init_ts5(); - init_deprecate(); - isIdentifierOrPrivateIdentifier = deprecate(function isIdentifierOrPrivateIdentifier2(node) { - return isMemberName(node); - }, { - since: "4.2", - warnAfter: "4.3", - message: "Use `isMemberName` instead." - }); - } - }); - - // src/deprecatedCompat/4.2/abstractConstructorTypes.ts - function patchNodeFactory(factory2) { - const { - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2 - } = factory2; - factory2.createConstructorTypeNode = buildOverload("createConstructorTypeNode").overload({ - 0(modifiers, typeParameters, parameters, type) { - return createConstructorTypeNode2(modifiers, typeParameters, parameters, type); - }, - 1(typeParameters, parameters, type) { - return createConstructorTypeNode2( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); - } - }).bind({ - 0: (args) => args.length === 4, - 1: (args) => args.length === 3 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateConstructorTypeNode = buildOverload("updateConstructorTypeNode").overload({ - 0(node, modifiers, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, modifiers, typeParameters, parameters, type); - }, - 1(node, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, node.modifiers, typeParameters, parameters, type); - } - }).bind({ - 0: (args) => args.length === 5, - 1: (args) => args.length === 4 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - } - var init_abstractConstructorTypes = __esm({ - "src/deprecatedCompat/4.2/abstractConstructorTypes.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory); - patchNodeFactory(factory); - } - }); - - // src/deprecatedCompat/4.6/importTypeAssertions.ts - function patchNodeFactory2(factory2) { - const { - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2 - } = factory2; - factory2.createImportTypeNode = buildOverload("createImportTypeNode").overload({ - 0(argument, assertions, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(argument, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2( - argument, - /*assertions*/ - void 0, - qualifier, - typeArguments, - isTypeOf - ); - } - }).bind({ - 0: ([, assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); - factory2.updateImportTypeNode = buildOverload("updateImportTypeNode").overload({ - 0(node, argument, assertions, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(node, argument, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, node.assertions, qualifier, typeArguments, isTypeOf); - } - }).bind({ - 0: ([, , assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, , qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); - } - var init_importTypeAssertions = __esm({ - "src/deprecatedCompat/4.6/importTypeAssertions.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory2); - patchNodeFactory2(factory); - } - }); - - // src/deprecatedCompat/4.7/typeParameterModifiers.ts - function patchNodeFactory3(factory2) { - const { - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2 - } = factory2; - factory2.createTypeParameterDeclaration = buildOverload("createTypeParameterDeclaration").overload({ - 0(modifiers, name, constraint, defaultType) { - return createTypeParameterDeclaration2(modifiers, name, constraint, defaultType); - }, - 1(name, constraint, defaultType) { - return createTypeParameterDeclaration2( - /*modifiers*/ - void 0, - name, - constraint, - defaultType - ); - } - }).bind({ - 0: ([modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateTypeParameterDeclaration = buildOverload("updateTypeParameterDeclaration").overload({ - 0(node, modifiers, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType); - }, - 1(node, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, node.modifiers, name, constraint, defaultType); - } - }).bind({ - 0: ([, modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([, name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - } - var init_typeParameterModifiers = __esm({ - "src/deprecatedCompat/4.7/typeParameterModifiers.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory3); - patchNodeFactory3(factory); - } - }); - - // src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts - function patchNodeFactory4(factory2) { - const { - createParameterDeclaration, - updateParameterDeclaration, - createPropertyDeclaration, - updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodDeclaration, - updateMethodDeclaration, - createConstructorDeclaration, - updateConstructorDeclaration, - createGetAccessorDeclaration, - updateGetAccessorDeclaration, - createSetAccessorDeclaration, - updateSetAccessorDeclaration, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, - createClassStaticBlockDeclaration, - updateClassStaticBlockDeclaration, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3 - } = factory2; - factory2.createParameterDeclaration = buildOverload("createParameterDeclaration").overload({ - 0(modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateParameterDeclaration = buildOverload("updateParameterDeclaration").overload({ - 0(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(node, decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, , dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createPropertyDeclaration = buildOverload("createPropertyDeclaration").overload({ - 0(modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updatePropertyDeclaration = buildOverload("updatePropertyDeclaration").overload({ - 0(node, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(node, decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, , name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createMethodDeclaration = buildOverload("createMethodDeclaration").overload({ - 0(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateMethodDeclaration = buildOverload("updateMethodDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(node, decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createConstructorDeclaration = buildOverload("createConstructorDeclaration").overload({ - 0(modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - }, - 1(_decorators, modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - } - }).bind({ - 0: ([modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateConstructorDeclaration = buildOverload("updateConstructorDeclaration").overload({ - 0(node, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - }, - 1(node, _decorators, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - } - }).bind({ - 0: ([, modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createGetAccessorDeclaration = buildOverload("createGetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(modifiers, name, parameters, type, body); - }, - 1(decorators, modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateGetAccessorDeclaration = buildOverload("updateGetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, modifiers, name, parameters, type, body); - }, - 1(node, decorators, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, , name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createSetAccessorDeclaration = buildOverload("createSetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, body) { - return createSetAccessorDeclaration(modifiers, name, parameters, body); - }, - 1(decorators, modifiers, name, parameters, body) { - return createSetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateSetAccessorDeclaration = buildOverload("updateSetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, modifiers, name, parameters, body); - }, - 1(node, decorators, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, , name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, , modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createIndexSignature = buildOverload("createIndexSignature").overload({ - 0(modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - }, - 1(_decorators, modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - } - }).bind({ - 0: ([modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateIndexSignature = buildOverload("updateIndexSignature").overload({ - 0(node, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - }, - 1(node, _decorators, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - } - }).bind({ - 0: ([, modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassStaticBlockDeclaration = buildOverload("createClassStaticBlockDeclaration").overload({ - 0(body) { - return createClassStaticBlockDeclaration(body); - }, - 1(_decorators, _modifiers, body) { - return createClassStaticBlockDeclaration(body); - } - }).bind({ - 0: ([body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.updateClassStaticBlockDeclaration = buildOverload("updateClassStaticBlockDeclaration").overload({ - 0(node, body) { - return updateClassStaticBlockDeclaration(node, body); - }, - 1(node, _decorators, _modifiers, body) { - return updateClassStaticBlockDeclaration(node, body); - } - }).bind({ - 0: ([, body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.createClassExpression = buildOverload("createClassExpression").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateClassExpression = buildOverload("updateClassExpression").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createFunctionDeclaration = buildOverload("createFunctionDeclaration").overload({ - 0(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(_decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateFunctionDeclaration = buildOverload("updateFunctionDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(node, _decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassDeclaration = buildOverload("createClassDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: () => true - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateClassDeclaration = buildOverload("updateClassDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createInterfaceDeclaration = buildOverload("createInterfaceDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(_decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateInterfaceDeclaration = buildOverload("updateInterfaceDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, _decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([, decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createTypeAliasDeclaration = buildOverload("createTypeAliasDeclaration").overload({ - 0(modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - }, - 1(_decorators, modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateTypeAliasDeclaration = buildOverload("updateTypeAliasDeclaration").overload({ - 0(node, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - }, - 1(node, _decorators, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createEnumDeclaration = buildOverload("createEnumDeclaration").overload({ - 0(modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - }, - 1(_decorators, modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - } - }).bind({ - 0: ([modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateEnumDeclaration = buildOverload("updateEnumDeclaration").overload({ - 0(node, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - }, - 1(node, _decorators, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - } - }).bind({ - 0: ([, modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([, decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createModuleDeclaration = buildOverload("createModuleDeclaration").overload({ - 0(modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - }, - 1(_decorators, modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - } - }).bind({ - 0: ([modifiers, name, body, flags, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name !== void 0 && !isArray(name)) && (body === void 0 || isModuleBody(body)) && (flags === void 0 || typeof flags === "number"), - 1: ([decorators, modifiers, name, body, flags]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || typeof body === "object") && (flags === void 0 || typeof flags === "number") - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateModuleDeclaration = buildOverload("updateModuleDeclaration").overload({ - 0(node, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - }, - 1(node, _decorators, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - } - }).bind({ - 0: ([, modifiers, name, body, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (body === void 0 || isModuleBody(body)), - 1: ([, decorators, modifiers, name, body]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || isModuleBody(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportEqualsDeclaration = buildOverload("createImportEqualsDeclaration").overload({ - 0(modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - }, - 1(_decorators, modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportEqualsDeclaration = buildOverload("updateImportEqualsDeclaration").overload({ - 0(node, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - }, - 1(node, _decorators, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([, decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportDeclaration = buildOverload("createImportDeclaration").overload({ - 0(modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportDeclaration = buildOverload("updateImportDeclaration").overload({ - 0(node, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportAssignment = buildOverload("createExportAssignment").overload({ - 0(modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - }, - 1(_decorators, modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - } - }).bind({ - 0: ([modifiers, isExportEquals, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && typeof expression === "object", - 1: ([decorators, modifiers, isExportEquals, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportAssignment = buildOverload("updateExportAssignment").overload({ - 0(node, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - }, - 1(node, _decorators, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - } - }).bind({ - 0: ([, modifiers, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (expression !== void 0 && !isArray(expression)), - 1: ([, decorators, modifiers, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportDeclaration = buildOverload("createExportDeclaration").overload({ - 0(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportDeclaration = buildOverload("updateExportDeclaration").overload({ - 0(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - } - var MUST_MERGE, DISALLOW_DECORATORS, DISALLOW_DECORATORS_AND_MODIFIERS; - var init_mergeDecoratorsAndModifiers = __esm({ - "src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts"() { - "use strict"; - init_ts5(); - MUST_MERGE = { since: "4.8", warnAfter: "4.9.0-0", message: "Decorators have been combined with modifiers. Callers should switch to an overload that does not accept a 'decorators' parameter." }; - DISALLOW_DECORATORS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators are no longer supported for this function. Callers should switch to an overload that does not accept a 'decorators' parameter.` }; - DISALLOW_DECORATORS_AND_MODIFIERS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators and modifiers are no longer supported for this function. Callers should switch to an overload that does not accept the 'decorators' and 'modifiers' parameters.` }; - addNodeFactoryPatcher(patchNodeFactory4); - patchNodeFactory4(factory); - } - }); - // src/deprecatedCompat/_namespaces/ts.ts var init_ts5 = __esm({ "src/deprecatedCompat/_namespaces/ts.ts"() { "use strict"; init_ts2(); init_deprecations(); - init_nodeFactoryTopLevelExports(); - init_renamedNodeTests(); - init_renamedNodeTests2(); - init_abstractConstructorTypes(); - init_importTypeAssertions(); - init_typeParameterModifiers(); - init_mergeDecoratorsAndModifiers(); + init_identifierProperties(); } }); @@ -167816,13 +170212,8 @@ ${options.prefix}` : "\n" : options.prefix this.session = opts.session; if (opts.serverMode !== void 0) { this.serverMode = opts.serverMode; - this.syntaxOnly = this.serverMode === 2 /* Syntactic */; - } else if (opts.syntaxOnly) { - this.serverMode = 2 /* Syntactic */; - this.syntaxOnly = true; } else { this.serverMode = 0 /* Semantic */; - this.syntaxOnly = false; } if (this.host.realpath) { this.realpathToScriptInfos = createMultiMap(); @@ -170361,7 +172752,7 @@ Dynamic files must always be opened with service's current directory or service excludedFiles.push(normalizedNames[i]); } else { let exclude = false; - if (typeAcquisition.enable || typeAcquisition.enableAutoDiscovery) { + if (typeAcquisition.enable) { const baseName = getBaseFileName(toFileNameLowerCase(normalizedNames[i])); if (fileExtensionIs(baseName, "js")) { const inferredTypingName = removeFileExtension(baseName); @@ -170390,10 +172781,6 @@ Dynamic files must always be opened with service's current directory or service return excludedFiles; } openExternalProject(proj) { - if (proj.typingOptions && !proj.typeAcquisition) { - const typeAcquisition = convertEnableAutoDiscoveryToEnable(proj.typingOptions); - proj.typeAcquisition = typeAcquisition; - } proj.typeAcquisition = proj.typeAcquisition || {}; proj.typeAcquisition.include = proj.typeAcquisition.include || []; proj.typeAcquisition.exclude = proj.typeAcquisition.exclude || []; @@ -171249,12 +173636,13 @@ ${json}${newLine}`; "use strict"; init_ts6(); init_ts_server2(); + init_protocol(); nullCancellationToken = { isCancellationRequested: () => false, setRequest: () => void 0, resetRequest: () => void 0 }; - CommandNames = ts_server_protocol_exports.CommandTypes; + CommandNames = CommandTypes; MultistepOperation = class { constructor(operationHost) { this.operationHost = operationHost; @@ -171331,96 +173719,97 @@ ${json}${newLine}`; } }; invalidPartialSemanticModeCommands = [ - CommandNames.OpenExternalProject, - CommandNames.OpenExternalProjects, - CommandNames.CloseExternalProject, - CommandNames.SynchronizeProjectList, - CommandNames.EmitOutput, - CommandNames.CompileOnSaveAffectedFileList, - CommandNames.CompileOnSaveEmitFile, - CommandNames.CompilerOptionsDiagnosticsFull, - CommandNames.EncodedSemanticClassificationsFull, - CommandNames.SemanticDiagnosticsSync, - CommandNames.SuggestionDiagnosticsSync, - CommandNames.GeterrForProject, - CommandNames.Reload, - CommandNames.ReloadProjects, - CommandNames.GetCodeFixes, - CommandNames.GetCodeFixesFull, - CommandNames.GetCombinedCodeFix, - CommandNames.GetCombinedCodeFixFull, - CommandNames.ApplyCodeActionCommand, - CommandNames.GetSupportedCodeFixes, - CommandNames.GetApplicableRefactors, - CommandNames.GetEditsForRefactor, - CommandNames.GetEditsForRefactorFull, - CommandNames.OrganizeImports, - CommandNames.OrganizeImportsFull, - CommandNames.GetEditsForFileRename, - CommandNames.GetEditsForFileRenameFull, - CommandNames.PrepareCallHierarchy, - CommandNames.ProvideCallHierarchyIncomingCalls, - CommandNames.ProvideCallHierarchyOutgoingCalls + "openExternalProject" /* OpenExternalProject */, + "openExternalProjects" /* OpenExternalProjects */, + "closeExternalProject" /* CloseExternalProject */, + "synchronizeProjectList" /* SynchronizeProjectList */, + "emit-output" /* EmitOutput */, + "compileOnSaveAffectedFileList" /* CompileOnSaveAffectedFileList */, + "compileOnSaveEmitFile" /* CompileOnSaveEmitFile */, + "compilerOptionsDiagnostics-full" /* CompilerOptionsDiagnosticsFull */, + "encodedSemanticClassifications-full" /* EncodedSemanticClassificationsFull */, + "semanticDiagnosticsSync" /* SemanticDiagnosticsSync */, + "suggestionDiagnosticsSync" /* SuggestionDiagnosticsSync */, + "geterrForProject" /* GeterrForProject */, + "reload" /* Reload */, + "reloadProjects" /* ReloadProjects */, + "getCodeFixes" /* GetCodeFixes */, + "getCodeFixes-full" /* GetCodeFixesFull */, + "getCombinedCodeFix" /* GetCombinedCodeFix */, + "getCombinedCodeFix-full" /* GetCombinedCodeFixFull */, + "applyCodeActionCommand" /* ApplyCodeActionCommand */, + "getSupportedCodeFixes" /* GetSupportedCodeFixes */, + "getApplicableRefactors" /* GetApplicableRefactors */, + "getEditsForRefactor" /* GetEditsForRefactor */, + "getEditsForRefactor-full" /* GetEditsForRefactorFull */, + "organizeImports" /* OrganizeImports */, + "organizeImports-full" /* OrganizeImportsFull */, + "getEditsForFileRename" /* GetEditsForFileRename */, + "getEditsForFileRename-full" /* GetEditsForFileRenameFull */, + "prepareCallHierarchy" /* PrepareCallHierarchy */, + "provideCallHierarchyIncomingCalls" /* ProvideCallHierarchyIncomingCalls */, + "provideCallHierarchyOutgoingCalls" /* ProvideCallHierarchyOutgoingCalls */ ]; invalidSyntacticModeCommands = [ ...invalidPartialSemanticModeCommands, - CommandNames.Definition, - CommandNames.DefinitionFull, - CommandNames.DefinitionAndBoundSpan, - CommandNames.DefinitionAndBoundSpanFull, - CommandNames.TypeDefinition, - CommandNames.Implementation, - CommandNames.ImplementationFull, - CommandNames.References, - CommandNames.ReferencesFull, - CommandNames.Rename, - CommandNames.RenameLocationsFull, - CommandNames.RenameInfoFull, - CommandNames.Quickinfo, - CommandNames.QuickinfoFull, - CommandNames.CompletionInfo, - CommandNames.Completions, - CommandNames.CompletionsFull, - CommandNames.CompletionDetails, - CommandNames.CompletionDetailsFull, - CommandNames.SignatureHelp, - CommandNames.SignatureHelpFull, - CommandNames.Navto, - CommandNames.NavtoFull, - CommandNames.Occurrences, - CommandNames.DocumentHighlights, - CommandNames.DocumentHighlightsFull + "definition" /* Definition */, + "definition-full" /* DefinitionFull */, + "definitionAndBoundSpan" /* DefinitionAndBoundSpan */, + "definitionAndBoundSpan-full" /* DefinitionAndBoundSpanFull */, + "typeDefinition" /* TypeDefinition */, + "implementation" /* Implementation */, + "implementation-full" /* ImplementationFull */, + "references" /* References */, + "references-full" /* ReferencesFull */, + "rename" /* Rename */, + "renameLocations-full" /* RenameLocationsFull */, + "rename-full" /* RenameInfoFull */, + "quickinfo" /* Quickinfo */, + "quickinfo-full" /* QuickinfoFull */, + "completionInfo" /* CompletionInfo */, + "completions" /* Completions */, + "completions-full" /* CompletionsFull */, + "completionEntryDetails" /* CompletionDetails */, + "completionEntryDetails-full" /* CompletionDetailsFull */, + "signatureHelp" /* SignatureHelp */, + "signatureHelp-full" /* SignatureHelpFull */, + "navto" /* Navto */, + "navto-full" /* NavtoFull */, + "occurrences" /* Occurrences */, + "documentHighlights" /* DocumentHighlights */, + "documentHighlights-full" /* DocumentHighlightsFull */ ]; Session3 = class { constructor(opts) { this.changeSeq = 0; this.handlers = new Map(Object.entries({ - [CommandNames.Status]: () => { + // TODO(jakebailey): correctly type the handlers + ["status" /* Status */]: () => { const response = { version }; return this.requiredResponse(response); }, - [CommandNames.OpenExternalProject]: (request) => { + ["openExternalProject" /* OpenExternalProject */]: (request) => { this.projectService.openExternalProject(request.arguments); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.OpenExternalProjects]: (request) => { + ["openExternalProjects" /* OpenExternalProjects */]: (request) => { this.projectService.openExternalProjects(request.arguments.projects); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.CloseExternalProject]: (request) => { + ["closeExternalProject" /* CloseExternalProject */]: (request) => { this.projectService.closeExternalProject(request.arguments.projectFileName); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.SynchronizeProjectList]: (request) => { + ["synchronizeProjectList" /* SynchronizeProjectList */]: (request) => { const result = this.projectService.synchronizeProjectList(request.arguments.knownProjects, request.arguments.includeProjectReferenceRedirectInfo); if (!result.some((p) => p.projectErrors && p.projectErrors.length !== 0)) { return this.requiredResponse(result); @@ -171442,7 +173831,7 @@ ${json}${newLine}`; }); return this.requiredResponse(converted); }, - [CommandNames.UpdateOpen]: (request) => { + ["updateOpen" /* UpdateOpen */]: (request) => { this.changeSeq++; this.projectService.applyChangesInOpenFiles( request.arguments.openFiles && mapIterator(request.arguments.openFiles, (file) => ({ @@ -171467,7 +173856,7 @@ ${json}${newLine}`; true ); }, - [CommandNames.ApplyChangedToOpenFiles]: (request) => { + ["applyChangedToOpenFiles" /* ApplyChangedToOpenFiles */]: (request) => { this.changeSeq++; this.projectService.applyChangesInOpenFiles( request.arguments.openFiles, @@ -171483,93 +173872,93 @@ ${json}${newLine}`; true ); }, - [CommandNames.Exit]: () => { + ["exit" /* Exit */]: () => { this.exit(); return this.notRequired(); }, - [CommandNames.Definition]: (request) => { + ["definition" /* Definition */]: (request) => { return this.requiredResponse(this.getDefinition( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DefinitionFull]: (request) => { + ["definition-full" /* DefinitionFull */]: (request) => { return this.requiredResponse(this.getDefinition( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.DefinitionAndBoundSpan]: (request) => { + ["definitionAndBoundSpan" /* DefinitionAndBoundSpan */]: (request) => { return this.requiredResponse(this.getDefinitionAndBoundSpan( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DefinitionAndBoundSpanFull]: (request) => { + ["definitionAndBoundSpan-full" /* DefinitionAndBoundSpanFull */]: (request) => { return this.requiredResponse(this.getDefinitionAndBoundSpan( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.FindSourceDefinition]: (request) => { + ["findSourceDefinition" /* FindSourceDefinition */]: (request) => { return this.requiredResponse(this.findSourceDefinition(request.arguments)); }, - [CommandNames.EmitOutput]: (request) => { + ["emit-output" /* EmitOutput */]: (request) => { return this.requiredResponse(this.getEmitOutput(request.arguments)); }, - [CommandNames.TypeDefinition]: (request) => { + ["typeDefinition" /* TypeDefinition */]: (request) => { return this.requiredResponse(this.getTypeDefinition(request.arguments)); }, - [CommandNames.Implementation]: (request) => { + ["implementation" /* Implementation */]: (request) => { return this.requiredResponse(this.getImplementation( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ImplementationFull]: (request) => { + ["implementation-full" /* ImplementationFull */]: (request) => { return this.requiredResponse(this.getImplementation( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.References]: (request) => { + ["references" /* References */]: (request) => { return this.requiredResponse(this.getReferences( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ReferencesFull]: (request) => { + ["references-full" /* ReferencesFull */]: (request) => { return this.requiredResponse(this.getReferences( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Rename]: (request) => { + ["rename" /* Rename */]: (request) => { return this.requiredResponse(this.getRenameLocations( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.RenameLocationsFull]: (request) => { + ["renameLocations-full" /* RenameLocationsFull */]: (request) => { return this.requiredResponse(this.getRenameLocations( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.RenameInfoFull]: (request) => { + ["rename-full" /* RenameInfoFull */]: (request) => { return this.requiredResponse(this.getRenameInfo(request.arguments)); }, - [CommandNames.Open]: (request) => { + ["open" /* Open */]: (request) => { this.openClientFile( toNormalizedPath(request.arguments.file), request.arguments.fileContent, @@ -171579,451 +173968,451 @@ ${json}${newLine}`; ); return this.notRequired(); }, - [CommandNames.Quickinfo]: (request) => { + ["quickinfo" /* Quickinfo */]: (request) => { return this.requiredResponse(this.getQuickInfoWorker( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.QuickinfoFull]: (request) => { + ["quickinfo-full" /* QuickinfoFull */]: (request) => { return this.requiredResponse(this.getQuickInfoWorker( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetOutliningSpans]: (request) => { + ["getOutliningSpans" /* GetOutliningSpans */]: (request) => { return this.requiredResponse(this.getOutliningSpans( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetOutliningSpansFull]: (request) => { + ["outliningSpans" /* GetOutliningSpansFull */]: (request) => { return this.requiredResponse(this.getOutliningSpans( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.TodoComments]: (request) => { + ["todoComments" /* TodoComments */]: (request) => { return this.requiredResponse(this.getTodoComments(request.arguments)); }, - [CommandNames.Indentation]: (request) => { + ["indentation" /* Indentation */]: (request) => { return this.requiredResponse(this.getIndentation(request.arguments)); }, - [CommandNames.NameOrDottedNameSpan]: (request) => { + ["nameOrDottedNameSpan" /* NameOrDottedNameSpan */]: (request) => { return this.requiredResponse(this.getNameOrDottedNameSpan(request.arguments)); }, - [CommandNames.BreakpointStatement]: (request) => { + ["breakpointStatement" /* BreakpointStatement */]: (request) => { return this.requiredResponse(this.getBreakpointStatement(request.arguments)); }, - [CommandNames.BraceCompletion]: (request) => { + ["braceCompletion" /* BraceCompletion */]: (request) => { return this.requiredResponse(this.isValidBraceCompletion(request.arguments)); }, - [CommandNames.DocCommentTemplate]: (request) => { + ["docCommentTemplate" /* DocCommentTemplate */]: (request) => { return this.requiredResponse(this.getDocCommentTemplate(request.arguments)); }, - [CommandNames.GetSpanOfEnclosingComment]: (request) => { + ["getSpanOfEnclosingComment" /* GetSpanOfEnclosingComment */]: (request) => { return this.requiredResponse(this.getSpanOfEnclosingComment(request.arguments)); }, - [CommandNames.FileReferences]: (request) => { + ["fileReferences" /* FileReferences */]: (request) => { return this.requiredResponse(this.getFileReferences( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.FileReferencesFull]: (request) => { + ["fileReferences-full" /* FileReferencesFull */]: (request) => { return this.requiredResponse(this.getFileReferences( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Format]: (request) => { + ["format" /* Format */]: (request) => { return this.requiredResponse(this.getFormattingEditsForRange(request.arguments)); }, - [CommandNames.Formatonkey]: (request) => { + ["formatonkey" /* Formatonkey */]: (request) => { return this.requiredResponse(this.getFormattingEditsAfterKeystroke(request.arguments)); }, - [CommandNames.FormatFull]: (request) => { + ["format-full" /* FormatFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsForDocumentFull(request.arguments)); }, - [CommandNames.FormatonkeyFull]: (request) => { + ["formatonkey-full" /* FormatonkeyFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsAfterKeystrokeFull(request.arguments)); }, - [CommandNames.FormatRangeFull]: (request) => { + ["formatRange-full" /* FormatRangeFull */]: (request) => { return this.requiredResponse(this.getFormattingEditsForRangeFull(request.arguments)); }, - [CommandNames.CompletionInfo]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.CompletionInfo)); + ["completionInfo" /* CompletionInfo */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completionInfo" /* CompletionInfo */)); }, - [CommandNames.Completions]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.Completions)); + ["completions" /* Completions */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completions" /* Completions */)); }, - [CommandNames.CompletionsFull]: (request) => { - return this.requiredResponse(this.getCompletions(request.arguments, CommandNames.CompletionsFull)); + ["completions-full" /* CompletionsFull */]: (request) => { + return this.requiredResponse(this.getCompletions(request.arguments, "completions-full" /* CompletionsFull */)); }, - [CommandNames.CompletionDetails]: (request) => { + ["completionEntryDetails" /* CompletionDetails */]: (request) => { return this.requiredResponse(this.getCompletionEntryDetails( request.arguments, /*fullResult*/ false )); }, - [CommandNames.CompletionDetailsFull]: (request) => { + ["completionEntryDetails-full" /* CompletionDetailsFull */]: (request) => { return this.requiredResponse(this.getCompletionEntryDetails( request.arguments, /*fullResult*/ true )); }, - [CommandNames.CompileOnSaveAffectedFileList]: (request) => { + ["compileOnSaveAffectedFileList" /* CompileOnSaveAffectedFileList */]: (request) => { return this.requiredResponse(this.getCompileOnSaveAffectedFileList(request.arguments)); }, - [CommandNames.CompileOnSaveEmitFile]: (request) => { + ["compileOnSaveEmitFile" /* CompileOnSaveEmitFile */]: (request) => { return this.requiredResponse(this.emitFile(request.arguments)); }, - [CommandNames.SignatureHelp]: (request) => { + ["signatureHelp" /* SignatureHelp */]: (request) => { return this.requiredResponse(this.getSignatureHelpItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.SignatureHelpFull]: (request) => { + ["signatureHelp-full" /* SignatureHelpFull */]: (request) => { return this.requiredResponse(this.getSignatureHelpItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CompilerOptionsDiagnosticsFull]: (request) => { + ["compilerOptionsDiagnostics-full" /* CompilerOptionsDiagnosticsFull */]: (request) => { return this.requiredResponse(this.getCompilerOptionsDiagnostics(request.arguments)); }, - [CommandNames.EncodedSyntacticClassificationsFull]: (request) => { + ["encodedSyntacticClassifications-full" /* EncodedSyntacticClassificationsFull */]: (request) => { return this.requiredResponse(this.getEncodedSyntacticClassifications(request.arguments)); }, - [CommandNames.EncodedSemanticClassificationsFull]: (request) => { + ["encodedSemanticClassifications-full" /* EncodedSemanticClassificationsFull */]: (request) => { return this.requiredResponse(this.getEncodedSemanticClassifications(request.arguments)); }, - [CommandNames.Cleanup]: () => { + ["cleanup" /* Cleanup */]: () => { this.cleanup(); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.SemanticDiagnosticsSync]: (request) => { + ["semanticDiagnosticsSync" /* SemanticDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSemanticDiagnosticsSync(request.arguments)); }, - [CommandNames.SyntacticDiagnosticsSync]: (request) => { + ["syntacticDiagnosticsSync" /* SyntacticDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSyntacticDiagnosticsSync(request.arguments)); }, - [CommandNames.SuggestionDiagnosticsSync]: (request) => { + ["suggestionDiagnosticsSync" /* SuggestionDiagnosticsSync */]: (request) => { return this.requiredResponse(this.getSuggestionDiagnosticsSync(request.arguments)); }, - [CommandNames.Geterr]: (request) => { + ["geterr" /* Geterr */]: (request) => { this.errorCheck.startNew((next) => this.getDiagnostics(next, request.arguments.delay, request.arguments.files)); return this.notRequired(); }, - [CommandNames.GeterrForProject]: (request) => { + ["geterrForProject" /* GeterrForProject */]: (request) => { this.errorCheck.startNew((next) => this.getDiagnosticsForProject(next, request.arguments.delay, request.arguments.file)); return this.notRequired(); }, - [CommandNames.Change]: (request) => { + ["change" /* Change */]: (request) => { this.change(request.arguments); return this.notRequired(); }, - [CommandNames.Configure]: (request) => { + ["configure" /* Configure */]: (request) => { this.projectService.setHostConfiguration(request.arguments); this.doOutput( /*info*/ void 0, - CommandNames.Configure, + "configure" /* Configure */, request.seq, /*success*/ true ); return this.notRequired(); }, - [CommandNames.Reload]: (request) => { + ["reload" /* Reload */]: (request) => { this.reload(request.arguments, request.seq); return this.requiredResponse({ reloadFinished: true }); }, - [CommandNames.Saveto]: (request) => { + ["saveto" /* Saveto */]: (request) => { const savetoArgs = request.arguments; this.saveToTmp(savetoArgs.file, savetoArgs.tmpfile); return this.notRequired(); }, - [CommandNames.Close]: (request) => { + ["close" /* Close */]: (request) => { const closeArgs = request.arguments; this.closeClientFile(closeArgs.file); return this.notRequired(); }, - [CommandNames.Navto]: (request) => { + ["navto" /* Navto */]: (request) => { return this.requiredResponse(this.getNavigateToItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavtoFull]: (request) => { + ["navto-full" /* NavtoFull */]: (request) => { return this.requiredResponse(this.getNavigateToItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Brace]: (request) => { + ["brace" /* Brace */]: (request) => { return this.requiredResponse(this.getBraceMatching( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.BraceFull]: (request) => { + ["brace-full" /* BraceFull */]: (request) => { return this.requiredResponse(this.getBraceMatching( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.NavBar]: (request) => { + ["navbar" /* NavBar */]: (request) => { return this.requiredResponse(this.getNavigationBarItems( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavBarFull]: (request) => { + ["navbar-full" /* NavBarFull */]: (request) => { return this.requiredResponse(this.getNavigationBarItems( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.NavTree]: (request) => { + ["navtree" /* NavTree */]: (request) => { return this.requiredResponse(this.getNavigationTree( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.NavTreeFull]: (request) => { + ["navtree-full" /* NavTreeFull */]: (request) => { return this.requiredResponse(this.getNavigationTree( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.Occurrences]: (request) => { + ["occurrences" /* Occurrences */]: (request) => { return this.requiredResponse(this.getOccurrences(request.arguments)); }, - [CommandNames.DocumentHighlights]: (request) => { + ["documentHighlights" /* DocumentHighlights */]: (request) => { return this.requiredResponse(this.getDocumentHighlights( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.DocumentHighlightsFull]: (request) => { + ["documentHighlights-full" /* DocumentHighlightsFull */]: (request) => { return this.requiredResponse(this.getDocumentHighlights( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CompilerOptionsForInferredProjects]: (request) => { + ["compilerOptionsForInferredProjects" /* CompilerOptionsForInferredProjects */]: (request) => { this.setCompilerOptionsForInferredProjects(request.arguments); return this.requiredResponse( /*response*/ true ); }, - [CommandNames.ProjectInfo]: (request) => { + ["projectInfo" /* ProjectInfo */]: (request) => { return this.requiredResponse(this.getProjectInfo(request.arguments)); }, - [CommandNames.ReloadProjects]: () => { + ["reloadProjects" /* ReloadProjects */]: () => { this.projectService.reloadProjects(); return this.notRequired(); }, - [CommandNames.JsxClosingTag]: (request) => { + ["jsxClosingTag" /* JsxClosingTag */]: (request) => { return this.requiredResponse(this.getJsxClosingTag(request.arguments)); }, - [CommandNames.GetCodeFixes]: (request) => { + ["getCodeFixes" /* GetCodeFixes */]: (request) => { return this.requiredResponse(this.getCodeFixes( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetCodeFixesFull]: (request) => { + ["getCodeFixes-full" /* GetCodeFixesFull */]: (request) => { return this.requiredResponse(this.getCodeFixes( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetCombinedCodeFix]: (request) => { + ["getCombinedCodeFix" /* GetCombinedCodeFix */]: (request) => { return this.requiredResponse(this.getCombinedCodeFix( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetCombinedCodeFixFull]: (request) => { + ["getCombinedCodeFix-full" /* GetCombinedCodeFixFull */]: (request) => { return this.requiredResponse(this.getCombinedCodeFix( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ApplyCodeActionCommand]: (request) => { + ["applyCodeActionCommand" /* ApplyCodeActionCommand */]: (request) => { return this.requiredResponse(this.applyCodeActionCommand(request.arguments)); }, - [CommandNames.GetSupportedCodeFixes]: (request) => { + ["getSupportedCodeFixes" /* GetSupportedCodeFixes */]: (request) => { return this.requiredResponse(this.getSupportedCodeFixes(request.arguments)); }, - [CommandNames.GetApplicableRefactors]: (request) => { + ["getApplicableRefactors" /* GetApplicableRefactors */]: (request) => { return this.requiredResponse(this.getApplicableRefactors(request.arguments)); }, - [CommandNames.GetEditsForRefactor]: (request) => { + ["getEditsForRefactor" /* GetEditsForRefactor */]: (request) => { return this.requiredResponse(this.getEditsForRefactor( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetEditsForRefactorFull]: (request) => { + ["getEditsForRefactor-full" /* GetEditsForRefactorFull */]: (request) => { return this.requiredResponse(this.getEditsForRefactor( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.OrganizeImports]: (request) => { + ["organizeImports" /* OrganizeImports */]: (request) => { return this.requiredResponse(this.organizeImports( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.OrganizeImportsFull]: (request) => { + ["organizeImports-full" /* OrganizeImportsFull */]: (request) => { return this.requiredResponse(this.organizeImports( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.GetEditsForFileRename]: (request) => { + ["getEditsForFileRename" /* GetEditsForFileRename */]: (request) => { return this.requiredResponse(this.getEditsForFileRename( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.GetEditsForFileRenameFull]: (request) => { + ["getEditsForFileRename-full" /* GetEditsForFileRenameFull */]: (request) => { return this.requiredResponse(this.getEditsForFileRename( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ConfigurePlugin]: (request) => { + ["configurePlugin" /* ConfigurePlugin */]: (request) => { this.configurePlugin(request.arguments); this.doOutput( /*info*/ void 0, - CommandNames.ConfigurePlugin, + "configurePlugin" /* ConfigurePlugin */, request.seq, /*success*/ true ); return this.notRequired(); }, - [CommandNames.SelectionRange]: (request) => { + ["selectionRange" /* SelectionRange */]: (request) => { return this.requiredResponse(this.getSmartSelectionRange( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.SelectionRangeFull]: (request) => { + ["selectionRange-full" /* SelectionRangeFull */]: (request) => { return this.requiredResponse(this.getSmartSelectionRange( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.PrepareCallHierarchy]: (request) => { + ["prepareCallHierarchy" /* PrepareCallHierarchy */]: (request) => { return this.requiredResponse(this.prepareCallHierarchy(request.arguments)); }, - [CommandNames.ProvideCallHierarchyIncomingCalls]: (request) => { + ["provideCallHierarchyIncomingCalls" /* ProvideCallHierarchyIncomingCalls */]: (request) => { return this.requiredResponse(this.provideCallHierarchyIncomingCalls(request.arguments)); }, - [CommandNames.ProvideCallHierarchyOutgoingCalls]: (request) => { + ["provideCallHierarchyOutgoingCalls" /* ProvideCallHierarchyOutgoingCalls */]: (request) => { return this.requiredResponse(this.provideCallHierarchyOutgoingCalls(request.arguments)); }, - [CommandNames.ToggleLineComment]: (request) => { + ["toggleLineComment" /* ToggleLineComment */]: (request) => { return this.requiredResponse(this.toggleLineComment( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ToggleLineCommentFull]: (request) => { + ["toggleLineComment-full" /* ToggleLineCommentFull */]: (request) => { return this.requiredResponse(this.toggleLineComment( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ToggleMultilineComment]: (request) => { + ["toggleMultilineComment" /* ToggleMultilineComment */]: (request) => { return this.requiredResponse(this.toggleMultilineComment( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.ToggleMultilineCommentFull]: (request) => { + ["toggleMultilineComment-full" /* ToggleMultilineCommentFull */]: (request) => { return this.requiredResponse(this.toggleMultilineComment( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.CommentSelection]: (request) => { + ["commentSelection" /* CommentSelection */]: (request) => { return this.requiredResponse(this.commentSelection( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.CommentSelectionFull]: (request) => { + ["commentSelection-full" /* CommentSelectionFull */]: (request) => { return this.requiredResponse(this.commentSelection( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.UncommentSelection]: (request) => { + ["uncommentSelection" /* UncommentSelection */]: (request) => { return this.requiredResponse(this.uncommentSelection( request.arguments, /*simplifiedResult*/ true )); }, - [CommandNames.UncommentSelectionFull]: (request) => { + ["uncommentSelection-full" /* UncommentSelectionFull */]: (request) => { return this.requiredResponse(this.uncommentSelection( request.arguments, /*simplifiedResult*/ false )); }, - [CommandNames.ProvideInlayHints]: (request) => { + ["provideInlayHints" /* ProvideInlayHints */]: (request) => { return this.requiredResponse(this.provideInlayHints(request.arguments)); } })); @@ -172061,7 +174450,6 @@ ${json}${newLine}`; pluginProbeLocations: opts.pluginProbeLocations, allowLocalPluginLoads: opts.allowLocalPluginLoads, typesMapLocation: opts.typesMapLocation, - syntaxOnly: opts.syntaxOnly, serverMode: opts.serverMode, session: this }; @@ -172254,18 +174642,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter event(body, eventName) { this.send(toEvent(eventName, body)); } - // For backwards-compatibility only. - /** @deprecated */ - output(info, cmdName, reqSeq, errorMsg) { - this.doOutput( - info, - cmdName, - reqSeq, - /*success*/ - !errorMsg, - errorMsg - ); - } + /** @internal */ doOutput(info, cmdName, reqSeq, success, message) { const res = { seq: 0, @@ -173273,7 +175650,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter ); if (completions === void 0) return void 0; - if (kind === ts_server_protocol_exports.CommandTypes.CompletionsFull) + if (kind === "completions-full" /* CompletionsFull */) return completions; const prefix = args.prefix || ""; const entries = mapDefined(completions.entries, (entry) => { @@ -173315,7 +175692,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter }; } }); - if (kind === ts_server_protocol_exports.CommandTypes.Completions) { + if (kind === "completions" /* Completions */) { if (completions.metadata) entries.metadata = completions.metadata; return entries; @@ -173467,7 +175844,7 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter this.doOutput( /*info*/ void 0, - CommandNames.Reload, + "reload" /* Reload */, reqSeq, /*success*/ true @@ -173738,10 +176115,10 @@ ${e.message}`; } return simplifiedResult ? codeActions.map((codeAction) => this.mapCodeFixAction(codeAction)) : codeActions; } - getCombinedCodeFix({ scope, fixId: fixId52 }, simplifiedResult) { + getCombinedCodeFix({ scope, fixId: fixId51 }, simplifiedResult) { Debug.assert(scope.type === "file"); const { file, project } = this.getFileAndProject(scope.args); - const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId52, this.getFormatOptions(file), this.getPreferences(file)); + const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId51, this.getFormatOptions(file), this.getPreferences(file)); if (simplifiedResult) { return { changes: this.mapTextChangesToCodeEdits(res.changes), commands: res.commands }; } else { @@ -173780,8 +176157,8 @@ ${e.message}`; mapCodeAction({ description: description2, changes, commands }) { return { description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands }; } - mapCodeFixAction({ fixName: fixName8, description: description2, changes, commands, fixId: fixId52, fixAllDescription }) { - return { fixName: fixName8, description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId52, fixAllDescription }; + mapCodeFixAction({ fixName: fixName8, description: description2, changes, commands, fixId: fixId51, fixAllDescription }) { + return { fixName: fixName8, description: description2, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId51, fixAllDescription }; } mapTextChangesToCodeEdits(textChanges2) { return textChanges2.map((change) => this.mapTextChangeToCodeEdit(change)); @@ -174031,7 +176408,7 @@ ${e.message}`; this.doOutput( /*info*/ void 0, - CommandNames.Unknown, + "unknown" /* Unknown */, request.seq, /*success*/ false, @@ -174116,7 +176493,7 @@ ${e.message}`; this.doOutput( /*info*/ void 0, - request ? request.command : CommandNames.Unknown, + request ? request.command : "unknown" /* Unknown */, request ? request.seq : 0, /*success*/ false, @@ -175026,6 +177403,7 @@ ${e.message}`; InferencePriority: () => InferencePriority, InlayHintKind: () => InlayHintKind, InlayHints: () => ts_InlayHints_exports, + InternalEmitFlags: () => InternalEmitFlags, InternalSymbolName: () => InternalSymbolName, InvalidatedProjectKind: () => InvalidatedProjectKind, JsDoc: () => ts_JsDoc_exports, @@ -175069,7 +177447,7 @@ ${e.message}`; PollingInterval: () => PollingInterval, PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, - PrivateIdentifierKind: () => PrivateIdentifierKind2, + PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, QuotePreference: () => QuotePreference, RelationComparisonResult: () => RelationComparisonResult, @@ -175119,10 +177497,13 @@ ${e.message}`; WatchFileKind: () => WatchFileKind, WatchLogLevel: () => WatchLogLevel, WatchType: () => WatchType, + accessPrivateIdentifier: () => accessPrivateIdentifier, addEmitFlags: () => addEmitFlags, addEmitHelper: () => addEmitHelper, addEmitHelpers: () => addEmitHelpers, + addInternalEmitFlags: () => addInternalEmitFlags, addNodeFactoryPatcher: () => addNodeFactoryPatcher, + addObjectAllocatorPatcher: () => addObjectAllocatorPatcher, addRange: () => addRange, addRelatedInfo: () => addRelatedInfo, addSyntheticLeadingComment: () => addSyntheticLeadingComment, @@ -175193,6 +177574,7 @@ ${e.message}`; changesAffectModuleResolution: () => changesAffectModuleResolution, changesAffectingProgramStructure: () => changesAffectingProgramStructure, childIsDecorated: () => childIsDecorated, + classElementOrClassElementParameterIsDecorated: () => classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated: () => classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper: () => classPrivateFieldGetHelper, classPrivateFieldInHelper: () => classPrivateFieldInHelper, @@ -175241,6 +177623,7 @@ ${e.message}`; compilerOptionsAffectSemanticDiagnostics: () => compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics: () => compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules: () => compilerOptionsIndicateEsModules, + compose: () => compose, computeCommonSourceDirectoryOfFilenames: () => computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition: () => computeLineAndCharacterOfPosition, computeLineOfPosition: () => computeLineOfPosition, @@ -175258,7 +177641,6 @@ ${e.message}`; containsPath: () => containsPath, convertCompilerOptionsForTelemetry: () => convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson: () => convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable: () => convertEnableAutoDiscoveryToEnable, convertJsonOption: () => convertJsonOption, convertToBase64: () => convertToBase64, convertToObject: () => convertToObject, @@ -175279,41 +177661,17 @@ ${e.message}`; createAccessorPropertyBackingField: () => createAccessorPropertyBackingField, createAccessorPropertyGetRedirector: () => createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector: () => createAccessorPropertySetRedirector, - createAdd: () => createAdd, - createArrayBindingPattern: () => createArrayBindingPattern, - createArrayLiteral: () => createArrayLiteral, - createArrayTypeNode: () => createArrayTypeNode, - createArrowFunction: () => createArrowFunction, - createAsExpression: () => createAsExpression, - createAssignment: () => createAssignment, - createAwait: () => createAwait, createBaseNodeFactory: () => createBaseNodeFactory, - createBigIntLiteral: () => createBigIntLiteral, - createBinary: () => createBinary, createBinaryExpressionTrampoline: () => createBinaryExpressionTrampoline, - createBindingElement: () => createBindingElement, createBindingHelper: () => createBindingHelper, - createBlock: () => createBlock, - createBreak: () => createBreak, createBuildInfo: () => createBuildInfo, createBuilderProgram: () => createBuilderProgram, createBuilderProgramUsingProgramBuildInfo: () => createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter: () => createBuilderStatusReporter, - createBundle: () => createBundle, createCacheWithRedirects: () => createCacheWithRedirects, createCacheableExportInfoMap: () => createCacheableExportInfoMap, createCachedDirectoryStructureHost: () => createCachedDirectoryStructureHost, - createCall: () => createCall, - createCallChain: () => createCallChain, - createCallSignature: () => createCallSignature, - createCaseBlock: () => createCaseBlock, - createCaseClause: () => createCaseClause, - createCatchClause: () => createCatchClause, - createClassDeclaration: () => createClassDeclaration, - createClassExpression: () => createClassExpression, createClassifier: () => createClassifier, - createComma: () => createComma, - createCommaList: () => createCommaList, createCommentDirectivesMap: () => createCommentDirectivesMap, createCompilerDiagnostic: () => createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType: () => createCompilerDiagnosticForInvalidCustomType, @@ -175321,212 +177679,73 @@ ${e.message}`; createCompilerHost: () => createCompilerHost, createCompilerHostFromProgramHost: () => createCompilerHostFromProgramHost, createCompilerHostWorker: () => createCompilerHostWorker, - createComputedPropertyName: () => createComputedPropertyName, - createConditional: () => createConditional, - createConditionalTypeNode: () => createConditionalTypeNode, - createConstructSignature: () => createConstructSignature, - createConstructor: () => createConstructor, - createConstructorTypeNode: () => createConstructorTypeNode, - createContinue: () => createContinue, - createDebuggerStatement: () => createDebuggerStatement, - createDecorator: () => createDecorator, - createDefaultClause: () => createDefaultClause, - createDelete: () => createDelete, createDetachedDiagnostic: () => createDetachedDiagnostic, createDiagnosticCollection: () => createDiagnosticCollection, createDiagnosticForFileFromMessageChain: () => createDiagnosticForFileFromMessageChain, createDiagnosticForNode: () => createDiagnosticForNode, createDiagnosticForNodeArray: () => createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain: () => createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain: () => createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile: () => createDiagnosticForNodeInSourceFile, createDiagnosticForRange: () => createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic: () => createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter: () => createDiagnosticReporter, - createDo: () => createDo, createDocumentPositionMapper: () => createDocumentPositionMapper, createDocumentRegistry: () => createDocumentRegistry, createDocumentRegistryInternal: () => createDocumentRegistryInternal, - createElementAccess: () => createElementAccess, - createElementAccessChain: () => createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram: () => createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory: () => createEmitHelperFactory, createEmptyExports: () => createEmptyExports, - createEmptyStatement: () => createEmptyStatement, - createEnumDeclaration: () => createEnumDeclaration, - createEnumMember: () => createEnumMember, - createExportAssignment: () => createExportAssignment2, - createExportDeclaration: () => createExportDeclaration, - createExportDefault: () => createExportDefault, - createExportSpecifier: () => createExportSpecifier, createExpressionForJsxElement: () => createExpressionForJsxElement, createExpressionForJsxFragment: () => createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike: () => createExpressionForObjectLiteralElementLike, createExpressionForPropertyName: () => createExpressionForPropertyName, createExpressionFromEntityName: () => createExpressionFromEntityName, - createExpressionStatement: () => createExpressionStatement, - createExpressionWithTypeArguments: () => createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded: () => createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport: () => createExternalModuleExport, - createExternalModuleReference: () => createExternalModuleReference, - createFalse: () => createFalse, createFileDiagnostic: () => createFileDiagnostic, createFileDiagnosticFromMessageChain: () => createFileDiagnosticFromMessageChain, - createFileLevelUniqueName: () => createFileLevelUniqueName, - createFor: () => createFor, - createForIn: () => createForIn, - createForOf: () => createForOf, createForOfBindingStatement: () => createForOfBindingStatement, - createFunctionDeclaration: () => createFunctionDeclaration, - createFunctionExpression: () => createFunctionExpression, - createFunctionTypeNode: () => createFunctionTypeNode, - createGetAccessor: () => createGetAccessor, createGetCanonicalFileName: () => createGetCanonicalFileName, createGetSourceFile: () => createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode: () => createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName: () => createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker: () => createGetSymbolWalker, - createHeritageClause: () => createHeritageClause, - createIdentifier: () => createIdentifier, - createIf: () => createIf, - createImmediatelyInvokedArrowFunction: () => createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression: () => createImmediatelyInvokedFunctionExpression, - createImportClause: () => createImportClause, - createImportDeclaration: () => createImportDeclaration, - createImportEqualsDeclaration: () => createImportEqualsDeclaration, - createImportSpecifier: () => createImportSpecifier, - createImportTypeNode: () => createImportTypeNode, createIncrementalCompilerHost: () => createIncrementalCompilerHost, createIncrementalProgram: () => createIncrementalProgram, - createIndexSignature: () => createIndexSignature, - createIndexedAccessTypeNode: () => createIndexedAccessTypeNode, - createInferTypeNode: () => createInferTypeNode, createInputFiles: () => createInputFiles, createInputFilesWithFilePaths: () => createInputFilesWithFilePaths, createInputFilesWithFileTexts: () => createInputFilesWithFileTexts, - createInterfaceDeclaration: () => createInterfaceDeclaration, - createIntersectionTypeNode: () => createIntersectionTypeNode, - createJSDocAugmentsTag: () => createJSDocAugmentsTag, - createJSDocAuthorTag: () => createJSDocAuthorTag, - createJSDocCallbackTag: () => createJSDocCallbackTag, - createJSDocClassTag: () => createJSDocClassTag, - createJSDocComment: () => createJSDocComment, - createJSDocEnumTag: () => createJSDocEnumTag, - createJSDocImplementsTag: () => createJSDocImplementsTag, - createJSDocParamTag: () => createJSDocParamTag, - createJSDocParameterTag: () => createJSDocParameterTag, - createJSDocPrivateTag: () => createJSDocPrivateTag, - createJSDocPropertyTag: () => createJSDocPropertyTag, - createJSDocProtectedTag: () => createJSDocProtectedTag, - createJSDocPublicTag: () => createJSDocPublicTag, - createJSDocReadonlyTag: () => createJSDocReadonlyTag, - createJSDocReturnTag: () => createJSDocReturnTag, - createJSDocSignature: () => createJSDocSignature, - createJSDocTag: () => createJSDocTag, - createJSDocTemplateTag: () => createJSDocTemplateTag, - createJSDocThisTag: () => createJSDocThisTag, - createJSDocTypeExpression: () => createJSDocTypeExpression, - createJSDocTypeLiteral: () => createJSDocTypeLiteral, - createJSDocTypeTag: () => createJSDocTypeTag, - createJSDocTypedefTag: () => createJSDocTypedefTag, - createJsxAttribute: () => createJsxAttribute, - createJsxAttributes: () => createJsxAttributes, - createJsxClosingElement: () => createJsxClosingElement, - createJsxElement: () => createJsxElement, - createJsxExpression: () => createJsxExpression, createJsxFactoryExpression: () => createJsxFactoryExpression, - createJsxFragment: () => createJsxFragment, - createJsxJsxClosingFragment: () => createJsxJsxClosingFragment, - createJsxOpeningElement: () => createJsxOpeningElement, - createJsxOpeningFragment: () => createJsxOpeningFragment, - createJsxSelfClosingElement: () => createJsxSelfClosingElement, - createJsxSpreadAttribute: () => createJsxSpreadAttribute, - createJsxText: () => createJsxText, - createKeywordTypeNode: () => createKeywordTypeNode, - createLabel: () => createLabel, createLanguageService: () => createLanguageService, createLanguageServiceSourceFile: () => createLanguageServiceSourceFile, - createLessThan: () => createLessThan, - createLiteral: () => createLiteral, - createLiteralTypeNode: () => createLiteralTypeNode, - createLogicalAnd: () => createLogicalAnd, - createLogicalNot: () => createLogicalNot, - createLogicalOr: () => createLogicalOr, - createLoopVariable: () => createLoopVariable, - createMappedTypeNode: () => createMappedTypeNode, createMemberAccessForPropertyName: () => createMemberAccessForPropertyName, - createMetaProperty: () => createMetaProperty, - createMethod: () => createMethod, - createMethodSignature: () => createMethodSignature, createModeAwareCache: () => createModeAwareCache, createModeAwareCacheKey: () => createModeAwareCacheKey, - createModifier: () => createModifier, - createModifiersFromModifierFlags: () => createModifiersFromModifierFlags, - createModuleBlock: () => createModuleBlock, - createModuleDeclaration: () => createModuleDeclaration, createModuleResolutionCache: () => createModuleResolutionCache, createModuleResolutionLoader: () => createModuleResolutionLoader, createModuleSpecifierResolutionHost: () => createModuleSpecifierResolutionHost, createMultiMap: () => createMultiMap, - createNamedExports: () => createNamedExports, - createNamedImports: () => createNamedImports, - createNamespaceExport: () => createNamespaceExport, - createNamespaceExportDeclaration: () => createNamespaceExportDeclaration, - createNamespaceImport: () => createNamespaceImport, - createNew: () => createNew, - createNoSubstitutionTemplateLiteral: () => createNoSubstitutionTemplateLiteral, - createNode: () => createNode2, - createNodeArray: () => createNodeArray, createNodeConverters: () => createNodeConverters, createNodeFactory: () => createNodeFactory, - createNonNullChain: () => createNonNullChain, - createNonNullExpression: () => createNonNullExpression, - createNotEmittedStatement: () => createNotEmittedStatement, - createNull: () => createNull, - createNumericLiteral: () => createNumericLiteral, - createObjectBindingPattern: () => createObjectBindingPattern, - createObjectLiteral: () => createObjectLiteral, - createOmittedExpression: () => createOmittedExpression, - createOptimisticUniqueName: () => createOptimisticUniqueName, createOptionNameMap: () => createOptionNameMap, - createOptionalTypeNode: () => createOptionalTypeNode, createOverload: () => createOverload, createPackageJsonImportFilter: () => createPackageJsonImportFilter, createPackageJsonInfo: () => createPackageJsonInfo, - createParameter: () => createParameter, - createParen: () => createParen, - createParenthesizedType: () => createParenthesizedType, createParenthesizerRules: () => createParenthesizerRules, - createPartiallyEmittedExpression: () => createPartiallyEmittedExpression, createPatternMatcher: () => createPatternMatcher, - createPostfix: () => createPostfix, - createPostfixIncrement: () => createPostfixIncrement, - createPrefix: () => createPrefix, createPrependNodes: () => createPrependNodes, createPrinter: () => createPrinter, - createPrivateIdentifier: () => createPrivateIdentifier, createProgram: () => createProgram, createProgramHost: () => createProgramHost, - createProperty: () => createProperty, - createPropertyAccess: () => createPropertyAccess, - createPropertyAccessChain: () => createPropertyAccessChain, - createPropertyAssignment: () => createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral: () => createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature: () => createPropertySignature, - createQualifiedName: () => createQualifiedName, createQueue: () => createQueue, createRange: () => createRange, createRedirectedBuilderProgram: () => createRedirectedBuilderProgram, - createRegularExpressionLiteral: () => createRegularExpressionLiteral, createResolutionCache: () => createResolutionCache, - createRestTypeNode: () => createRestTypeNode, - createReturn: () => createReturn, createRuntimeTypeSerializer: () => createRuntimeTypeSerializer, createScanner: () => createScanner, createSemanticDiagnosticsBuilderProgram: () => createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement: () => createSemicolonClassElement, createSet: () => createSet, - createSetAccessor: () => createSetAccessor, - createShorthandPropertyAssignment: () => createShorthandPropertyAssignment, createSolutionBuilder: () => createSolutionBuilder, createSolutionBuilderHost: () => createSolutionBuilderHost, createSolutionBuilderWithWatch: () => createSolutionBuilderWithWatch, @@ -175535,27 +177754,10 @@ ${e.message}`; createSourceFile: () => createSourceFile, createSourceMapGenerator: () => createSourceMapGenerator, createSourceMapSource: () => createSourceMapSource, - createSpread: () => createSpread, - createSpreadAssignment: () => createSpreadAssignment, - createStatement: () => createStatement, - createStrictEquality: () => createStrictEquality, - createStrictInequality: () => createStrictInequality, - createStringLiteral: () => createStringLiteral, - createStringLiteralFromNode: () => createStringLiteralFromNode, - createSubtract: () => createSubtract, - createSuper: () => createSuper, createSuperAccessVariableStatement: () => createSuperAccessVariableStatement, - createSwitch: () => createSwitch, createSymbolTable: () => createSymbolTable, createSymlinkCache: () => createSymlinkCache, createSystemWatchFunctions: () => createSystemWatchFunctions, - createTaggedTemplate: () => createTaggedTemplate, - createTempVariable: () => createTempVariable, - createTemplateExpression: () => createTemplateExpression, - createTemplateHead: () => createTemplateHead, - createTemplateMiddle: () => createTemplateMiddle, - createTemplateSpan: () => createTemplateSpan, - createTemplateTail: () => createTemplateTail, createTextChange: () => createTextChange, createTextChangeFromStartLength: () => createTextChangeFromStartLength, createTextChangeRange: () => createTextChangeRange, @@ -175567,36 +177769,12 @@ ${e.message}`; createTextSpanFromRange: () => createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent: () => createTextSpanFromStringLiteralLikeContent, createTextWriter: () => createTextWriter, - createThis: () => createThis, - createThisTypeNode: () => createThisTypeNode, - createThrow: () => createThrow, - createToken: () => createToken, createTokenRange: () => createTokenRange, - createTrue: () => createTrue, - createTry: () => createTry, - createTupleTypeNode: () => createTupleTypeNode, - createTypeAliasDeclaration: () => createTypeAliasDeclaration, - createTypeAssertion: () => createTypeAssertion, createTypeChecker: () => createTypeChecker, - createTypeLiteralNode: () => createTypeLiteralNode, - createTypeOf: () => createTypeOf, - createTypeOperatorNode: () => createTypeOperatorNode, - createTypeParameterDeclaration: () => createTypeParameterDeclaration, - createTypePredicateNode: () => createTypePredicateNode, - createTypePredicateNodeWithModifier: () => createTypePredicateNodeWithModifier, - createTypeQueryNode: () => createTypeQueryNode, createTypeReferenceDirectiveResolutionCache: () => createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode: () => createTypeReferenceNode, createTypeReferenceResolutionLoader: () => createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap: () => createUnderscoreEscapedMultiMap, - createUnionTypeNode: () => createUnionTypeNode, - createUniqueName: () => createUniqueName, createUnparsedSourceFile: () => createUnparsedSourceFile, - createVariableDeclaration: () => createVariableDeclaration, - createVariableDeclarationList: () => createVariableDeclarationList, - createVariableStatement: () => createVariableStatement, - createVoid: () => createVoid, - createVoidZero: () => createVoidZero, createWatchCompilerHost: () => createWatchCompilerHost2, createWatchCompilerHostOfConfigFile: () => createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions: () => createWatchCompilerHostOfFilesAndCompilerOptions, @@ -175604,10 +177782,7 @@ ${e.message}`; createWatchHost: () => createWatchHost, createWatchProgram: () => createWatchProgram, createWatchStatusReporter: () => createWatchStatusReporter, - createWhile: () => createWhile, - createWith: () => createWith, createWriteFileMeasuringIO: () => createWriteFileMeasuringIO, - createYield: () => createYield, declarationNameToString: () => declarationNameToString, decodeMappings: () => decodeMappings, decodedTextSpanIntersectsWith: () => decodedTextSpanIntersectsWith, @@ -175654,6 +177829,7 @@ ${e.message}`; equateStringsCaseInsensitive: () => equateStringsCaseInsensitive, equateStringsCaseSensitive: () => equateStringsCaseSensitive, equateValues: () => equateValues, + esDecorateHelper: () => esDecorateHelper, escapeJsxAttributeString: () => escapeJsxAttributeString, escapeLeadingUnderscores: () => escapeLeadingUnderscores, escapeNonAsciiString: () => escapeNonAsciiString, @@ -175682,6 +177858,7 @@ ${e.message}`; findAncestor: () => findAncestor, findBestPatternMatch: () => findBestPatternMatch, findChildOfKind: () => findChildOfKind, + findComputedPropertyNameCacheAssignment: () => findComputedPropertyNameCacheAssignment, findConfigFile: () => findConfigFile, findContainingList: () => findContainingList, findDiagnosticForNode: () => findDiagnosticForNode, @@ -175712,6 +177889,7 @@ ${e.message}`; flatMapIterator: () => flatMapIterator, flatMapToMutable: () => flatMapToMutable, flatten: () => flatten, + flattenCommaList: () => flattenCommaList, flattenDestructuringAssignment: () => flattenDestructuringAssignment, flattenDestructuringBinding: () => flattenDestructuringBinding, flattenDiagnosticMessageText: () => flattenDiagnosticMessageText, @@ -175817,6 +177995,7 @@ ${e.message}`; getDeclaredExpandoInitializer: () => getDeclaredExpandoInitializer, getDecorators: () => getDecorators, getDefaultCompilerOptions: () => getDefaultCompilerOptions2, + getDefaultExportInfoWorker: () => getDefaultExportInfoWorker, getDefaultFormatCodeSettings: () => getDefaultFormatCodeSettings, getDefaultLibFileName: () => getDefaultLibFileName, getDefaultLibFilePath: () => getDefaultLibFilePath, @@ -175888,9 +178067,11 @@ ${e.message}`; getFormatCodeSettingsForWriting: () => getFormatCodeSettingsForWriting, getFullWidth: () => getFullWidth, getFunctionFlags: () => getFunctionFlags, - getGeneratedNameForNode: () => getGeneratedNameForNode, getHeritageClause: () => getHeritageClause, getHostSignatureFromJSDoc: () => getHostSignatureFromJSDoc, + getIdentifierAutoGenerate: () => getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference: () => getIdentifierGeneratedImportReference, + getIdentifierTypeArguments: () => getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression: () => getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile: () => getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker: () => getImpliedNodeFormatForFileWorker, @@ -175902,7 +178083,9 @@ ${e.message}`; getInitializerOfBinaryExpression: () => getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement: () => getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes: () => getInterfaceBaseTypeNodes, + getInternalEmitFlags: () => getInternalEmitFlags, getInvokedExpression: () => getInvokedExpression, + getIsolatedModules: () => getIsolatedModules, getJSDocAugmentsTag: () => getJSDocAugmentsTag, getJSDocClassTag: () => getJSDocClassTag, getJSDocCommentRanges: () => getJSDocCommentRanges, @@ -175926,6 +178109,8 @@ ${e.message}`; getJSDocReturnTag: () => getJSDocReturnTag, getJSDocReturnType: () => getJSDocReturnType, getJSDocRoot: () => getJSDocRoot, + getJSDocSatisfiesExpressionType: () => getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag: () => getJSDocSatisfiesTag, getJSDocTags: () => getJSDocTags, getJSDocTagsNoCache: () => getJSDocTagsNoCache, getJSDocTemplateTag: () => getJSDocTemplateTag, @@ -175980,7 +178165,6 @@ ${e.message}`; getModuleNameStringLiteralAt: () => getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference: () => getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost: () => getModuleSpecifierResolverHost, - getMutableClone: () => getMutableClone, getNameForExportedSymbol: () => getNameForExportedSymbol, getNameFromIndexInfo: () => getNameFromIndexInfo, getNameFromPropertyName: () => getNameFromPropertyName, @@ -176054,6 +178238,7 @@ ${e.message}`; getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier: () => getPrivateIdentifier, getProperties: () => getProperties, getProperty: () => getProperty, getPropertyArrayElementValue: () => getPropertyArrayElementValue, @@ -176179,6 +178364,7 @@ ${e.message}`; getWatchErrorSummaryDiagnosticMessage: () => getWatchErrorSummaryDiagnosticMessage, getWatchFactory: () => getWatchFactory, group: () => group, + groupBy: () => groupBy, guessIndentation: () => guessIndentation, handleNoEmitOptions: () => handleNoEmitOptions, hasAbstractModifier: () => hasAbstractModifier, @@ -176224,12 +178410,14 @@ ${e.message}`; hostUsesCaseSensitiveFileNames: () => hostUsesCaseSensitiveFileNames, idText: () => idText, identifierIsThisKeyword: () => identifierIsThisKeyword, + identifierToKeywordKind: () => identifierToKeywordKind, identity: () => identity, identitySourceMapConsumer: () => identitySourceMapConsumer, ignoreSourceNewlines: () => ignoreSourceNewlines, ignoredPaths: () => ignoredPaths, importDefaultHelper: () => importDefaultHelper, importFromModuleSpecifier: () => importFromModuleSpecifier, + importNameElisionDisabled: () => importNameElisionDisabled, importStarHelper: () => importStarHelper, indexOfAnyCharCode: () => indexOfAnyCharCode, indexOfNode: () => indexOfNode, @@ -176255,6 +178443,7 @@ ${e.message}`; isAliasableExpression: () => isAliasableExpression, isAmbientModule: () => isAmbientModule, isAmbientPropertyDeclaration: () => isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition: () => isAnonymousFunctionDefinition, isAnyDirectorySeparator: () => isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire: () => isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport: () => isAnyImportOrReExport, @@ -176264,6 +178453,7 @@ ${e.message}`; isArgumentExpressionOfElementAccess: () => isArgumentExpressionOfElementAccess, isArray: () => isArray, isArrayBindingElement: () => isArrayBindingElement, + isArrayBindingOrAssignmentElement: () => isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, isArrayBindingPattern: () => isArrayBindingPattern, isArrayLiteralExpression: () => isArrayLiteralExpression, @@ -176295,7 +178485,9 @@ ${e.message}`; isBindableStaticElementAccessExpression: () => isBindableStaticElementAccessExpression, isBindableStaticNameExpression: () => isBindableStaticNameExpression, isBindingElement: () => isBindingElement, + isBindingElementOfBareOrAccessedRequire: () => isBindingElementOfBareOrAccessedRequire, isBindingName: () => isBindingName, + isBindingOrAssignmentElement: () => isBindingOrAssignmentElement, isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, isBindingPattern: () => isBindingPattern, isBlock: () => isBlock, @@ -176336,6 +178528,7 @@ ${e.message}`; isClassStaticBlockDeclaration: () => isClassStaticBlockDeclaration, isCollapsedRange: () => isCollapsedRange, isColonToken: () => isColonToken, + isCommaExpression: () => isCommaExpression, isCommaListExpression: () => isCommaListExpression, isCommaSequence: () => isCommaSequence, isCommaToken: () => isCommaToken, @@ -176369,6 +178562,7 @@ ${e.message}`; isDecoratorTarget: () => isDecoratorTarget, isDefaultClause: () => isDefaultClause, isDefaultImport: () => isDefaultImport, + isDefaultModifier: () => isDefaultModifier, isDefaultedExpandoInitializer: () => isDefaultedExpandoInitializer, isDeleteExpression: () => isDeleteExpression, isDeleteTarget: () => isDeleteTarget, @@ -176392,6 +178586,7 @@ ${e.message}`; isEmptyBindingPattern: () => isEmptyBindingPattern, isEmptyObjectLiteral: () => isEmptyObjectLiteral, isEmptyStatement: () => isEmptyStatement, + isEmptyStringLiteral: () => isEmptyStringLiteral, isEndOfDeclarationMarker: () => isEndOfDeclarationMarker, isEntityName: () => isEntityName, isEntityNameExpression: () => isEntityNameExpression, @@ -176408,6 +178603,7 @@ ${e.message}`; isExportModifier: () => isExportModifier, isExportName: () => isExportName, isExportNamespaceAsDefaultDeclaration: () => isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier: () => isExportOrDefaultModifier, isExportSpecifier: () => isExportSpecifier, isExportsIdentifier: () => isExportsIdentifier, isExportsOrModuleExportsOrAlias: () => isExportsOrModuleExportsOrAlias, @@ -176462,7 +178658,6 @@ ${e.message}`; isIdentifier: () => isIdentifier, isIdentifierANonContextualKeyword: () => isIdentifierANonContextualKeyword, isIdentifierName: () => isIdentifierName, - isIdentifierOrPrivateIdentifier: () => isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode: () => isIdentifierOrThisTypeNode, isIdentifierPart: () => isIdentifierPart, isIdentifierStart: () => isIdentifierStart, @@ -176502,6 +178697,7 @@ ${e.message}`; isInferTypeNode: () => isInferTypeNode, isInfinityOrNaNString: () => isInfinityOrNaNString, isInitializedProperty: () => isInitializedProperty, + isInitializedVariable: () => isInitializedVariable, isInsideJsxElement: () => isInsideJsxElement, isInsideJsxElementOrAttribute: () => isInsideJsxElementOrAttribute, isInsideNodeModules: () => isInsideNodeModules, @@ -176551,6 +178747,8 @@ ${e.message}`; isJSDocPublicTag: () => isJSDocPublicTag, isJSDocReadonlyTag: () => isJSDocReadonlyTag, isJSDocReturnTag: () => isJSDocReturnTag, + isJSDocSatisfiesExpression: () => isJSDocSatisfiesExpression, + isJSDocSatisfiesTag: () => isJSDocSatisfiesTag, isJSDocSeeTag: () => isJSDocSeeTag, isJSDocSignature: () => isJSDocSignature, isJSDocTag: () => isJSDocTag, @@ -176606,11 +178804,14 @@ ${e.message}`; isLiteralLikeElementAccess: () => isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess: () => isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression: () => isLiteralTypeLikeExpression, + isLiteralTypeLiteral: () => isLiteralTypeLiteral, isLiteralTypeNode: () => isLiteralTypeNode, isLocalName: () => isLocalName, isLogicalOperator: () => isLogicalOperator, isLogicalOrCoalescingAssignmentExpression: () => isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator: () => isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression: () => isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator: () => isLogicalOrCoalescingBinaryOperator, isMappedTypeNode: () => isMappedTypeNode, isMemberName: () => isMemberName, isMergeDeclarationMarker: () => isMergeDeclarationMarker, @@ -176638,6 +178839,8 @@ ${e.message}`; isNameOfModuleDeclaration: () => isNameOfModuleDeclaration, isNamedClassElement: () => isNamedClassElement, isNamedDeclaration: () => isNamedDeclaration, + isNamedEvaluation: () => isNamedEvaluation, + isNamedEvaluationSource: () => isNamedEvaluationSource, isNamedExportBindings: () => isNamedExportBindings, isNamedExports: () => isNamedExports, isNamedImportBindings: () => isNamedImportBindings, @@ -176662,6 +178865,7 @@ ${e.message}`; isNodeModulesDirectory: () => isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration: () => isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword: () => isNonContextualKeyword, + isNonExportDefaultModifier: () => isNonExportDefaultModifier, isNonGlobalAmbientModule: () => isNonGlobalAmbientModule, isNonGlobalDeclaration: () => isNonGlobalDeclaration, isNonNullAccess: () => isNonNullAccess, @@ -176730,6 +178934,7 @@ ${e.message}`; isPropertyName: () => isPropertyName, isPropertyNameLiteral: () => isPropertyNameLiteral, isPropertySignature: () => isPropertySignature, + isProtoSetter: () => isProtoSetter, isPrototypeAccess: () => isPrototypeAccess, isPrototypePropertyAssignment: () => isPrototypePropertyAssignment, isPunctuation: () => isPunctuation, @@ -176841,7 +179046,6 @@ ${e.message}`; isTupleTypeNode: () => isTupleTypeNode, isTypeAlias: () => isTypeAlias, isTypeAliasDeclaration: () => isTypeAliasDeclaration, - isTypeAssertion: () => isTypeAssertion, isTypeAssertionExpression: () => isTypeAssertionExpression, isTypeDeclaration: () => isTypeDeclaration, isTypeElement: () => isTypeElement, @@ -176851,8 +179055,9 @@ ${e.message}`; isTypeLiteralNode: () => isTypeLiteralNode, isTypeNode: () => isTypeNode, isTypeNodeKind: () => isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration: () => isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression: () => isTypeOfExpression, + isTypeOnlyExportDeclaration: () => isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration: () => isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration: () => isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode: () => isTypeOperatorNode, isTypeParameterDeclaration: () => isTypeParameterDeclaration, @@ -176927,6 +179132,7 @@ ${e.message}`; maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, memoize: () => memoize, + memoizeCached: () => memoizeCached, memoizeOne: () => memoizeOne, memoizeWeak: () => memoizeWeak, metadataHelper: () => metadataHelper, @@ -176952,6 +179158,7 @@ ${e.message}`; mutateMapSkippingNewValues: () => mutateMapSkippingNewValues, needsParentheses: () => needsParentheses, needsScopeMarker: () => needsScopeMarker, + newPrivateEnvironment: () => newPrivateEnvironment, noEmitNotification: () => noEmitNotification, noEmitSubstitution: () => noEmitSubstitution, noTransformers: () => noTransformers, @@ -177045,6 +179252,7 @@ ${e.message}`; programContainsEsModules: () => programContainsEsModules, programContainsModules: () => programContainsModules, projectReferenceIsEqualTo: () => projectReferenceIsEqualTo, + propKeyHelper: () => propKeyHelper, propertyNamePart: () => propertyNamePart, pseudoBigIntToString: () => pseudoBigIntToString, punctuationPart: () => punctuationPart, @@ -177109,10 +179317,12 @@ ${e.message}`; returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + runInitializersHelper: () => runInitializersHelper, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, scanShebangTrivia: () => scanShebangTrivia, + scanTokenAtPosition: () => scanTokenAtPosition, scanner: () => scanner, screenStartingMessageCodes: () => screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations: () => semanticDiagnosticsOptionDeclarations, @@ -177124,7 +179334,12 @@ ${e.message}`; setConstantValue: () => setConstantValue, setEachParent: () => setEachParent, setEmitFlags: () => setEmitFlags, + setFunctionNameHelper: () => setFunctionNameHelper, setGetSourceFileAsHashVersioned: () => setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate: () => setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference: () => setIdentifierGeneratedImportReference, + setIdentifierTypeArguments: () => setIdentifierTypeArguments, + setInternalEmitFlags: () => setInternalEmitFlags, setLocalizedDiagnosticMessages: () => setLocalizedDiagnosticMessages, setModuleDefaultHelper: () => setModuleDefaultHelper, setNodeFlags: () => setNodeFlags, @@ -177132,6 +179347,7 @@ ${e.message}`; setOriginalNode: () => setOriginalNode, setParent: () => setParent, setParentRecursive: () => setParentRecursive, + setPrivateIdentifier: () => setPrivateIdentifier, setResolvedModule: () => setResolvedModule, setResolvedTypeReferenceDirective: () => setResolvedTypeReferenceDirective, setSnippetElement: () => setSnippetElement, @@ -177172,6 +179388,7 @@ ${e.message}`; skipTrivia: () => skipTrivia, skipTypeChecking: () => skipTypeChecking, skipTypeParentheses: () => skipTypeParentheses, + skipWhile: () => skipWhile, sliceAfter: () => sliceAfter, some: () => some, sort: () => sort, @@ -177266,6 +179483,7 @@ ${e.message}`; transformES2020: () => transformES2020, transformES2021: () => transformES2021, transformES5: () => transformES5, + transformESDecorators: () => transformESDecorators, transformESNext: () => transformESNext, transformGenerators: () => transformGenerators, transformJsx: () => transformJsx, @@ -177292,6 +179510,7 @@ ${e.message}`; tryGetDirectories: () => tryGetDirectories, tryGetExtensionFromPath: () => tryGetExtensionFromPath2, tryGetImportFromModuleSpecifier: () => tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode: () => tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile: () => tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration: () => tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks: () => tryGetNativePerformanceHooks, @@ -177326,148 +179545,14 @@ ${e.message}`; unreachableCodeIsError: () => unreachableCodeIsError, unusedLabelIsError: () => unusedLabelIsError, unwrapInnermostStatementOfLabel: () => unwrapInnermostStatementOfLabel, - updateArrayBindingPattern: () => updateArrayBindingPattern, - updateArrayLiteral: () => updateArrayLiteral, - updateArrayTypeNode: () => updateArrayTypeNode, - updateArrowFunction: () => updateArrowFunction, - updateAsExpression: () => updateAsExpression, - updateAwait: () => updateAwait, - updateBinary: () => updateBinary, - updateBindingElement: () => updateBindingElement, - updateBlock: () => updateBlock, - updateBreak: () => updateBreak, - updateBundle: () => updateBundle, - updateCall: () => updateCall, - updateCallChain: () => updateCallChain, - updateCallSignature: () => updateCallSignature, - updateCaseBlock: () => updateCaseBlock, - updateCaseClause: () => updateCaseClause, - updateCatchClause: () => updateCatchClause, - updateClassDeclaration: () => updateClassDeclaration, - updateClassExpression: () => updateClassExpression, - updateCommaList: () => updateCommaList, - updateComputedPropertyName: () => updateComputedPropertyName, - updateConditional: () => updateConditional, - updateConditionalTypeNode: () => updateConditionalTypeNode, - updateConstructSignature: () => updateConstructSignature, - updateConstructor: () => updateConstructor, - updateConstructorTypeNode: () => updateConstructorTypeNode, - updateContinue: () => updateContinue, - updateDecorator: () => updateDecorator, - updateDefaultClause: () => updateDefaultClause, - updateDelete: () => updateDelete, - updateDo: () => updateDo, - updateElementAccess: () => updateElementAccess, - updateElementAccessChain: () => updateElementAccessChain, - updateEnumDeclaration: () => updateEnumDeclaration, - updateEnumMember: () => updateEnumMember, updateErrorForNoInputFiles: () => updateErrorForNoInputFiles, - updateExportAssignment: () => updateExportAssignment, - updateExportDeclaration: () => updateExportDeclaration, - updateExportSpecifier: () => updateExportSpecifier, - updateExpressionStatement: () => updateExpressionStatement, - updateExpressionWithTypeArguments: () => updateExpressionWithTypeArguments, - updateExternalModuleReference: () => updateExternalModuleReference, - updateFor: () => updateFor, - updateForIn: () => updateForIn, - updateForOf: () => updateForOf, - updateFunctionDeclaration: () => updateFunctionDeclaration, - updateFunctionExpression: () => updateFunctionExpression, - updateFunctionTypeNode: () => updateFunctionTypeNode, - updateGetAccessor: () => updateGetAccessor, - updateHeritageClause: () => updateHeritageClause, - updateIf: () => updateIf, - updateImportClause: () => updateImportClause, - updateImportDeclaration: () => updateImportDeclaration, - updateImportEqualsDeclaration: () => updateImportEqualsDeclaration, - updateImportSpecifier: () => updateImportSpecifier, - updateImportTypeNode: () => updateImportTypeNode, - updateIndexSignature: () => updateIndexSignature, - updateIndexedAccessTypeNode: () => updateIndexedAccessTypeNode, - updateInferTypeNode: () => updateInferTypeNode, - updateInterfaceDeclaration: () => updateInterfaceDeclaration, - updateIntersectionTypeNode: () => updateIntersectionTypeNode, - updateJsxAttribute: () => updateJsxAttribute, - updateJsxAttributes: () => updateJsxAttributes, - updateJsxClosingElement: () => updateJsxClosingElement, - updateJsxElement: () => updateJsxElement, - updateJsxExpression: () => updateJsxExpression, - updateJsxFragment: () => updateJsxFragment, - updateJsxOpeningElement: () => updateJsxOpeningElement, - updateJsxSelfClosingElement: () => updateJsxSelfClosingElement, - updateJsxSpreadAttribute: () => updateJsxSpreadAttribute, - updateJsxText: () => updateJsxText, - updateLabel: () => updateLabel, updateLanguageServiceSourceFile: () => updateLanguageServiceSourceFile, - updateLiteralTypeNode: () => updateLiteralTypeNode, - updateMappedTypeNode: () => updateMappedTypeNode, - updateMetaProperty: () => updateMetaProperty, - updateMethod: () => updateMethod, - updateMethodSignature: () => updateMethodSignature, updateMissingFilePathsWatch: () => updateMissingFilePathsWatch, - updateModuleBlock: () => updateModuleBlock, - updateModuleDeclaration: () => updateModuleDeclaration, - updateNamedExports: () => updateNamedExports, - updateNamedImports: () => updateNamedImports, - updateNamespaceExport: () => updateNamespaceExport, - updateNamespaceExportDeclaration: () => updateNamespaceExportDeclaration, - updateNamespaceImport: () => updateNamespaceImport, - updateNew: () => updateNew, - updateNonNullChain: () => updateNonNullChain, - updateNonNullExpression: () => updateNonNullExpression, - updateObjectBindingPattern: () => updateObjectBindingPattern, - updateObjectLiteral: () => updateObjectLiteral, - updateOptionalTypeNode: () => updateOptionalTypeNode, updatePackageJsonWatch: () => updatePackageJsonWatch, - updateParameter: () => updateParameter, - updateParen: () => updateParen, - updateParenthesizedType: () => updateParenthesizedType, - updatePartiallyEmittedExpression: () => updatePartiallyEmittedExpression, - updatePostfix: () => updatePostfix, - updatePrefix: () => updatePrefix, - updateProperty: () => updateProperty, - updatePropertyAccess: () => updatePropertyAccess, - updatePropertyAccessChain: () => updatePropertyAccessChain, - updatePropertyAssignment: () => updatePropertyAssignment, - updatePropertySignature: () => updatePropertySignature, - updateQualifiedName: () => updateQualifiedName, updateResolutionField: () => updateResolutionField, - updateRestTypeNode: () => updateRestTypeNode, - updateReturn: () => updateReturn, - updateSetAccessor: () => updateSetAccessor, updateSharedExtendedConfigFileWatcher: () => updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment: () => updateShorthandPropertyAssignment, updateSourceFile: () => updateSourceFile, - updateSourceFileNode: () => updateSourceFileNode, - updateSpread: () => updateSpread, - updateSpreadAssignment: () => updateSpreadAssignment, - updateStatement: () => updateStatement, - updateSwitch: () => updateSwitch, - updateTaggedTemplate: () => updateTaggedTemplate, - updateTemplateExpression: () => updateTemplateExpression, - updateTemplateSpan: () => updateTemplateSpan, - updateThrow: () => updateThrow, - updateTry: () => updateTry, - updateTupleTypeNode: () => updateTupleTypeNode, - updateTypeAliasDeclaration: () => updateTypeAliasDeclaration, - updateTypeAssertion: () => updateTypeAssertion, - updateTypeLiteralNode: () => updateTypeLiteralNode, - updateTypeOf: () => updateTypeOf, - updateTypeOperatorNode: () => updateTypeOperatorNode, - updateTypeParameterDeclaration: () => updateTypeParameterDeclaration, - updateTypePredicateNode: () => updateTypePredicateNode, - updateTypePredicateNodeWithModifier: () => updateTypePredicateNodeWithModifier, - updateTypeQueryNode: () => updateTypeQueryNode, - updateTypeReferenceNode: () => updateTypeReferenceNode, - updateUnionTypeNode: () => updateUnionTypeNode, - updateVariableDeclaration: () => updateVariableDeclaration, - updateVariableDeclarationList: () => updateVariableDeclarationList, - updateVariableStatement: () => updateVariableStatement, - updateVoid: () => updateVoid, updateWatchingWildcardDirectories: () => updateWatchingWildcardDirectories, - updateWhile: () => updateWhile, - updateWith: () => updateWith, - updateYield: () => updateYield, usesExtensionsOnImports: () => usesExtensionsOnImports, usingSingleLineStringWriter: () => usingSingleLineStringWriter, utf16EncodeAsString: () => utf16EncodeAsString, @@ -177476,6 +179561,7 @@ ${e.message}`; version: () => version, versionMajorMinor: () => versionMajorMinor, visitArray: () => visitArray, + visitCommaListElements: () => visitCommaListElements, visitEachChild: () => visitEachChild, visitFunctionBody: () => visitFunctionBody, visitIterationBody: () => visitIterationBody, @@ -177484,6 +179570,8 @@ ${e.message}`; visitNodes: () => visitNodes2, visitParameterList: () => visitParameterList, walkUpBindingElementsAndPatterns: () => walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments: () => walkUpLexicalEnvironments, + walkUpOuterExpressions: () => walkUpOuterExpressions, walkUpParenthesizedExpressions: () => walkUpParenthesizedExpressions, walkUpParenthesizedTypes: () => walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild: () => walkUpParenthesizedTypesAndGetParentAndChild, @@ -177667,6 +179755,7 @@ ${e.message}`; InferencePriority: () => InferencePriority, InlayHintKind: () => InlayHintKind, InlayHints: () => ts_InlayHints_exports, + InternalEmitFlags: () => InternalEmitFlags, InternalSymbolName: () => InternalSymbolName, InvalidatedProjectKind: () => InvalidatedProjectKind, JsDoc: () => ts_JsDoc_exports, @@ -177710,7 +179799,7 @@ ${e.message}`; PollingInterval: () => PollingInterval, PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, - PrivateIdentifierKind: () => PrivateIdentifierKind2, + PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, QuotePreference: () => QuotePreference, RelationComparisonResult: () => RelationComparisonResult, @@ -177760,10 +179849,13 @@ ${e.message}`; WatchFileKind: () => WatchFileKind, WatchLogLevel: () => WatchLogLevel, WatchType: () => WatchType, + accessPrivateIdentifier: () => accessPrivateIdentifier, addEmitFlags: () => addEmitFlags, addEmitHelper: () => addEmitHelper, addEmitHelpers: () => addEmitHelpers, + addInternalEmitFlags: () => addInternalEmitFlags, addNodeFactoryPatcher: () => addNodeFactoryPatcher, + addObjectAllocatorPatcher: () => addObjectAllocatorPatcher, addRange: () => addRange, addRelatedInfo: () => addRelatedInfo, addSyntheticLeadingComment: () => addSyntheticLeadingComment, @@ -177834,6 +179926,7 @@ ${e.message}`; changesAffectModuleResolution: () => changesAffectModuleResolution, changesAffectingProgramStructure: () => changesAffectingProgramStructure, childIsDecorated: () => childIsDecorated, + classElementOrClassElementParameterIsDecorated: () => classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated: () => classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper: () => classPrivateFieldGetHelper, classPrivateFieldInHelper: () => classPrivateFieldInHelper, @@ -177882,6 +179975,7 @@ ${e.message}`; compilerOptionsAffectSemanticDiagnostics: () => compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics: () => compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules: () => compilerOptionsIndicateEsModules, + compose: () => compose, computeCommonSourceDirectoryOfFilenames: () => computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition: () => computeLineAndCharacterOfPosition, computeLineOfPosition: () => computeLineOfPosition, @@ -177899,7 +179993,6 @@ ${e.message}`; containsPath: () => containsPath, convertCompilerOptionsForTelemetry: () => convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson: () => convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable: () => convertEnableAutoDiscoveryToEnable, convertJsonOption: () => convertJsonOption, convertToBase64: () => convertToBase64, convertToObject: () => convertToObject, @@ -177920,41 +180013,17 @@ ${e.message}`; createAccessorPropertyBackingField: () => createAccessorPropertyBackingField, createAccessorPropertyGetRedirector: () => createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector: () => createAccessorPropertySetRedirector, - createAdd: () => createAdd, - createArrayBindingPattern: () => createArrayBindingPattern, - createArrayLiteral: () => createArrayLiteral, - createArrayTypeNode: () => createArrayTypeNode, - createArrowFunction: () => createArrowFunction, - createAsExpression: () => createAsExpression, - createAssignment: () => createAssignment, - createAwait: () => createAwait, createBaseNodeFactory: () => createBaseNodeFactory, - createBigIntLiteral: () => createBigIntLiteral, - createBinary: () => createBinary, createBinaryExpressionTrampoline: () => createBinaryExpressionTrampoline, - createBindingElement: () => createBindingElement, createBindingHelper: () => createBindingHelper, - createBlock: () => createBlock, - createBreak: () => createBreak, createBuildInfo: () => createBuildInfo, createBuilderProgram: () => createBuilderProgram, createBuilderProgramUsingProgramBuildInfo: () => createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter: () => createBuilderStatusReporter, - createBundle: () => createBundle, createCacheWithRedirects: () => createCacheWithRedirects, createCacheableExportInfoMap: () => createCacheableExportInfoMap, createCachedDirectoryStructureHost: () => createCachedDirectoryStructureHost, - createCall: () => createCall, - createCallChain: () => createCallChain, - createCallSignature: () => createCallSignature, - createCaseBlock: () => createCaseBlock, - createCaseClause: () => createCaseClause, - createCatchClause: () => createCatchClause, - createClassDeclaration: () => createClassDeclaration, - createClassExpression: () => createClassExpression, createClassifier: () => createClassifier, - createComma: () => createComma, - createCommaList: () => createCommaList, createCommentDirectivesMap: () => createCommentDirectivesMap, createCompilerDiagnostic: () => createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType: () => createCompilerDiagnosticForInvalidCustomType, @@ -177962,212 +180031,73 @@ ${e.message}`; createCompilerHost: () => createCompilerHost, createCompilerHostFromProgramHost: () => createCompilerHostFromProgramHost, createCompilerHostWorker: () => createCompilerHostWorker, - createComputedPropertyName: () => createComputedPropertyName, - createConditional: () => createConditional, - createConditionalTypeNode: () => createConditionalTypeNode, - createConstructSignature: () => createConstructSignature, - createConstructor: () => createConstructor, - createConstructorTypeNode: () => createConstructorTypeNode, - createContinue: () => createContinue, - createDebuggerStatement: () => createDebuggerStatement, - createDecorator: () => createDecorator, - createDefaultClause: () => createDefaultClause, - createDelete: () => createDelete, createDetachedDiagnostic: () => createDetachedDiagnostic, createDiagnosticCollection: () => createDiagnosticCollection, createDiagnosticForFileFromMessageChain: () => createDiagnosticForFileFromMessageChain, createDiagnosticForNode: () => createDiagnosticForNode, createDiagnosticForNodeArray: () => createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain: () => createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain: () => createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile: () => createDiagnosticForNodeInSourceFile, createDiagnosticForRange: () => createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic: () => createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter: () => createDiagnosticReporter, - createDo: () => createDo, createDocumentPositionMapper: () => createDocumentPositionMapper, createDocumentRegistry: () => createDocumentRegistry, createDocumentRegistryInternal: () => createDocumentRegistryInternal, - createElementAccess: () => createElementAccess, - createElementAccessChain: () => createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram: () => createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory: () => createEmitHelperFactory, createEmptyExports: () => createEmptyExports, - createEmptyStatement: () => createEmptyStatement, - createEnumDeclaration: () => createEnumDeclaration, - createEnumMember: () => createEnumMember, - createExportAssignment: () => createExportAssignment2, - createExportDeclaration: () => createExportDeclaration, - createExportDefault: () => createExportDefault, - createExportSpecifier: () => createExportSpecifier, createExpressionForJsxElement: () => createExpressionForJsxElement, createExpressionForJsxFragment: () => createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike: () => createExpressionForObjectLiteralElementLike, createExpressionForPropertyName: () => createExpressionForPropertyName, createExpressionFromEntityName: () => createExpressionFromEntityName, - createExpressionStatement: () => createExpressionStatement, - createExpressionWithTypeArguments: () => createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded: () => createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport: () => createExternalModuleExport, - createExternalModuleReference: () => createExternalModuleReference, - createFalse: () => createFalse, createFileDiagnostic: () => createFileDiagnostic, createFileDiagnosticFromMessageChain: () => createFileDiagnosticFromMessageChain, - createFileLevelUniqueName: () => createFileLevelUniqueName, - createFor: () => createFor, - createForIn: () => createForIn, - createForOf: () => createForOf, createForOfBindingStatement: () => createForOfBindingStatement, - createFunctionDeclaration: () => createFunctionDeclaration, - createFunctionExpression: () => createFunctionExpression, - createFunctionTypeNode: () => createFunctionTypeNode, - createGetAccessor: () => createGetAccessor, createGetCanonicalFileName: () => createGetCanonicalFileName, createGetSourceFile: () => createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode: () => createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName: () => createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker: () => createGetSymbolWalker, - createHeritageClause: () => createHeritageClause, - createIdentifier: () => createIdentifier, - createIf: () => createIf, - createImmediatelyInvokedArrowFunction: () => createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression: () => createImmediatelyInvokedFunctionExpression, - createImportClause: () => createImportClause, - createImportDeclaration: () => createImportDeclaration, - createImportEqualsDeclaration: () => createImportEqualsDeclaration, - createImportSpecifier: () => createImportSpecifier, - createImportTypeNode: () => createImportTypeNode, createIncrementalCompilerHost: () => createIncrementalCompilerHost, createIncrementalProgram: () => createIncrementalProgram, - createIndexSignature: () => createIndexSignature, - createIndexedAccessTypeNode: () => createIndexedAccessTypeNode, - createInferTypeNode: () => createInferTypeNode, createInputFiles: () => createInputFiles, createInputFilesWithFilePaths: () => createInputFilesWithFilePaths, createInputFilesWithFileTexts: () => createInputFilesWithFileTexts, - createInterfaceDeclaration: () => createInterfaceDeclaration, - createIntersectionTypeNode: () => createIntersectionTypeNode, - createJSDocAugmentsTag: () => createJSDocAugmentsTag, - createJSDocAuthorTag: () => createJSDocAuthorTag, - createJSDocCallbackTag: () => createJSDocCallbackTag, - createJSDocClassTag: () => createJSDocClassTag, - createJSDocComment: () => createJSDocComment, - createJSDocEnumTag: () => createJSDocEnumTag, - createJSDocImplementsTag: () => createJSDocImplementsTag, - createJSDocParamTag: () => createJSDocParamTag, - createJSDocParameterTag: () => createJSDocParameterTag, - createJSDocPrivateTag: () => createJSDocPrivateTag, - createJSDocPropertyTag: () => createJSDocPropertyTag, - createJSDocProtectedTag: () => createJSDocProtectedTag, - createJSDocPublicTag: () => createJSDocPublicTag, - createJSDocReadonlyTag: () => createJSDocReadonlyTag, - createJSDocReturnTag: () => createJSDocReturnTag, - createJSDocSignature: () => createJSDocSignature, - createJSDocTag: () => createJSDocTag, - createJSDocTemplateTag: () => createJSDocTemplateTag, - createJSDocThisTag: () => createJSDocThisTag, - createJSDocTypeExpression: () => createJSDocTypeExpression, - createJSDocTypeLiteral: () => createJSDocTypeLiteral, - createJSDocTypeTag: () => createJSDocTypeTag, - createJSDocTypedefTag: () => createJSDocTypedefTag, - createJsxAttribute: () => createJsxAttribute, - createJsxAttributes: () => createJsxAttributes, - createJsxClosingElement: () => createJsxClosingElement, - createJsxElement: () => createJsxElement, - createJsxExpression: () => createJsxExpression, createJsxFactoryExpression: () => createJsxFactoryExpression, - createJsxFragment: () => createJsxFragment, - createJsxJsxClosingFragment: () => createJsxJsxClosingFragment, - createJsxOpeningElement: () => createJsxOpeningElement, - createJsxOpeningFragment: () => createJsxOpeningFragment, - createJsxSelfClosingElement: () => createJsxSelfClosingElement, - createJsxSpreadAttribute: () => createJsxSpreadAttribute, - createJsxText: () => createJsxText, - createKeywordTypeNode: () => createKeywordTypeNode, - createLabel: () => createLabel, createLanguageService: () => createLanguageService, createLanguageServiceSourceFile: () => createLanguageServiceSourceFile, - createLessThan: () => createLessThan, - createLiteral: () => createLiteral, - createLiteralTypeNode: () => createLiteralTypeNode, - createLogicalAnd: () => createLogicalAnd, - createLogicalNot: () => createLogicalNot, - createLogicalOr: () => createLogicalOr, - createLoopVariable: () => createLoopVariable, - createMappedTypeNode: () => createMappedTypeNode, createMemberAccessForPropertyName: () => createMemberAccessForPropertyName, - createMetaProperty: () => createMetaProperty, - createMethod: () => createMethod, - createMethodSignature: () => createMethodSignature, createModeAwareCache: () => createModeAwareCache, createModeAwareCacheKey: () => createModeAwareCacheKey, - createModifier: () => createModifier, - createModifiersFromModifierFlags: () => createModifiersFromModifierFlags, - createModuleBlock: () => createModuleBlock, - createModuleDeclaration: () => createModuleDeclaration, createModuleResolutionCache: () => createModuleResolutionCache, createModuleResolutionLoader: () => createModuleResolutionLoader, createModuleSpecifierResolutionHost: () => createModuleSpecifierResolutionHost, createMultiMap: () => createMultiMap, - createNamedExports: () => createNamedExports, - createNamedImports: () => createNamedImports, - createNamespaceExport: () => createNamespaceExport, - createNamespaceExportDeclaration: () => createNamespaceExportDeclaration, - createNamespaceImport: () => createNamespaceImport, - createNew: () => createNew, - createNoSubstitutionTemplateLiteral: () => createNoSubstitutionTemplateLiteral, - createNode: () => createNode2, - createNodeArray: () => createNodeArray, createNodeConverters: () => createNodeConverters, createNodeFactory: () => createNodeFactory, - createNonNullChain: () => createNonNullChain, - createNonNullExpression: () => createNonNullExpression, - createNotEmittedStatement: () => createNotEmittedStatement, - createNull: () => createNull, - createNumericLiteral: () => createNumericLiteral, - createObjectBindingPattern: () => createObjectBindingPattern, - createObjectLiteral: () => createObjectLiteral, - createOmittedExpression: () => createOmittedExpression, - createOptimisticUniqueName: () => createOptimisticUniqueName, createOptionNameMap: () => createOptionNameMap, - createOptionalTypeNode: () => createOptionalTypeNode, createOverload: () => createOverload, createPackageJsonImportFilter: () => createPackageJsonImportFilter, createPackageJsonInfo: () => createPackageJsonInfo, - createParameter: () => createParameter, - createParen: () => createParen, - createParenthesizedType: () => createParenthesizedType, createParenthesizerRules: () => createParenthesizerRules, - createPartiallyEmittedExpression: () => createPartiallyEmittedExpression, createPatternMatcher: () => createPatternMatcher, - createPostfix: () => createPostfix, - createPostfixIncrement: () => createPostfixIncrement, - createPrefix: () => createPrefix, createPrependNodes: () => createPrependNodes, createPrinter: () => createPrinter, - createPrivateIdentifier: () => createPrivateIdentifier, createProgram: () => createProgram, createProgramHost: () => createProgramHost, - createProperty: () => createProperty, - createPropertyAccess: () => createPropertyAccess, - createPropertyAccessChain: () => createPropertyAccessChain, - createPropertyAssignment: () => createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral: () => createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature: () => createPropertySignature, - createQualifiedName: () => createQualifiedName, createQueue: () => createQueue, createRange: () => createRange, createRedirectedBuilderProgram: () => createRedirectedBuilderProgram, - createRegularExpressionLiteral: () => createRegularExpressionLiteral, createResolutionCache: () => createResolutionCache, - createRestTypeNode: () => createRestTypeNode, - createReturn: () => createReturn, createRuntimeTypeSerializer: () => createRuntimeTypeSerializer, createScanner: () => createScanner, createSemanticDiagnosticsBuilderProgram: () => createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement: () => createSemicolonClassElement, createSet: () => createSet, - createSetAccessor: () => createSetAccessor, - createShorthandPropertyAssignment: () => createShorthandPropertyAssignment, createSolutionBuilder: () => createSolutionBuilder, createSolutionBuilderHost: () => createSolutionBuilderHost, createSolutionBuilderWithWatch: () => createSolutionBuilderWithWatch, @@ -178176,27 +180106,10 @@ ${e.message}`; createSourceFile: () => createSourceFile, createSourceMapGenerator: () => createSourceMapGenerator, createSourceMapSource: () => createSourceMapSource, - createSpread: () => createSpread, - createSpreadAssignment: () => createSpreadAssignment, - createStatement: () => createStatement, - createStrictEquality: () => createStrictEquality, - createStrictInequality: () => createStrictInequality, - createStringLiteral: () => createStringLiteral, - createStringLiteralFromNode: () => createStringLiteralFromNode, - createSubtract: () => createSubtract, - createSuper: () => createSuper, createSuperAccessVariableStatement: () => createSuperAccessVariableStatement, - createSwitch: () => createSwitch, createSymbolTable: () => createSymbolTable, createSymlinkCache: () => createSymlinkCache, createSystemWatchFunctions: () => createSystemWatchFunctions, - createTaggedTemplate: () => createTaggedTemplate, - createTempVariable: () => createTempVariable, - createTemplateExpression: () => createTemplateExpression, - createTemplateHead: () => createTemplateHead, - createTemplateMiddle: () => createTemplateMiddle, - createTemplateSpan: () => createTemplateSpan, - createTemplateTail: () => createTemplateTail, createTextChange: () => createTextChange, createTextChangeFromStartLength: () => createTextChangeFromStartLength, createTextChangeRange: () => createTextChangeRange, @@ -178208,36 +180121,12 @@ ${e.message}`; createTextSpanFromRange: () => createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent: () => createTextSpanFromStringLiteralLikeContent, createTextWriter: () => createTextWriter, - createThis: () => createThis, - createThisTypeNode: () => createThisTypeNode, - createThrow: () => createThrow, - createToken: () => createToken, createTokenRange: () => createTokenRange, - createTrue: () => createTrue, - createTry: () => createTry, - createTupleTypeNode: () => createTupleTypeNode, - createTypeAliasDeclaration: () => createTypeAliasDeclaration, - createTypeAssertion: () => createTypeAssertion, createTypeChecker: () => createTypeChecker, - createTypeLiteralNode: () => createTypeLiteralNode, - createTypeOf: () => createTypeOf, - createTypeOperatorNode: () => createTypeOperatorNode, - createTypeParameterDeclaration: () => createTypeParameterDeclaration, - createTypePredicateNode: () => createTypePredicateNode, - createTypePredicateNodeWithModifier: () => createTypePredicateNodeWithModifier, - createTypeQueryNode: () => createTypeQueryNode, createTypeReferenceDirectiveResolutionCache: () => createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode: () => createTypeReferenceNode, createTypeReferenceResolutionLoader: () => createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap: () => createUnderscoreEscapedMultiMap, - createUnionTypeNode: () => createUnionTypeNode, - createUniqueName: () => createUniqueName, createUnparsedSourceFile: () => createUnparsedSourceFile, - createVariableDeclaration: () => createVariableDeclaration, - createVariableDeclarationList: () => createVariableDeclarationList, - createVariableStatement: () => createVariableStatement, - createVoid: () => createVoid, - createVoidZero: () => createVoidZero, createWatchCompilerHost: () => createWatchCompilerHost2, createWatchCompilerHostOfConfigFile: () => createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions: () => createWatchCompilerHostOfFilesAndCompilerOptions, @@ -178245,10 +180134,7 @@ ${e.message}`; createWatchHost: () => createWatchHost, createWatchProgram: () => createWatchProgram, createWatchStatusReporter: () => createWatchStatusReporter, - createWhile: () => createWhile, - createWith: () => createWith, createWriteFileMeasuringIO: () => createWriteFileMeasuringIO, - createYield: () => createYield, declarationNameToString: () => declarationNameToString, decodeMappings: () => decodeMappings, decodedTextSpanIntersectsWith: () => decodedTextSpanIntersectsWith, @@ -178295,6 +180181,7 @@ ${e.message}`; equateStringsCaseInsensitive: () => equateStringsCaseInsensitive, equateStringsCaseSensitive: () => equateStringsCaseSensitive, equateValues: () => equateValues, + esDecorateHelper: () => esDecorateHelper, escapeJsxAttributeString: () => escapeJsxAttributeString, escapeLeadingUnderscores: () => escapeLeadingUnderscores, escapeNonAsciiString: () => escapeNonAsciiString, @@ -178323,6 +180210,7 @@ ${e.message}`; findAncestor: () => findAncestor, findBestPatternMatch: () => findBestPatternMatch, findChildOfKind: () => findChildOfKind, + findComputedPropertyNameCacheAssignment: () => findComputedPropertyNameCacheAssignment, findConfigFile: () => findConfigFile, findContainingList: () => findContainingList, findDiagnosticForNode: () => findDiagnosticForNode, @@ -178353,6 +180241,7 @@ ${e.message}`; flatMapIterator: () => flatMapIterator, flatMapToMutable: () => flatMapToMutable, flatten: () => flatten, + flattenCommaList: () => flattenCommaList, flattenDestructuringAssignment: () => flattenDestructuringAssignment, flattenDestructuringBinding: () => flattenDestructuringBinding, flattenDiagnosticMessageText: () => flattenDiagnosticMessageText, @@ -178458,6 +180347,7 @@ ${e.message}`; getDeclaredExpandoInitializer: () => getDeclaredExpandoInitializer, getDecorators: () => getDecorators, getDefaultCompilerOptions: () => getDefaultCompilerOptions2, + getDefaultExportInfoWorker: () => getDefaultExportInfoWorker, getDefaultFormatCodeSettings: () => getDefaultFormatCodeSettings, getDefaultLibFileName: () => getDefaultLibFileName, getDefaultLibFilePath: () => getDefaultLibFilePath, @@ -178529,9 +180419,11 @@ ${e.message}`; getFormatCodeSettingsForWriting: () => getFormatCodeSettingsForWriting, getFullWidth: () => getFullWidth, getFunctionFlags: () => getFunctionFlags, - getGeneratedNameForNode: () => getGeneratedNameForNode, getHeritageClause: () => getHeritageClause, getHostSignatureFromJSDoc: () => getHostSignatureFromJSDoc, + getIdentifierAutoGenerate: () => getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference: () => getIdentifierGeneratedImportReference, + getIdentifierTypeArguments: () => getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression: () => getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile: () => getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker: () => getImpliedNodeFormatForFileWorker, @@ -178543,7 +180435,9 @@ ${e.message}`; getInitializerOfBinaryExpression: () => getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement: () => getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes: () => getInterfaceBaseTypeNodes, + getInternalEmitFlags: () => getInternalEmitFlags, getInvokedExpression: () => getInvokedExpression, + getIsolatedModules: () => getIsolatedModules, getJSDocAugmentsTag: () => getJSDocAugmentsTag, getJSDocClassTag: () => getJSDocClassTag, getJSDocCommentRanges: () => getJSDocCommentRanges, @@ -178567,6 +180461,8 @@ ${e.message}`; getJSDocReturnTag: () => getJSDocReturnTag, getJSDocReturnType: () => getJSDocReturnType, getJSDocRoot: () => getJSDocRoot, + getJSDocSatisfiesExpressionType: () => getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag: () => getJSDocSatisfiesTag, getJSDocTags: () => getJSDocTags, getJSDocTagsNoCache: () => getJSDocTagsNoCache, getJSDocTemplateTag: () => getJSDocTemplateTag, @@ -178621,7 +180517,6 @@ ${e.message}`; getModuleNameStringLiteralAt: () => getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference: () => getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost: () => getModuleSpecifierResolverHost, - getMutableClone: () => getMutableClone, getNameForExportedSymbol: () => getNameForExportedSymbol, getNameFromIndexInfo: () => getNameFromIndexInfo, getNameFromPropertyName: () => getNameFromPropertyName, @@ -178695,6 +180590,7 @@ ${e.message}`; getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier: () => getPrivateIdentifier, getProperties: () => getProperties, getProperty: () => getProperty, getPropertyArrayElementValue: () => getPropertyArrayElementValue, @@ -178820,6 +180716,7 @@ ${e.message}`; getWatchErrorSummaryDiagnosticMessage: () => getWatchErrorSummaryDiagnosticMessage, getWatchFactory: () => getWatchFactory, group: () => group, + groupBy: () => groupBy, guessIndentation: () => guessIndentation, handleNoEmitOptions: () => handleNoEmitOptions, hasAbstractModifier: () => hasAbstractModifier, @@ -178865,12 +180762,14 @@ ${e.message}`; hostUsesCaseSensitiveFileNames: () => hostUsesCaseSensitiveFileNames, idText: () => idText, identifierIsThisKeyword: () => identifierIsThisKeyword, + identifierToKeywordKind: () => identifierToKeywordKind, identity: () => identity, identitySourceMapConsumer: () => identitySourceMapConsumer, ignoreSourceNewlines: () => ignoreSourceNewlines, ignoredPaths: () => ignoredPaths, importDefaultHelper: () => importDefaultHelper, importFromModuleSpecifier: () => importFromModuleSpecifier, + importNameElisionDisabled: () => importNameElisionDisabled, importStarHelper: () => importStarHelper, indexOfAnyCharCode: () => indexOfAnyCharCode, indexOfNode: () => indexOfNode, @@ -178896,6 +180795,7 @@ ${e.message}`; isAliasableExpression: () => isAliasableExpression, isAmbientModule: () => isAmbientModule, isAmbientPropertyDeclaration: () => isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition: () => isAnonymousFunctionDefinition, isAnyDirectorySeparator: () => isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire: () => isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport: () => isAnyImportOrReExport, @@ -178905,6 +180805,7 @@ ${e.message}`; isArgumentExpressionOfElementAccess: () => isArgumentExpressionOfElementAccess, isArray: () => isArray, isArrayBindingElement: () => isArrayBindingElement, + isArrayBindingOrAssignmentElement: () => isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, isArrayBindingPattern: () => isArrayBindingPattern, isArrayLiteralExpression: () => isArrayLiteralExpression, @@ -178936,7 +180837,9 @@ ${e.message}`; isBindableStaticElementAccessExpression: () => isBindableStaticElementAccessExpression, isBindableStaticNameExpression: () => isBindableStaticNameExpression, isBindingElement: () => isBindingElement, + isBindingElementOfBareOrAccessedRequire: () => isBindingElementOfBareOrAccessedRequire, isBindingName: () => isBindingName, + isBindingOrAssignmentElement: () => isBindingOrAssignmentElement, isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, isBindingPattern: () => isBindingPattern, isBlock: () => isBlock, @@ -178977,6 +180880,7 @@ ${e.message}`; isClassStaticBlockDeclaration: () => isClassStaticBlockDeclaration, isCollapsedRange: () => isCollapsedRange, isColonToken: () => isColonToken, + isCommaExpression: () => isCommaExpression, isCommaListExpression: () => isCommaListExpression, isCommaSequence: () => isCommaSequence, isCommaToken: () => isCommaToken, @@ -179010,6 +180914,7 @@ ${e.message}`; isDecoratorTarget: () => isDecoratorTarget, isDefaultClause: () => isDefaultClause, isDefaultImport: () => isDefaultImport, + isDefaultModifier: () => isDefaultModifier, isDefaultedExpandoInitializer: () => isDefaultedExpandoInitializer, isDeleteExpression: () => isDeleteExpression, isDeleteTarget: () => isDeleteTarget, @@ -179033,6 +180938,7 @@ ${e.message}`; isEmptyBindingPattern: () => isEmptyBindingPattern, isEmptyObjectLiteral: () => isEmptyObjectLiteral, isEmptyStatement: () => isEmptyStatement, + isEmptyStringLiteral: () => isEmptyStringLiteral, isEndOfDeclarationMarker: () => isEndOfDeclarationMarker, isEntityName: () => isEntityName, isEntityNameExpression: () => isEntityNameExpression, @@ -179049,6 +180955,7 @@ ${e.message}`; isExportModifier: () => isExportModifier, isExportName: () => isExportName, isExportNamespaceAsDefaultDeclaration: () => isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier: () => isExportOrDefaultModifier, isExportSpecifier: () => isExportSpecifier, isExportsIdentifier: () => isExportsIdentifier, isExportsOrModuleExportsOrAlias: () => isExportsOrModuleExportsOrAlias, @@ -179103,7 +181010,6 @@ ${e.message}`; isIdentifier: () => isIdentifier, isIdentifierANonContextualKeyword: () => isIdentifierANonContextualKeyword, isIdentifierName: () => isIdentifierName, - isIdentifierOrPrivateIdentifier: () => isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode: () => isIdentifierOrThisTypeNode, isIdentifierPart: () => isIdentifierPart, isIdentifierStart: () => isIdentifierStart, @@ -179143,6 +181049,7 @@ ${e.message}`; isInferTypeNode: () => isInferTypeNode, isInfinityOrNaNString: () => isInfinityOrNaNString, isInitializedProperty: () => isInitializedProperty, + isInitializedVariable: () => isInitializedVariable, isInsideJsxElement: () => isInsideJsxElement, isInsideJsxElementOrAttribute: () => isInsideJsxElementOrAttribute, isInsideNodeModules: () => isInsideNodeModules, @@ -179192,6 +181099,8 @@ ${e.message}`; isJSDocPublicTag: () => isJSDocPublicTag, isJSDocReadonlyTag: () => isJSDocReadonlyTag, isJSDocReturnTag: () => isJSDocReturnTag, + isJSDocSatisfiesExpression: () => isJSDocSatisfiesExpression, + isJSDocSatisfiesTag: () => isJSDocSatisfiesTag, isJSDocSeeTag: () => isJSDocSeeTag, isJSDocSignature: () => isJSDocSignature, isJSDocTag: () => isJSDocTag, @@ -179247,11 +181156,14 @@ ${e.message}`; isLiteralLikeElementAccess: () => isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess: () => isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression: () => isLiteralTypeLikeExpression, + isLiteralTypeLiteral: () => isLiteralTypeLiteral, isLiteralTypeNode: () => isLiteralTypeNode, isLocalName: () => isLocalName, isLogicalOperator: () => isLogicalOperator, isLogicalOrCoalescingAssignmentExpression: () => isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator: () => isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression: () => isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator: () => isLogicalOrCoalescingBinaryOperator, isMappedTypeNode: () => isMappedTypeNode, isMemberName: () => isMemberName, isMergeDeclarationMarker: () => isMergeDeclarationMarker, @@ -179279,6 +181191,8 @@ ${e.message}`; isNameOfModuleDeclaration: () => isNameOfModuleDeclaration, isNamedClassElement: () => isNamedClassElement, isNamedDeclaration: () => isNamedDeclaration, + isNamedEvaluation: () => isNamedEvaluation, + isNamedEvaluationSource: () => isNamedEvaluationSource, isNamedExportBindings: () => isNamedExportBindings, isNamedExports: () => isNamedExports, isNamedImportBindings: () => isNamedImportBindings, @@ -179303,6 +181217,7 @@ ${e.message}`; isNodeModulesDirectory: () => isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration: () => isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword: () => isNonContextualKeyword, + isNonExportDefaultModifier: () => isNonExportDefaultModifier, isNonGlobalAmbientModule: () => isNonGlobalAmbientModule, isNonGlobalDeclaration: () => isNonGlobalDeclaration, isNonNullAccess: () => isNonNullAccess, @@ -179371,6 +181286,7 @@ ${e.message}`; isPropertyName: () => isPropertyName, isPropertyNameLiteral: () => isPropertyNameLiteral, isPropertySignature: () => isPropertySignature, + isProtoSetter: () => isProtoSetter, isPrototypeAccess: () => isPrototypeAccess, isPrototypePropertyAssignment: () => isPrototypePropertyAssignment, isPunctuation: () => isPunctuation, @@ -179482,7 +181398,6 @@ ${e.message}`; isTupleTypeNode: () => isTupleTypeNode, isTypeAlias: () => isTypeAlias, isTypeAliasDeclaration: () => isTypeAliasDeclaration, - isTypeAssertion: () => isTypeAssertion, isTypeAssertionExpression: () => isTypeAssertionExpression, isTypeDeclaration: () => isTypeDeclaration, isTypeElement: () => isTypeElement, @@ -179492,8 +181407,9 @@ ${e.message}`; isTypeLiteralNode: () => isTypeLiteralNode, isTypeNode: () => isTypeNode, isTypeNodeKind: () => isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration: () => isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression: () => isTypeOfExpression, + isTypeOnlyExportDeclaration: () => isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration: () => isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration: () => isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode: () => isTypeOperatorNode, isTypeParameterDeclaration: () => isTypeParameterDeclaration, @@ -179568,6 +181484,7 @@ ${e.message}`; maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, memoize: () => memoize, + memoizeCached: () => memoizeCached, memoizeOne: () => memoizeOne, memoizeWeak: () => memoizeWeak, metadataHelper: () => metadataHelper, @@ -179593,6 +181510,7 @@ ${e.message}`; mutateMapSkippingNewValues: () => mutateMapSkippingNewValues, needsParentheses: () => needsParentheses, needsScopeMarker: () => needsScopeMarker, + newPrivateEnvironment: () => newPrivateEnvironment, noEmitNotification: () => noEmitNotification, noEmitSubstitution: () => noEmitSubstitution, noTransformers: () => noTransformers, @@ -179686,6 +181604,7 @@ ${e.message}`; programContainsEsModules: () => programContainsEsModules, programContainsModules: () => programContainsModules, projectReferenceIsEqualTo: () => projectReferenceIsEqualTo, + propKeyHelper: () => propKeyHelper, propertyNamePart: () => propertyNamePart, pseudoBigIntToString: () => pseudoBigIntToString, punctuationPart: () => punctuationPart, @@ -179750,10 +181669,12 @@ ${e.message}`; returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + runInitializersHelper: () => runInitializersHelper, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, scanShebangTrivia: () => scanShebangTrivia, + scanTokenAtPosition: () => scanTokenAtPosition, scanner: () => scanner, screenStartingMessageCodes: () => screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations: () => semanticDiagnosticsOptionDeclarations, @@ -179765,7 +181686,12 @@ ${e.message}`; setConstantValue: () => setConstantValue, setEachParent: () => setEachParent, setEmitFlags: () => setEmitFlags, + setFunctionNameHelper: () => setFunctionNameHelper, setGetSourceFileAsHashVersioned: () => setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate: () => setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference: () => setIdentifierGeneratedImportReference, + setIdentifierTypeArguments: () => setIdentifierTypeArguments, + setInternalEmitFlags: () => setInternalEmitFlags, setLocalizedDiagnosticMessages: () => setLocalizedDiagnosticMessages, setModuleDefaultHelper: () => setModuleDefaultHelper, setNodeFlags: () => setNodeFlags, @@ -179773,6 +181699,7 @@ ${e.message}`; setOriginalNode: () => setOriginalNode, setParent: () => setParent, setParentRecursive: () => setParentRecursive, + setPrivateIdentifier: () => setPrivateIdentifier, setResolvedModule: () => setResolvedModule, setResolvedTypeReferenceDirective: () => setResolvedTypeReferenceDirective, setSnippetElement: () => setSnippetElement, @@ -179813,6 +181740,7 @@ ${e.message}`; skipTrivia: () => skipTrivia, skipTypeChecking: () => skipTypeChecking, skipTypeParentheses: () => skipTypeParentheses, + skipWhile: () => skipWhile, sliceAfter: () => sliceAfter, some: () => some, sort: () => sort, @@ -179907,6 +181835,7 @@ ${e.message}`; transformES2020: () => transformES2020, transformES2021: () => transformES2021, transformES5: () => transformES5, + transformESDecorators: () => transformESDecorators, transformESNext: () => transformESNext, transformGenerators: () => transformGenerators, transformJsx: () => transformJsx, @@ -179933,6 +181862,7 @@ ${e.message}`; tryGetDirectories: () => tryGetDirectories, tryGetExtensionFromPath: () => tryGetExtensionFromPath2, tryGetImportFromModuleSpecifier: () => tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode: () => tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile: () => tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration: () => tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks: () => tryGetNativePerformanceHooks, @@ -179967,148 +181897,14 @@ ${e.message}`; unreachableCodeIsError: () => unreachableCodeIsError, unusedLabelIsError: () => unusedLabelIsError, unwrapInnermostStatementOfLabel: () => unwrapInnermostStatementOfLabel, - updateArrayBindingPattern: () => updateArrayBindingPattern, - updateArrayLiteral: () => updateArrayLiteral, - updateArrayTypeNode: () => updateArrayTypeNode, - updateArrowFunction: () => updateArrowFunction, - updateAsExpression: () => updateAsExpression, - updateAwait: () => updateAwait, - updateBinary: () => updateBinary, - updateBindingElement: () => updateBindingElement, - updateBlock: () => updateBlock, - updateBreak: () => updateBreak, - updateBundle: () => updateBundle, - updateCall: () => updateCall, - updateCallChain: () => updateCallChain, - updateCallSignature: () => updateCallSignature, - updateCaseBlock: () => updateCaseBlock, - updateCaseClause: () => updateCaseClause, - updateCatchClause: () => updateCatchClause, - updateClassDeclaration: () => updateClassDeclaration, - updateClassExpression: () => updateClassExpression, - updateCommaList: () => updateCommaList, - updateComputedPropertyName: () => updateComputedPropertyName, - updateConditional: () => updateConditional, - updateConditionalTypeNode: () => updateConditionalTypeNode, - updateConstructSignature: () => updateConstructSignature, - updateConstructor: () => updateConstructor, - updateConstructorTypeNode: () => updateConstructorTypeNode, - updateContinue: () => updateContinue, - updateDecorator: () => updateDecorator, - updateDefaultClause: () => updateDefaultClause, - updateDelete: () => updateDelete, - updateDo: () => updateDo, - updateElementAccess: () => updateElementAccess, - updateElementAccessChain: () => updateElementAccessChain, - updateEnumDeclaration: () => updateEnumDeclaration, - updateEnumMember: () => updateEnumMember, updateErrorForNoInputFiles: () => updateErrorForNoInputFiles, - updateExportAssignment: () => updateExportAssignment, - updateExportDeclaration: () => updateExportDeclaration, - updateExportSpecifier: () => updateExportSpecifier, - updateExpressionStatement: () => updateExpressionStatement, - updateExpressionWithTypeArguments: () => updateExpressionWithTypeArguments, - updateExternalModuleReference: () => updateExternalModuleReference, - updateFor: () => updateFor, - updateForIn: () => updateForIn, - updateForOf: () => updateForOf, - updateFunctionDeclaration: () => updateFunctionDeclaration, - updateFunctionExpression: () => updateFunctionExpression, - updateFunctionTypeNode: () => updateFunctionTypeNode, - updateGetAccessor: () => updateGetAccessor, - updateHeritageClause: () => updateHeritageClause, - updateIf: () => updateIf, - updateImportClause: () => updateImportClause, - updateImportDeclaration: () => updateImportDeclaration, - updateImportEqualsDeclaration: () => updateImportEqualsDeclaration, - updateImportSpecifier: () => updateImportSpecifier, - updateImportTypeNode: () => updateImportTypeNode, - updateIndexSignature: () => updateIndexSignature, - updateIndexedAccessTypeNode: () => updateIndexedAccessTypeNode, - updateInferTypeNode: () => updateInferTypeNode, - updateInterfaceDeclaration: () => updateInterfaceDeclaration, - updateIntersectionTypeNode: () => updateIntersectionTypeNode, - updateJsxAttribute: () => updateJsxAttribute, - updateJsxAttributes: () => updateJsxAttributes, - updateJsxClosingElement: () => updateJsxClosingElement, - updateJsxElement: () => updateJsxElement, - updateJsxExpression: () => updateJsxExpression, - updateJsxFragment: () => updateJsxFragment, - updateJsxOpeningElement: () => updateJsxOpeningElement, - updateJsxSelfClosingElement: () => updateJsxSelfClosingElement, - updateJsxSpreadAttribute: () => updateJsxSpreadAttribute, - updateJsxText: () => updateJsxText, - updateLabel: () => updateLabel, updateLanguageServiceSourceFile: () => updateLanguageServiceSourceFile, - updateLiteralTypeNode: () => updateLiteralTypeNode, - updateMappedTypeNode: () => updateMappedTypeNode, - updateMetaProperty: () => updateMetaProperty, - updateMethod: () => updateMethod, - updateMethodSignature: () => updateMethodSignature, updateMissingFilePathsWatch: () => updateMissingFilePathsWatch, - updateModuleBlock: () => updateModuleBlock, - updateModuleDeclaration: () => updateModuleDeclaration, - updateNamedExports: () => updateNamedExports, - updateNamedImports: () => updateNamedImports, - updateNamespaceExport: () => updateNamespaceExport, - updateNamespaceExportDeclaration: () => updateNamespaceExportDeclaration, - updateNamespaceImport: () => updateNamespaceImport, - updateNew: () => updateNew, - updateNonNullChain: () => updateNonNullChain, - updateNonNullExpression: () => updateNonNullExpression, - updateObjectBindingPattern: () => updateObjectBindingPattern, - updateObjectLiteral: () => updateObjectLiteral, - updateOptionalTypeNode: () => updateOptionalTypeNode, updatePackageJsonWatch: () => updatePackageJsonWatch, - updateParameter: () => updateParameter, - updateParen: () => updateParen, - updateParenthesizedType: () => updateParenthesizedType, - updatePartiallyEmittedExpression: () => updatePartiallyEmittedExpression, - updatePostfix: () => updatePostfix, - updatePrefix: () => updatePrefix, - updateProperty: () => updateProperty, - updatePropertyAccess: () => updatePropertyAccess, - updatePropertyAccessChain: () => updatePropertyAccessChain, - updatePropertyAssignment: () => updatePropertyAssignment, - updatePropertySignature: () => updatePropertySignature, - updateQualifiedName: () => updateQualifiedName, updateResolutionField: () => updateResolutionField, - updateRestTypeNode: () => updateRestTypeNode, - updateReturn: () => updateReturn, - updateSetAccessor: () => updateSetAccessor, updateSharedExtendedConfigFileWatcher: () => updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment: () => updateShorthandPropertyAssignment, updateSourceFile: () => updateSourceFile, - updateSourceFileNode: () => updateSourceFileNode, - updateSpread: () => updateSpread, - updateSpreadAssignment: () => updateSpreadAssignment, - updateStatement: () => updateStatement, - updateSwitch: () => updateSwitch, - updateTaggedTemplate: () => updateTaggedTemplate, - updateTemplateExpression: () => updateTemplateExpression, - updateTemplateSpan: () => updateTemplateSpan, - updateThrow: () => updateThrow, - updateTry: () => updateTry, - updateTupleTypeNode: () => updateTupleTypeNode, - updateTypeAliasDeclaration: () => updateTypeAliasDeclaration, - updateTypeAssertion: () => updateTypeAssertion, - updateTypeLiteralNode: () => updateTypeLiteralNode, - updateTypeOf: () => updateTypeOf, - updateTypeOperatorNode: () => updateTypeOperatorNode, - updateTypeParameterDeclaration: () => updateTypeParameterDeclaration, - updateTypePredicateNode: () => updateTypePredicateNode, - updateTypePredicateNodeWithModifier: () => updateTypePredicateNodeWithModifier, - updateTypeQueryNode: () => updateTypeQueryNode, - updateTypeReferenceNode: () => updateTypeReferenceNode, - updateUnionTypeNode: () => updateUnionTypeNode, - updateVariableDeclaration: () => updateVariableDeclaration, - updateVariableDeclarationList: () => updateVariableDeclarationList, - updateVariableStatement: () => updateVariableStatement, - updateVoid: () => updateVoid, updateWatchingWildcardDirectories: () => updateWatchingWildcardDirectories, - updateWhile: () => updateWhile, - updateWith: () => updateWith, - updateYield: () => updateYield, usesExtensionsOnImports: () => usesExtensionsOnImports, usingSingleLineStringWriter: () => usingSingleLineStringWriter, utf16EncodeAsString: () => utf16EncodeAsString, @@ -180117,6 +181913,7 @@ ${e.message}`; version: () => version, versionMajorMinor: () => versionMajorMinor, visitArray: () => visitArray, + visitCommaListElements: () => visitCommaListElements, visitEachChild: () => visitEachChild, visitFunctionBody: () => visitFunctionBody, visitIterationBody: () => visitIterationBody, @@ -180125,6 +181922,8 @@ ${e.message}`; visitNodes: () => visitNodes2, visitParameterList: () => visitParameterList, walkUpBindingElementsAndPatterns: () => walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments: () => walkUpLexicalEnvironments, + walkUpOuterExpressions: () => walkUpOuterExpressions, walkUpParenthesizedExpressions: () => walkUpParenthesizedExpressions, walkUpParenthesizedTypes: () => walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild: () => walkUpParenthesizedTypesAndGetParentAndChild, diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index 107407bd58e..c9eeb8a00a1 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.d.ts @@ -348,15 +348,15 @@ declare namespace ts { ShorthandPropertyAssignment = 300, SpreadAssignment = 301, EnumMember = 302, - UnparsedPrologue = 303, - UnparsedPrepend = 304, - UnparsedText = 305, - UnparsedInternalText = 306, - UnparsedSyntheticReference = 307, + /** @deprecated */ UnparsedPrologue = 303, + /** @deprecated */ UnparsedPrepend = 304, + /** @deprecated */ UnparsedText = 305, + /** @deprecated */ UnparsedInternalText = 306, + /** @deprecated */ UnparsedSyntheticReference = 307, SourceFile = 308, Bundle = 309, - UnparsedSource = 310, - InputFiles = 311, + /** @deprecated */ UnparsedSource = 310, + /** @deprecated */ InputFiles = 311, JSDocTypeExpression = 312, JSDocNameReference = 313, JSDocMemberName = 314, @@ -400,14 +400,15 @@ declare namespace ts { JSDocSeeTag = 350, JSDocPropertyTag = 351, JSDocThrowsTag = 352, - SyntaxList = 353, - NotEmittedStatement = 354, - PartiallyEmittedExpression = 355, - CommaListExpression = 356, - MergeDeclarationMarker = 357, - EndOfDeclarationMarker = 358, - SyntheticReferenceExpression = 359, - Count = 360, + JSDocSatisfiesTag = 353, + SyntaxList = 354, + NotEmittedStatement = 355, + PartiallyEmittedExpression = 356, + CommaListExpression = 357, + MergeDeclarationMarker = 358, + EndOfDeclarationMarker = 359, + SyntheticReferenceExpression = 360, + Count = 361, FirstAssignment = 63, LastAssignment = 78, FirstCompoundAssignment = 64, @@ -436,14 +437,14 @@ declare namespace ts { LastStatement = 256, FirstNode = 163, FirstJSDocNode = 312, - LastJSDocNode = 352, + LastJSDocNode = 353, FirstJSDocTagNode = 330, - LastJSDocTagNode = 352 + LastJSDocTagNode = 353 } type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia; type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral; type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail; - type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken; + type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken; type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InferKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.OfKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.RequireKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword; type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword; type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword; @@ -540,30 +541,6 @@ declare namespace ts { getLastToken(sourceFile?: SourceFile): Node | undefined; forEachChild(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined): T | undefined; } - interface Node { - /** - * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them. - * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators. - * Use `ts.getDecorators()` to get the decorators of a `Node`. - * - * For example: - * ```ts - * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined; - * ``` - */ - readonly decorators?: undefined; - /** - * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them. - * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers. - * Use `ts.getModifiers()` to get the modifiers of a `Node`. - * - * For example: - * ```ts - * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined; - * ``` - */ - readonly modifiers?: NodeArray | undefined; - } interface JSDocContainer extends Node { _jsdocContainerBrand: any; } @@ -595,6 +572,9 @@ declare namespace ts { type ExclamationToken = PunctuationToken; type ColonToken = PunctuationToken; type EqualsToken = PunctuationToken; + type AmpersandAmpersandEqualsToken = PunctuationToken; + type BarBarEqualsToken = PunctuationToken; + type QuestionQuestionEqualsToken = PunctuationToken; type AsteriskToken = PunctuationToken; type EqualsGreaterThanToken = PunctuationToken; type PlusToken = PunctuationToken; @@ -606,10 +586,6 @@ declare namespace ts { type AssertKeyword = KeywordToken; type AwaitKeyword = KeywordToken; type CaseKeyword = KeywordToken; - /** @deprecated Use `AwaitKeyword` instead. */ - type AwaitKeywordToken = AwaitKeyword; - /** @deprecated Use `AssertsKeyword` instead. */ - type AssertsToken = AssertsKeyword; interface ModifierToken extends KeywordToken { } type AbstractKeyword = ModifierToken; @@ -627,8 +603,6 @@ declare namespace ts { type OutKeyword = ModifierToken; type OverrideKeyword = ModifierToken; type StaticKeyword = ModifierToken; - /** @deprecated Use `ReadonlyKeyword` instead. */ - type ReadonlyToken = ReadonlyKeyword; type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword; type ModifierLike = Modifier | Decorator; type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword; @@ -649,12 +623,16 @@ declare namespace ts { * Text of identifier, but if the identifier begins with two underscores, this will begin with three. */ readonly escapedText: __String; - readonly originalKeywordKind?: SyntaxKind; - isInJSDocNamespace?: boolean; } interface Identifier { readonly text: string; } + interface Identifier { + /** @deprecated Use `idKeyword(identifier)` instead. */ + readonly originalKeywordKind?: SyntaxKind; + /** @deprecated Use `.parent` or the surrounding context to determine this instead. */ + readonly isInJSDocNamespace?: boolean; + } interface TransientIdentifier extends Identifier { resolvedSymbol: Symbol; } @@ -757,10 +735,6 @@ declare namespace ts { readonly questionToken?: QuestionToken; readonly type?: TypeNode; } - interface PropertySignature { - /** @deprecated A property signature cannot have an initializer */ - readonly initializer?: Expression | undefined; - } interface PropertyDeclaration extends ClassElement, JSDocContainer { readonly kind: SyntaxKind.PropertyDeclaration; readonly parent: ClassLikeDeclaration; @@ -786,12 +760,6 @@ declare namespace ts { readonly name: PropertyName; readonly initializer: Expression; } - interface PropertyAssignment { - /** @deprecated A property assignment cannot have a question token */ - readonly questionToken?: QuestionToken | undefined; - /** @deprecated A property assignment cannot have an exclamation token */ - readonly exclamationToken?: ExclamationToken | undefined; - } interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer { readonly kind: SyntaxKind.ShorthandPropertyAssignment; readonly parent: ObjectLiteralExpression; @@ -799,14 +767,6 @@ declare namespace ts { readonly equalsToken?: EqualsToken; readonly objectAssignmentInitializer?: Expression; } - interface ShorthandPropertyAssignment { - /** @deprecated A shorthand property assignment cannot have modifiers */ - readonly modifiers?: NodeArray | undefined; - /** @deprecated A shorthand property assignment cannot have a question token */ - readonly questionToken?: QuestionToken | undefined; - /** @deprecated A shorthand property assignment cannot have an exclamation token */ - readonly exclamationToken?: ExclamationToken | undefined; - } interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer { readonly kind: SyntaxKind.SpreadAssignment; readonly parent: ObjectLiteralExpression; @@ -845,7 +805,7 @@ declare namespace ts { type FunctionLike = SignatureDeclaration; interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement, LocalsContainer { readonly kind: SyntaxKind.FunctionDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name?: Identifier; readonly body?: FunctionBody; } @@ -865,7 +825,7 @@ declare namespace ts { interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.Constructor; readonly parent: ClassLikeDeclaration; - readonly modifiers?: NodeArray | undefined; + readonly modifiers?: NodeArray | undefined; readonly body?: FunctionBody | undefined; } /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */ @@ -891,7 +851,7 @@ declare namespace ts { interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement, LocalsContainer { readonly kind: SyntaxKind.IndexSignature; readonly parent: ObjectTypeDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly type: TypeNode; } interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer, LocalsContainer { @@ -929,10 +889,6 @@ declare namespace ts { interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer { readonly kind: SyntaxKind.FunctionType; } - interface FunctionTypeNode { - /** @deprecated A function type cannot have modifiers */ - readonly modifiers?: NodeArray | undefined; - } interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase, LocalsContainer { readonly kind: SyntaxKind.ConstructorType; readonly modifiers?: NodeArray; @@ -1474,7 +1430,7 @@ declare namespace ts { interface DebuggerStatement extends Statement, FlowContainer { readonly kind: SyntaxKind.DebuggerStatement; } - interface MissingDeclaration extends DeclarationStatement { + interface MissingDeclaration extends DeclarationStatement, PrimaryExpression { readonly kind: SyntaxKind.MissingDeclaration; readonly name?: Identifier; } @@ -1485,7 +1441,7 @@ declare namespace ts { } interface VariableStatement extends Statement, FlowContainer { readonly kind: SyntaxKind.VariableStatement; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly declarationList: VariableDeclarationList; } interface ExpressionStatement extends Statement, FlowContainer { @@ -1622,7 +1578,7 @@ declare namespace ts { } interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.InterfaceDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly heritageClauses?: NodeArray; @@ -1636,7 +1592,7 @@ declare namespace ts { } interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.TypeAliasDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly type: TypeNode; @@ -1649,7 +1605,7 @@ declare namespace ts { } interface EnumDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.EnumDeclaration; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly members: NodeArray; } @@ -1658,7 +1614,7 @@ declare namespace ts { interface ModuleDeclaration extends DeclarationStatement, JSDocContainer, LocalsContainer { readonly kind: SyntaxKind.ModuleDeclaration; readonly parent: ModuleBody | SourceFile; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: ModuleName; readonly body?: ModuleBody | JSDocNamespaceDeclaration; } @@ -1686,7 +1642,7 @@ declare namespace ts { interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ImportEqualsDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly name: Identifier; readonly isTypeOnly: boolean; readonly moduleReference: ModuleReference; @@ -1699,7 +1655,7 @@ declare namespace ts { interface ImportDeclaration extends Statement { readonly kind: SyntaxKind.ImportDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly importClause?: ImportClause; /** If this is not a StringLiteral it will be a grammar error. */ readonly moduleSpecifier: Expression; @@ -1744,7 +1700,7 @@ declare namespace ts { interface ExportDeclaration extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ExportDeclaration; readonly parent: SourceFile | ModuleBlock; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly isTypeOnly: boolean; /** Will not be assigned in the case of `export * from "foo";` */ readonly exportClause?: NamedExportBindings; @@ -1778,8 +1734,8 @@ declare namespace ts { readonly name: Identifier; } type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier; - type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier; - type TypeOnlyAliasDeclaration = ImportClause & { + type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier | ExportDeclaration | NamespaceExport; + type TypeOnlyImportDeclaration = ImportClause & { readonly isTypeOnly: true; readonly name: Identifier; } | ImportEqualsDeclaration & { @@ -1796,7 +1752,8 @@ declare namespace ts { readonly isTypeOnly: true; }; }; - }) | ExportSpecifier & ({ + }); + type TypeOnlyExportDeclaration = ExportSpecifier & ({ readonly isTypeOnly: true; } | { readonly parent: NamedExports & { @@ -1804,7 +1761,14 @@ declare namespace ts { readonly isTypeOnly: true; }; }; - }); + }) | ExportDeclaration & { + readonly isTypeOnly: true; + } | NamespaceExport & { + readonly parent: ExportDeclaration & { + readonly isTypeOnly: true; + }; + }; + type TypeOnlyAliasDeclaration = TypeOnlyImportDeclaration | TypeOnlyExportDeclaration; /** * This is either an `export =` or an `export default` declaration. * Unless `isExportEquals` is set, this node was parsed as an `export default`. @@ -1812,7 +1776,7 @@ declare namespace ts { interface ExportAssignment extends DeclarationStatement, JSDocContainer { readonly kind: SyntaxKind.ExportAssignment; readonly parent: SourceFile; - readonly modifiers?: NodeArray; + readonly modifiers?: NodeArray; readonly isExportEquals?: boolean; readonly expression: Expression; } @@ -2032,6 +1996,10 @@ declare namespace ts { /** If true, then this type literal represents an *array* of its type. */ readonly isArrayType: boolean; } + interface JSDocSatisfiesTag extends JSDocTag { + readonly kind: SyntaxKind.JSDocSatisfiesTag; + readonly typeExpression: JSDocTypeExpression; + } enum FlowFlags { Unreachable = 1, Start = 2, @@ -2157,9 +2125,10 @@ declare namespace ts { } interface Bundle extends Node { readonly kind: SyntaxKind.Bundle; - readonly prepends: readonly (InputFiles | UnparsedSource)[]; + /** @deprecated */ readonly prepends: readonly (InputFiles | UnparsedSource)[]; readonly sourceFiles: readonly SourceFile[]; } + /** @deprecated */ interface InputFiles extends Node { readonly kind: SyntaxKind.InputFiles; javascriptPath?: string; @@ -2171,6 +2140,7 @@ declare namespace ts { declarationMapPath?: string; declarationMapText?: string; } + /** @deprecated */ interface UnparsedSource extends Node { readonly kind: SyntaxKind.UnparsedSource; fileName: string; @@ -2186,28 +2156,35 @@ declare namespace ts { readonly syntheticReferences?: readonly UnparsedSyntheticReference[]; readonly texts: readonly UnparsedSourceText[]; } + /** @deprecated */ type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike; + /** @deprecated */ type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference; + /** @deprecated */ interface UnparsedSection extends Node { readonly kind: SyntaxKind; readonly parent: UnparsedSource; readonly data?: string; } + /** @deprecated */ interface UnparsedPrologue extends UnparsedSection { readonly kind: SyntaxKind.UnparsedPrologue; readonly parent: UnparsedSource; readonly data: string; } + /** @deprecated */ interface UnparsedPrepend extends UnparsedSection { readonly kind: SyntaxKind.UnparsedPrepend; readonly parent: UnparsedSource; readonly data: string; readonly texts: readonly UnparsedTextLike[]; } + /** @deprecated */ interface UnparsedTextLike extends UnparsedSection { readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText; readonly parent: UnparsedSource; } + /** @deprecated */ interface UnparsedSyntheticReference extends UnparsedSection { readonly kind: SyntaxKind.UnparsedSyntheticReference; readonly parent: UnparsedSource; @@ -2348,9 +2325,7 @@ declare namespace ts { DiagnosticsPresent_OutputsSkipped = 1, DiagnosticsPresent_OutputsGenerated = 2, InvalidProject_OutputsSkipped = 3, - ProjectReferenceCycle_OutputsSkipped = 4, - /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */ - ProjectReferenceCycle_OutputsSkupped = 4 + ProjectReferenceCycle_OutputsSkipped = 4 } interface EmitResult { emitSkipped: boolean; @@ -2480,8 +2455,6 @@ declare namespace ts { OmitThisParameter = 33554432, AllowThisInObjectLiteral = 32768, AllowQualifiedNameInPlaceOfIdentifier = 65536, - /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */ - AllowQualifedNameInPlaceOfIdentifier = 65536, AllowAnonymousIdentifier = 131072, AllowEmptyUnionOrIntersection = 262144, AllowEmptyTuple = 524288, @@ -2516,7 +2489,6 @@ declare namespace ts { InElementType = 2097152, InFirstTypeArgument = 4194304, InTypeAlias = 8388608, - /** @deprecated */ WriteOwnNameForAnyLike = 0, NodeBuilderFlagsMask = 848330091 } enum SymbolFormatFlags { @@ -2972,8 +2944,6 @@ declare namespace ts { PriorityImpliesCombination = 416, Circularity = -1 } - /** @deprecated Use FileExtensionInfo instead. */ - type JsFileExtensionInfo = FileExtensionInfo; interface FileExtensionInfo { extension: string; isMixedContent: boolean; @@ -3181,6 +3151,7 @@ declare namespace ts { types?: string[]; /** Paths used to compute primary types search locations */ typeRoots?: string[]; + verbatimModuleSyntax?: boolean; esModuleInterop?: boolean; useDefineForClassFields?: boolean; [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined; @@ -3195,11 +3166,6 @@ declare namespace ts { [option: string]: CompilerOptionsValue | undefined; } interface TypeAcquisition { - /** - * @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - enableAutoDiscovery?: boolean; enable?: boolean; include?: string[]; exclude?: string[]; @@ -3575,8 +3541,8 @@ declare namespace ts { updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): MethodSignature; createMethodDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; updateMethodDeclaration(node: MethodDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; + createConstructorDeclaration(modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; + updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; @@ -3585,8 +3551,8 @@ declare namespace ts { updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): CallSignatureDeclaration; createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration; updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined): ConstructSignatureDeclaration; - createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; + createIndexSignature(modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; + updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly ModifierLike[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration; @@ -3722,8 +3688,8 @@ declare namespace ts { createSemicolonClassElement(): SemicolonClassElement; createBlock(statements: readonly Statement[], multiLine?: boolean): Block; updateBlock(node: Block, statements: readonly Statement[]): Block; - createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement; - updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement; + createVariableStatement(modifiers: readonly ModifierLike[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement; + updateVariableStatement(node: VariableStatement, modifiers: readonly ModifierLike[] | undefined, declarationList: VariableDeclarationList): VariableStatement; createEmptyStatement(): EmptyStatement; createExpressionStatement(expression: Expression): ExpressionStatement; updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement; @@ -3764,24 +3730,24 @@ declare namespace ts { updateFunctionDeclaration(node: FunctionDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; - updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; - createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; - updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; + createInterfaceDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; + updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; + createTypeAliasDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; + updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; + createEnumDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; + updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; + createModuleDeclaration(modifiers: readonly ModifierLike[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; + updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly ModifierLike[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; createModuleBlock(statements: readonly Statement[]): ModuleBlock; updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock; createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock; updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock; createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration; updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration; - createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; - updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; + createImportEqualsDeclaration(modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; + updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; + createImportDeclaration(modifiers: readonly ModifierLike[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; + updateImportDeclaration(node: ImportDeclaration, modifiers: readonly ModifierLike[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; createAssertClause(elements: NodeArray, multiLine?: boolean): AssertClause; @@ -3798,10 +3764,10 @@ declare namespace ts { updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports; createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; - createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; - updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; - updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; + createExportAssignment(modifiers: readonly ModifierLike[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; + updateExportAssignment(node: ExportAssignment, modifiers: readonly ModifierLike[] | undefined, expression: Expression): ExportAssignment; + createExportDeclaration(modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; + updateExportDeclaration(node: ExportDeclaration, modifiers: readonly ModifierLike[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; @@ -3878,12 +3844,14 @@ declare namespace ts { updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray | undefined): JSDocReadonlyTag; createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray): JSDocUnknownTag; updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray | undefined): JSDocUnknownTag; - createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray): JSDocDeprecatedTag; - updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray): JSDocDeprecatedTag; - createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray): JSDocOverrideTag; - updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray): JSDocOverrideTag; + createJSDocDeprecatedTag(tagName: Identifier | undefined, comment?: string | NodeArray): JSDocDeprecatedTag; + updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier | undefined, comment?: string | NodeArray): JSDocDeprecatedTag; + createJSDocOverrideTag(tagName: Identifier | undefined, comment?: string | NodeArray): JSDocOverrideTag; + updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier | undefined, comment?: string | NodeArray): JSDocOverrideTag; createJSDocThrowsTag(tagName: Identifier, typeExpression: JSDocTypeExpression | undefined, comment?: string | NodeArray): JSDocThrowsTag; updateJSDocThrowsTag(node: JSDocThrowsTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment?: string | NodeArray | undefined): JSDocThrowsTag; + createJSDocSatisfiesTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray): JSDocSatisfiesTag; + updateJSDocSatisfiesTag(node: JSDocSatisfiesTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray | undefined): JSDocSatisfiesTag; createJSDocText(text: string): JSDocText; updateJSDocText(node: JSDocText, text: string): JSDocText; createJSDocComment(comment?: string | NodeArray | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc; @@ -3933,8 +3901,10 @@ declare namespace ts { updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression; createCommaListExpression(elements: readonly Expression[]): CommaListExpression; updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression; - createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; - updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; + createBundle(sourceFiles: readonly SourceFile[]): Bundle; + /** @deprecated*/ createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; + updateBundle(node: Bundle, sourceFiles: readonly SourceFile[]): Bundle; + /** @deprecated*/ updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; createComma(left: Expression, right: Expression): BinaryExpression; createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment; createAssignment(left: Expression, right: Expression): AssignmentExpression; @@ -3977,179 +3947,6 @@ declare namespace ts { createExternalModuleExport(exportName: Identifier): ExportDeclaration; restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression; } - interface NodeFactory { - /** @deprecated Use the overload that accepts 'modifiers' */ - createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode; - /** @deprecated Use the overload that accepts 'modifiers' */ - updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode): ConstructorTypeNode; - } - interface NodeFactory { - createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; - /** @deprecated Use the overload that accepts 'assertions' */ - createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; - /** @deprecated Use the overload that accepts 'assertions' */ - updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode; - } - interface NodeFactory { - /** @deprecated Use the overload that accepts 'modifiers' */ - createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration; - /** @deprecated Use the overload that accepts 'modifiers' */ - updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration; - } - interface NodeFactory { - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateParameterDeclaration(node: ParameterDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updatePropertyDeclaration(node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createMethodDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateMethodDeclaration(node: MethodDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; - /** - * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. - */ - createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - /** - * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - /** - * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. - */ - updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; - /** - * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. - */ - createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createClassExpression(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassExpression(node: ClassExpression, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createFunctionDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateFunctionDeclaration(node: FunctionDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - createClassDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - /** - * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateClassDeclaration(node: ClassDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateInterfaceDeclaration(node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; - /** - * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. - */ - updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; - } interface CoreTransformationContext { readonly factory: NodeFactory; /** Gets the compiler options supplied to the transformer. */ @@ -4246,16 +4043,39 @@ declare namespace ts { /** * A function that accepts and possibly transforms a node. */ - type Visitor = (node: Node) => VisitResult; + type Visitor = (node: TIn) => VisitResult; + /** + * A function that walks a node using the given visitor, lifting node arrays into single nodes, + * returning an node which satisfies the test. + * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * + * For the canonical implementation of this type, @see {visitNode}. + */ interface NodeVisitor { - (nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; - (nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; + (node: TIn, visitor: Visitor, TVisited>, test: (node: Node) => node is TOut, lift?: (node: readonly Node[]) => Node): TOut | (TIn & undefined) | (TVisited & undefined); + (node: TIn, visitor: Visitor, TVisited>, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => Node): Node | (TIn & undefined) | (TVisited & undefined); } + /** + * A function that walks a node array using the given visitor, returning an array whose contents satisfy the test. + * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * + * For the canonical implementation of this type, @see {visitNodes}. + */ interface NodesVisitor { - (nodes: NodeArray, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray; - (nodes: NodeArray | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | undefined; + | undefined, TOut extends Node>(nodes: TInArray, visitor: Visitor, test: (node: Node) => node is TOut, start?: number, count?: number): NodeArray | (TInArray & undefined); + | undefined>(nodes: TInArray, visitor: Visitor, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | (TInArray & undefined); } - type VisitResult = T | readonly T[] | undefined; + type VisitResult = T | readonly Node[]; interface Printer { /** * Print a node and its subtree as-is, without any emit transformations. @@ -4455,6 +4275,11 @@ declare namespace ts { readonly allowRenameOfImportPath?: boolean; readonly autoImportFileExcludePatterns?: string[]; readonly organizeImportsIgnoreCase?: "auto" | boolean; + readonly organizeImportsCollation?: "ordinal" | "unicode"; + readonly organizeImportsLocale?: string; + readonly organizeImportsNumericCollation?: boolean; + readonly organizeImportsAccentCollation?: boolean; + readonly organizeImportsCaseFirst?: "upper" | "lower" | false; } /** Represents a bigint literal value without requiring bigint support */ interface PseudoBigInt { @@ -4469,6 +4294,7 @@ declare namespace ts { } type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void; type DirectoryWatcherCallback = (fileName: string) => void; + type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex"; interface System { args: string[]; newLine: string; @@ -4527,8 +4353,8 @@ declare namespace ts { function forEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; function forEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined; function forEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; - function reduceEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; - function reduceEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; + function reduceEachLeadingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U | undefined; + function reduceEachTrailingCommentRange(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U | undefined; function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined; function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined; /** Optionally, get the shebang */ @@ -4607,7 +4433,7 @@ declare namespace ts { function getTypeParameterOwner(d: Declaration): Declaration | undefined; function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration; function isEmptyBindingPattern(node: BindingName): node is BindingPattern; - function isEmptyBindingElement(node: BindingElement): boolean; + function isEmptyBindingElement(node: BindingElement | ArrayBindingElement): boolean; function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration; function getCombinedModifierFlags(node: Declaration): ModifierFlags; function getCombinedNodeFlags(node: Node): NodeFlags; @@ -4624,7 +4450,7 @@ declare namespace ts { function getOriginalNode(node: Node): Node; function getOriginalNode(node: Node, nodeTest: (node: Node) => node is T): T; function getOriginalNode(node: Node | undefined): Node | undefined; - function getOriginalNode(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined; + function getOriginalNode(node: Node | undefined, nodeTest: (node: Node) => node is T): T | undefined; /** * Iterates through the parent chain of a node and performs the callback on each parent until the callback * returns a truthy value, then returns that value. @@ -4664,6 +4490,11 @@ declare namespace ts { */ function unescapeLeadingUnderscores(identifier: __String): string; function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string; + /** + * If the text of an Identifier matches a keyword (including contextual and TypeScript-specific keywords), returns the + * SyntaxKind for the matching keyword. + */ + function identifierToKeywordKind(node: Identifier): KeywordSyntaxKind | undefined; function symbolName(symbol: Symbol): string; function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined; function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined; @@ -4725,6 +4556,7 @@ declare namespace ts { function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined; /** Gets the JSDoc template tag for the node if present */ function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined; + function getJSDocSatisfiesTag(node: Node): JSDocSatisfiesTag | undefined; /** Gets the JSDoc type tag for the node if present and valid */ function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined; /** @@ -4778,7 +4610,9 @@ declare namespace ts { function isNonNullChain(node: Node): node is NonNullChain; function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement; function isNamedExportBindings(node: Node): node is NamedExportBindings; + /** @deprecated */ function isUnparsedTextLike(node: Node): node is UnparsedTextLike; + /** @deprecated */ function isUnparsedNode(node: Node): node is UnparsedNode; function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag; /** @@ -4797,6 +4631,8 @@ declare namespace ts { function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken; function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; + function isTypeOnlyImportDeclaration(node: Node): node is TypeOnlyImportDeclaration; + function isTypeOnlyExportDeclaration(node: Node): node is TypeOnlyExportDeclaration; function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration; function isAssertionKey(node: Node): node is AssertionKey; function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; @@ -4820,13 +4656,30 @@ declare namespace ts { */ function isTypeNode(node: Node): node is TypeNode; function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode; + function isArrayBindingElement(node: Node): node is ArrayBindingElement; function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName; function isCallLikeExpression(node: Node): node is CallLikeExpression; function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression; function isTemplateLiteral(node: Node): node is TemplateLiteral; + function isLeftHandSideExpression(node: Node): node is LeftHandSideExpression; + function isLiteralTypeLiteral(node: Node): node is NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression; + /** + * Determines whether a node is an expression based only on its kind. + */ + function isExpression(node: Node): node is Expression; function isAssertionExpression(node: Node): node is AssertionExpression; function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement; function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement; + function isConciseBody(node: Node): node is ConciseBody; + function isForInitializer(node: Node): node is ForInitializer; + function isModuleBody(node: Node): node is ModuleBody; + function isNamedImportBindings(node: Node): node is NamedImportBindings; + function isStatement(node: Node): node is Statement; + function isModuleReference(node: Node): node is ModuleReference; + function isJsxTagNameExpression(node: Node): node is JsxTagNameExpression; + function isJsxChild(node: Node): node is JsxChild; + function isJsxAttributeLike(node: Node): node is JsxAttributeLike; + function isStringLiteralOrJsxExpression(node: Node): node is StringLiteral | JsxExpression; function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement; function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause; /** True if node is of a kind that may contain comment text. */ @@ -4846,11 +4699,17 @@ declare namespace ts { name: Identifier; }; function emitModuleKindIsNonNodeESM(moduleKind: ModuleKind): boolean; + /** @deprecated */ function createUnparsedSourceFile(text: string): UnparsedSource; + /** @deprecated */ function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource; + /** @deprecated */ function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource; + /** @deprecated */ function createInputFiles(javascriptText: string, declarationText: string): InputFiles; + /** @deprecated */ function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles; + /** @deprecated */ function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles; /** * Create an external source map source file reference @@ -4939,8 +4798,15 @@ declare namespace ts { function isPlusToken(node: Node): node is PlusToken; function isMinusToken(node: Node): node is MinusToken; function isAsteriskToken(node: Node): node is AsteriskToken; + function isExclamationToken(node: Node): node is ExclamationToken; + function isQuestionToken(node: Node): node is QuestionToken; + function isColonToken(node: Node): node is ColonToken; + function isQuestionDotToken(node: Node): node is QuestionDotToken; + function isEqualsGreaterThanToken(node: Node): node is EqualsGreaterThanToken; function isIdentifier(node: Node): node is Identifier; function isPrivateIdentifier(node: Node): node is PrivateIdentifier; + function isAssertsKeyword(node: Node): node is AssertsKeyword; + function isAwaitKeyword(node: Node): node is AwaitKeyword; function isQualifiedName(node: Node): node is QualifiedName; function isComputedPropertyName(node: Node): node is ComputedPropertyName; function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration; @@ -5084,9 +4950,11 @@ declare namespace ts { function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment; function isSpreadAssignment(node: Node): node is SpreadAssignment; function isEnumMember(node: Node): node is EnumMember; + /** @deprecated */ function isUnparsedPrepend(node: Node): node is UnparsedPrepend; function isSourceFile(node: Node): node is SourceFile; function isBundle(node: Node): node is Bundle; + /** @deprecated */ function isUnparsedSource(node: Node): node is UnparsedSource; function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression; function isJSDocNameReference(node: Node): node is JSDocNameReference; @@ -5127,7 +4995,14 @@ declare namespace ts { function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag; function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag; function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag; + function isJSDocSatisfiesTag(node: Node): node is JSDocSatisfiesTag; function isJSDocThrowsTag(node: Node): node is JSDocThrowsTag; + function isQuestionOrExclamationToken(node: Node): node is QuestionToken | ExclamationToken; + function isIdentifierOrThisTypeNode(node: Node): node is Identifier | ThisTypeNode; + function isReadonlyKeywordOrPlusOrMinusToken(node: Node): node is ReadonlyKeyword | PlusToken | MinusToken; + function isQuestionOrPlusOrMinusToken(node: Node): node is QuestionToken | PlusToken | MinusToken; + function isModuleName(node: Node): node is ModuleName; + function isBinaryOperatorToken(node: Node): node is BinaryOperatorToken; function setTextRange(range: T, location: TextRange | undefined): T; function canHaveModifiers(node: Node): node is HasModifiers; function canHaveDecorators(node: Node): node is HasDecorators; @@ -5335,41 +5210,65 @@ declare namespace ts { /** * Visits a Node using the supplied visitor, possibly returning a new Node in its place. * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param node The Node to visit. * @param visitor The callback used to visit the Node. * @param test A callback to execute to verify the Node is valid. * @param lift An optional callback to execute to lift a NodeArray into a valid Node. */ - function visitNode(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; + function visitNode(node: TIn, visitor: Visitor, TVisited>, test: (node: Node) => node is TOut, lift?: (node: readonly Node[]) => Node): TOut | (TIn & undefined) | (TVisited & undefined); /** * Visits a Node using the supplied visitor, possibly returning a new Node in its place. * + * - If the input node is undefined, then the output is undefined. + * - If the visitor returns undefined, then the output is undefined. + * - If the output node is not undefined, then it will satisfy the test function. + * - In order to obtain a return type that is more specific than `Node`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param node The Node to visit. * @param visitor The callback used to visit the Node. * @param test A callback to execute to verify the Node is valid. * @param lift An optional callback to execute to lift a NodeArray into a valid Node. */ - function visitNode(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; + function visitNode(node: TIn, visitor: Visitor, TVisited>, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => Node): Node | (TIn & undefined) | (TVisited & undefined); /** * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param nodes The NodeArray to visit. * @param visitor The callback used to visit a Node. * @param test A node test to execute for each node. * @param start An optional value indicating the starting offset at which to start visiting. * @param count An optional value indicating the maximum number of nodes to visit. */ - function visitNodes(nodes: NodeArray, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray; + function visitNodes | undefined, TOut extends Node>(nodes: TInArray, visitor: Visitor, test: (node: Node) => node is TOut, start?: number, count?: number): NodeArray | (TInArray & undefined); /** * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. * + * - If the input node array is undefined, the output is undefined. + * - If the visitor can return undefined, the node it visits in the array will be reused. + * - If the output node array is not undefined, then its contents will satisfy the test. + * - In order to obtain a return type that is more specific than `NodeArray`, a test + * function _must_ be provided, and that function must be a type predicate. + * * @param nodes The NodeArray to visit. * @param visitor The callback used to visit a Node. * @param test A node test to execute for each node. * @param start An optional value indicating the starting offset at which to start visiting. * @param count An optional value indicating the maximum number of nodes to visit. */ - function visitNodes(nodes: NodeArray | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | undefined; + function visitNodes | undefined>(nodes: TInArray, visitor: Visitor, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray | (TInArray & undefined); /** * Starts a new lexical environment and visits a statement list, ending the lexical environment * and merging hoisted declarations upon completion. @@ -5400,6 +5299,12 @@ declare namespace ts { * Visits an iteration body, adding any block-scoped variables required by the transformation. */ function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement; + /** + * Visits the elements of a {@link CommaListExpression}. + * @param visitor The visitor to use when visiting expressions whose result will not be discarded at runtime. + * @param discardVisitor The visitor to use when visiting expressions whose result will be discarded at runtime. Defaults to {@link visitor}. + */ + function visitCommaListElements(elements: NodeArray, visitor: Visitor, discardVisitor?: Visitor): NodeArray; /** * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place. * @@ -5495,15 +5400,11 @@ declare namespace ts { * Note: The file might not exist. */ function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName; - /** @deprecated */ function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName; interface FormatDiagnosticsHost { getCurrentDirectory(): string; getCanonicalFileName(fileName: string): string; getNewLine(): string; } - /** @deprecated */ interface ResolveProjectReferencePathHost { - fileExists(fileName: string): boolean; - } interface EmitOutput { outputFiles: OutputFile[]; emitSkipped: boolean; @@ -5846,7 +5747,7 @@ declare namespace ts { } enum InvalidatedProjectKind { Build = 0, - UpdateBundle = 1, + /** @deprecated */ UpdateBundle = 1, UpdateOutputFileStamps = 2 } interface InvalidatedProjectBase { @@ -5878,6 +5779,7 @@ declare namespace ts { getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult; emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined; } + /** @deprecated */ interface UpdateBundleProject extends InvalidatedProjectBase { readonly kind: InvalidatedProjectKind.UpdateBundle; emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject | undefined; @@ -7218,738 +7120,5 @@ declare namespace ts { * @param compilerOptions Optional compiler options. */ function transform(source: T | T[], transformers: TransformerFactory[], compilerOptions?: CompilerOptions): TransformationResult; - /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */ - const createNodeArray: typeof factory.createNodeArray; - /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */ - const createNumericLiteral: typeof factory.createNumericLiteral; - /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */ - const createBigIntLiteral: typeof factory.createBigIntLiteral; - /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */ - const createStringLiteral: typeof factory.createStringLiteral; - /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */ - const createStringLiteralFromNode: typeof factory.createStringLiteralFromNode; - /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */ - const createRegularExpressionLiteral: typeof factory.createRegularExpressionLiteral; - /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */ - const createLoopVariable: typeof factory.createLoopVariable; - /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */ - const createUniqueName: typeof factory.createUniqueName; - /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */ - const createPrivateIdentifier: typeof factory.createPrivateIdentifier; - /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */ - const createSuper: typeof factory.createSuper; - /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */ - const createThis: typeof factory.createThis; - /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */ - const createNull: typeof factory.createNull; - /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */ - const createTrue: typeof factory.createTrue; - /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */ - const createFalse: typeof factory.createFalse; - /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */ - const createModifier: typeof factory.createModifier; - /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */ - const createModifiersFromModifierFlags: typeof factory.createModifiersFromModifierFlags; - /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */ - const createQualifiedName: typeof factory.createQualifiedName; - /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */ - const updateQualifiedName: typeof factory.updateQualifiedName; - /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */ - const createComputedPropertyName: typeof factory.createComputedPropertyName; - /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */ - const updateComputedPropertyName: typeof factory.updateComputedPropertyName; - /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ - const createTypeParameterDeclaration: typeof factory.createTypeParameterDeclaration; - /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ - const updateTypeParameterDeclaration: typeof factory.updateTypeParameterDeclaration; - /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */ - const createParameter: typeof factory.createParameterDeclaration; - /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */ - const updateParameter: typeof factory.updateParameterDeclaration; - /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */ - const createDecorator: typeof factory.createDecorator; - /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */ - const updateDecorator: typeof factory.updateDecorator; - /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */ - const createProperty: typeof factory.createPropertyDeclaration; - /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */ - const updateProperty: typeof factory.updatePropertyDeclaration; - /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */ - const createMethod: typeof factory.createMethodDeclaration; - /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */ - const updateMethod: typeof factory.updateMethodDeclaration; - /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */ - const createConstructor: typeof factory.createConstructorDeclaration; - /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */ - const updateConstructor: typeof factory.updateConstructorDeclaration; - /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const createGetAccessor: typeof factory.createGetAccessorDeclaration; - /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const updateGetAccessor: typeof factory.updateGetAccessorDeclaration; - /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const createSetAccessor: typeof factory.createSetAccessorDeclaration; - /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ - const updateSetAccessor: typeof factory.updateSetAccessorDeclaration; - /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */ - const createCallSignature: typeof factory.createCallSignature; - /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */ - const updateCallSignature: typeof factory.updateCallSignature; - /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */ - const createConstructSignature: typeof factory.createConstructSignature; - /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */ - const updateConstructSignature: typeof factory.updateConstructSignature; - /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */ - const updateIndexSignature: typeof factory.updateIndexSignature; - /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */ - const createKeywordTypeNode: typeof factory.createKeywordTypeNode; - /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ - const createTypePredicateNodeWithModifier: typeof factory.createTypePredicateNode; - /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ - const updateTypePredicateNodeWithModifier: typeof factory.updateTypePredicateNode; - /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */ - const createTypeReferenceNode: typeof factory.createTypeReferenceNode; - /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */ - const updateTypeReferenceNode: typeof factory.updateTypeReferenceNode; - /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */ - const createFunctionTypeNode: typeof factory.createFunctionTypeNode; - /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */ - const updateFunctionTypeNode: typeof factory.updateFunctionTypeNode; - /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */ - const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode; - /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */ - const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode) => ConstructorTypeNode; - /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */ - const createTypeQueryNode: typeof factory.createTypeQueryNode; - /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */ - const updateTypeQueryNode: typeof factory.updateTypeQueryNode; - /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */ - const createTypeLiteralNode: typeof factory.createTypeLiteralNode; - /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */ - const updateTypeLiteralNode: typeof factory.updateTypeLiteralNode; - /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */ - const createArrayTypeNode: typeof factory.createArrayTypeNode; - /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */ - const updateArrayTypeNode: typeof factory.updateArrayTypeNode; - /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */ - const createTupleTypeNode: typeof factory.createTupleTypeNode; - /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */ - const updateTupleTypeNode: typeof factory.updateTupleTypeNode; - /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */ - const createOptionalTypeNode: typeof factory.createOptionalTypeNode; - /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */ - const updateOptionalTypeNode: typeof factory.updateOptionalTypeNode; - /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */ - const createRestTypeNode: typeof factory.createRestTypeNode; - /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */ - const updateRestTypeNode: typeof factory.updateRestTypeNode; - /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */ - const createUnionTypeNode: typeof factory.createUnionTypeNode; - /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */ - const updateUnionTypeNode: typeof factory.updateUnionTypeNode; - /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */ - const createIntersectionTypeNode: typeof factory.createIntersectionTypeNode; - /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */ - const updateIntersectionTypeNode: typeof factory.updateIntersectionTypeNode; - /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */ - const createConditionalTypeNode: typeof factory.createConditionalTypeNode; - /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */ - const updateConditionalTypeNode: typeof factory.updateConditionalTypeNode; - /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */ - const createInferTypeNode: typeof factory.createInferTypeNode; - /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */ - const updateInferTypeNode: typeof factory.updateInferTypeNode; - /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */ - const createImportTypeNode: typeof factory.createImportTypeNode; - /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */ - const updateImportTypeNode: typeof factory.updateImportTypeNode; - /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */ - const createParenthesizedType: typeof factory.createParenthesizedType; - /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */ - const updateParenthesizedType: typeof factory.updateParenthesizedType; - /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */ - const createThisTypeNode: typeof factory.createThisTypeNode; - /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */ - const updateTypeOperatorNode: typeof factory.updateTypeOperatorNode; - /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ - const createIndexedAccessTypeNode: typeof factory.createIndexedAccessTypeNode; - /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ - const updateIndexedAccessTypeNode: typeof factory.updateIndexedAccessTypeNode; - /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */ - const createMappedTypeNode: typeof factory.createMappedTypeNode; - /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */ - const updateMappedTypeNode: typeof factory.updateMappedTypeNode; - /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */ - const createLiteralTypeNode: typeof factory.createLiteralTypeNode; - /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */ - const updateLiteralTypeNode: typeof factory.updateLiteralTypeNode; - /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */ - const createObjectBindingPattern: typeof factory.createObjectBindingPattern; - /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */ - const updateObjectBindingPattern: typeof factory.updateObjectBindingPattern; - /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */ - const createArrayBindingPattern: typeof factory.createArrayBindingPattern; - /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */ - const updateArrayBindingPattern: typeof factory.updateArrayBindingPattern; - /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */ - const createBindingElement: typeof factory.createBindingElement; - /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */ - const updateBindingElement: typeof factory.updateBindingElement; - /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */ - const createArrayLiteral: typeof factory.createArrayLiteralExpression; - /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */ - const updateArrayLiteral: typeof factory.updateArrayLiteralExpression; - /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */ - const createObjectLiteral: typeof factory.createObjectLiteralExpression; - /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */ - const updateObjectLiteral: typeof factory.updateObjectLiteralExpression; - /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */ - const createPropertyAccess: typeof factory.createPropertyAccessExpression; - /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */ - const updatePropertyAccess: typeof factory.updatePropertyAccessExpression; - /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */ - const createPropertyAccessChain: typeof factory.createPropertyAccessChain; - /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */ - const updatePropertyAccessChain: typeof factory.updatePropertyAccessChain; - /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */ - const createElementAccess: typeof factory.createElementAccessExpression; - /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */ - const updateElementAccess: typeof factory.updateElementAccessExpression; - /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */ - const createElementAccessChain: typeof factory.createElementAccessChain; - /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */ - const updateElementAccessChain: typeof factory.updateElementAccessChain; - /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */ - const createCall: typeof factory.createCallExpression; - /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */ - const updateCall: typeof factory.updateCallExpression; - /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */ - const createCallChain: typeof factory.createCallChain; - /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */ - const updateCallChain: typeof factory.updateCallChain; - /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */ - const createNew: typeof factory.createNewExpression; - /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */ - const updateNew: typeof factory.updateNewExpression; - /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */ - const createTypeAssertion: typeof factory.createTypeAssertion; - /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */ - const updateTypeAssertion: typeof factory.updateTypeAssertion; - /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */ - const createParen: typeof factory.createParenthesizedExpression; - /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */ - const updateParen: typeof factory.updateParenthesizedExpression; - /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */ - const createFunctionExpression: typeof factory.createFunctionExpression; - /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */ - const updateFunctionExpression: typeof factory.updateFunctionExpression; - /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */ - const createDelete: typeof factory.createDeleteExpression; - /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */ - const updateDelete: typeof factory.updateDeleteExpression; - /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */ - const createTypeOf: typeof factory.createTypeOfExpression; - /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */ - const updateTypeOf: typeof factory.updateTypeOfExpression; - /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */ - const createVoid: typeof factory.createVoidExpression; - /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */ - const updateVoid: typeof factory.updateVoidExpression; - /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */ - const createAwait: typeof factory.createAwaitExpression; - /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */ - const updateAwait: typeof factory.updateAwaitExpression; - /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */ - const createPrefix: typeof factory.createPrefixUnaryExpression; - /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */ - const updatePrefix: typeof factory.updatePrefixUnaryExpression; - /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */ - const createPostfix: typeof factory.createPostfixUnaryExpression; - /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */ - const updatePostfix: typeof factory.updatePostfixUnaryExpression; - /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */ - const createBinary: typeof factory.createBinaryExpression; - /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */ - const updateConditional: typeof factory.updateConditionalExpression; - /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */ - const createTemplateExpression: typeof factory.createTemplateExpression; - /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */ - const updateTemplateExpression: typeof factory.updateTemplateExpression; - /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */ - const createTemplateHead: typeof factory.createTemplateHead; - /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */ - const createTemplateMiddle: typeof factory.createTemplateMiddle; - /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */ - const createTemplateTail: typeof factory.createTemplateTail; - /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */ - const createNoSubstitutionTemplateLiteral: typeof factory.createNoSubstitutionTemplateLiteral; - /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */ - const updateYield: typeof factory.updateYieldExpression; - /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */ - const createSpread: typeof factory.createSpreadElement; - /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */ - const updateSpread: typeof factory.updateSpreadElement; - /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */ - const createOmittedExpression: typeof factory.createOmittedExpression; - /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */ - const createAsExpression: typeof factory.createAsExpression; - /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */ - const updateAsExpression: typeof factory.updateAsExpression; - /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */ - const createNonNullExpression: typeof factory.createNonNullExpression; - /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */ - const updateNonNullExpression: typeof factory.updateNonNullExpression; - /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */ - const createNonNullChain: typeof factory.createNonNullChain; - /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */ - const updateNonNullChain: typeof factory.updateNonNullChain; - /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */ - const createMetaProperty: typeof factory.createMetaProperty; - /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */ - const updateMetaProperty: typeof factory.updateMetaProperty; - /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */ - const createTemplateSpan: typeof factory.createTemplateSpan; - /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */ - const updateTemplateSpan: typeof factory.updateTemplateSpan; - /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */ - const createSemicolonClassElement: typeof factory.createSemicolonClassElement; - /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */ - const createBlock: typeof factory.createBlock; - /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */ - const updateBlock: typeof factory.updateBlock; - /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */ - const createVariableStatement: typeof factory.createVariableStatement; - /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */ - const updateVariableStatement: typeof factory.updateVariableStatement; - /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */ - const createEmptyStatement: typeof factory.createEmptyStatement; - /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ - const createExpressionStatement: typeof factory.createExpressionStatement; - /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ - const updateExpressionStatement: typeof factory.updateExpressionStatement; - /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ - const createStatement: typeof factory.createExpressionStatement; - /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ - const updateStatement: typeof factory.updateExpressionStatement; - /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */ - const createIf: typeof factory.createIfStatement; - /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */ - const updateIf: typeof factory.updateIfStatement; - /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */ - const createDo: typeof factory.createDoStatement; - /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */ - const updateDo: typeof factory.updateDoStatement; - /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */ - const createWhile: typeof factory.createWhileStatement; - /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */ - const updateWhile: typeof factory.updateWhileStatement; - /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */ - const createFor: typeof factory.createForStatement; - /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */ - const updateFor: typeof factory.updateForStatement; - /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */ - const createForIn: typeof factory.createForInStatement; - /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */ - const updateForIn: typeof factory.updateForInStatement; - /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */ - const createForOf: typeof factory.createForOfStatement; - /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */ - const updateForOf: typeof factory.updateForOfStatement; - /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */ - const createContinue: typeof factory.createContinueStatement; - /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */ - const updateContinue: typeof factory.updateContinueStatement; - /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */ - const createBreak: typeof factory.createBreakStatement; - /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */ - const updateBreak: typeof factory.updateBreakStatement; - /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */ - const createReturn: typeof factory.createReturnStatement; - /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */ - const updateReturn: typeof factory.updateReturnStatement; - /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */ - const createWith: typeof factory.createWithStatement; - /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */ - const updateWith: typeof factory.updateWithStatement; - /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */ - const createSwitch: typeof factory.createSwitchStatement; - /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */ - const updateSwitch: typeof factory.updateSwitchStatement; - /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */ - const createLabel: typeof factory.createLabeledStatement; - /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */ - const updateLabel: typeof factory.updateLabeledStatement; - /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */ - const createThrow: typeof factory.createThrowStatement; - /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */ - const updateThrow: typeof factory.updateThrowStatement; - /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */ - const createTry: typeof factory.createTryStatement; - /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */ - const updateTry: typeof factory.updateTryStatement; - /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */ - const createDebuggerStatement: typeof factory.createDebuggerStatement; - /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */ - const createVariableDeclarationList: typeof factory.createVariableDeclarationList; - /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */ - const updateVariableDeclarationList: typeof factory.updateVariableDeclarationList; - /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */ - const createFunctionDeclaration: typeof factory.createFunctionDeclaration; - /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */ - const updateFunctionDeclaration: typeof factory.updateFunctionDeclaration; - /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */ - const createClassDeclaration: typeof factory.createClassDeclaration; - /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */ - const updateClassDeclaration: typeof factory.updateClassDeclaration; - /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */ - const createInterfaceDeclaration: typeof factory.createInterfaceDeclaration; - /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */ - const updateInterfaceDeclaration: typeof factory.updateInterfaceDeclaration; - /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ - const createTypeAliasDeclaration: typeof factory.createTypeAliasDeclaration; - /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ - const updateTypeAliasDeclaration: typeof factory.updateTypeAliasDeclaration; - /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */ - const createEnumDeclaration: typeof factory.createEnumDeclaration; - /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */ - const updateEnumDeclaration: typeof factory.updateEnumDeclaration; - /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */ - const createModuleDeclaration: typeof factory.createModuleDeclaration; - /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */ - const updateModuleDeclaration: typeof factory.updateModuleDeclaration; - /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */ - const createModuleBlock: typeof factory.createModuleBlock; - /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */ - const updateModuleBlock: typeof factory.updateModuleBlock; - /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */ - const createCaseBlock: typeof factory.createCaseBlock; - /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */ - const updateCaseBlock: typeof factory.updateCaseBlock; - /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ - const createNamespaceExportDeclaration: typeof factory.createNamespaceExportDeclaration; - /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ - const updateNamespaceExportDeclaration: typeof factory.updateNamespaceExportDeclaration; - /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ - const createImportEqualsDeclaration: typeof factory.createImportEqualsDeclaration; - /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ - const updateImportEqualsDeclaration: typeof factory.updateImportEqualsDeclaration; - /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */ - const createImportDeclaration: typeof factory.createImportDeclaration; - /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */ - const updateImportDeclaration: typeof factory.updateImportDeclaration; - /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */ - const createNamespaceImport: typeof factory.createNamespaceImport; - /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */ - const updateNamespaceImport: typeof factory.updateNamespaceImport; - /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */ - const createNamedImports: typeof factory.createNamedImports; - /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */ - const updateNamedImports: typeof factory.updateNamedImports; - /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */ - const createImportSpecifier: typeof factory.createImportSpecifier; - /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */ - const updateImportSpecifier: typeof factory.updateImportSpecifier; - /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */ - const createExportAssignment: typeof factory.createExportAssignment; - /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */ - const updateExportAssignment: typeof factory.updateExportAssignment; - /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */ - const createNamedExports: typeof factory.createNamedExports; - /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */ - const updateNamedExports: typeof factory.updateNamedExports; - /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */ - const createExportSpecifier: typeof factory.createExportSpecifier; - /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */ - const updateExportSpecifier: typeof factory.updateExportSpecifier; - /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */ - const createExternalModuleReference: typeof factory.createExternalModuleReference; - /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */ - const updateExternalModuleReference: typeof factory.updateExternalModuleReference; - /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */ - const createJSDocTypeExpression: typeof factory.createJSDocTypeExpression; - /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */ - const createJSDocTypeTag: typeof factory.createJSDocTypeTag; - /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */ - const createJSDocReturnTag: typeof factory.createJSDocReturnTag; - /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */ - const createJSDocThisTag: typeof factory.createJSDocThisTag; - /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */ - const createJSDocComment: typeof factory.createJSDocComment; - /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ - const createJSDocParameterTag: typeof factory.createJSDocParameterTag; - /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */ - const createJSDocClassTag: typeof factory.createJSDocClassTag; - /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */ - const createJSDocAugmentsTag: typeof factory.createJSDocAugmentsTag; - /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */ - const createJSDocEnumTag: typeof factory.createJSDocEnumTag; - /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */ - const createJSDocTemplateTag: typeof factory.createJSDocTemplateTag; - /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */ - const createJSDocTypedefTag: typeof factory.createJSDocTypedefTag; - /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */ - const createJSDocCallbackTag: typeof factory.createJSDocCallbackTag; - /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */ - const createJSDocSignature: typeof factory.createJSDocSignature; - /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */ - const createJSDocPropertyTag: typeof factory.createJSDocPropertyTag; - /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */ - const createJSDocTypeLiteral: typeof factory.createJSDocTypeLiteral; - /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */ - const createJSDocImplementsTag: typeof factory.createJSDocImplementsTag; - /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */ - const createJSDocAuthorTag: typeof factory.createJSDocAuthorTag; - /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */ - const createJSDocPublicTag: typeof factory.createJSDocPublicTag; - /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */ - const createJSDocPrivateTag: typeof factory.createJSDocPrivateTag; - /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */ - const createJSDocProtectedTag: typeof factory.createJSDocProtectedTag; - /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */ - const createJSDocReadonlyTag: typeof factory.createJSDocReadonlyTag; - /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */ - const createJSDocTag: typeof factory.createJSDocUnknownTag; - /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */ - const createJsxElement: typeof factory.createJsxElement; - /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */ - const updateJsxElement: typeof factory.updateJsxElement; - /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ - const createJsxSelfClosingElement: typeof factory.createJsxSelfClosingElement; - /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ - const updateJsxSelfClosingElement: typeof factory.updateJsxSelfClosingElement; - /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */ - const createJsxOpeningElement: typeof factory.createJsxOpeningElement; - /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */ - const updateJsxOpeningElement: typeof factory.updateJsxOpeningElement; - /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */ - const createJsxClosingElement: typeof factory.createJsxClosingElement; - /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */ - const updateJsxClosingElement: typeof factory.updateJsxClosingElement; - /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */ - const createJsxFragment: typeof factory.createJsxFragment; - /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */ - const createJsxText: typeof factory.createJsxText; - /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */ - const updateJsxText: typeof factory.updateJsxText; - /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */ - const createJsxOpeningFragment: typeof factory.createJsxOpeningFragment; - /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */ - const createJsxJsxClosingFragment: typeof factory.createJsxJsxClosingFragment; - /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */ - const updateJsxFragment: typeof factory.updateJsxFragment; - /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */ - const createJsxAttribute: typeof factory.createJsxAttribute; - /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */ - const updateJsxAttribute: typeof factory.updateJsxAttribute; - /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */ - const createJsxAttributes: typeof factory.createJsxAttributes; - /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */ - const updateJsxAttributes: typeof factory.updateJsxAttributes; - /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ - const createJsxSpreadAttribute: typeof factory.createJsxSpreadAttribute; - /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ - const updateJsxSpreadAttribute: typeof factory.updateJsxSpreadAttribute; - /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */ - const createJsxExpression: typeof factory.createJsxExpression; - /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */ - const updateJsxExpression: typeof factory.updateJsxExpression; - /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */ - const createCaseClause: typeof factory.createCaseClause; - /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */ - const updateCaseClause: typeof factory.updateCaseClause; - /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */ - const createDefaultClause: typeof factory.createDefaultClause; - /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */ - const updateDefaultClause: typeof factory.updateDefaultClause; - /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */ - const createHeritageClause: typeof factory.createHeritageClause; - /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */ - const updateHeritageClause: typeof factory.updateHeritageClause; - /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */ - const createCatchClause: typeof factory.createCatchClause; - /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */ - const updateCatchClause: typeof factory.updateCatchClause; - /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */ - const createPropertyAssignment: typeof factory.createPropertyAssignment; - /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */ - const updatePropertyAssignment: typeof factory.updatePropertyAssignment; - /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ - const createShorthandPropertyAssignment: typeof factory.createShorthandPropertyAssignment; - /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ - const updateShorthandPropertyAssignment: typeof factory.updateShorthandPropertyAssignment; - /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */ - const createSpreadAssignment: typeof factory.createSpreadAssignment; - /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */ - const updateSpreadAssignment: typeof factory.updateSpreadAssignment; - /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */ - const createEnumMember: typeof factory.createEnumMember; - /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */ - const updateEnumMember: typeof factory.updateEnumMember; - /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */ - const updateSourceFileNode: typeof factory.updateSourceFile; - /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */ - const createNotEmittedStatement: typeof factory.createNotEmittedStatement; - /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ - const createPartiallyEmittedExpression: typeof factory.createPartiallyEmittedExpression; - /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ - const updatePartiallyEmittedExpression: typeof factory.updatePartiallyEmittedExpression; - /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */ - const createCommaList: typeof factory.createCommaListExpression; - /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */ - const updateCommaList: typeof factory.updateCommaListExpression; - /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */ - const createBundle: typeof factory.createBundle; - /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */ - const updateBundle: typeof factory.updateBundle; - /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */ - const createImmediatelyInvokedFunctionExpression: typeof factory.createImmediatelyInvokedFunctionExpression; - /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */ - const createImmediatelyInvokedArrowFunction: typeof factory.createImmediatelyInvokedArrowFunction; - /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */ - const createVoidZero: typeof factory.createVoidZero; - /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */ - const createExportDefault: typeof factory.createExportDefault; - /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */ - const createExternalModuleExport: typeof factory.createExternalModuleExport; - /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */ - const createNamespaceExport: typeof factory.createNamespaceExport; - /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */ - const updateNamespaceExport: typeof factory.updateNamespaceExport; - /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */ - const createToken: (kind: TKind) => Token; - /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */ - const createIdentifier: (text: string) => Identifier; - /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */ - const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier; - /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */ - const getGeneratedNameForNode: (node: Node | undefined) => Identifier; - /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */ - const createOptimisticUniqueName: (text: string) => Identifier; - /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */ - const createFileLevelUniqueName: (text: string) => Identifier; - /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */ - const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration; - /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ - const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode; - /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ - const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode; - /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */ - const createLiteral: { - (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral; - (value: number | PseudoBigInt): NumericLiteral; - (value: boolean): BooleanLiteral; - (value: string | number | PseudoBigInt | boolean): PrimaryExpression; - }; - /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */ - const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; - /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */ - const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray | undefined, parameters: NodeArray, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; - /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */ - const createTypeOperatorNode: { - (type: TypeNode): TypeOperatorNode; - (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; - }; - /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */ - const createTaggedTemplate: { - (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; - (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; - }; - /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */ - const updateTaggedTemplate: { - (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; - (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; - }; - /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */ - const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression; - /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */ - const createConditional: { - (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression; - (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression; - }; - /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */ - const createYield: { - (expression?: Expression | undefined): YieldExpression; - (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression; - }; - /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */ - const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; - /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */ - const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; - /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */ - const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature; - /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */ - const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature; - /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ - const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; - /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ - const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; - /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */ - const createArrowFunction: { - (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction; - (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; - }; - /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */ - const updateArrowFunction: { - (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction; - (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; - }; - /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */ - const createVariableDeclaration: { - (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration; - (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - }; - /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */ - const updateVariableDeclaration: { - (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; - }; - /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */ - const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause; - /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */ - const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause; - /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */ - const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration; - /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */ - const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration; - /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ - const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag; - /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */ - const createComma: (left: Expression, right: Expression) => Expression; - /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */ - const createLessThan: (left: Expression, right: Expression) => Expression; - /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */ - const createAssignment: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */ - const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */ - const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */ - const createAdd: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */ - const createSubtract: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */ - const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */ - const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression; - /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */ - const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression; - /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */ - const createLogicalNot: (operand: Expression) => PrefixUnaryExpression; - /** @deprecated Use an appropriate `factory` method instead. */ - const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node; - /** - * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set. - * - * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be - * captured with respect to transformations. - * - * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`. - */ - const getMutableClone: (node: T) => T; - /** @deprecated Use `isTypeAssertionExpression` instead. */ - const isTypeAssertion: (node: Node) => node is TypeAssertion; - /** - * @deprecated Use `isMemberName` instead. - */ - const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName; } export = ts; \ No newline at end of file diff --git a/lib/typescript.js b/lib/typescript.js index 3d47c2cb279..6a3f7a4f373 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -42,7 +42,7 @@ var ts = (() => { "src/compiler/corePublic.ts"() { "use strict"; versionMajorMinor = "5.0"; - version = `${versionMajorMinor}.0-dev.20230112`; + version = `${versionMajorMinor}.0-beta`; Comparison = /* @__PURE__ */ ((Comparison3) => { Comparison3[Comparison3["LessThan"] = -1] = "LessThan"; Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo"; @@ -590,25 +590,20 @@ var ts = (() => { } return true; } - function detectSortCaseSensitivity(array, useEslintOrdering, getString) { + function detectSortCaseSensitivity(array, getString, compareStringsCaseSensitive2, compareStringsCaseInsensitive2) { let kind = 3 /* Both */; if (array.length < 2) return kind; - const caseSensitiveComparer = getString ? (a, b) => compareStringsCaseSensitive(getString(a), getString(b)) : compareStringsCaseSensitive; - const compareCaseInsensitive = useEslintOrdering ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseInsensitive; - const caseInsensitiveComparer = getString ? (a, b) => compareCaseInsensitive(getString(a), getString(b)) : compareCaseInsensitive; - for (let i = 1, len = array.length; i < len; i++) { - const prevElement = array[i - 1]; - const element = array[i]; - if (kind & 1 /* CaseSensitive */ && caseSensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + let prevElement = getString(array[0]); + for (let i = 1, len = array.length; i < len && kind !== 0 /* None */; i++) { + const element = getString(array[i]); + if (kind & 1 /* CaseSensitive */ && compareStringsCaseSensitive2(prevElement, element) > 0) { kind &= ~1 /* CaseSensitive */; } - if (kind & 2 /* CaseInsensitive */ && caseInsensitiveComparer(prevElement, element) === 1 /* GreaterThan */) { + if (kind & 2 /* CaseInsensitive */ && compareStringsCaseInsensitive2(prevElement, element) > 0) { kind &= ~2 /* CaseInsensitive */; } - if (kind === 0 /* None */) { - return kind; - } + prevElement = element; } return kind; } @@ -943,6 +938,18 @@ var ts = (() => { function group(values, getGroupId, resultSelector = identity) { return arrayFrom(arrayToMultiMap(values, getGroupId).values(), resultSelector); } + function groupBy(values, keySelector) { + var _a2; + const result = {}; + if (values) { + for (const value of values) { + const key = `${keySelector(value)}`; + const array = (_a2 = result[key]) != null ? _a2 : result[key] = []; + array.push(value); + } + } + return result; + } function clone(object) { const result = {}; for (const id in object) { @@ -1229,6 +1236,35 @@ var ts = (() => { return value; }; } + function memoizeCached(callback, cache) { + return (...args) => { + let value = cache.get(args); + if (value === void 0 && !cache.has(args)) { + value = callback(...args); + cache.set(args, value); + } + return value; + }; + } + function compose(a, b, c, d, e) { + if (!!e) { + const args = []; + for (let i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return (t) => reduceLeft(args, (u, f) => f(u), t); + } else if (d) { + return (t) => d(c(b(a(t)))); + } else if (c) { + return (t) => c(b(a(t))); + } else if (b) { + return (t) => b(a(t)); + } else if (a) { + return (t) => a(t); + } else { + return (t) => t; + } + } function equateValues(a, b) { return a === b; } @@ -1565,12 +1601,24 @@ var ts = (() => { return length2 <= s.length ? s : s + padString.repeat(length2 - s.length); } function takeWhile(array, predicate) { - const len = array.length; - let index = 0; - while (index < len && predicate(array[index])) { - index++; + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(0, index); + } + } + function skipWhile(array, predicate) { + if (array) { + const len = array.length; + let index = 0; + while (index < len && predicate(array[index])) { + index++; + } + return array.slice(index); } - return array.slice(0, index); } function trimEndImpl(s) { let end = s.length - 1; @@ -3541,7 +3589,7 @@ ${lanes.join("\n")} const name = DiagnosticCategory[d.category]; return lowerCase ? name.toLowerCase() : name; } - var SyntaxKind, NodeFlags, ModifierFlags, JsxFlags, RelationComparisonResult, GeneratedIdentifierFlags, TokenFlags, FlowFlags, CommentDirectiveType, OperationCanceledException, FileIncludeKind, FilePreprocessingDiagnosticsKind, EmitOnly, StructureIsReused, ExitStatus, MemberOverrideStatus, UnionReduction, ContextFlags, NodeBuilderFlags, TypeFormatFlags, SymbolFormatFlags, SymbolAccessibility, SyntheticSymbolKind, TypePredicateKind, TypeReferenceSerializationKind, SymbolFlags, EnumKind, CheckFlags, InternalSymbolName, NodeCheckFlags, TypeFlags, ObjectFlags, VarianceFlags, ElementFlags, AccessFlags, JsxReferenceKind, SignatureKind, SignatureFlags, IndexKind, TypeMapKind, InferencePriority, InferenceFlags, Ternary, AssignmentDeclarationKind, DiagnosticCategory, ModuleResolutionKind, ModuleDetectionKind, WatchFileKind, WatchDirectoryKind, PollingWatchKind, ModuleKind, JsxEmit, ImportsNotUsedAsValues, NewLineKind, ScriptKind, ScriptTarget, LanguageVariant, WatchDirectoryFlags, CharacterCodes, Extension, TransformFlags, SnippetKind, EmitFlags, ExternalEmitHelpers, EmitHint, OuterExpressionKinds, LexicalEnvironmentFlags, BundleFileSectionKind, ListFormat, PragmaKindFlags, commentPragmas, DeprecationVersion; + var SyntaxKind, NodeFlags, ModifierFlags, JsxFlags, RelationComparisonResult, GeneratedIdentifierFlags, TokenFlags, FlowFlags, CommentDirectiveType, OperationCanceledException, FileIncludeKind, FilePreprocessingDiagnosticsKind, EmitOnly, StructureIsReused, ExitStatus, MemberOverrideStatus, UnionReduction, ContextFlags, NodeBuilderFlags, TypeFormatFlags, SymbolFormatFlags, SymbolAccessibility, SyntheticSymbolKind, TypePredicateKind, TypeReferenceSerializationKind, SymbolFlags, EnumKind, CheckFlags, InternalSymbolName, NodeCheckFlags, TypeFlags, ObjectFlags, VarianceFlags, ElementFlags, AccessFlags, JsxReferenceKind, SignatureKind, SignatureFlags, IndexKind, TypeMapKind, InferencePriority, InferenceFlags, Ternary, AssignmentDeclarationKind, DiagnosticCategory, ModuleResolutionKind, ModuleDetectionKind, WatchFileKind, WatchDirectoryKind, PollingWatchKind, ModuleKind, JsxEmit, ImportsNotUsedAsValues, NewLineKind, ScriptKind, ScriptTarget, LanguageVariant, WatchDirectoryFlags, CharacterCodes, Extension, TransformFlags, SnippetKind, EmitFlags, InternalEmitFlags, ExternalEmitHelpers, EmitHint, OuterExpressionKinds, LexicalEnvironmentFlags, BundleFileSectionKind, ListFormat, PragmaKindFlags, commentPragmas, DeprecationVersion; var init_types = __esm({ "src/compiler/types.ts"() { "use strict"; @@ -3900,14 +3948,15 @@ ${lanes.join("\n")} SyntaxKind5[SyntaxKind5["JSDocSeeTag"] = 350] = "JSDocSeeTag"; SyntaxKind5[SyntaxKind5["JSDocPropertyTag"] = 351] = "JSDocPropertyTag"; SyntaxKind5[SyntaxKind5["JSDocThrowsTag"] = 352] = "JSDocThrowsTag"; - SyntaxKind5[SyntaxKind5["SyntaxList"] = 353] = "SyntaxList"; - SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 354] = "NotEmittedStatement"; - SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; - SyntaxKind5[SyntaxKind5["CommaListExpression"] = 356] = "CommaListExpression"; - SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 357] = "MergeDeclarationMarker"; - SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 358] = "EndOfDeclarationMarker"; - SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 359] = "SyntheticReferenceExpression"; - SyntaxKind5[SyntaxKind5["Count"] = 360] = "Count"; + SyntaxKind5[SyntaxKind5["JSDocSatisfiesTag"] = 353] = "JSDocSatisfiesTag"; + SyntaxKind5[SyntaxKind5["SyntaxList"] = 354] = "SyntaxList"; + SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 355] = "NotEmittedStatement"; + SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 356] = "PartiallyEmittedExpression"; + SyntaxKind5[SyntaxKind5["CommaListExpression"] = 357] = "CommaListExpression"; + SyntaxKind5[SyntaxKind5["MergeDeclarationMarker"] = 358] = "MergeDeclarationMarker"; + SyntaxKind5[SyntaxKind5["EndOfDeclarationMarker"] = 359] = "EndOfDeclarationMarker"; + SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 360] = "SyntheticReferenceExpression"; + SyntaxKind5[SyntaxKind5["Count"] = 361] = "Count"; SyntaxKind5[SyntaxKind5["FirstAssignment"] = 63 /* EqualsToken */] = "FirstAssignment"; SyntaxKind5[SyntaxKind5["LastAssignment"] = 78 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind5[SyntaxKind5["FirstCompoundAssignment"] = 64 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -3936,51 +3985,53 @@ ${lanes.join("\n")} SyntaxKind5[SyntaxKind5["LastStatement"] = 256 /* DebuggerStatement */] = "LastStatement"; SyntaxKind5[SyntaxKind5["FirstNode"] = 163 /* QualifiedName */] = "FirstNode"; SyntaxKind5[SyntaxKind5["FirstJSDocNode"] = 312 /* JSDocTypeExpression */] = "FirstJSDocNode"; - SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocNode"; + SyntaxKind5[SyntaxKind5["LastJSDocNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocNode"; SyntaxKind5[SyntaxKind5["FirstJSDocTagNode"] = 330 /* JSDocTag */] = "FirstJSDocTagNode"; - SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocTagNode"; + SyntaxKind5[SyntaxKind5["LastJSDocTagNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocTagNode"; SyntaxKind5[SyntaxKind5["FirstContextualKeyword"] = 126 /* AbstractKeyword */] = "FirstContextualKeyword"; SyntaxKind5[SyntaxKind5["LastContextualKeyword"] = 162 /* OfKeyword */] = "LastContextualKeyword"; return SyntaxKind5; })(SyntaxKind || {}); - NodeFlags = /* @__PURE__ */ ((NodeFlags4) => { - NodeFlags4[NodeFlags4["None"] = 0] = "None"; - NodeFlags4[NodeFlags4["Let"] = 1] = "Let"; - NodeFlags4[NodeFlags4["Const"] = 2] = "Const"; - NodeFlags4[NodeFlags4["NestedNamespace"] = 4] = "NestedNamespace"; - NodeFlags4[NodeFlags4["Synthesized"] = 8] = "Synthesized"; - NodeFlags4[NodeFlags4["Namespace"] = 16] = "Namespace"; - NodeFlags4[NodeFlags4["OptionalChain"] = 32] = "OptionalChain"; - NodeFlags4[NodeFlags4["ExportContext"] = 64] = "ExportContext"; - NodeFlags4[NodeFlags4["ContainsThis"] = 128] = "ContainsThis"; - NodeFlags4[NodeFlags4["HasImplicitReturn"] = 256] = "HasImplicitReturn"; - NodeFlags4[NodeFlags4["HasExplicitReturn"] = 512] = "HasExplicitReturn"; - NodeFlags4[NodeFlags4["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; - NodeFlags4[NodeFlags4["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; - NodeFlags4[NodeFlags4["DisallowInContext"] = 4096] = "DisallowInContext"; - NodeFlags4[NodeFlags4["YieldContext"] = 8192] = "YieldContext"; - NodeFlags4[NodeFlags4["DecoratorContext"] = 16384] = "DecoratorContext"; - NodeFlags4[NodeFlags4["AwaitContext"] = 32768] = "AwaitContext"; - NodeFlags4[NodeFlags4["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; - NodeFlags4[NodeFlags4["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; - NodeFlags4[NodeFlags4["JavaScriptFile"] = 262144] = "JavaScriptFile"; - NodeFlags4[NodeFlags4["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; - NodeFlags4[NodeFlags4["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; - NodeFlags4[NodeFlags4["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; - NodeFlags4[NodeFlags4["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; - NodeFlags4[NodeFlags4["JSDoc"] = 8388608] = "JSDoc"; - NodeFlags4[NodeFlags4["Ambient"] = 16777216] = "Ambient"; - NodeFlags4[NodeFlags4["InWithStatement"] = 33554432] = "InWithStatement"; - NodeFlags4[NodeFlags4["JsonFile"] = 67108864] = "JsonFile"; - NodeFlags4[NodeFlags4["TypeCached"] = 134217728] = "TypeCached"; - NodeFlags4[NodeFlags4["Deprecated"] = 268435456] = "Deprecated"; - NodeFlags4[NodeFlags4["BlockScoped"] = 3] = "BlockScoped"; - NodeFlags4[NodeFlags4["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; - NodeFlags4[NodeFlags4["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; - NodeFlags4[NodeFlags4["ContextFlags"] = 50720768] = "ContextFlags"; - NodeFlags4[NodeFlags4["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; - NodeFlags4[NodeFlags4["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; - return NodeFlags4; + NodeFlags = /* @__PURE__ */ ((NodeFlags3) => { + NodeFlags3[NodeFlags3["None"] = 0] = "None"; + NodeFlags3[NodeFlags3["Let"] = 1] = "Let"; + NodeFlags3[NodeFlags3["Const"] = 2] = "Const"; + NodeFlags3[NodeFlags3["NestedNamespace"] = 4] = "NestedNamespace"; + NodeFlags3[NodeFlags3["Synthesized"] = 8] = "Synthesized"; + NodeFlags3[NodeFlags3["Namespace"] = 16] = "Namespace"; + NodeFlags3[NodeFlags3["OptionalChain"] = 32] = "OptionalChain"; + NodeFlags3[NodeFlags3["ExportContext"] = 64] = "ExportContext"; + NodeFlags3[NodeFlags3["ContainsThis"] = 128] = "ContainsThis"; + NodeFlags3[NodeFlags3["HasImplicitReturn"] = 256] = "HasImplicitReturn"; + NodeFlags3[NodeFlags3["HasExplicitReturn"] = 512] = "HasExplicitReturn"; + NodeFlags3[NodeFlags3["GlobalAugmentation"] = 1024] = "GlobalAugmentation"; + NodeFlags3[NodeFlags3["HasAsyncFunctions"] = 2048] = "HasAsyncFunctions"; + NodeFlags3[NodeFlags3["DisallowInContext"] = 4096] = "DisallowInContext"; + NodeFlags3[NodeFlags3["YieldContext"] = 8192] = "YieldContext"; + NodeFlags3[NodeFlags3["DecoratorContext"] = 16384] = "DecoratorContext"; + NodeFlags3[NodeFlags3["AwaitContext"] = 32768] = "AwaitContext"; + NodeFlags3[NodeFlags3["DisallowConditionalTypesContext"] = 65536] = "DisallowConditionalTypesContext"; + NodeFlags3[NodeFlags3["ThisNodeHasError"] = 131072] = "ThisNodeHasError"; + NodeFlags3[NodeFlags3["JavaScriptFile"] = 262144] = "JavaScriptFile"; + NodeFlags3[NodeFlags3["ThisNodeOrAnySubNodesHasError"] = 524288] = "ThisNodeOrAnySubNodesHasError"; + NodeFlags3[NodeFlags3["HasAggregatedChildData"] = 1048576] = "HasAggregatedChildData"; + NodeFlags3[NodeFlags3["PossiblyContainsDynamicImport"] = 2097152] = "PossiblyContainsDynamicImport"; + NodeFlags3[NodeFlags3["PossiblyContainsImportMeta"] = 4194304] = "PossiblyContainsImportMeta"; + NodeFlags3[NodeFlags3["JSDoc"] = 8388608] = "JSDoc"; + NodeFlags3[NodeFlags3["Ambient"] = 16777216] = "Ambient"; + NodeFlags3[NodeFlags3["InWithStatement"] = 33554432] = "InWithStatement"; + NodeFlags3[NodeFlags3["JsonFile"] = 67108864] = "JsonFile"; + NodeFlags3[NodeFlags3["TypeCached"] = 134217728] = "TypeCached"; + NodeFlags3[NodeFlags3["Deprecated"] = 268435456] = "Deprecated"; + NodeFlags3[NodeFlags3["BlockScoped"] = 3] = "BlockScoped"; + NodeFlags3[NodeFlags3["ReachabilityCheckFlags"] = 768] = "ReachabilityCheckFlags"; + NodeFlags3[NodeFlags3["ReachabilityAndEmitFlags"] = 2816] = "ReachabilityAndEmitFlags"; + NodeFlags3[NodeFlags3["ContextFlags"] = 50720768] = "ContextFlags"; + NodeFlags3[NodeFlags3["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; + NodeFlags3[NodeFlags3["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; + NodeFlags3[NodeFlags3["IdentifierHasExtendedUnicodeEscape"] = 128 /* ContainsThis */] = "IdentifierHasExtendedUnicodeEscape"; + NodeFlags3[NodeFlags3["IdentifierIsInJSDocNamespace"] = 2048 /* HasAsyncFunctions */] = "IdentifierIsInJSDocNamespace"; + return NodeFlags3; })(NodeFlags || {}); ModifierFlags = /* @__PURE__ */ ((ModifierFlags3) => { ModifierFlags3[ModifierFlags3["None"] = 0] = "None"; @@ -4120,7 +4171,6 @@ ${lanes.join("\n")} ExitStatus2[ExitStatus2["DiagnosticsPresent_OutputsGenerated"] = 2] = "DiagnosticsPresent_OutputsGenerated"; ExitStatus2[ExitStatus2["InvalidProject_OutputsSkipped"] = 3] = "InvalidProject_OutputsSkipped"; ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkipped"] = 4] = "ProjectReferenceCycle_OutputsSkipped"; - ExitStatus2[ExitStatus2["ProjectReferenceCycle_OutputsSkupped"] = 4] = "ProjectReferenceCycle_OutputsSkupped"; return ExitStatus2; })(ExitStatus || {}); MemberOverrideStatus = /* @__PURE__ */ ((MemberOverrideStatus2) => { @@ -4165,7 +4215,6 @@ ${lanes.join("\n")} NodeBuilderFlags2[NodeBuilderFlags2["OmitThisParameter"] = 33554432] = "OmitThisParameter"; NodeBuilderFlags2[NodeBuilderFlags2["AllowThisInObjectLiteral"] = 32768] = "AllowThisInObjectLiteral"; NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifiedNameInPlaceOfIdentifier"] = 65536] = "AllowQualifiedNameInPlaceOfIdentifier"; - NodeBuilderFlags2[NodeBuilderFlags2["AllowQualifedNameInPlaceOfIdentifier"] = 65536 /* AllowQualifiedNameInPlaceOfIdentifier */] = "AllowQualifedNameInPlaceOfIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowAnonymousIdentifier"] = 131072] = "AllowAnonymousIdentifier"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyUnionOrIntersection"] = 262144] = "AllowEmptyUnionOrIntersection"; NodeBuilderFlags2[NodeBuilderFlags2["AllowEmptyTuple"] = 524288] = "AllowEmptyTuple"; @@ -4203,7 +4252,6 @@ ${lanes.join("\n")} TypeFormatFlags2[TypeFormatFlags2["InElementType"] = 2097152] = "InElementType"; TypeFormatFlags2[TypeFormatFlags2["InFirstTypeArgument"] = 4194304] = "InFirstTypeArgument"; TypeFormatFlags2[TypeFormatFlags2["InTypeAlias"] = 8388608] = "InTypeAlias"; - TypeFormatFlags2[TypeFormatFlags2["WriteOwnNameForAnyLike"] = 0] = "WriteOwnNameForAnyLike"; TypeFormatFlags2[TypeFormatFlags2["NodeBuilderFlagsMask"] = 848330091] = "NodeBuilderFlagsMask"; return TypeFormatFlags2; })(TypeFormatFlags || {}); @@ -4995,18 +5043,24 @@ ${lanes.join("\n")} EmitFlags3[EmitFlags3["HasEndOfDeclarationMarker"] = 8388608] = "HasEndOfDeclarationMarker"; EmitFlags3[EmitFlags3["Iterator"] = 16777216] = "Iterator"; EmitFlags3[EmitFlags3["NoAsciiEscaping"] = 33554432] = "NoAsciiEscaping"; - EmitFlags3[EmitFlags3["TypeScriptClassWrapper"] = 67108864] = "TypeScriptClassWrapper"; - EmitFlags3[EmitFlags3["NeverApplyImportHelper"] = 134217728] = "NeverApplyImportHelper"; - EmitFlags3[EmitFlags3["IgnoreSourceNewlines"] = 268435456] = "IgnoreSourceNewlines"; - EmitFlags3[EmitFlags3["Immutable"] = 536870912] = "Immutable"; - EmitFlags3[EmitFlags3["IndirectCall"] = 1073741824] = "IndirectCall"; return EmitFlags3; })(EmitFlags || {}); + InternalEmitFlags = /* @__PURE__ */ ((InternalEmitFlags3) => { + InternalEmitFlags3[InternalEmitFlags3["None"] = 0] = "None"; + InternalEmitFlags3[InternalEmitFlags3["TypeScriptClassWrapper"] = 1] = "TypeScriptClassWrapper"; + InternalEmitFlags3[InternalEmitFlags3["NeverApplyImportHelper"] = 2] = "NeverApplyImportHelper"; + InternalEmitFlags3[InternalEmitFlags3["IgnoreSourceNewlines"] = 4] = "IgnoreSourceNewlines"; + InternalEmitFlags3[InternalEmitFlags3["Immutable"] = 8] = "Immutable"; + InternalEmitFlags3[InternalEmitFlags3["IndirectCall"] = 16] = "IndirectCall"; + InternalEmitFlags3[InternalEmitFlags3["TransformPrivateStaticElements"] = 32] = "TransformPrivateStaticElements"; + return InternalEmitFlags3; + })(InternalEmitFlags || {}); ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["Extends"] = 1] = "Extends"; ExternalEmitHelpers2[ExternalEmitHelpers2["Assign"] = 2] = "Assign"; ExternalEmitHelpers2[ExternalEmitHelpers2["Rest"] = 4] = "Rest"; ExternalEmitHelpers2[ExternalEmitHelpers2["Decorate"] = 8] = "Decorate"; + ExternalEmitHelpers2[ExternalEmitHelpers2["ESDecorateAndRunInitializers"] = 8 /* Decorate */] = "ESDecorateAndRunInitializers"; ExternalEmitHelpers2[ExternalEmitHelpers2["Metadata"] = 16] = "Metadata"; ExternalEmitHelpers2[ExternalEmitHelpers2["Param"] = 32] = "Param"; ExternalEmitHelpers2[ExternalEmitHelpers2["Awaiter"] = 64] = "Awaiter"; @@ -5026,8 +5080,10 @@ ${lanes.join("\n")} ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldSet"] = 1048576] = "ClassPrivateFieldSet"; ExternalEmitHelpers2[ExternalEmitHelpers2["ClassPrivateFieldIn"] = 2097152] = "ClassPrivateFieldIn"; ExternalEmitHelpers2[ExternalEmitHelpers2["CreateBinding"] = 4194304] = "CreateBinding"; + ExternalEmitHelpers2[ExternalEmitHelpers2["SetFunctionName"] = 8388608] = "SetFunctionName"; + ExternalEmitHelpers2[ExternalEmitHelpers2["PropKey"] = 16777216] = "PropKey"; ExternalEmitHelpers2[ExternalEmitHelpers2["FirstEmitHelper"] = 1 /* Extends */] = "FirstEmitHelper"; - ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 4194304 /* CreateBinding */] = "LastEmitHelper"; + ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 16777216 /* PropKey */] = "LastEmitHelper"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForOfIncludes"] = 256 /* Values */] = "ForOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForAwaitOfIncludes"] = 16384 /* AsyncValues */] = "ForAwaitOfIncludes"; ExternalEmitHelpers2[ExternalEmitHelpers2["AsyncGeneratorIncludes"] = 6144] = "AsyncGeneratorIncludes"; @@ -7176,10 +7232,9 @@ ${lanes.join("\n")} Line_terminator_not_permitted_before_arrow: diag(1200, 1 /* Error */, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(1202, 1 /* Error */, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: diag(1203, 1 /* Error */, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), - Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), + Re_exporting_a_type_when_0_is_enabled_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205", "Re-exporting a type when '{0}' is enabled requires using 'export type'."), Decorators_are_not_valid_here: diag(1206, 1 /* Error */, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: diag(1207, 1 /* Error */, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), - _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: diag(1208, 1 /* Error */, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0: diag(1209, 1 /* Error */, "Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209", "Invalid optional chain from new expression. Did you mean to call '{0}()'?"), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: diag(1210, 1 /* Error */, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: diag(1211, 1 /* Error */, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), @@ -7189,7 +7244,6 @@ ${lanes.join("\n")} Invalid_use_of_0_Modules_are_automatically_in_strict_mode: diag(1215, 1 /* Error */, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: diag(1216, 1 /* Error */, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: diag(1218, 1 /* Error */, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: diag(1219, 1 /* Error */, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: diag(1221, 1 /* Error */, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: diag(1222, 1 /* Error */, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: diag(1223, 1 /* Error */, "_0_tag_already_specified_1223", "'{0}' tag already specified."), @@ -7236,7 +7290,7 @@ ${lanes.join("\n")} An_optional_element_cannot_follow_a_rest_element: diag(1266, 1 /* Error */, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: diag(1267, 1 /* Error */, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: diag(1268, 1 /* Error */, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), - Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), + Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269", "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled."), Decorator_function_return_type_0_is_not_assignable_to_type_1: diag(1270, 1 /* Error */, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: diag(1271, 1 /* Error */, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: diag(1272, 1 /* Error */, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), @@ -7245,6 +7299,17 @@ ${lanes.join("\n")} accessor_modifier_can_only_appear_on_a_property_declaration: diag(1275, 1 /* Error */, "accessor_modifier_can_only_appear_on_a_property_declaration_1275", "'accessor' modifier can only appear on a property declaration."), An_accessor_property_cannot_be_declared_optional: diag(1276, 1 /* Error */, "An_accessor_property_cannot_be_declared_optional_1276", "An 'accessor' property cannot be declared optional."), _0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class: diag(1277, 1 /* Error */, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277", "'{0}' modifier can only appear on a type parameter of a function, method or class"), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0: diag(1278, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278", "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}."), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0: diag(1279, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279", "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}."), + Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement: diag(1280, 1 /* Error */, "Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280", "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement."), + Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead: diag(1281, 1 /* Error */, "Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281", "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead."), + An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1282, 1 /* Error */, "An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282", "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1283, 1 /* Error */, "An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283", "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1284, 1 /* Error */, "An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284", "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1285, 1 /* Error */, "An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285", "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1286, 1 /* Error */, "ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286", "ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1287, 1 /* Error */, "A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287", "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled: diag(1288, 1 /* Error */, "An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288", "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled."), with_statements_are_not_allowed_in_an_async_function_block: diag(1300, 1 /* Error */, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: diag(1308, 1 /* Error */, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: diag(1309, 1 /* Error */, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), @@ -7316,7 +7381,6 @@ ${lanes.join("\n")} An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: diag(1380, 1 /* Error */, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: diag(1381, 1 /* Error */, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: diag(1382, 1 /* Error */, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), - Only_named_exports_may_use_export_type: diag(1383, 1 /* Error */, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1385, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1386, 1 /* Error */, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: diag(1387, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), @@ -7364,7 +7428,7 @@ ${lanes.join("\n")} The_file_is_in_the_program_because_Colon: diag(1430, 3 /* Message */, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1431, 1 /* Error */, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: diag(1432, 1 /* Error */, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), - Decorators_may_not_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), + Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433", "Neither decorators nor modifiers may be applied to 'this' parameters."), Unexpected_keyword_or_identifier: diag(1434, 1 /* Error */, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: diag(1435, 1 /* Error */, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: diag(1436, 1 /* Error */, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), @@ -7377,7 +7441,7 @@ ${lanes.join("\n")} Module_declaration_names_may_only_use_or_quoted_strings: diag(1443, 1 /* Error */, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1444, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1446, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), - _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: diag(1449, 3 /* Message */, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: diag(1450, 3 /* Message */, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: diag(1451, 1 /* Error */, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), @@ -7405,6 +7469,8 @@ ${lanes.join("\n")} To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1: diag(1481, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481", `To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \`"type": "module"\` to '{1}'.`), To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0: diag(1482, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482", 'To convert this file to an ECMAScript module, add the field `"type": "module"` to \'{0}\'.'), To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module: diag(1483, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483", 'To convert this file to an ECMAScript module, create a local package.json file with `{ "type": "module" }`.'), + _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1484, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484", "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1485, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -7862,7 +7928,7 @@ ${lanes.join("\n")} This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: diag(2745, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: diag(2746, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: diag(2747, 1 /* Error */, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), - Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), + Cannot_access_ambient_const_enums_when_0_is_enabled: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_0_is_enabled_2748", "Cannot access ambient const enums when '{0}' is enabled."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: diag(2749, 1 /* Error */, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: diag(2750, 1 /* Error */, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: diag(2751, 1 /* Error */, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), @@ -8110,12 +8176,12 @@ ${lanes.join("\n")} The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: diag(5088, 1 /* Error */, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: diag(5089, 1 /* Error */, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: diag(5090, 1 /* Error */, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), - Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), + Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled."), The_root_value_of_a_0_file_must_be_an_object: diag(5092, 1 /* Error */, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: diag(5093, 1 /* Error */, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: diag(5094, 1 /* Error */, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: diag(5095, 1 /* Error */, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), - Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_eithe_5096", "Option 'allowImportingTsExtensions' can only be used when 'moduleResolution' is set to 'bundler' and either 'noEmit' or 'emitDeclarationOnly' is set."), + Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096", "Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set."), An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled: diag(5097, 1 /* Error */, "An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097", "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled."), Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler: diag(5098, 1 /* Error */, "Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098", "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'."), Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(5099, 1 /* Error */, "Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Aster_5099", `Import assignment is not allowed when 'moduleResolution' is set to 'bundler'. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), @@ -8123,6 +8189,9 @@ ${lanes.join("\n")} Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error: diag(5101, 1 /* Error */, "Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_5101", `Flag '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify 'ignoreDeprecations: "{2}"' to silence this error.`), Flag_0_is_deprecated_Please_remove_it_from_your_configuration: diag(5102, 1 /* Error */, "Flag_0_is_deprecated_Please_remove_it_from_your_configuration_5102", "Flag '{0}' is deprecated. Please remove it from your configuration."), Invalid_value_for_ignoreDeprecations: diag(5103, 1 /* Error */, "Invalid_value_for_ignoreDeprecations_5103", "Invalid value for '--ignoreDeprecations'."), + Option_0_is_redundant_and_cannot_be_specified_with_option_1: diag(5104, 1 /* Error */, "Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104", "Option '{0}' is redundant and cannot be specified with option '{1}'."), + Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System: diag(5105, 1 /* Error */, "Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105", "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'."), + Use_0_instead: diag(5106, 3 /* Message */, "Use_0_instead_5106", "Use '{0}' instead."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -8405,6 +8474,8 @@ ${lanes.join("\n")} package_json_scope_0_explicitly_maps_specifier_1_to_null: diag(6274, 3 /* Message */, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: diag(6275, 3 /* Message */, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: diag(6276, 3 /* Message */, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), + Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update: diag(6277, 3 /* Message */, "Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277", "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update."), + There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings: diag(6278, 3 /* Message */, "There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278", `There are types at '{0}', but this result could not be resolved when respecting package.json "exports". The '{1}' library may need to update its package.json or typings.`), Enable_project_compilation: diag(6302, 3 /* Message */, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: diag(6304, 1 /* Error */, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: diag(6305, 1 /* Error */, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), @@ -8529,7 +8600,7 @@ ${lanes.join("\n")} Filters_results_from_the_include_option: diag(6627, 3 /* Message */, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: diag(6628, 3 /* Message */, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: diag(6629, 3 /* Message */, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), - Enable_experimental_support_for_TC39_stage_2_draft_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), + Enable_experimental_support_for_legacy_experimental_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_legacy_experimental_decorators_6630", "Enable experimental support for legacy experimental decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: diag(6631, 3 /* Message */, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: diag(6632, 3 /* Message */, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: diag(6633, 3 /* Message */, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), @@ -8615,6 +8686,7 @@ ${lanes.join("\n")} Require_undeclared_properties_from_index_signatures_to_use_element_accesses: diag(6717, 3 /* Message */, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: diag(6718, 3 /* Message */, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: diag(6803, 3 /* Message */, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), + Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting: diag(6804, 3 /* Message */, "Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804", "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting."), one_of_Colon: diag(6900, 3 /* Message */, "one_of_Colon_6900", "one of:"), one_or_more_Colon: diag(6901, 3 /* Message */, "one_or_more_Colon_6901", "one or more:"), type_Colon: diag(6902, 3 /* Message */, "type_Colon_6902", "type:"), @@ -8750,6 +8822,7 @@ ${lanes.join("\n")} You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder: diag(8035, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035", "You cannot rename elements that are defined in a 'node_modules' folder."), You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder: diag(8036, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036", "You cannot rename elements that are defined in another 'node_modules' folder."), Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files: diag(8037, 1 /* Error */, "Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037", "Type satisfaction expressions can only be used in TypeScript files."), + Decorators_must_come_after_export_or_export_default_in_JavaScript_files: diag(8038, 1 /* Error */, "Decorators_must_come_after_export_or_export_default_in_JavaScript_files_8038", "Decorators must come after 'export' or 'export default' in JavaScript files."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9005, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: diag(17e3, 1 /* Error */, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), @@ -9035,7 +9108,8 @@ ${lanes.join("\n")} _0_is_possibly_null: diag(18047, 1 /* Error */, "_0_is_possibly_null_18047", "'{0}' is possibly 'null'."), _0_is_possibly_undefined: diag(18048, 1 /* Error */, "_0_is_possibly_undefined_18048", "'{0}' is possibly 'undefined'."), _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."), - The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here.") + The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."), + Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string.") }; } }); @@ -9488,10 +9562,7 @@ ${lanes.join("\n")} initial ); } - function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments) { - if (!comments) { - comments = []; - } + function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) { comments.push({ kind, pos, end, hasTrailingNewLine }); return comments; } @@ -11335,7 +11406,7 @@ ${lanes.join("\n")} } } function isParameterPropertyDeclaration(node, parent2) { - return hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; + return isParameter(node) && hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent2.kind === 173 /* Constructor */; } function isEmptyBindingPattern(node) { if (isBindingPattern(node)) { @@ -11439,7 +11510,10 @@ ${lanes.join("\n")} node = node.original; } } - return !nodeTest || nodeTest(node) ? node : void 0; + if (!node || !nodeTest) { + return node; + } + return nodeTest(node) ? node : void 0; } function findAncestor(node, callback) { while (node) { @@ -11478,6 +11552,10 @@ ${lanes.join("\n")} function idText(identifierOrPrivateName) { return unescapeLeadingUnderscores(identifierOrPrivateName.escapedText); } + function identifierToKeywordKind(node) { + const token = stringToToken(node.escapedText); + return token ? tryCast(token, isKeyword) : void 0; + } function symbolName(symbol) { if (symbol.valueDeclaration && isPrivateIdentifierClassElementDeclaration(symbol.valueDeclaration)) { return idText(symbol.valueDeclaration.name); @@ -11753,6 +11831,9 @@ ${lanes.join("\n")} function getJSDocTemplateTag(node) { return getFirstJSDocTag(node, isJSDocTemplateTag); } + function getJSDocSatisfiesTag(node) { + return getFirstJSDocTag(node, isJSDocSatisfiesTag); + } function getJSDocTypeTag(node) { const tag = getFirstJSDocTag(node, isJSDocTypeTag); if (tag && tag.typeExpression && tag.typeExpression.type) { @@ -11785,15 +11866,17 @@ ${lanes.join("\n")} } } function getJSDocTagsWorker(node, noCache) { + var _a2, _b; if (!canHaveJSDoc(node)) return emptyArray; - let tags = node.jsDocCache; + let tags = (_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache; if (tags === void 0 || noCache) { const comments = getJSDocCommentsAndTags(node, noCache); Debug.assert(comments.length < 2 || comments[0] !== comments[1]); tags = flatMap(comments, (j) => isJSDoc(j) ? j.tags : j); if (!noCache) { - node.jsDocCache = tags; + (_b = node.jsDoc) != null ? _b : node.jsDoc = []; + node.jsDoc.jsDocCache = tags; } } return tags; @@ -11971,19 +12054,31 @@ ${lanes.join("\n")} function isImportOrExportSpecifier(node) { return isImportSpecifier(node) || isExportSpecifier(node); } - function isTypeOnlyImportOrExportDeclaration(node) { + function isTypeOnlyImportDeclaration(node) { switch (node.kind) { case 273 /* ImportSpecifier */: - case 278 /* ExportSpecifier */: return node.isTypeOnly || node.parent.parent.isTypeOnly; case 271 /* NamespaceImport */: return node.parent.isTypeOnly; case 270 /* ImportClause */: case 268 /* ImportEqualsDeclaration */: return node.isTypeOnly; - default: - return false; } + return false; + } + function isTypeOnlyExportDeclaration(node) { + switch (node.kind) { + case 278 /* ExportSpecifier */: + return node.isTypeOnly || node.parent.parent.isTypeOnly; + case 275 /* ExportDeclaration */: + return node.isTypeOnly && !!node.moduleSpecifier && !node.exportClause; + case 277 /* NamespaceExport */: + return node.parent.isTypeOnly; + } + return false; + } + function isTypeOnlyImportOrExportDeclaration(node) { + return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node); } function isAssertionKey(node) { return isStringLiteral(node) || isIdentifier(node); @@ -11992,10 +12087,12 @@ ${lanes.join("\n")} return node.kind === 10 /* StringLiteral */ || isTemplateLiteralKind(node.kind); } function isGeneratedIdentifier(node) { - return isIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isGeneratedPrivateIdentifier(node) { - return isPrivateIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isPrivateIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isPrivateIdentifierClassElementDeclaration(node) { return (isPropertyDeclaration(node) || isMethodOrAccessor(node)) && isPrivateIdentifier(node.name); @@ -12172,6 +12269,9 @@ ${lanes.join("\n")} } return false; } + function isBindingOrAssignmentElement(node) { + return isVariableDeclaration(node) || isParameter(node) || isObjectBindingOrAssignmentElement(node) || isArrayBindingOrAssignmentElement(node); + } function isBindingOrAssignmentPattern(node) { return isObjectBindingOrAssignmentPattern(node) || isArrayBindingOrAssignmentPattern(node); } @@ -12201,6 +12301,24 @@ ${lanes.join("\n")} } return false; } + function isArrayBindingOrAssignmentElement(node) { + switch (node.kind) { + case 205 /* BindingElement */: + case 229 /* OmittedExpression */: + case 227 /* SpreadElement */: + case 206 /* ArrayLiteralExpression */: + case 207 /* ObjectLiteralExpression */: + case 79 /* Identifier */: + case 208 /* PropertyAccessExpression */: + case 209 /* ElementAccessExpression */: + return true; + } + return isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ); + } function isPropertyAccessOrQualifiedNameOrImportTypeNode(node) { const kind = node.kind; return kind === 208 /* PropertyAccessExpression */ || kind === 163 /* QualifiedName */ || kind === 202 /* ImportType */; @@ -12264,6 +12382,7 @@ ${lanes.join("\n")} case 230 /* ExpressionWithTypeArguments */: case 233 /* MetaProperty */: case 100 /* ImportKeyword */: + case 279 /* MissingDeclaration */: return true; default: return false; @@ -12296,6 +12415,17 @@ ${lanes.join("\n")} return false; } } + function isLiteralTypeLiteral(node) { + switch (node.kind) { + case 104 /* NullKeyword */: + case 110 /* TrueKeyword */: + case 95 /* FalseKeyword */: + case 221 /* PrefixUnaryExpression */: + return true; + default: + return isLiteralExpression(node); + } + } function isExpression(node) { return isExpressionKind(skipPartiallyEmittedExpressions(node).kind); } @@ -12308,8 +12438,8 @@ ${lanes.join("\n")} case 227 /* SpreadElement */: case 231 /* AsExpression */: case 229 /* OmittedExpression */: - case 356 /* CommaListExpression */: - case 355 /* PartiallyEmittedExpression */: + case 357 /* CommaListExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: return true; default: @@ -12494,7 +12624,7 @@ ${lanes.join("\n")} return kind === 259 /* FunctionDeclaration */ || kind === 279 /* MissingDeclaration */ || kind === 260 /* ClassDeclaration */ || kind === 261 /* InterfaceDeclaration */ || kind === 262 /* TypeAliasDeclaration */ || kind === 263 /* EnumDeclaration */ || kind === 264 /* ModuleDeclaration */ || kind === 269 /* ImportDeclaration */ || kind === 268 /* ImportEqualsDeclaration */ || kind === 275 /* ExportDeclaration */ || kind === 274 /* ExportAssignment */ || kind === 267 /* NamespaceExportDeclaration */; } function isStatementKindButNotDeclarationKind(kind) { - return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 354 /* NotEmittedStatement */ || kind === 358 /* EndOfDeclarationMarker */ || kind === 357 /* MergeDeclarationMarker */; + return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 355 /* NotEmittedStatement */ || kind === 359 /* EndOfDeclarationMarker */ || kind === 358 /* MergeDeclarationMarker */; } function isDeclaration(node) { if (node.kind === 165 /* TypeParameter */) { @@ -12555,13 +12685,13 @@ ${lanes.join("\n")} return kind === 292 /* CaseClause */ || kind === 293 /* DefaultClause */; } function isJSDocNode(node) { - return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 352 /* LastJSDocNode */; + return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 353 /* LastJSDocNode */; } function isJSDocCommentContainingNode(node) { return node.kind === 323 /* JSDoc */ || node.kind === 322 /* JSDocNamepathType */ || node.kind === 324 /* JSDocText */ || isJSDocLinkLike(node) || isJSDocTag(node) || isJSDocTypeLiteral(node) || isJSDocSignature(node); } function isJSDocTag(node) { - return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 352 /* LastJSDocTagNode */; + return node.kind >= 330 /* FirstJSDocTagNode */ && node.kind <= 353 /* LastJSDocTagNode */; } function isSetAccessor(node) { return node.kind === 175 /* SetAccessor */; @@ -12981,7 +13111,7 @@ ${lanes.join("\n")} if (includeJsDoc && hasJSDocNodes(node)) { return getTokenPosOfNode(node.jsDoc[0], sourceFile); } - if (node.kind === 353 /* SyntaxList */ && node._children.length > 0) { + if (node.kind === 354 /* SyntaxList */ && node._children.length > 0) { return getTokenPosOfNode(node._children[0], sourceFile, includeJsDoc); } return skipTrivia( @@ -13033,6 +13163,10 @@ ${lanes.join("\n")} const emitNode = node.emitNode; return emitNode && emitNode.flags || 0; } + function getInternalEmitFlags(node) { + const emitNode = node.emitNode; + return emitNode && emitNode.internalFlags || 0; + } function getScriptTargetFeatures() { return { es2015: { @@ -13282,6 +13416,7 @@ ${lanes.join("\n")} return false; } function isDeclarationWithTypeParameters(node) { + Debug.type(node); switch (node.kind) { case 341 /* JSDocCallbackTag */: case 349 /* JSDocTypedefTag */: @@ -13293,6 +13428,7 @@ ${lanes.join("\n")} } } function isDeclarationWithTypeParameterChildren(node) { + Debug.type(node); switch (node.kind) { case 176 /* CallSignature */: case 177 /* ConstructSignature */: @@ -13373,10 +13509,11 @@ ${lanes.join("\n")} return name.kind === 164 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression); } function tryGetTextOfPropertyName(name) { + var _a2; switch (name.kind) { case 79 /* Identifier */: case 80 /* PrivateIdentifier */: - return name.autoGenerate ? void 0 : name.escapedText; + return ((_a2 = name.emitNode) == null ? void 0 : _a2.autoGenerate) ? void 0 : name.escapedText; case 10 /* StringLiteral */: case 8 /* NumericLiteral */: case 14 /* NoSubstitutionTemplateLiteral */: @@ -13425,11 +13562,14 @@ ${lanes.join("\n")} const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnostic(sourceFile, span.start, span.length, message, arg0, arg1, arg2, arg3); } - function createDiagnosticForNodeFromMessageChain(node, messageChain, relatedInformation) { - const sourceFile = getSourceFileOfNode(node); + function createDiagnosticForNodeFromMessageChain(sourceFile, node, messageChain, relatedInformation) { const span = getErrorSpanForNode(sourceFile, node); return createFileDiagnosticFromMessageChain(sourceFile, span.start, span.length, messageChain, relatedInformation); } + function createDiagnosticForNodeArrayFromMessageChain(sourceFile, nodes, messageChain, relatedInformation) { + const start = skipTrivia(sourceFile.text, nodes.pos); + return createFileDiagnosticFromMessageChain(sourceFile, start, nodes.end - start, messageChain, relatedInformation); + } function assertDiagnosticLocation(file, start, length2) { Debug.assertGreaterThanOrEqual(start, 0); Debug.assertGreaterThanOrEqual(length2, 0); @@ -13494,6 +13634,20 @@ ${lanes.join("\n")} const start = scanner2.getTokenPos(); return createTextSpanFromBounds(start, scanner2.getTextPos()); } + function scanTokenAtPosition(sourceFile, pos) { + const scanner2 = createScanner( + sourceFile.languageVersion, + /*skipTrivia*/ + true, + sourceFile.languageVariant, + sourceFile.text, + /*onError:*/ + void 0, + pos + ); + scanner2.scan(); + return scanner2.getToken(); + } function getErrorSpanForArrowFunction(sourceFile, node) { const pos = skipTrivia(sourceFile.text, node.pos); if (node.body && node.body.kind === 238 /* Block */) { @@ -14082,47 +14236,90 @@ ${lanes.join("\n")} return node.expression; } } - function nodeCanBeDecorated(node, parent2, grandparent) { - if (isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { + function nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent) { + if (useLegacyDecorators && isNamedDeclaration(node) && isPrivateIdentifier(node.name)) { return false; } switch (node.kind) { case 260 /* ClassDeclaration */: return true; + case 228 /* ClassExpression */: + return !useLegacyDecorators; case 169 /* PropertyDeclaration */: - return parent2.kind === 260 /* ClassDeclaration */; + return parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2) && !hasAbstractModifier(node) && !hasAmbientModifier(node)); case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: - return node.body !== void 0 && parent2.kind === 260 /* ClassDeclaration */; + return node.body !== void 0 && parent2 !== void 0 && (useLegacyDecorators ? isClassDeclaration(parent2) : isClassLike(parent2)); case 166 /* Parameter */: - return parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && grandparent.kind === 260 /* ClassDeclaration */; + if (!useLegacyDecorators) + return false; + return parent2 !== void 0 && parent2.body !== void 0 && (parent2.kind === 173 /* Constructor */ || parent2.kind === 171 /* MethodDeclaration */ || parent2.kind === 175 /* SetAccessor */) && getThisParameter(parent2) !== node && grandparent !== void 0 && grandparent.kind === 260 /* ClassDeclaration */; } return false; } - function nodeIsDecorated(node, parent2, grandparent) { - return hasDecorators(node) && nodeCanBeDecorated(node, parent2, grandparent); + function nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return hasDecorators(node) && nodeCanBeDecorated(useLegacyDecorators, node, parent2, grandparent); } - function nodeOrChildIsDecorated(node, parent2, grandparent) { - return nodeIsDecorated(node, parent2, grandparent) || childIsDecorated(node, parent2); + function nodeOrChildIsDecorated(useLegacyDecorators, node, parent2, grandparent) { + return nodeIsDecorated(useLegacyDecorators, node, parent2, grandparent) || childIsDecorated(useLegacyDecorators, node, parent2); } - function childIsDecorated(node, parent2) { + function childIsDecorated(useLegacyDecorators, node, parent2) { switch (node.kind) { case 260 /* ClassDeclaration */: - return some(node.members, (m) => nodeOrChildIsDecorated(m, node, parent2)); + return some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); + case 228 /* ClassExpression */: + return !useLegacyDecorators && some(node.members, (m) => nodeOrChildIsDecorated(useLegacyDecorators, m, node, parent2)); case 171 /* MethodDeclaration */: case 175 /* SetAccessor */: case 173 /* Constructor */: - return some(node.parameters, (p) => nodeIsDecorated(p, node, parent2)); + return some(node.parameters, (p) => nodeIsDecorated(useLegacyDecorators, p, node, parent2)); default: return false; } } - function classOrConstructorParameterIsDecorated(node) { - if (nodeIsDecorated(node)) + function classOrConstructorParameterIsDecorated(useLegacyDecorators, node) { + if (nodeIsDecorated(useLegacyDecorators, node)) return true; const constructor = getFirstConstructorWithBody(node); - return !!constructor && childIsDecorated(constructor, node); + return !!constructor && childIsDecorated(useLegacyDecorators, constructor, node); + } + function classElementOrClassElementParameterIsDecorated(useLegacyDecorators, node, parent2) { + let parameters; + if (isAccessor(node)) { + const { firstAccessor, secondAccessor, setAccessor } = getAllAccessorDeclarations(parent2.members, node); + const firstAccessorWithDecorators = hasDecorators(firstAccessor) ? firstAccessor : secondAccessor && hasDecorators(secondAccessor) ? secondAccessor : void 0; + if (!firstAccessorWithDecorators || node !== firstAccessorWithDecorators) { + return false; + } + parameters = setAccessor == null ? void 0 : setAccessor.parameters; + } else if (isMethodDeclaration(node)) { + parameters = node.parameters; + } + if (nodeIsDecorated(useLegacyDecorators, node, parent2)) { + return true; + } + if (parameters) { + for (const parameter of parameters) { + if (parameterIsThisKeyword(parameter)) + continue; + if (nodeIsDecorated(useLegacyDecorators, parameter, node, parent2)) + return true; + } + } + return false; + } + function isEmptyStringLiteral(node) { + if (node.textSourceNode) { + switch (node.textSourceNode.kind) { + case 10 /* StringLiteral */: + return isEmptyStringLiteral(node.textSourceNode); + case 14 /* NoSubstitutionTemplateLiteral */: + return node.text === ""; + } + return false; + } + return node.text === ""; } function isJSXTagName(node) { const { parent: parent2 } = node; @@ -14319,6 +14516,9 @@ ${lanes.join("\n")} true ); } + function isBindingElementOfBareOrAccessedRequire(node) { + return isBindingElement(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node.parent.parent); + } function isVariableDeclarationInitializedWithRequireHelper(node, allowAccessedRequire) { return isVariableDeclaration(node) && !!node.initializer && isRequireCall( allowAccessedRequire ? getLeftmostAccessExpression(node.initializer) : node.initializer, @@ -14563,7 +14763,7 @@ ${lanes.join("\n")} } function setValueDeclaration(symbol, node) { const { valueDeclaration } = symbol; - if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { + if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !isInJSFile(node) && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { symbol.valueDeclaration = node; } } @@ -14578,6 +14778,7 @@ ${lanes.join("\n")} var _a2, _b; switch (node.kind) { case 257 /* VariableDeclaration */: + case 205 /* BindingElement */: return (_a2 = findAncestor(node.initializer, (node2) => isRequireCall( node2, /*requireStringLiteralLikeArgument*/ @@ -14587,6 +14788,14 @@ ${lanes.join("\n")} return tryCast(node.moduleSpecifier, isStringLiteralLike); case 268 /* ImportEqualsDeclaration */: return tryCast((_b = tryCast(node.moduleReference, isExternalModuleReference)) == null ? void 0 : _b.expression, isStringLiteralLike); + case 270 /* ImportClause */: + case 277 /* NamespaceExport */: + return tryCast(node.parent.moduleSpecifier, isStringLiteralLike); + case 271 /* NamespaceImport */: + case 278 /* ExportSpecifier */: + return tryCast(node.parent.parent.moduleSpecifier, isStringLiteralLike); + case 273 /* ImportSpecifier */: + return tryCast(node.parent.parent.parent.moduleSpecifier, isStringLiteralLike); default: Debug.assertNever(node); } @@ -14832,7 +15041,7 @@ ${lanes.join("\n")} return ownsJSDocTag(hostNode, jsDoc) ? [jsDoc] : void 0; } function ownsJSDocTag(hostNode, tag) { - return !isJSDocTypeTag(tag) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; + return !(isJSDocTypeTag(tag) || isJSDocSatisfiesTag(tag)) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; } function getNextJSDocCommentLocation(node) { const parent2 = node.parent; @@ -15176,7 +15385,8 @@ ${lanes.join("\n")} const token = stringToToken(name); return token !== void 0 && isKeyword(token); } - function isIdentifierANonContextualKeyword({ originalKeywordKind }) { + function isIdentifierANonContextualKeyword(node) { + const originalKeywordKind = identifierToKeywordKind(node); return !!originalKeywordKind && !isContextualKeyword(originalKeywordKind); } function isTrivia(token) { @@ -15287,6 +15497,72 @@ ${lanes.join("\n")} function isESSymbolIdentifier(node) { return node.kind === 79 /* Identifier */ && node.escapedText === "Symbol"; } + function isProtoSetter(node) { + return isIdentifier(node) ? idText(node) === "__proto__" : isStringLiteral(node) && node.text === "__proto__"; + } + function isAnonymousFunctionDefinition(node, cb) { + node = skipOuterExpressions(node); + switch (node.kind) { + case 228 /* ClassExpression */: + case 215 /* FunctionExpression */: + if (node.name) { + return false; + } + break; + case 216 /* ArrowFunction */: + break; + default: + return false; + } + return typeof cb === "function" ? cb(node) : true; + } + function isNamedEvaluationSource(node) { + switch (node.kind) { + case 299 /* PropertyAssignment */: + return !isProtoSetter(node.name); + case 300 /* ShorthandPropertyAssignment */: + return !!node.objectAssignmentInitializer; + case 257 /* VariableDeclaration */: + return isIdentifier(node.name) && !!node.initializer; + case 166 /* Parameter */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 205 /* BindingElement */: + return isIdentifier(node.name) && !!node.initializer && !node.dotDotDotToken; + case 169 /* PropertyDeclaration */: + return !!node.initializer; + case 223 /* BinaryExpression */: + switch (node.operatorToken.kind) { + case 63 /* EqualsToken */: + case 76 /* AmpersandAmpersandEqualsToken */: + case 75 /* BarBarEqualsToken */: + case 77 /* QuestionQuestionEqualsToken */: + return isIdentifier(node.left); + } + break; + case 274 /* ExportAssignment */: + return true; + } + return false; + } + function isNamedEvaluation(node, cb) { + if (!isNamedEvaluationSource(node)) + return false; + switch (node.kind) { + case 299 /* PropertyAssignment */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 300 /* ShorthandPropertyAssignment */: + return isAnonymousFunctionDefinition(node.objectAssignmentInitializer, cb); + case 257 /* VariableDeclaration */: + case 166 /* Parameter */: + case 205 /* BindingElement */: + case 169 /* PropertyDeclaration */: + return isAnonymousFunctionDefinition(node.initializer, cb); + case 223 /* BinaryExpression */: + return isAnonymousFunctionDefinition(node.right, cb); + case 274 /* ExportAssignment */: + return isAnonymousFunctionDefinition(node.expression, cb); + } + } function isPushOrUnshiftIdentifier(node) { return node.escapedText === "push" || node.escapedText === "unshift"; } @@ -15367,7 +15643,7 @@ ${lanes.join("\n")} } function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return 0 /* Comma */; case 227 /* SpreadElement */: return 1 /* Spread */; @@ -15975,7 +16251,7 @@ ${lanes.join("\n")} return node.parent.kind === 183 /* TypeQuery */; } function identifierIsThisKeyword(id) { - return id.originalKeywordKind === 108 /* ThisKeyword */; + return id.escapedText === "this"; } function getAllAccessorDeclarations(declarations, accessor) { let firstAccessor; @@ -16286,7 +16562,7 @@ ${lanes.join("\n")} } function getSyntacticModifierFlagsNoCache(node) { let flags = canHaveModifiers(node) ? modifiersToFlags(node.modifiers) : 0 /* None */; - if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.isInJSDocNamespace) { + if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { flags |= 1 /* Export */; } return flags; @@ -16337,14 +16613,23 @@ ${lanes.join("\n")} } return 0 /* None */; } + function isBinaryLogicalOperator(token) { + return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */; + } function isLogicalOperator(token) { - return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */ || token === 53 /* ExclamationToken */; + return isBinaryLogicalOperator(token) || token === 53 /* ExclamationToken */; } function isLogicalOrCoalescingAssignmentOperator(token) { return token === 75 /* BarBarEqualsToken */ || token === 76 /* AmpersandAmpersandEqualsToken */ || token === 77 /* QuestionQuestionEqualsToken */; } function isLogicalOrCoalescingAssignmentExpression(expr) { - return isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + return isBinaryExpression(expr) && isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); + } + function isLogicalOrCoalescingBinaryOperator(token) { + return isBinaryLogicalOperator(token) || token === 60 /* QuestionQuestionToken */; + } + function isLogicalOrCoalescingBinaryExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingBinaryOperator(expr.operatorToken.kind); } function isAssignmentOperator(token) { return token >= 63 /* FirstAssignment */ && token <= 78 /* LastAssignment */; @@ -16581,14 +16866,14 @@ ${lanes.join("\n")} function directoryProbablyExists(directoryName, host) { return !host.directoryExists || host.directoryExists(directoryName); } - function getNewLineCharacter(options, getNewLine) { + function getNewLineCharacter(options) { switch (options.newLine) { case 0 /* CarriageReturnLineFeed */: return carriageReturnLineFeed; case 1 /* LineFeed */: + case void 0: return lineFeed; } - return getNewLine ? getNewLine() : sys ? sys.newLine : carriageReturnLineFeed; } function createRange(pos, end = pos) { Debug.assert(end >= pos || end === -1); @@ -16605,6 +16890,9 @@ ${lanes.join("\n")} return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? moveRangePos(node, lastDecorator.end) : node; } function moveRangePastModifiers(node) { + if (isPropertyDeclaration(node) || isMethodDeclaration(node)) { + return moveRangePos(node, node.name.pos); + } const lastModifier = canHaveModifiers(node) ? lastOrUndefined(node.modifiers) : void 0; return lastModifier && !positionIsSynthesized(lastModifier.end) ? moveRangePos(node, lastModifier.end) : moveRangePastDecorators(node); } @@ -16718,7 +17006,7 @@ ${lanes.join("\n")} return filter(node.declarations, isInitializedVariable); } function isInitializedVariable(node) { - return node.initializer !== void 0; + return isVariableDeclaration(node) && node.initializer !== void 0; } function isWatchSet(options) { return options.watch && hasProperty(options, "watch"); @@ -16899,7 +17187,7 @@ ${lanes.join("\n")} return isClassLike(node) || isInterfaceDeclaration(node) || isTypeLiteralNode(node); } function isTypeNodeKind(kind) { - return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; + return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 139 /* IntrinsicKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; } function isAccessExpression(node) { return node.kind === 208 /* PropertyAccessExpression */ || node.kind === 209 /* ElementAccessExpression */; @@ -16981,7 +17269,7 @@ ${lanes.join("\n")} case 209 /* ElementAccessExpression */: case 208 /* PropertyAccessExpression */: case 232 /* NonNullExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: node = node.expression; continue; @@ -17049,15 +17337,19 @@ ${lanes.join("\n")} this.parent = void 0; this.original = void 0; this.emitNode = void 0; - this.flowNode = void 0; } function SourceMapSource(fileName, text, skipTrivia2) { this.fileName = fileName; this.text = text; this.skipTrivia = skipTrivia2 || ((pos) => pos); } + function addObjectAllocatorPatcher(fn) { + objectAllocatorPatchers.push(fn); + fn(objectAllocator); + } function setObjectAllocator(alloc) { Object.assign(objectAllocator, alloc); + forEach(objectAllocatorPatchers, (fn) => fn(objectAllocator)); } function formatStringFromArgs(text, args, baseIndex = 0) { return text.replace(/{(\d+)}/g, (_match, index) => "" + Debug.checkDefined(args[+index + baseIndex])); @@ -17343,6 +17635,12 @@ ${lanes.join("\n")} return false; } } + function getIsolatedModules(options) { + return !!(options.isolatedModules || options.verbatimModuleSyntax); + } + function importNameElisionDisabled(options) { + return options.verbatimModuleSyntax || options.isolatedModules && options.preserveValueImports; + } function unreachableCodeIsError(options) { return options.allowUnreachableCode === false; } @@ -18200,7 +18498,7 @@ ${lanes.join("\n")} return node.parent.templateSpans; case 167 /* Decorator */: { const { parent: parent4 } = node; - return canHaveDecorators(parent4) ? parent4.modifiers : canHaveIllegalDecorators(parent4) ? parent4.illegalDecorators : void 0; + return canHaveDecorators(parent4) ? parent4.modifiers : void 0; } case 294 /* HeritageClause */: return node.parent.heritageClauses; @@ -18218,7 +18516,7 @@ ${lanes.join("\n")} return parent2.types; case 186 /* TupleType */: case 206 /* ArrayLiteralExpression */: - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: case 272 /* NamedImports */: case 276 /* NamedExports */: return parent2.elements; @@ -18403,7 +18701,17 @@ ${lanes.join("\n")} const kind = node.kind; return (kind === 208 /* PropertyAccessExpression */ || kind === 209 /* ElementAccessExpression */) && isNonNullExpression(node.expression); } - var resolvingEmptyArray, externalHelpersModuleNameText, defaultMaximumTruncationLength, noTruncationMaximumTruncationLength, stringWriter, GetLiteralTextFlags, fullTripleSlashReferencePathRegEx, fullTripleSlashReferenceTypeReferenceDirectiveRegEx, fullTripleSlashAMDReferencePathRegEx, defaultLibReferenceRegEx, AssignmentKind, FunctionFlags, Associativity, OperatorPrecedence, templateSubstitutionRegExp, doubleQuoteEscapedCharsRegExp, singleQuoteEscapedCharsRegExp, backtickQuoteEscapedCharsRegExp, escapedCharsMap, nonAsciiCharacters, jsxDoubleQuoteEscapedCharsRegExp, jsxSingleQuoteEscapedCharsRegExp, jsxEscapedCharsMap, indentStrings, base64Digits, carriageReturnLineFeed, lineFeed, AccessKind, objectAllocator, localizedDiagnosticMessages, reservedCharacterPattern, wildcardCharCodes, commonPackageFolders, implicitExcludePathRegexPattern, filesMatcher, directoriesMatcher, excludeMatcher, wildcardMatchers, supportedTSExtensions, supportedTSExtensionsFlat, supportedTSExtensionsWithJson, supportedTSExtensionsForExtractExtension, supportedJSExtensions, supportedJSExtensionsFlat, allSupportedExtensions, allSupportedExtensionsWithJson, supportedDeclarationExtensions, supportedTSImplementationExtensions, ModuleSpecifierEnding, extensionsToRemove, emptyFileSystemEntries; + function isJSDocSatisfiesExpression(node) { + return isInJSFile(node) && isParenthesizedExpression(node) && hasJSDocNodes(node) && !!getJSDocSatisfiesTag(node); + } + function getJSDocSatisfiesExpressionType(node) { + return Debug.checkDefined(tryGetJSDocSatisfiesTypeNode(node)); + } + function tryGetJSDocSatisfiesTypeNode(node) { + const tag = getJSDocSatisfiesTag(node); + return tag && tag.typeExpression && tag.typeExpression.type; + } + var resolvingEmptyArray, externalHelpersModuleNameText, defaultMaximumTruncationLength, noTruncationMaximumTruncationLength, stringWriter, GetLiteralTextFlags, fullTripleSlashReferencePathRegEx, fullTripleSlashReferenceTypeReferenceDirectiveRegEx, fullTripleSlashAMDReferencePathRegEx, defaultLibReferenceRegEx, AssignmentKind, FunctionFlags, Associativity, OperatorPrecedence, templateSubstitutionRegExp, doubleQuoteEscapedCharsRegExp, singleQuoteEscapedCharsRegExp, backtickQuoteEscapedCharsRegExp, escapedCharsMap, nonAsciiCharacters, jsxDoubleQuoteEscapedCharsRegExp, jsxSingleQuoteEscapedCharsRegExp, jsxEscapedCharsMap, indentStrings, base64Digits, carriageReturnLineFeed, lineFeed, AccessKind, objectAllocator, objectAllocatorPatchers, localizedDiagnosticMessages, reservedCharacterPattern, wildcardCharCodes, commonPackageFolders, implicitExcludePathRegexPattern, filesMatcher, directoriesMatcher, excludeMatcher, wildcardMatchers, supportedTSExtensions, supportedTSExtensionsFlat, supportedTSExtensionsWithJson, supportedTSExtensionsForExtractExtension, supportedJSExtensions, supportedJSExtensionsFlat, allSupportedExtensions, allSupportedExtensionsWithJson, supportedDeclarationExtensions, supportedTSImplementationExtensions, ModuleSpecifierEnding, extensionsToRemove, emptyFileSystemEntries; var init_utilities = __esm({ "src/compiler/utilities.ts"() { "use strict"; @@ -18524,6 +18832,7 @@ ${lanes.join("\n")} getSignatureConstructor: () => Signature2, getSourceMapSourceConstructor: () => SourceMapSource }; + objectAllocatorPatchers = []; reservedCharacterPattern = /[^\w\s\/]/g; wildcardCharCodes = [42 /* asterisk */, 63 /* question */]; commonPackageFolders = ["node_modules", "bower_components", "jspm_packages"]; @@ -19064,7 +19373,7 @@ ${lanes.join("\n")} if (!node.body) return Debug.fail(`Cannot convert a FunctionDeclaration without a body`); const updated = factory2.createFunctionExpression( - node.modifiers, + getModifiers(node), node.asteriskToken, node.name, node.typeParameters, @@ -19203,46 +19512,45 @@ ${lanes.join("\n")} }, baseFactory: baseFactory2, flags, - createNodeArray: createNodeArray2, - createNumericLiteral: createNumericLiteral2, - createBigIntLiteral: createBigIntLiteral2, - createStringLiteral: createStringLiteral2, - createStringLiteralFromNode: createStringLiteralFromNode2, - createRegularExpressionLiteral: createRegularExpressionLiteral2, + createNodeArray, + createNumericLiteral, + createBigIntLiteral, + createStringLiteral, + createStringLiteralFromNode, + createRegularExpressionLiteral, createLiteralLikeNode, - createIdentifier: createIdentifier3, - updateIdentifier, - createTempVariable: createTempVariable3, - createLoopVariable: createLoopVariable2, - createUniqueName: createUniqueName2, - getGeneratedNameForNode: getGeneratedNameForNode3, - createPrivateIdentifier: createPrivateIdentifier2, + createIdentifier, + createTempVariable, + createLoopVariable, + createUniqueName, + getGeneratedNameForNode, + createPrivateIdentifier, createUniquePrivateName, getGeneratedPrivateNameForNode, - createToken: createToken3, - createSuper: createSuper2, - createThis: createThis2, - createNull: createNull2, - createTrue: createTrue2, - createFalse: createFalse2, - createModifier: createModifier2, - createModifiersFromModifierFlags: createModifiersFromModifierFlags2, - createQualifiedName: createQualifiedName2, - updateQualifiedName: updateQualifiedName2, - createComputedPropertyName: createComputedPropertyName2, - updateComputedPropertyName: updateComputedPropertyName2, - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2, + createToken, + createSuper, + createThis, + createNull, + createTrue, + createFalse, + createModifier, + createModifiersFromModifierFlags, + createQualifiedName, + updateQualifiedName, + createComputedPropertyName, + updateComputedPropertyName, + createTypeParameterDeclaration, + updateTypeParameterDeclaration, createParameterDeclaration, updateParameterDeclaration, - createDecorator: createDecorator2, - updateDecorator: updateDecorator2, - createPropertySignature: createPropertySignature3, - updatePropertySignature: updatePropertySignature3, + createDecorator, + updateDecorator, + createPropertySignature, + updatePropertySignature, createPropertyDeclaration, updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodSignature: createMethodSignature3, - updateMethodSignature: updateMethodSignature3, + createMethodSignature, + updateMethodSignature, createMethodDeclaration, updateMethodDeclaration, createConstructorDeclaration, @@ -19251,96 +19559,96 @@ ${lanes.join("\n")} updateGetAccessorDeclaration, createSetAccessorDeclaration, updateSetAccessorDeclaration, - createCallSignature: createCallSignature2, - updateCallSignature: updateCallSignature2, - createConstructSignature: createConstructSignature2, - updateConstructSignature: updateConstructSignature2, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, + createCallSignature, + updateCallSignature, + createConstructSignature, + updateConstructSignature, + createIndexSignature, + updateIndexSignature, createClassStaticBlockDeclaration, updateClassStaticBlockDeclaration, createTemplateLiteralTypeSpan, updateTemplateLiteralTypeSpan, - createKeywordTypeNode: createKeywordTypeNode2, - createTypePredicateNode: createTypePredicateNode3, - updateTypePredicateNode: updateTypePredicateNode3, - createTypeReferenceNode: createTypeReferenceNode2, - updateTypeReferenceNode: updateTypeReferenceNode2, - createFunctionTypeNode: createFunctionTypeNode2, - updateFunctionTypeNode: updateFunctionTypeNode2, - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2, - createTypeQueryNode: createTypeQueryNode2, - updateTypeQueryNode: updateTypeQueryNode2, - createTypeLiteralNode: createTypeLiteralNode2, - updateTypeLiteralNode: updateTypeLiteralNode2, - createArrayTypeNode: createArrayTypeNode2, - updateArrayTypeNode: updateArrayTypeNode2, - createTupleTypeNode: createTupleTypeNode2, - updateTupleTypeNode: updateTupleTypeNode2, + createKeywordTypeNode, + createTypePredicateNode, + updateTypePredicateNode, + createTypeReferenceNode, + updateTypeReferenceNode, + createFunctionTypeNode, + updateFunctionTypeNode, + createConstructorTypeNode, + updateConstructorTypeNode, + createTypeQueryNode, + updateTypeQueryNode, + createTypeLiteralNode, + updateTypeLiteralNode, + createArrayTypeNode, + updateArrayTypeNode, + createTupleTypeNode, + updateTupleTypeNode, createNamedTupleMember, updateNamedTupleMember, - createOptionalTypeNode: createOptionalTypeNode2, - updateOptionalTypeNode: updateOptionalTypeNode2, - createRestTypeNode: createRestTypeNode2, - updateRestTypeNode: updateRestTypeNode2, - createUnionTypeNode: createUnionTypeNode2, - updateUnionTypeNode: updateUnionTypeNode2, - createIntersectionTypeNode: createIntersectionTypeNode2, - updateIntersectionTypeNode: updateIntersectionTypeNode2, - createConditionalTypeNode: createConditionalTypeNode2, - updateConditionalTypeNode: updateConditionalTypeNode2, - createInferTypeNode: createInferTypeNode2, - updateInferTypeNode: updateInferTypeNode2, - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2, - createParenthesizedType: createParenthesizedType2, - updateParenthesizedType: updateParenthesizedType2, - createThisTypeNode: createThisTypeNode2, - createTypeOperatorNode: createTypeOperatorNode3, - updateTypeOperatorNode: updateTypeOperatorNode2, - createIndexedAccessTypeNode: createIndexedAccessTypeNode2, - updateIndexedAccessTypeNode: updateIndexedAccessTypeNode2, - createMappedTypeNode: createMappedTypeNode2, - updateMappedTypeNode: updateMappedTypeNode2, - createLiteralTypeNode: createLiteralTypeNode2, - updateLiteralTypeNode: updateLiteralTypeNode2, + createOptionalTypeNode, + updateOptionalTypeNode, + createRestTypeNode, + updateRestTypeNode, + createUnionTypeNode, + updateUnionTypeNode, + createIntersectionTypeNode, + updateIntersectionTypeNode, + createConditionalTypeNode, + updateConditionalTypeNode, + createInferTypeNode, + updateInferTypeNode, + createImportTypeNode, + updateImportTypeNode, + createParenthesizedType, + updateParenthesizedType, + createThisTypeNode, + createTypeOperatorNode, + updateTypeOperatorNode, + createIndexedAccessTypeNode, + updateIndexedAccessTypeNode, + createMappedTypeNode, + updateMappedTypeNode, + createLiteralTypeNode, + updateLiteralTypeNode, createTemplateLiteralType, updateTemplateLiteralType, - createObjectBindingPattern: createObjectBindingPattern2, - updateObjectBindingPattern: updateObjectBindingPattern2, - createArrayBindingPattern: createArrayBindingPattern2, - updateArrayBindingPattern: updateArrayBindingPattern2, - createBindingElement: createBindingElement2, - updateBindingElement: updateBindingElement2, + createObjectBindingPattern, + updateObjectBindingPattern, + createArrayBindingPattern, + updateArrayBindingPattern, + createBindingElement, + updateBindingElement, createArrayLiteralExpression, updateArrayLiteralExpression, createObjectLiteralExpression, updateObjectLiteralExpression, createPropertyAccessExpression: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, name) => setEmitFlags(createPropertyAccessExpression(expression, name), 262144 /* NoIndentation */) : createPropertyAccessExpression, updatePropertyAccessExpression, - createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain2(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain2, - updatePropertyAccessChain: updatePropertyAccessChain2, + createPropertyAccessChain: flags & 4 /* NoIndentationOnFreshPropertyAccess */ ? (expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain(expression, questionDotToken, name), 262144 /* NoIndentation */) : createPropertyAccessChain, + updatePropertyAccessChain, createElementAccessExpression, updateElementAccessExpression, - createElementAccessChain: createElementAccessChain2, - updateElementAccessChain: updateElementAccessChain2, + createElementAccessChain, + updateElementAccessChain, createCallExpression, updateCallExpression, - createCallChain: createCallChain2, - updateCallChain: updateCallChain2, + createCallChain, + updateCallChain, createNewExpression, updateNewExpression, createTaggedTemplateExpression, updateTaggedTemplateExpression, - createTypeAssertion: createTypeAssertion2, - updateTypeAssertion: updateTypeAssertion2, + createTypeAssertion, + updateTypeAssertion, createParenthesizedExpression, updateParenthesizedExpression, - createFunctionExpression: createFunctionExpression2, - updateFunctionExpression: updateFunctionExpression2, - createArrowFunction: createArrowFunction3, - updateArrowFunction: updateArrowFunction3, + createFunctionExpression, + updateFunctionExpression, + createArrowFunction, + updateArrowFunction, createDeleteExpression, updateDeleteExpression, createTypeOfExpression, @@ -19357,42 +19665,42 @@ ${lanes.join("\n")} updateBinaryExpression, createConditionalExpression, updateConditionalExpression, - createTemplateExpression: createTemplateExpression2, - updateTemplateExpression: updateTemplateExpression2, - createTemplateHead: createTemplateHead2, - createTemplateMiddle: createTemplateMiddle2, - createTemplateTail: createTemplateTail2, - createNoSubstitutionTemplateLiteral: createNoSubstitutionTemplateLiteral2, + createTemplateExpression, + updateTemplateExpression, + createTemplateHead, + createTemplateMiddle, + createTemplateTail, + createNoSubstitutionTemplateLiteral, createTemplateLiteralLikeNode, createYieldExpression, updateYieldExpression, createSpreadElement, updateSpreadElement, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createOmittedExpression: createOmittedExpression2, - createExpressionWithTypeArguments: createExpressionWithTypeArguments3, - updateExpressionWithTypeArguments: updateExpressionWithTypeArguments3, - createAsExpression: createAsExpression2, - updateAsExpression: updateAsExpression2, - createNonNullExpression: createNonNullExpression2, - updateNonNullExpression: updateNonNullExpression2, + createClassExpression, + updateClassExpression, + createOmittedExpression, + createExpressionWithTypeArguments, + updateExpressionWithTypeArguments, + createAsExpression, + updateAsExpression, + createNonNullExpression, + updateNonNullExpression, createSatisfiesExpression, updateSatisfiesExpression, - createNonNullChain: createNonNullChain2, - updateNonNullChain: updateNonNullChain2, - createMetaProperty: createMetaProperty2, - updateMetaProperty: updateMetaProperty2, - createTemplateSpan: createTemplateSpan2, - updateTemplateSpan: updateTemplateSpan2, - createSemicolonClassElement: createSemicolonClassElement2, - createBlock: createBlock2, - updateBlock: updateBlock2, - createVariableStatement: createVariableStatement2, - updateVariableStatement: updateVariableStatement2, - createEmptyStatement: createEmptyStatement2, - createExpressionStatement: createExpressionStatement2, - updateExpressionStatement: updateExpressionStatement2, + createNonNullChain, + updateNonNullChain, + createMetaProperty, + updateMetaProperty, + createTemplateSpan, + updateTemplateSpan, + createSemicolonClassElement, + createBlock, + updateBlock, + createVariableStatement, + updateVariableStatement, + createEmptyStatement, + createExpressionStatement, + updateExpressionStatement, createIfStatement, updateIfStatement, createDoStatement, @@ -19421,60 +19729,60 @@ ${lanes.join("\n")} updateThrowStatement, createTryStatement, updateTryStatement, - createDebuggerStatement: createDebuggerStatement2, - createVariableDeclaration: createVariableDeclaration3, - updateVariableDeclaration: updateVariableDeclaration3, - createVariableDeclarationList: createVariableDeclarationList2, - updateVariableDeclarationList: updateVariableDeclarationList2, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createModuleBlock: createModuleBlock2, - updateModuleBlock: updateModuleBlock2, - createCaseBlock: createCaseBlock2, - updateCaseBlock: updateCaseBlock2, - createNamespaceExportDeclaration: createNamespaceExportDeclaration2, - updateNamespaceExportDeclaration: updateNamespaceExportDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createImportClause: createImportClause3, - updateImportClause: updateImportClause3, + createDebuggerStatement, + createVariableDeclaration, + updateVariableDeclaration, + createVariableDeclarationList, + updateVariableDeclarationList, + createFunctionDeclaration, + updateFunctionDeclaration, + createClassDeclaration, + updateClassDeclaration, + createInterfaceDeclaration, + updateInterfaceDeclaration, + createTypeAliasDeclaration, + updateTypeAliasDeclaration, + createEnumDeclaration, + updateEnumDeclaration, + createModuleDeclaration, + updateModuleDeclaration, + createModuleBlock, + updateModuleBlock, + createCaseBlock, + updateCaseBlock, + createNamespaceExportDeclaration, + updateNamespaceExportDeclaration, + createImportEqualsDeclaration, + updateImportEqualsDeclaration, + createImportDeclaration, + updateImportDeclaration, + createImportClause, + updateImportClause, createAssertClause, updateAssertClause, createAssertEntry, updateAssertEntry, createImportTypeAssertionContainer, updateImportTypeAssertionContainer, - createNamespaceImport: createNamespaceImport2, - updateNamespaceImport: updateNamespaceImport2, - createNamespaceExport: createNamespaceExport2, - updateNamespaceExport: updateNamespaceExport2, - createNamedImports: createNamedImports2, - updateNamedImports: updateNamedImports2, - createImportSpecifier: createImportSpecifier2, - updateImportSpecifier: updateImportSpecifier2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3, - createNamedExports: createNamedExports2, - updateNamedExports: updateNamedExports2, - createExportSpecifier: createExportSpecifier2, - updateExportSpecifier: updateExportSpecifier2, + createNamespaceImport, + updateNamespaceImport, + createNamespaceExport, + updateNamespaceExport, + createNamedImports, + updateNamedImports, + createImportSpecifier, + updateImportSpecifier, + createExportAssignment: createExportAssignment2, + updateExportAssignment, + createExportDeclaration, + updateExportDeclaration, + createNamedExports, + updateNamedExports, + createExportSpecifier, + updateExportSpecifier, createMissingDeclaration, - createExternalModuleReference: createExternalModuleReference2, - updateExternalModuleReference: updateExternalModuleReference2, + createExternalModuleReference, + updateExternalModuleReference, // lazily load factory members for JSDoc types with similar structure get createJSDocAllType() { return getJSDocPrimaryTypeCreateFunction(315 /* JSDocAllType */); @@ -19514,27 +19822,27 @@ ${lanes.join("\n")} }, createJSDocFunctionType, updateJSDocFunctionType, - createJSDocTypeLiteral: createJSDocTypeLiteral2, + createJSDocTypeLiteral, updateJSDocTypeLiteral, - createJSDocTypeExpression: createJSDocTypeExpression2, + createJSDocTypeExpression, updateJSDocTypeExpression, - createJSDocSignature: createJSDocSignature2, + createJSDocSignature, updateJSDocSignature, - createJSDocTemplateTag: createJSDocTemplateTag2, + createJSDocTemplateTag, updateJSDocTemplateTag, - createJSDocTypedefTag: createJSDocTypedefTag2, + createJSDocTypedefTag, updateJSDocTypedefTag, - createJSDocParameterTag: createJSDocParameterTag2, + createJSDocParameterTag, updateJSDocParameterTag, - createJSDocPropertyTag: createJSDocPropertyTag2, + createJSDocPropertyTag, updateJSDocPropertyTag, - createJSDocCallbackTag: createJSDocCallbackTag2, + createJSDocCallbackTag, updateJSDocCallbackTag, createJSDocOverloadTag, updateJSDocOverloadTag, - createJSDocAugmentsTag: createJSDocAugmentsTag2, + createJSDocAugmentsTag, updateJSDocAugmentsTag, - createJSDocImplementsTag: createJSDocImplementsTag2, + createJSDocImplementsTag, updateJSDocImplementsTag, createJSDocSeeTag, updateJSDocSeeTag, @@ -19621,57 +19929,63 @@ ${lanes.join("\n")} get updateJSDocThrowsTag() { return getJSDocTypeLikeTagUpdateFunction(352 /* JSDocThrowsTag */); }, - createJSDocEnumTag: createJSDocEnumTag2, + get createJSDocSatisfiesTag() { + return getJSDocTypeLikeTagCreateFunction(353 /* JSDocSatisfiesTag */); + }, + get updateJSDocSatisfiesTag() { + return getJSDocTypeLikeTagUpdateFunction(353 /* JSDocSatisfiesTag */); + }, + createJSDocEnumTag, updateJSDocEnumTag, createJSDocUnknownTag, updateJSDocUnknownTag, createJSDocText, updateJSDocText, - createJSDocComment: createJSDocComment2, + createJSDocComment, updateJSDocComment, - createJsxElement: createJsxElement2, - updateJsxElement: updateJsxElement2, - createJsxSelfClosingElement: createJsxSelfClosingElement2, - updateJsxSelfClosingElement: updateJsxSelfClosingElement2, - createJsxOpeningElement: createJsxOpeningElement2, - updateJsxOpeningElement: updateJsxOpeningElement2, - createJsxClosingElement: createJsxClosingElement2, - updateJsxClosingElement: updateJsxClosingElement2, - createJsxFragment: createJsxFragment2, - createJsxText: createJsxText2, - updateJsxText: updateJsxText2, - createJsxOpeningFragment: createJsxOpeningFragment2, - createJsxJsxClosingFragment: createJsxJsxClosingFragment2, - updateJsxFragment: updateJsxFragment2, - createJsxAttribute: createJsxAttribute2, - updateJsxAttribute: updateJsxAttribute2, - createJsxAttributes: createJsxAttributes2, - updateJsxAttributes: updateJsxAttributes2, - createJsxSpreadAttribute: createJsxSpreadAttribute2, - updateJsxSpreadAttribute: updateJsxSpreadAttribute2, - createJsxExpression: createJsxExpression2, - updateJsxExpression: updateJsxExpression2, - createCaseClause: createCaseClause2, - updateCaseClause: updateCaseClause2, - createDefaultClause: createDefaultClause2, - updateDefaultClause: updateDefaultClause2, - createHeritageClause: createHeritageClause2, - updateHeritageClause: updateHeritageClause2, - createCatchClause: createCatchClause2, - updateCatchClause: updateCatchClause2, - createPropertyAssignment: createPropertyAssignment2, - updatePropertyAssignment: updatePropertyAssignment2, - createShorthandPropertyAssignment: createShorthandPropertyAssignment2, - updateShorthandPropertyAssignment: updateShorthandPropertyAssignment2, - createSpreadAssignment: createSpreadAssignment2, - updateSpreadAssignment: updateSpreadAssignment2, - createEnumMember: createEnumMember2, - updateEnumMember: updateEnumMember2, + createJsxElement, + updateJsxElement, + createJsxSelfClosingElement, + updateJsxSelfClosingElement, + createJsxOpeningElement, + updateJsxOpeningElement, + createJsxClosingElement, + updateJsxClosingElement, + createJsxFragment, + createJsxText, + updateJsxText, + createJsxOpeningFragment, + createJsxJsxClosingFragment, + updateJsxFragment, + createJsxAttribute, + updateJsxAttribute, + createJsxAttributes, + updateJsxAttributes, + createJsxSpreadAttribute, + updateJsxSpreadAttribute, + createJsxExpression, + updateJsxExpression, + createCaseClause, + updateCaseClause, + createDefaultClause, + updateDefaultClause, + createHeritageClause, + updateHeritageClause, + createCatchClause, + updateCatchClause, + createPropertyAssignment, + updatePropertyAssignment, + createShorthandPropertyAssignment, + updateShorthandPropertyAssignment, + createSpreadAssignment, + updateSpreadAssignment, + createEnumMember, + updateEnumMember, createSourceFile: createSourceFile2, updateSourceFile: updateSourceFile2, createRedirectedSourceFile, - createBundle: createBundle2, - updateBundle: updateBundle2, + createBundle, + updateBundle, createUnparsedSource, createUnparsedPrologue, createUnparsedPrepend, @@ -19680,9 +19994,9 @@ ${lanes.join("\n")} createInputFiles: createInputFiles2, createSyntheticExpression, createSyntaxList: createSyntaxList3, - createNotEmittedStatement: createNotEmittedStatement2, - createPartiallyEmittedExpression: createPartiallyEmittedExpression2, - updatePartiallyEmittedExpression: updatePartiallyEmittedExpression2, + createNotEmittedStatement, + createPartiallyEmittedExpression, + updatePartiallyEmittedExpression, createCommaListExpression, updateCommaListExpression, createEndOfDeclarationMarker, @@ -19788,11 +20102,11 @@ ${lanes.join("\n")} return getPostfixUnaryCreateFunction(46 /* MinusMinusToken */); }, // Compound nodes - createImmediatelyInvokedFunctionExpression: createImmediatelyInvokedFunctionExpression2, - createImmediatelyInvokedArrowFunction: createImmediatelyInvokedArrowFunction2, - createVoidZero: createVoidZero2, - createExportDefault: createExportDefault2, - createExternalModuleExport: createExternalModuleExport2, + createImmediatelyInvokedFunctionExpression, + createImmediatelyInvokedArrowFunction, + createVoidZero, + createExportDefault, + createExternalModuleExport, createTypeCheck, createMethodCall, createGlobalMethodCall, @@ -19802,6 +20116,7 @@ ${lanes.join("\n")} createArraySliceCall, createArrayConcatCall, createObjectDefinePropertyCall, + createObjectGetOwnPropertyDescriptorCall, createReflectGetCall, createReflectSetCall, createPropertyDescriptor, @@ -19828,7 +20143,7 @@ ${lanes.join("\n")} }; forEach(nodeFactoryPatchers, (fn) => fn(factory2)); return factory2; - function createNodeArray2(elements, hasTrailingComma) { + function createNodeArray(elements, hasTrailingComma) { if (elements === void 0 || elements === emptyArray) { elements = []; } else if (isNodeArray(elements)) { @@ -19872,7 +20187,7 @@ ${lanes.join("\n")} } return update(updated, original); } - function createNumericLiteral2(value, numericLiteralFlags = 0 /* None */) { + function createNumericLiteral(value, numericLiteralFlags = 0 /* None */) { const node = createBaseDeclaration(8 /* NumericLiteral */); node.text = typeof value === "number" ? value + "" : value; node.numericLiteralFlags = numericLiteralFlags; @@ -19880,7 +20195,7 @@ ${lanes.join("\n")} node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBigIntLiteral2(value) { + function createBigIntLiteral(value) { const node = createBaseToken(9 /* BigIntLiteral */); node.text = typeof value === "string" ? value : pseudoBigIntToString(value) + "n"; node.transformFlags |= 4 /* ContainsESNext */; @@ -19892,14 +20207,14 @@ ${lanes.join("\n")} node.singleQuote = isSingleQuote; return node; } - function createStringLiteral2(text, isSingleQuote, hasExtendedUnicodeEscape) { + function createStringLiteral(text, isSingleQuote, hasExtendedUnicodeEscape) { const node = createBaseStringLiteral(text, isSingleQuote); node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; if (hasExtendedUnicodeEscape) node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createStringLiteralFromNode2(sourceNode) { + function createStringLiteralFromNode(sourceNode) { const node = createBaseStringLiteral( getTextOfIdentifierOrLiteral(sourceNode), /*isSingleQuote*/ @@ -19908,7 +20223,7 @@ ${lanes.join("\n")} node.textSourceNode = sourceNode; return node; } - function createRegularExpressionLiteral2(text) { + function createRegularExpressionLiteral(text) { const node = createBaseToken(13 /* RegularExpressionLiteral */); node.text = text; return node; @@ -19916,33 +20231,33 @@ ${lanes.join("\n")} function createLiteralLikeNode(kind, text) { switch (kind) { case 8 /* NumericLiteral */: - return createNumericLiteral2( + return createNumericLiteral( text, /*numericLiteralFlags*/ 0 ); case 9 /* BigIntLiteral */: - return createBigIntLiteral2(text); + return createBigIntLiteral(text); case 10 /* StringLiteral */: - return createStringLiteral2( + return createStringLiteral( text, /*isSingleQuote*/ void 0 ); case 11 /* JsxText */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ false ); case 12 /* JsxTextAllWhiteSpaces */: - return createJsxText2( + return createJsxText( text, /*containsOnlyTriviaWhiteSpaces*/ true ); case 13 /* RegularExpressionLiteral */: - return createRegularExpressionLiteral2(text); + return createRegularExpressionLiteral(text); case 14 /* NoSubstitutionTemplateLiteral */: return createTemplateLiteralLikeNode( kind, @@ -19954,56 +20269,44 @@ ${lanes.join("\n")} ); } } - function createBaseIdentifier(escapedText, originalKeywordKind) { + function createBaseIdentifier(escapedText) { const node = baseFactory2.createBaseIdentifierNode(79 /* Identifier */); - node.originalKeywordKind = originalKeywordKind; node.escapedText = escapedText; - node.autoGenerate = void 0; - node.typeArguments = void 0; - node.hasExtendedUnicodeEscape = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.symbol = void 0; return node; } function createBaseGeneratedIdentifier(text, autoGenerateFlags, prefix, suffix) { - const node = createBaseIdentifier( - escapeLeadingUnderscores(text), - /*originalKeywordKind*/ - void 0 - ); - node.autoGenerate = { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } - function createIdentifier3(text, typeArguments, originalKeywordKind, hasExtendedUnicodeEscape) { + function createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape) { if (originalKeywordKind === void 0 && text) { originalKeywordKind = stringToToken(text); } if (originalKeywordKind === 79 /* Identifier */) { originalKeywordKind = void 0; } - const node = createBaseIdentifier(escapeLeadingUnderscores(text), originalKeywordKind); - node.typeArguments = asNodeArray(typeArguments); - node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; - if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + if (hasExtendedUnicodeEscape) + node.flags |= 128 /* IdentifierHasExtendedUnicodeEscape */; + if (node.escapedText === "await") { node.transformFlags |= 67108864 /* ContainsPossibleTopLevelAwait */; } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { node.transformFlags |= 1024 /* ContainsES2015 */; } return node; } - function updateIdentifier(node, typeArguments) { - return node.typeArguments !== typeArguments ? update(createIdentifier3(idText(node), typeArguments), node) : node; - } - function createTempVariable3(recordTempVariable, reservedInNestedScopes, prefix, suffix) { + function createTempVariable(recordTempVariable, reservedInNestedScopes, prefix, suffix) { let flags2 = 1 /* Auto */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -20013,7 +20316,7 @@ ${lanes.join("\n")} } return name; } - function createLoopVariable2(reservedInNestedScopes) { + function createLoopVariable(reservedInNestedScopes) { let flags2 = 2 /* Loop */; if (reservedInNestedScopes) flags2 |= 8 /* ReservedInNestedScopes */; @@ -20026,12 +20329,12 @@ ${lanes.join("\n")} void 0 ); } - function createUniqueName2(text, flags2 = 0 /* None */, prefix, suffix) { + function createUniqueName(text, flags2 = 0 /* None */, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); Debug.assert((flags2 & (16 /* Optimistic */ | 32 /* FileLevel */)) !== 32 /* FileLevel */, "GeneratedIdentifierFlags.FileLevel cannot be set without also setting GeneratedIdentifierFlags.Optimistic"); return createBaseGeneratedIdentifier(text, 3 /* Unique */ | flags2, prefix, suffix); } - function getGeneratedNameForNode3(node, flags2 = 0, prefix, suffix) { + function getGeneratedNameForNode(node, flags2 = 0, prefix, suffix) { Debug.assert(!(flags2 & 7 /* KindMask */), "Argument out of range: flags"); const text = !node ? "" : isMemberName(node) ? formatGeneratedName( /*privateName*/ @@ -20050,23 +20353,22 @@ ${lanes.join("\n")} function createBasePrivateIdentifier(escapedText) { const node = baseFactory2.createBasePrivateIdentifierNode(80 /* PrivateIdentifier */); node.escapedText = escapedText; - node.autoGenerate = void 0; node.transformFlags |= 16777216 /* ContainsClassFields */; return node; } - function createPrivateIdentifier2(text) { + function createPrivateIdentifier(text) { if (!startsWith(text, "#")) Debug.fail("First character of private identifier must be #: " + text); return createBasePrivateIdentifier(escapeLeadingUnderscores(text)); } function createBaseGeneratedPrivateIdentifier(text, autoGenerateFlags, prefix, suffix) { const node = createBasePrivateIdentifier(escapeLeadingUnderscores(text)); - node.autoGenerate = { + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } @@ -20093,7 +20395,7 @@ ${lanes.join("\n")} function createBaseToken(kind) { return baseFactory2.createBaseTokenNode(kind); } - function createToken3(token) { + function createToken(token) { Debug.assert(token >= 0 /* FirstToken */ && token <= 162 /* LastToken */, "Invalid token"); Debug.assert(token <= 14 /* FirstTemplateToken */ || token >= 17 /* LastTemplateToken */, "Invalid token. Use 'createTemplateLiteralLikeNode' to create template literals."); Debug.assert(token <= 8 /* FirstLiteralToken */ || token >= 14 /* LastLiteralToken */, "Invalid token. Use 'createLiteralLikeNode' to create literals."); @@ -20147,59 +20449,59 @@ ${lanes.join("\n")} } return node; } - function createSuper2() { - return createToken3(106 /* SuperKeyword */); + function createSuper() { + return createToken(106 /* SuperKeyword */); } - function createThis2() { - return createToken3(108 /* ThisKeyword */); + function createThis() { + return createToken(108 /* ThisKeyword */); } - function createNull2() { - return createToken3(104 /* NullKeyword */); + function createNull() { + return createToken(104 /* NullKeyword */); } - function createTrue2() { - return createToken3(110 /* TrueKeyword */); + function createTrue() { + return createToken(110 /* TrueKeyword */); } - function createFalse2() { - return createToken3(95 /* FalseKeyword */); + function createFalse() { + return createToken(95 /* FalseKeyword */); } - function createModifier2(kind) { - return createToken3(kind); + function createModifier(kind) { + return createToken(kind); } - function createModifiersFromModifierFlags2(flags2) { + function createModifiersFromModifierFlags(flags2) { const result = []; if (flags2 & 1 /* Export */) - result.push(createModifier2(93 /* ExportKeyword */)); + result.push(createModifier(93 /* ExportKeyword */)); if (flags2 & 2 /* Ambient */) - result.push(createModifier2(136 /* DeclareKeyword */)); + result.push(createModifier(136 /* DeclareKeyword */)); if (flags2 & 1024 /* Default */) - result.push(createModifier2(88 /* DefaultKeyword */)); + result.push(createModifier(88 /* DefaultKeyword */)); if (flags2 & 2048 /* Const */) - result.push(createModifier2(85 /* ConstKeyword */)); + result.push(createModifier(85 /* ConstKeyword */)); if (flags2 & 4 /* Public */) - result.push(createModifier2(123 /* PublicKeyword */)); + result.push(createModifier(123 /* PublicKeyword */)); if (flags2 & 8 /* Private */) - result.push(createModifier2(121 /* PrivateKeyword */)); + result.push(createModifier(121 /* PrivateKeyword */)); if (flags2 & 16 /* Protected */) - result.push(createModifier2(122 /* ProtectedKeyword */)); + result.push(createModifier(122 /* ProtectedKeyword */)); if (flags2 & 256 /* Abstract */) - result.push(createModifier2(126 /* AbstractKeyword */)); + result.push(createModifier(126 /* AbstractKeyword */)); if (flags2 & 32 /* Static */) - result.push(createModifier2(124 /* StaticKeyword */)); + result.push(createModifier(124 /* StaticKeyword */)); if (flags2 & 16384 /* Override */) - result.push(createModifier2(161 /* OverrideKeyword */)); + result.push(createModifier(161 /* OverrideKeyword */)); if (flags2 & 64 /* Readonly */) - result.push(createModifier2(146 /* ReadonlyKeyword */)); + result.push(createModifier(146 /* ReadonlyKeyword */)); if (flags2 & 128 /* Accessor */) - result.push(createModifier2(127 /* AccessorKeyword */)); + result.push(createModifier(127 /* AccessorKeyword */)); if (flags2 & 512 /* Async */) - result.push(createModifier2(132 /* AsyncKeyword */)); + result.push(createModifier(132 /* AsyncKeyword */)); if (flags2 & 32768 /* In */) - result.push(createModifier2(101 /* InKeyword */)); + result.push(createModifier(101 /* InKeyword */)); if (flags2 & 65536 /* Out */) - result.push(createModifier2(145 /* OutKeyword */)); + result.push(createModifier(145 /* OutKeyword */)); return result.length ? result : void 0; } - function createQualifiedName2(left, right) { + function createQualifiedName(left, right) { const node = createBaseNode(163 /* QualifiedName */); node.left = left; node.right = asName(right); @@ -20207,19 +20509,19 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateQualifiedName2(node, left, right) { - return node.left !== left || node.right !== right ? update(createQualifiedName2(left, right), node) : node; + function updateQualifiedName(node, left, right) { + return node.left !== left || node.right !== right ? update(createQualifiedName(left, right), node) : node; } - function createComputedPropertyName2(expression) { + function createComputedPropertyName(expression) { const node = createBaseNode(164 /* ComputedPropertyName */); node.expression = parenthesizerRules().parenthesizeExpressionOfComputedPropertyName(expression); node.transformFlags |= propagateChildFlags(node.expression) | 1024 /* ContainsES2015 */ | 131072 /* ContainsComputedPropertyName */; return node; } - function updateComputedPropertyName2(node, expression) { - return node.expression !== expression ? update(createComputedPropertyName2(expression), node) : node; + function updateComputedPropertyName(node, expression) { + return node.expression !== expression ? update(createComputedPropertyName(expression), node) : node; } - function createTypeParameterDeclaration2(modifiers, name, constraint, defaultType) { + function createTypeParameterDeclaration(modifiers, name, constraint, defaultType) { const node = createBaseDeclaration(165 /* TypeParameter */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20228,11 +20530,10 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.expression = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType) { - return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration2(modifiers, name, constraint, defaultType), node) : node; + function updateTypeParameterDeclaration(node, modifiers, name, constraint, defaultType) { + return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.default !== defaultType ? update(createTypeParameterDeclaration(modifiers, name, constraint, defaultType), node) : node; } function createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) { var _a2, _b; @@ -20249,13 +20550,12 @@ ${lanes.join("\n")} node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.dotDotDotToken) | propagateNameFlags(node.name) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.initializer) | (((_a2 = node.questionToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */) | (((_b = node.dotDotDotToken) != null ? _b : node.initializer) ? 1024 /* ContainsES2015 */ : 0 /* None */) | (modifiersToFlags(node.modifiers) & 16476 /* ParameterPropertyModifier */ ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */); } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { return node.modifiers !== modifiers || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type || node.initializer !== initializer ? update(createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer), node) : node; } - function createDecorator2(expression) { + function createDecorator(expression) { const node = createBaseNode(167 /* Decorator */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20265,10 +20565,10 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */ | 8192 /* ContainsTypeScriptClassSyntax */ | 33554432 /* ContainsDecorators */; return node; } - function updateDecorator2(node, expression) { - return node.expression !== expression ? update(createDecorator2(expression), node) : node; + function updateDecorator(node, expression) { + return node.expression !== expression ? update(createDecorator(expression), node) : node; } - function createPropertySignature3(modifiers, name, questionToken, type) { + function createPropertySignature(modifiers, name, questionToken, type) { const node = createBaseDeclaration(168 /* PropertySignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20277,11 +20577,10 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.initializer = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertySignature3(node, modifiers, name, questionToken, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature3(modifiers, name, questionToken, type), node) : node; + function updatePropertySignature(node, modifiers, name, questionToken, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.type !== type ? finishUpdatePropertySignature(createPropertySignature(modifiers, name, questionToken, type), node) : node; } function finishUpdatePropertySignature(updated, original) { if (updated !== original) { @@ -20300,13 +20599,12 @@ ${lanes.join("\n")} const isAmbient = node.flags & 16777216 /* Ambient */ || modifiersToFlags(node.modifiers) & 2 /* Ambient */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (isAmbient || node.questionToken || node.exclamationToken || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isComputedPropertyName(node.name) || modifiersToFlags(node.modifiers) & 32 /* Static */ && node.initializer ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */) | 16777216 /* ContainsClassFields */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer) { return node.modifiers !== modifiers || node.name !== name || node.questionToken !== (questionOrExclamationToken !== void 0 && isQuestionToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.exclamationToken !== (questionOrExclamationToken !== void 0 && isExclamationToken(questionOrExclamationToken) ? questionOrExclamationToken : void 0) || node.type !== type || node.initializer !== initializer ? update(createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer), node) : node; } - function createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type) { + function createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type) { const node = createBaseDeclaration(170 /* MethodSignature */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -20316,14 +20614,13 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateMethodSignature3(node, modifiers, name, questionToken, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature3(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; + function updateMethodSignature(node, modifiers, name, questionToken, typeParameters, parameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.questionToken !== questionToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createMethodSignature(modifiers, name, questionToken, typeParameters, parameters, type), node) : node; } function createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { const node = createBaseDeclaration(171 /* MethodDeclaration */); @@ -20333,7 +20630,7 @@ ${lanes.join("\n")} node.questionToken = questionToken; node.exclamationToken = void 0; node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -20346,7 +20643,6 @@ ${lanes.join("\n")} } node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20367,10 +20663,8 @@ ${lanes.join("\n")} const node = createBaseDeclaration(172 /* ClassStaticBlockDeclaration */); node.body = body; node.transformFlags = propagateChildFlags(body) | 16777216 /* ContainsClassFields */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -20382,7 +20676,6 @@ ${lanes.join("\n")} } function finishUpdateClassStaticBlockDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -20390,15 +20683,13 @@ ${lanes.join("\n")} function createConstructorDeclaration(modifiers, parameters, body) { const node = createBaseDeclaration(173 /* Constructor */); node.modifiers = asNodeArray(modifiers); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | 1024 /* ContainsES2015 */; - node.illegalDecorators = void 0; node.typeParameters = void 0; node.type = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -20410,7 +20701,6 @@ ${lanes.join("\n")} } function finishUpdateConstructorDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.typeParameters = original.typeParameters; updated.type = original.type; } @@ -20420,7 +20710,7 @@ ${lanes.join("\n")} const node = createBaseDeclaration(174 /* GetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body) { @@ -20431,7 +20721,6 @@ ${lanes.join("\n")} node.typeArguments = void 0; node.typeParameters = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20452,7 +20741,7 @@ ${lanes.join("\n")} const node = createBaseDeclaration(175 /* SetAccessor */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.body = body; if (!node.body) { node.transformFlags = 1 /* ContainsTypeScript */; @@ -20463,7 +20752,6 @@ ${lanes.join("\n")} node.typeParameters = void 0; node.type = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -20481,54 +20769,50 @@ ${lanes.join("\n")} } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createCallSignature2(typeParameters, parameters, type) { + function createCallSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(176 /* CallSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateCallSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature2(typeParameters, parameters, type), node) : node; + function updateCallSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createCallSignature(typeParameters, parameters, type), node) : node; } - function createConstructSignature2(typeParameters, parameters, type) { + function createConstructSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(177 /* ConstructSignature */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateConstructSignature2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature2(typeParameters, parameters, type), node) : node; + function updateConstructSignature(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructSignature(typeParameters, parameters, type), node) : node; } - function createIndexSignature3(modifiers, parameters, type) { + function createIndexSignature(modifiers, parameters, type) { const node = createBaseDeclaration(178 /* IndexSignature */); node.modifiers = asNodeArray(modifiers); node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateIndexSignature2(node, modifiers, parameters, type) { - return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature3(modifiers, parameters, type), node) : node; + function updateIndexSignature(node, modifiers, parameters, type) { + return node.parameters !== parameters || node.type !== type || node.modifiers !== modifiers ? finishUpdateBaseSignatureDeclaration(createIndexSignature(modifiers, parameters, type), node) : node; } function createTemplateLiteralTypeSpan(type, literal) { const node = createBaseNode(201 /* TemplateLiteralTypeSpan */); @@ -20540,10 +20824,10 @@ ${lanes.join("\n")} function updateTemplateLiteralTypeSpan(node, type, literal) { return node.type !== type || node.literal !== literal ? update(createTemplateLiteralTypeSpan(type, literal), node) : node; } - function createKeywordTypeNode2(kind) { - return createToken3(kind); + function createKeywordTypeNode(kind) { + return createToken(kind); } - function createTypePredicateNode3(assertsModifier, parameterName, type) { + function createTypePredicateNode(assertsModifier, parameterName, type) { const node = createBaseNode(179 /* TypePredicate */); node.assertsModifier = assertsModifier; node.parameterName = asName(parameterName); @@ -20551,20 +20835,20 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypePredicateNode3(node, assertsModifier, parameterName, type) { - return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode3(assertsModifier, parameterName, type), node) : node; + function updateTypePredicateNode(node, assertsModifier, parameterName, type) { + return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? update(createTypePredicateNode(assertsModifier, parameterName, type), node) : node; } - function createTypeReferenceNode2(typeName, typeArguments) { + function createTypeReferenceNode(typeName, typeArguments) { const node = createBaseNode(180 /* TypeReference */); node.typeName = asName(typeName); - node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray2(typeArguments)); + node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(createNodeArray(typeArguments)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeReferenceNode2(node, typeName, typeArguments) { - return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode2(typeName, typeArguments), node) : node; + function updateTypeReferenceNode(node, typeName, typeArguments) { + return node.typeName !== typeName || node.typeArguments !== typeArguments ? update(createTypeReferenceNode(typeName, typeArguments), node) : node; } - function createFunctionTypeNode2(typeParameters, parameters, type) { + function createFunctionTypeNode(typeParameters, parameters, type) { const node = createBaseDeclaration(181 /* FunctionType */); node.typeParameters = asNodeArray(typeParameters); node.parameters = asNodeArray(parameters); @@ -20572,14 +20856,13 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function updateFunctionTypeNode2(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode2(typeParameters, parameters, type), node) : node; + function updateFunctionTypeNode(node, typeParameters, parameters, type) { + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateFunctionTypeNode(createFunctionTypeNode(typeParameters, parameters, type), node) : node; } function finishUpdateFunctionTypeNode(updated, original) { if (updated !== original) { @@ -20587,8 +20870,8 @@ ${lanes.join("\n")} } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createConstructorTypeNode2(...args) { - return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function createConstructorTypeNode(...args) { + return args.length === 4 ? createConstructorTypeNode1(...args) : args.length === 3 ? createConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function createConstructorTypeNode1(modifiers, typeParameters, parameters, type) { const node = createBaseDeclaration(182 /* ConstructorType */); @@ -20598,13 +20881,12 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; return node; } - function createConstructorTypeNode22(typeParameters, parameters, type) { + function createConstructorTypeNode2(typeParameters, parameters, type) { return createConstructorTypeNode1( /*modifiers*/ void 0, @@ -20613,51 +20895,51 @@ ${lanes.join("\n")} type ); } - function updateConstructorTypeNode2(...args) { - return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode22(...args) : Debug.fail("Incorrect number of arguments specified."); + function updateConstructorTypeNode(...args) { + return args.length === 5 ? updateConstructorTypeNode1(...args) : args.length === 4 ? updateConstructorTypeNode2(...args) : Debug.fail("Incorrect number of arguments specified."); } function updateConstructorTypeNode1(node, modifiers, typeParameters, parameters, type) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode2(modifiers, typeParameters, parameters, type), node) : node; + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? finishUpdateBaseSignatureDeclaration(createConstructorTypeNode(modifiers, typeParameters, parameters, type), node) : node; } - function updateConstructorTypeNode22(node, typeParameters, parameters, type) { + function updateConstructorTypeNode2(node, typeParameters, parameters, type) { return updateConstructorTypeNode1(node, node.modifiers, typeParameters, parameters, type); } - function createTypeQueryNode2(exprName, typeArguments) { + function createTypeQueryNode(exprName, typeArguments) { const node = createBaseNode(183 /* TypeQuery */); node.exprName = exprName; node.typeArguments = typeArguments && parenthesizerRules().parenthesizeTypeArguments(typeArguments); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeQueryNode2(node, exprName, typeArguments) { - return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode2(exprName, typeArguments), node) : node; + function updateTypeQueryNode(node, exprName, typeArguments) { + return node.exprName !== exprName || node.typeArguments !== typeArguments ? update(createTypeQueryNode(exprName, typeArguments), node) : node; } - function createTypeLiteralNode2(members) { + function createTypeLiteralNode(members) { const node = createBaseDeclaration(184 /* TypeLiteral */); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeLiteralNode2(node, members) { - return node.members !== members ? update(createTypeLiteralNode2(members), node) : node; + function updateTypeLiteralNode(node, members) { + return node.members !== members ? update(createTypeLiteralNode(members), node) : node; } - function createArrayTypeNode2(elementType) { + function createArrayTypeNode(elementType) { const node = createBaseNode(185 /* ArrayType */); node.elementType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(elementType); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateArrayTypeNode2(node, elementType) { - return node.elementType !== elementType ? update(createArrayTypeNode2(elementType), node) : node; + function updateArrayTypeNode(node, elementType) { + return node.elementType !== elementType ? update(createArrayTypeNode(elementType), node) : node; } - function createTupleTypeNode2(elements) { + function createTupleTypeNode(elements) { const node = createBaseNode(186 /* TupleType */); - node.elements = createNodeArray2(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); + node.elements = createNodeArray(parenthesizerRules().parenthesizeElementTypesOfTupleType(elements)); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTupleTypeNode2(node, elements) { - return node.elements !== elements ? update(createTupleTypeNode2(elements), node) : node; + function updateTupleTypeNode(node, elements) { + return node.elements !== elements ? update(createTupleTypeNode(elements), node) : node; } function createNamedTupleMember(dotDotDotToken, name, questionToken, type) { const node = createBaseDeclaration(199 /* NamedTupleMember */); @@ -20667,29 +20949,28 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) { return node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type ? update(createNamedTupleMember(dotDotDotToken, name, questionToken, type), node) : node; } - function createOptionalTypeNode2(type) { + function createOptionalTypeNode(type) { const node = createBaseNode(187 /* OptionalType */); node.type = parenthesizerRules().parenthesizeTypeOfOptionalType(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateOptionalTypeNode2(node, type) { - return node.type !== type ? update(createOptionalTypeNode2(type), node) : node; + function updateOptionalTypeNode(node, type) { + return node.type !== type ? update(createOptionalTypeNode(type), node) : node; } - function createRestTypeNode2(type) { + function createRestTypeNode(type) { const node = createBaseNode(188 /* RestType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateRestTypeNode2(node, type) { - return node.type !== type ? update(createRestTypeNode2(type), node) : node; + function updateRestTypeNode(node, type) { + return node.type !== type ? update(createRestTypeNode(type), node) : node; } function createUnionOrIntersectionTypeNode(kind, types, parenthesize) { const node = createBaseNode(kind); @@ -20700,19 +20981,19 @@ ${lanes.join("\n")} function updateUnionOrIntersectionTypeNode(node, types, parenthesize) { return node.types !== types ? update(createUnionOrIntersectionTypeNode(node.kind, types, parenthesize), node) : node; } - function createUnionTypeNode2(types) { + function createUnionTypeNode(types) { return createUnionOrIntersectionTypeNode(189 /* UnionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function updateUnionTypeNode2(node, types) { + function updateUnionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfUnionType); } - function createIntersectionTypeNode2(types) { + function createIntersectionTypeNode(types) { return createUnionOrIntersectionTypeNode(190 /* IntersectionType */, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function updateIntersectionTypeNode2(node, types) { + function updateIntersectionTypeNode(node, types) { return updateUnionOrIntersectionTypeNode(node, types, parenthesizerRules().parenthesizeConstituentTypesOfIntersectionType); } - function createConditionalTypeNode2(checkType, extendsType, trueType, falseType) { + function createConditionalTypeNode(checkType, extendsType, trueType, falseType) { const node = createBaseNode(191 /* ConditionalType */); node.checkType = parenthesizerRules().parenthesizeCheckTypeOfConditionalType(checkType); node.extendsType = parenthesizerRules().parenthesizeExtendsTypeOfConditionalType(extendsType); @@ -20723,29 +21004,29 @@ ${lanes.join("\n")} node.nextContainer = void 0; return node; } - function updateConditionalTypeNode2(node, checkType, extendsType, trueType, falseType) { - return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode2(checkType, extendsType, trueType, falseType), node) : node; + function updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType) { + return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? update(createConditionalTypeNode(checkType, extendsType, trueType, falseType), node) : node; } - function createInferTypeNode2(typeParameter) { + function createInferTypeNode(typeParameter) { const node = createBaseNode(192 /* InferType */); node.typeParameter = typeParameter; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateInferTypeNode2(node, typeParameter) { - return node.typeParameter !== typeParameter ? update(createInferTypeNode2(typeParameter), node) : node; + function updateInferTypeNode(node, typeParameter) { + return node.typeParameter !== typeParameter ? update(createInferTypeNode(typeParameter), node) : node; } function createTemplateLiteralType(head, templateSpans) { const node = createBaseNode(200 /* TemplateLiteralType */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags = 1 /* ContainsTypeScript */; return node; } function updateTemplateLiteralType(node, head, templateSpans) { return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateLiteralType(head, templateSpans), node) : node; } - function createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf = false) { + function createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf = false) { const node = createBaseNode(202 /* ImportType */); node.argument = argument; node.assertions = assertions; @@ -20755,90 +21036,90 @@ ${lanes.join("\n")} node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { - return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; + function updateImportTypeNode(node, argument, assertions, qualifier, typeArguments, isTypeOf = node.isTypeOf) { + return node.argument !== argument || node.assertions !== assertions || node.qualifier !== qualifier || node.typeArguments !== typeArguments || node.isTypeOf !== isTypeOf ? update(createImportTypeNode(argument, assertions, qualifier, typeArguments, isTypeOf), node) : node; } - function createParenthesizedType2(type) { + function createParenthesizedType(type) { const node = createBaseNode(193 /* ParenthesizedType */); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateParenthesizedType2(node, type) { - return node.type !== type ? update(createParenthesizedType2(type), node) : node; + function updateParenthesizedType(node, type) { + return node.type !== type ? update(createParenthesizedType(type), node) : node; } - function createThisTypeNode2() { + function createThisTypeNode() { const node = createBaseNode(194 /* ThisType */); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function createTypeOperatorNode3(operator, type) { + function createTypeOperatorNode(operator, type) { const node = createBaseNode(195 /* TypeOperator */); node.operator = operator; node.type = operator === 146 /* ReadonlyKeyword */ ? parenthesizerRules().parenthesizeOperandOfReadonlyTypeOperator(type) : parenthesizerRules().parenthesizeOperandOfTypeOperator(type); node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateTypeOperatorNode2(node, type) { - return node.type !== type ? update(createTypeOperatorNode3(node.operator, type), node) : node; + function updateTypeOperatorNode(node, type) { + return node.type !== type ? update(createTypeOperatorNode(node.operator, type), node) : node; } - function createIndexedAccessTypeNode2(objectType, indexType) { + function createIndexedAccessTypeNode(objectType, indexType) { const node = createBaseNode(196 /* IndexedAccessType */); node.objectType = parenthesizerRules().parenthesizeNonArrayTypeOfPostfixType(objectType); node.indexType = indexType; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateIndexedAccessTypeNode2(node, objectType, indexType) { - return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode2(objectType, indexType), node) : node; + function updateIndexedAccessTypeNode(node, objectType, indexType) { + return node.objectType !== objectType || node.indexType !== indexType ? update(createIndexedAccessTypeNode(objectType, indexType), node) : node; } - function createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members) { + function createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) { const node = createBaseDeclaration(197 /* MappedType */); node.readonlyToken = readonlyToken; node.typeParameter = typeParameter; node.nameType = nameType; node.questionToken = questionToken; node.type = type; - node.members = members && createNodeArray2(members); + node.members = members && createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateMappedTypeNode2(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { - return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode2(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; + function updateMappedTypeNode(node, readonlyToken, typeParameter, nameType, questionToken, type, members) { + return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? update(createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members), node) : node; } - function createLiteralTypeNode2(literal) { + function createLiteralTypeNode(literal) { const node = createBaseNode(198 /* LiteralType */); node.literal = literal; node.transformFlags = 1 /* ContainsTypeScript */; return node; } - function updateLiteralTypeNode2(node, literal) { - return node.literal !== literal ? update(createLiteralTypeNode2(literal), node) : node; + function updateLiteralTypeNode(node, literal) { + return node.literal !== literal ? update(createLiteralTypeNode(literal), node) : node; } - function createObjectBindingPattern2(elements) { + function createObjectBindingPattern(elements) { const node = createBaseNode(203 /* ObjectBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { node.transformFlags |= 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; } return node; } - function updateObjectBindingPattern2(node, elements) { - return node.elements !== elements ? update(createObjectBindingPattern2(elements), node) : node; + function updateObjectBindingPattern(node, elements) { + return node.elements !== elements ? update(createObjectBindingPattern(elements), node) : node; } - function createArrayBindingPattern2(elements) { + function createArrayBindingPattern(elements) { const node = createBaseNode(204 /* ArrayBindingPattern */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements) | 1024 /* ContainsES2015 */ | 524288 /* ContainsBindingPattern */; return node; } - function updateArrayBindingPattern2(node, elements) { - return node.elements !== elements ? update(createArrayBindingPattern2(elements), node) : node; + function updateArrayBindingPattern(node, elements) { + return node.elements !== elements ? update(createArrayBindingPattern(elements), node) : node; } - function createBindingElement2(dotDotDotToken, propertyName, name, initializer) { + function createBindingElement(dotDotDotToken, propertyName, name, initializer) { const node = createBaseDeclaration(205 /* BindingElement */); node.dotDotDotToken = dotDotDotToken; node.propertyName = asName(propertyName); @@ -20848,13 +21129,13 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateBindingElement2(node, dotDotDotToken, propertyName, name, initializer) { - return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement2(dotDotDotToken, propertyName, name, initializer), node) : node; + function updateBindingElement(node, dotDotDotToken, propertyName, name, initializer) { + return node.propertyName !== propertyName || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.initializer !== initializer ? update(createBindingElement(dotDotDotToken, propertyName, name, initializer), node) : node; } function createArrayLiteralExpression(elements, multiLine) { const node = createBaseNode(206 /* ArrayLiteralExpression */); const lastElement = elements && lastOrUndefined(elements); - const elementsArray = createNodeArray2(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); + const elementsArray = createNodeArray(elements, lastElement && isOmittedExpression(lastElement) ? true : void 0); node.elements = parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(elementsArray); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.elements); @@ -20865,11 +21146,10 @@ ${lanes.join("\n")} } function createObjectLiteralExpression(properties, multiLine) { const node = createBaseDeclaration(207 /* ObjectLiteralExpression */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.properties); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateObjectLiteralExpression(node, properties) { @@ -20882,7 +21162,6 @@ ${lanes.join("\n")} node.name = name; node.transformFlags = propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | (isIdentifier(node.name) ? propagateIdentifierNameFlags(node.name) : propagateChildFlags(node.name) | 536870912 /* ContainsPrivateIdentifierInExpression */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -20904,11 +21183,11 @@ ${lanes.join("\n")} } function updatePropertyAccessExpression(node, expression, name) { if (isPropertyAccessChain(node)) { - return updatePropertyAccessChain2(node, expression, node.questionDotToken, cast(name, isIdentifier)); + return updatePropertyAccessChain(node, expression, node.questionDotToken, cast(name, isIdentifier)); } return node.expression !== expression || node.name !== name ? update(createPropertyAccessExpression(expression, name), node) : node; } - function createPropertyAccessChain2(expression, questionDotToken, name) { + function createPropertyAccessChain(expression, questionDotToken, name) { const node = createBasePropertyAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20922,9 +21201,9 @@ ${lanes.join("\n")} node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updatePropertyAccessChain2(node, expression, questionDotToken, name) { + function updatePropertyAccessChain(node, expression, questionDotToken, name) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain2(expression, questionDotToken, name), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? update(createPropertyAccessChain(expression, questionDotToken, name), node) : node; } function createBaseElementAccessExpression(expression, questionDotToken, argumentExpression) { const node = createBaseDeclaration(209 /* ElementAccessExpression */); @@ -20933,7 +21212,6 @@ ${lanes.join("\n")} node.argumentExpression = argumentExpression; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | propagateChildFlags(node.argumentExpression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -20955,11 +21233,11 @@ ${lanes.join("\n")} } function updateElementAccessExpression(node, expression, argumentExpression) { if (isElementAccessChain(node)) { - return updateElementAccessChain2(node, expression, node.questionDotToken, argumentExpression); + return updateElementAccessChain(node, expression, node.questionDotToken, argumentExpression); } return node.expression !== expression || node.argumentExpression !== argumentExpression ? update(createElementAccessExpression(expression, argumentExpression), node) : node; } - function createElementAccessChain2(expression, questionDotToken, index) { + function createElementAccessChain(expression, questionDotToken, index) { const node = createBaseElementAccessExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -20973,9 +21251,9 @@ ${lanes.join("\n")} node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateElementAccessChain2(node, expression, questionDotToken, argumentExpression) { + function updateElementAccessChain(node, expression, questionDotToken, argumentExpression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain2(expression, questionDotToken, argumentExpression), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? update(createElementAccessChain(expression, questionDotToken, argumentExpression), node) : node; } function createBaseCallExpression(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseDeclaration(210 /* CallExpression */); @@ -21002,7 +21280,7 @@ ${lanes.join("\n")} /*questionDotToken*/ void 0, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); if (isImportKeyword(node.expression)) { node.transformFlags |= 8388608 /* ContainsDynamicImport */; @@ -21011,11 +21289,11 @@ ${lanes.join("\n")} } function updateCallExpression(node, expression, typeArguments, argumentsArray) { if (isCallChain(node)) { - return updateCallChain2(node, expression, node.questionDotToken, typeArguments, argumentsArray); + return updateCallChain(node, expression, node.questionDotToken, typeArguments, argumentsArray); } return node.expression !== expression || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallExpression(expression, typeArguments, argumentsArray), node) : node; } - function createCallChain2(expression, questionDotToken, typeArguments, argumentsArray) { + function createCallChain(expression, questionDotToken, typeArguments, argumentsArray) { const node = createBaseCallExpression( parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21024,15 +21302,15 @@ ${lanes.join("\n")} ), questionDotToken, asNodeArray(typeArguments), - parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray2(argumentsArray)) + parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)) ); node.flags |= 32 /* OptionalChain */; node.transformFlags |= 32 /* ContainsES2020 */; return node; } - function updateCallChain2(node, expression, questionDotToken, typeArguments, argumentsArray) { + function updateCallChain(node, expression, questionDotToken, typeArguments, argumentsArray) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a CallExpression using updateCallChain. Use updateCall instead."); - return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain2(expression, questionDotToken, typeArguments, argumentsArray), node) : node; + return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== argumentsArray ? update(createCallChain(expression, questionDotToken, typeArguments, argumentsArray), node) : node; } function createNewExpression(expression, typeArguments, argumentsArray) { const node = createBaseDeclaration(211 /* NewExpression */); @@ -21069,34 +21347,33 @@ ${lanes.join("\n")} function updateTaggedTemplateExpression(node, tag, typeArguments, template) { return node.tag !== tag || node.typeArguments !== typeArguments || node.template !== template ? update(createTaggedTemplateExpression(tag, typeArguments, template), node) : node; } - function createTypeAssertion2(type, expression) { + function createTypeAssertion(type, expression) { const node = createBaseNode(213 /* TypeAssertionExpression */); node.expression = parenthesizerRules().parenthesizeOperandOfPrefixUnary(expression); node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateTypeAssertion2(node, type, expression) { - return node.type !== type || node.expression !== expression ? update(createTypeAssertion2(type, expression), node) : node; + function updateTypeAssertion(node, type, expression) { + return node.type !== type || node.expression !== expression ? update(createTypeAssertion(type, expression), node) : node; } function createParenthesizedExpression(expression) { const node = createBaseNode(214 /* ParenthesizedExpression */); node.expression = expression; node.transformFlags = propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParenthesizedExpression(node, expression) { return node.expression !== expression ? update(createParenthesizedExpression(expression), node) : node; } - function createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(215 /* FunctionExpression */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; @@ -21105,7 +21382,6 @@ ${lanes.join("\n")} node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21113,22 +21389,21 @@ ${lanes.join("\n")} node.returnFlowNode = void 0; return node; } - function updateFunctionExpression2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionExpression(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.name !== name || node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateBaseSignatureDeclaration(createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } - function createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + function createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { const node = createBaseDeclaration(216 /* ArrowFunction */); node.modifiers = asNodeArray(modifiers); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; - node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken3(38 /* EqualsGreaterThanToken */); + node.equalsGreaterThanToken = equalsGreaterThanToken != null ? equalsGreaterThanToken : createToken(38 /* EqualsGreaterThanToken */); node.body = parenthesizerRules().parenthesizeConciseBodyOfArrowFunction(body); const isAsync = modifiersToFlags(node.modifiers) & 512 /* Async */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.equalsGreaterThanToken) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isAsync ? 256 /* ContainsES2017 */ | 16384 /* ContainsLexicalThis */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21136,8 +21411,8 @@ ${lanes.join("\n")} node.returnFlowNode = void 0; return node; } - function updateArrowFunction3(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { - return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction3(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; + function updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) { + return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? finishUpdateBaseSignatureDeclaration(createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body), node) : node; } function createDeleteExpression(expression) { const node = createBaseNode(217 /* DeleteExpression */); @@ -21226,7 +21501,6 @@ ${lanes.join("\n")} node.transformFlags |= 536870912 /* ContainsPrivateIdentifierInExpression */; } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function propagateAssignmentPatternFlags(node) { @@ -21255,9 +21529,9 @@ ${lanes.join("\n")} function createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) { const node = createBaseNode(224 /* ConditionalExpression */); node.condition = parenthesizerRules().parenthesizeConditionOfConditionalExpression(condition); - node.questionToken = questionToken != null ? questionToken : createToken3(57 /* QuestionToken */); + node.questionToken = questionToken != null ? questionToken : createToken(57 /* QuestionToken */); node.whenTrue = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenTrue); - node.colonToken = colonToken != null ? colonToken : createToken3(58 /* ColonToken */); + node.colonToken = colonToken != null ? colonToken : createToken(58 /* ColonToken */); node.whenFalse = parenthesizerRules().parenthesizeBranchOfConditionalExpression(whenFalse); node.transformFlags |= propagateChildFlags(node.condition) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.whenTrue) | propagateChildFlags(node.colonToken) | propagateChildFlags(node.whenFalse); return node; @@ -21265,15 +21539,15 @@ ${lanes.join("\n")} function updateConditionalExpression(node, condition, questionToken, whenTrue, colonToken, whenFalse) { return node.condition !== condition || node.questionToken !== questionToken || node.whenTrue !== whenTrue || node.colonToken !== colonToken || node.whenFalse !== whenFalse ? update(createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse), node) : node; } - function createTemplateExpression2(head, templateSpans) { + function createTemplateExpression(head, templateSpans) { const node = createBaseNode(225 /* TemplateExpression */); node.head = head; - node.templateSpans = createNodeArray2(templateSpans); + node.templateSpans = createNodeArray(templateSpans); node.transformFlags |= propagateChildFlags(node.head) | propagateChildrenFlags(node.templateSpans) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateExpression2(node, head, templateSpans) { - return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression2(head, templateSpans), node) : node; + function updateTemplateExpression(node, head, templateSpans) { + return node.head !== head || node.templateSpans !== templateSpans ? update(createTemplateExpression(head, templateSpans), node) : node; } function checkTemplateLiteralLikeNode(kind, text, rawText, templateFlags = 0 /* None */) { Debug.assert(!(templateFlags & ~2048 /* TemplateLiteralLikeFlags */), "Unsupported template flags."); @@ -21323,19 +21597,19 @@ ${lanes.join("\n")} } return createTemplateLiteralLikeToken(kind, text, rawText, templateFlags); } - function createTemplateHead2(text, rawText, templateFlags) { + function createTemplateHead(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); } - function createTemplateMiddle2(text, rawText, templateFlags) { + function createTemplateMiddle(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(16 /* TemplateMiddle */, text, rawText, templateFlags); } - function createTemplateTail2(text, rawText, templateFlags) { + function createTemplateTail(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeNode(17 /* TemplateTail */, text, rawText, templateFlags); } - function createNoSubstitutionTemplateLiteral2(text, rawText, templateFlags) { + function createNoSubstitutionTemplateLiteral(text, rawText, templateFlags) { text = checkTemplateLiteralLikeNode(15 /* TemplateHead */, text, rawText, templateFlags); return createTemplateLiteralLikeDeclaration(14 /* NoSubstitutionTemplateLiteral */, text, rawText, templateFlags); } @@ -21359,25 +21633,24 @@ ${lanes.join("\n")} function updateSpreadElement(node, expression) { return node.expression !== expression ? update(createSpreadElement(expression), node) : node; } - function createClassExpression3(modifiers, name, typeParameters, heritageClauses, members) { + function createClassExpression(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(228 /* ClassExpression */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.heritageClauses) | propagateChildrenFlags(node.members) | (node.typeParameters ? 1 /* ContainsTypeScript */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression3(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassExpression(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createOmittedExpression2() { + function createOmittedExpression() { return createBaseNode(229 /* OmittedExpression */); } - function createExpressionWithTypeArguments3(expression, typeArguments) { + function createExpressionWithTypeArguments(expression, typeArguments) { const node = createBaseNode(230 /* ExpressionWithTypeArguments */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21388,20 +21661,20 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.typeArguments) | 1024 /* ContainsES2015 */; return node; } - function updateExpressionWithTypeArguments3(node, expression, typeArguments) { - return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments3(expression, typeArguments), node) : node; + function updateExpressionWithTypeArguments(node, expression, typeArguments) { + return node.expression !== expression || node.typeArguments !== typeArguments ? update(createExpressionWithTypeArguments(expression, typeArguments), node) : node; } - function createAsExpression2(expression, type) { + function createAsExpression(expression, type) { const node = createBaseNode(231 /* AsExpression */); node.expression = expression; node.type = type; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.type) | 1 /* ContainsTypeScript */; return node; } - function updateAsExpression2(node, expression, type) { - return node.expression !== expression || node.type !== type ? update(createAsExpression2(expression, type), node) : node; + function updateAsExpression(node, expression, type) { + return node.expression !== expression || node.type !== type ? update(createAsExpression(expression, type), node) : node; } - function createNonNullExpression2(expression) { + function createNonNullExpression(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, @@ -21411,11 +21684,11 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullExpression2(node, expression) { + function updateNonNullExpression(node, expression) { if (isNonNullChain(node)) { - return updateNonNullChain2(node, expression); + return updateNonNullChain(node, expression); } - return node.expression !== expression ? update(createNonNullExpression2(expression), node) : node; + return node.expression !== expression ? update(createNonNullExpression(expression), node) : node; } function createSatisfiesExpression(expression, type) { const node = createBaseNode(235 /* SatisfiesExpression */); @@ -21427,7 +21700,7 @@ ${lanes.join("\n")} function updateSatisfiesExpression(node, expression, type) { return node.expression !== expression || node.type !== type ? update(createSatisfiesExpression(expression, type), node) : node; } - function createNonNullChain2(expression) { + function createNonNullChain(expression) { const node = createBaseNode(232 /* NonNullExpression */); node.flags |= 32 /* OptionalChain */; node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess( @@ -21438,11 +21711,11 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; return node; } - function updateNonNullChain2(node, expression) { + function updateNonNullChain(node, expression) { Debug.assert(!!(node.flags & 32 /* OptionalChain */), "Cannot update a NonNullExpression using updateNonNullChain. Use updateNonNullExpression instead."); - return node.expression !== expression ? update(createNonNullChain2(expression), node) : node; + return node.expression !== expression ? update(createNonNullChain(expression), node) : node; } - function createMetaProperty2(keywordToken, name) { + function createMetaProperty(keywordToken, name) { const node = createBaseNode(233 /* MetaProperty */); node.keywordToken = keywordToken; node.name = name; @@ -21460,72 +21733,67 @@ ${lanes.join("\n")} node.flowNode = void 0; return node; } - function updateMetaProperty2(node, name) { - return node.name !== name ? update(createMetaProperty2(node.keywordToken, name), node) : node; + function updateMetaProperty(node, name) { + return node.name !== name ? update(createMetaProperty(node.keywordToken, name), node) : node; } - function createTemplateSpan2(expression, literal) { + function createTemplateSpan(expression, literal) { const node = createBaseNode(236 /* TemplateSpan */); node.expression = expression; node.literal = literal; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.literal) | 1024 /* ContainsES2015 */; return node; } - function updateTemplateSpan2(node, expression, literal) { - return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan2(expression, literal), node) : node; + function updateTemplateSpan(node, expression, literal) { + return node.expression !== expression || node.literal !== literal ? update(createTemplateSpan(expression, literal), node) : node; } - function createSemicolonClassElement2() { + function createSemicolonClassElement() { const node = createBaseNode(237 /* SemicolonClassElement */); node.transformFlags |= 1024 /* ContainsES2015 */; return node; } - function createBlock2(statements, multiLine) { + function createBlock(statements, multiLine) { const node = createBaseNode(238 /* Block */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateBlock2(node, statements) { - return node.statements !== statements ? update(createBlock2(statements, node.multiLine), node) : node; + function updateBlock(node, statements) { + return node.statements !== statements ? update(createBlock(statements, node.multiLine), node) : node; } - function createVariableStatement2(modifiers, declarationList) { + function createVariableStatement(modifiers, declarationList) { const node = createBaseNode(240 /* VariableStatement */); node.modifiers = asNodeArray(modifiers); - node.declarationList = isArray(declarationList) ? createVariableDeclarationList2(declarationList) : declarationList; + node.declarationList = isArray(declarationList) ? createVariableDeclarationList(declarationList) : declarationList; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.declarationList); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateVariableStatement2(node, modifiers, declarationList) { - return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement2(modifiers, declarationList), node) : node; + function updateVariableStatement(node, modifiers, declarationList) { + return node.modifiers !== modifiers || node.declarationList !== declarationList ? update(createVariableStatement(modifiers, declarationList), node) : node; } - function createEmptyStatement2() { + function createEmptyStatement() { const node = createBaseNode(239 /* EmptyStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExpressionStatement2(expression) { + function createExpressionStatement(expression) { const node = createBaseNode(241 /* ExpressionStatement */); node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression); node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function updateExpressionStatement2(node, expression) { - return node.expression !== expression ? update(createExpressionStatement2(expression), node) : node; + function updateExpressionStatement(node, expression) { + return node.expression !== expression ? update(createExpressionStatement(expression), node) : node; } function createIfStatement(expression, thenStatement, elseStatement) { const node = createBaseNode(242 /* IfStatement */); @@ -21534,7 +21802,6 @@ ${lanes.join("\n")} node.elseStatement = asEmbeddedStatement(elseStatement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thenStatement) | propagateChildFlags(node.elseStatement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21547,7 +21814,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.statement) | propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21560,7 +21826,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21575,7 +21840,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.condition) | propagateChildFlags(node.incrementor) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21591,7 +21855,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21610,7 +21873,6 @@ ${lanes.join("\n")} if (awaitModifier) node.transformFlags |= 128 /* ContainsES2018 */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -21624,7 +21886,6 @@ ${lanes.join("\n")} node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21636,7 +21897,6 @@ ${lanes.join("\n")} node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21648,7 +21908,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21661,7 +21920,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21674,7 +21932,6 @@ ${lanes.join("\n")} node.caseBlock = caseBlock; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.caseBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.possiblyExhaustive = false; return node; @@ -21688,7 +21945,6 @@ ${lanes.join("\n")} node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.label) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21700,7 +21956,6 @@ ${lanes.join("\n")} node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -21714,21 +21969,19 @@ ${lanes.join("\n")} node.finallyBlock = finallyBlock; node.transformFlags |= propagateChildFlags(node.tryBlock) | propagateChildFlags(node.catchClause) | propagateChildFlags(node.finallyBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } function updateTryStatement(node, tryBlock, catchClause, finallyBlock) { return node.tryBlock !== tryBlock || node.catchClause !== catchClause || node.finallyBlock !== finallyBlock ? update(createTryStatement(tryBlock, catchClause, finallyBlock), node) : node; } - function createDebuggerStatement2() { + function createDebuggerStatement() { const node = createBaseNode(256 /* DebuggerStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } - function createVariableDeclaration3(name, exclamationToken, type, initializer) { + function createVariableDeclaration(name, exclamationToken, type, initializer) { var _a2; const node = createBaseDeclaration(257 /* VariableDeclaration */); node.name = asName(name); @@ -21737,32 +21990,31 @@ ${lanes.join("\n")} node.initializer = asInitializer(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (((_a2 = node.exclamationToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateVariableDeclaration3(node, name, exclamationToken, type, initializer) { - return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration3(name, exclamationToken, type, initializer), node) : node; + function updateVariableDeclaration(node, name, exclamationToken, type, initializer) { + return node.name !== name || node.type !== type || node.exclamationToken !== exclamationToken || node.initializer !== initializer ? update(createVariableDeclaration(name, exclamationToken, type, initializer), node) : node; } - function createVariableDeclarationList2(declarations, flags2 = 0 /* None */) { + function createVariableDeclarationList(declarations, flags2 = 0 /* None */) { const node = createBaseNode(258 /* VariableDeclarationList */); node.flags |= flags2 & 3 /* BlockScoped */; - node.declarations = createNodeArray2(declarations); + node.declarations = createNodeArray(declarations); node.transformFlags |= propagateChildrenFlags(node.declarations) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; if (flags2 & 3 /* BlockScoped */) { node.transformFlags |= 1024 /* ContainsES2015 */ | 262144 /* ContainsBlockScopedBinding */; } return node; } - function updateVariableDeclarationList2(node, declarations) { - return node.declarations !== declarations ? update(createVariableDeclarationList2(declarations, node.flags), node) : node; + function updateVariableDeclarationList(node, declarations) { + return node.declarations !== declarations ? update(createVariableDeclarationList(declarations, node.flags), node) : node; } - function createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + function createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { const node = createBaseDeclaration(259 /* FunctionDeclaration */); node.modifiers = asNodeArray(modifiers); node.asteriskToken = asteriskToken; node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.body = body; if (!node.body || modifiersToFlags(node.modifiers) & 2 /* Ambient */) { @@ -21773,32 +22025,32 @@ ${lanes.join("\n")} const isAsyncGenerator = isAsync && isGenerator; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; } - node.illegalDecorators = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; node.returnFlowNode = void 0; return node; } - function updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; + function updateFunctionDeclaration(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { + return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? finishUpdateFunctionDeclaration(createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body), node) : node; } function finishUpdateFunctionDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return finishUpdateBaseSignatureDeclaration(updated, original); } - function createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(260 /* ClassDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } else { @@ -21808,79 +22060,54 @@ ${lanes.join("\n")} } } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members) { + function createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) { const node = createBaseDeclaration(261 /* InterfaceDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.heritageClauses = asNodeArray(heritageClauses); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? finishUpdateInterfaceDeclaration(createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members), node) : node; + function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } - function finishUpdateInterfaceDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createTypeAliasDeclaration2(modifiers, name, typeParameters, type) { + function createTypeAliasDeclaration(modifiers, name, typeParameters, type) { const node = createBaseDeclaration(262 /* TypeAliasDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); node.typeParameters = asNodeArray(typeParameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? finishUpdateTypeAliasDeclaration(createTypeAliasDeclaration2(modifiers, name, typeParameters, type), node) : node; + function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) { + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? update(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; } - function finishUpdateTypeAliasDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createEnumDeclaration2(modifiers, name, members) { + function createEnumDeclaration(modifiers, name, members) { const node = createBaseDeclaration(263 /* EnumDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); - node.members = createNodeArray2(members); + node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildrenFlags(node.members) | 1 /* ContainsTypeScript */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumDeclaration2(node, modifiers, name, members) { - return node.modifiers !== modifiers || node.name !== name || node.members !== members ? finishUpdateEnumDeclaration(createEnumDeclaration2(modifiers, name, members), node) : node; + function updateEnumDeclaration(node, modifiers, name, members) { + return node.modifiers !== modifiers || node.name !== name || node.members !== members ? update(createEnumDeclaration(modifiers, name, members), node) : node; } - function finishUpdateEnumDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleDeclaration2(modifiers, name, body, flags2 = 0 /* None */) { + function createModuleDeclaration(modifiers, name, body, flags2 = 0 /* None */) { const node = createBaseDeclaration(264 /* ModuleDeclaration */); node.modifiers = asNodeArray(modifiers); node.flags |= flags2 & (16 /* Namespace */ | 4 /* NestedNamespace */ | 1024 /* GlobalAugmentation */); @@ -21892,65 +22119,53 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildFlags(node.body) | 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } - function updateModuleDeclaration2(node, modifiers, name, body) { - return node.modifiers !== modifiers || node.name !== name || node.body !== body ? finishUpdateModuleDeclaration(createModuleDeclaration2(modifiers, name, body, node.flags), node) : node; + function updateModuleDeclaration(node, modifiers, name, body) { + return node.modifiers !== modifiers || node.name !== name || node.body !== body ? update(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; } - function finishUpdateModuleDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createModuleBlock2(statements) { + function createModuleBlock(statements) { const node = createBaseNode(265 /* ModuleBlock */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateModuleBlock2(node, statements) { - return node.statements !== statements ? update(createModuleBlock2(statements), node) : node; + function updateModuleBlock(node, statements) { + return node.statements !== statements ? update(createModuleBlock(statements), node) : node; } - function createCaseBlock2(clauses) { + function createCaseBlock(clauses) { const node = createBaseNode(266 /* CaseBlock */); - node.clauses = createNodeArray2(clauses); + node.clauses = createNodeArray(clauses); node.transformFlags |= propagateChildrenFlags(node.clauses); node.locals = void 0; node.nextContainer = void 0; return node; } - function updateCaseBlock2(node, clauses) { - return node.clauses !== clauses ? update(createCaseBlock2(clauses), node) : node; + function updateCaseBlock(node, clauses) { + return node.clauses !== clauses ? update(createCaseBlock(clauses), node) : node; } - function createNamespaceExportDeclaration2(name) { + function createNamespaceExportDeclaration(name) { const node = createBaseDeclaration(267 /* NamespaceExportDeclaration */); node.name = asName(name); node.transformFlags |= propagateIdentifierNameFlags(node.name) | 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateNamespaceExportDeclaration2(node, name) { - return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration2(name), node) : node; + function updateNamespaceExportDeclaration(node, name) { + return node.name !== name ? finishUpdateNamespaceExportDeclaration(createNamespaceExportDeclaration(name), node) : node; } function finishUpdateNamespaceExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); } - function createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference) { + function createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference) { const node = createBaseDeclaration(268 /* ImportEqualsDeclaration */); node.modifiers = asNodeArray(modifiers); node.name = asName(name); @@ -21961,21 +22176,13 @@ ${lanes.join("\n")} node.transformFlags |= 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? finishUpdateImportEqualsDeclaration(createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference), node) : node; + function updateImportEqualsDeclaration(node, modifiers, isTypeOnly, name, moduleReference) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? update(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; } - function finishUpdateImportEqualsDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause) { + function createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause) { const node = createBaseNode(269 /* ImportDeclaration */); node.modifiers = asNodeArray(modifiers); node.importClause = importClause; @@ -21983,21 +22190,13 @@ ${lanes.join("\n")} node.assertClause = assertClause; node.transformFlags |= propagateChildFlags(node.importClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateImportDeclaration(createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause), node) : node; + function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? update(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; } - function finishUpdateImportDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createImportClause3(isTypeOnly, name, namedBindings) { + function createImportClause(isTypeOnly, name, namedBindings) { const node = createBaseDeclaration(270 /* ImportClause */); node.isTypeOnly = isTypeOnly; node.name = name; @@ -22009,12 +22208,12 @@ ${lanes.join("\n")} node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportClause3(node, isTypeOnly, name, namedBindings) { - return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause3(isTypeOnly, name, namedBindings), node) : node; + function updateImportClause(node, isTypeOnly, name, namedBindings) { + return node.isTypeOnly !== isTypeOnly || node.name !== name || node.namedBindings !== namedBindings ? update(createImportClause(isTypeOnly, name, namedBindings), node) : node; } function createAssertClause(elements, multiLine) { const node = createBaseNode(296 /* AssertClause */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.multiLine = multiLine; node.transformFlags |= 4 /* ContainsESNext */; return node; @@ -22041,37 +22240,37 @@ ${lanes.join("\n")} function updateImportTypeAssertionContainer(node, clause, multiLine) { return node.assertClause !== clause || node.multiLine !== multiLine ? update(createImportTypeAssertionContainer(clause, multiLine), node) : node; } - function createNamespaceImport2(name) { + function createNamespaceImport(name) { const node = createBaseDeclaration(271 /* NamespaceImport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceImport2(node, name) { - return node.name !== name ? update(createNamespaceImport2(name), node) : node; + function updateNamespaceImport(node, name) { + return node.name !== name ? update(createNamespaceImport(name), node) : node; } - function createNamespaceExport2(name) { + function createNamespaceExport(name) { const node = createBaseDeclaration(277 /* NamespaceExport */); node.name = name; node.transformFlags |= propagateChildFlags(node.name) | 4 /* ContainsESNext */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamespaceExport2(node, name) { - return node.name !== name ? update(createNamespaceExport2(name), node) : node; + function updateNamespaceExport(node, name) { + return node.name !== name ? update(createNamespaceExport(name), node) : node; } - function createNamedImports2(elements) { + function createNamedImports(elements) { const node = createBaseNode(272 /* NamedImports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedImports2(node, elements) { - return node.elements !== elements ? update(createNamedImports2(elements), node) : node; + function updateNamedImports(node, elements) { + return node.elements !== elements ? update(createNamedImports(elements), node) : node; } - function createImportSpecifier2(isTypeOnly, propertyName, name) { + function createImportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseDeclaration(273 /* ImportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = propertyName; @@ -22080,10 +22279,10 @@ ${lanes.join("\n")} node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateImportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateImportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createImportSpecifier(isTypeOnly, propertyName, name), node) : node; } - function createExportAssignment3(modifiers, isExportEquals, expression) { + function createExportAssignment2(modifiers, isExportEquals, expression) { const node = createBaseDeclaration(274 /* ExportAssignment */); node.modifiers = asNodeArray(modifiers); node.isExportEquals = isExportEquals; @@ -22095,21 +22294,13 @@ ${lanes.join("\n")} ) : parenthesizerRules().parenthesizeExpressionOfExportDefault(expression); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportAssignment2(node, modifiers, expression) { - return node.modifiers !== modifiers || node.expression !== expression ? finishUpdateExportAssignment(createExportAssignment3(modifiers, node.isExportEquals, expression), node) : node; + function updateExportAssignment(node, modifiers, expression) { + return node.modifiers !== modifiers || node.expression !== expression ? update(createExportAssignment2(modifiers, node.isExportEquals, expression), node) : node; } - function finishUpdateExportAssignment(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); - } - function createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { const node = createBaseDeclaration(275 /* ExportDeclaration */); node.modifiers = asNodeArray(modifiers); node.isTypeOnly = isTypeOnly; @@ -22118,31 +22309,31 @@ ${lanes.join("\n")} node.assertClause = assertClause; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.exportClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; + function updateExportDeclaration(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateExportDeclaration(createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause), node) : node; } function finishUpdateExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return update(updated, original); } - function createNamedExports2(elements) { + function createNamedExports(elements) { const node = createBaseNode(276 /* NamedExports */); - node.elements = createNodeArray2(elements); + node.elements = createNodeArray(elements); node.transformFlags |= propagateChildrenFlags(node.elements); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateNamedExports2(node, elements) { - return node.elements !== elements ? update(createNamedExports2(elements), node) : node; + function updateNamedExports(node, elements) { + return node.elements !== elements ? update(createNamedExports(elements), node) : node; } - function createExportSpecifier2(isTypeOnly, propertyName, name) { + function createExportSpecifier(isTypeOnly, propertyName, name) { const node = createBaseNode(278 /* ExportSpecifier */); node.isTypeOnly = isTypeOnly; node.propertyName = asName(propertyName); @@ -22150,27 +22341,25 @@ ${lanes.join("\n")} node.transformFlags |= propagateChildFlags(node.propertyName) | propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateExportSpecifier2(node, isTypeOnly, propertyName, name) { - return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier2(isTypeOnly, propertyName, name), node) : node; + function updateExportSpecifier(node, isTypeOnly, propertyName, name) { + return node.isTypeOnly !== isTypeOnly || node.propertyName !== propertyName || node.name !== name ? update(createExportSpecifier(isTypeOnly, propertyName, name), node) : node; } function createMissingDeclaration() { const node = createBaseDeclaration(279 /* MissingDeclaration */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function createExternalModuleReference2(expression) { + function createExternalModuleReference(expression) { const node = createBaseNode(280 /* ExternalModuleReference */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; return node; } - function updateExternalModuleReference2(node, expression) { - return node.expression !== expression ? update(createExternalModuleReference2(expression), node) : node; + function updateExternalModuleReference(node, expression) { + return node.expression !== expression ? update(createExternalModuleReference(expression), node) : node; } function createJSDocPrimaryTypeWorker(kind) { return createBaseNode(kind); @@ -22200,7 +22389,6 @@ ${lanes.join("\n")} node.type = type; node.transformFlags = propagateChildrenFlags(node.parameters) | (node.type ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -22209,40 +22397,39 @@ ${lanes.join("\n")} function updateJSDocFunctionType(node, parameters, type) { return node.parameters !== parameters || node.type !== type ? update(createJSDocFunctionType(parameters, type), node) : node; } - function createJSDocTypeLiteral2(propertyTags, isArrayType = false) { + function createJSDocTypeLiteral(propertyTags, isArrayType = false) { const node = createBaseDeclaration(325 /* JSDocTypeLiteral */); node.jsDocPropertyTags = asNodeArray(propertyTags); node.isArrayType = isArrayType; return node; } function updateJSDocTypeLiteral(node, propertyTags, isArrayType) { - return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral2(propertyTags, isArrayType), node) : node; + return node.jsDocPropertyTags !== propertyTags || node.isArrayType !== isArrayType ? update(createJSDocTypeLiteral(propertyTags, isArrayType), node) : node; } - function createJSDocTypeExpression2(type) { + function createJSDocTypeExpression(type) { const node = createBaseNode(312 /* JSDocTypeExpression */); node.type = type; return node; } function updateJSDocTypeExpression(node, type) { - return node.type !== type ? update(createJSDocTypeExpression2(type), node) : node; + return node.type !== type ? update(createJSDocTypeExpression(type), node) : node; } - function createJSDocSignature2(typeParameters, parameters, type) { + function createJSDocSignature(typeParameters, parameters, type) { const node = createBaseDeclaration(326 /* JSDocSignature */); node.typeParameters = asNodeArray(typeParameters); - node.parameters = createNodeArray2(parameters); + node.parameters = createNodeArray(parameters); node.type = type; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocSignature(node, typeParameters, parameters, type) { - return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature2(typeParameters, parameters, type), node) : node; + return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? update(createJSDocSignature(typeParameters, parameters, type), node) : node; } function getDefaultTagName(node) { const defaultTagName = getDefaultTagNameForKind(node.kind); - return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier3(defaultTagName); + return node.tagName.escapedText === escapeLeadingUnderscores(defaultTagName) ? node.tagName : createIdentifier(defaultTagName); } function createBaseJSDocTag(kind, tagName, comment) { const node = createBaseNode(kind); @@ -22256,17 +22443,17 @@ ${lanes.join("\n")} node.comment = comment; return node; } - function createJSDocTemplateTag2(tagName, constraint, typeParameters, comment) { - const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier3("template"), comment); + function createJSDocTemplateTag(tagName, constraint, typeParameters, comment) { + const node = createBaseJSDocTag(348 /* JSDocTemplateTag */, tagName != null ? tagName : createIdentifier("template"), comment); node.constraint = constraint; - node.typeParameters = createNodeArray2(typeParameters); + node.typeParameters = createNodeArray(typeParameters); return node; } function updateJSDocTemplateTag(node, tagName = getDefaultTagName(node), constraint, typeParameters, comment) { - return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag2(tagName, constraint, typeParameters, comment), node) : node; + return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? update(createJSDocTemplateTag(tagName, constraint, typeParameters, comment), node) : node; } - function createJSDocTypedefTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier3("typedef"), comment); + function createJSDocTypedefTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(349 /* JSDocTypedefTag */, tagName != null ? tagName : createIdentifier("typedef"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -22275,10 +22462,10 @@ ${lanes.join("\n")} return node; } function updateJSDocTypedefTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocTypedefTag(tagName, typeExpression, fullName, comment), node) : node; } - function createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier3("param"), comment); + function createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(344 /* JSDocParameterTag */, tagName != null ? tagName : createIdentifier("param"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -22286,10 +22473,10 @@ ${lanes.join("\n")} return node; } function updateJSDocParameterTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { - const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier3("prop"), comment); + function createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) { + const node = createBaseJSDocTagDeclaration(351 /* JSDocPropertyTag */, tagName != null ? tagName : createIdentifier("prop"), comment); node.typeExpression = typeExpression; node.name = name; node.isNameFirst = !!isNameFirst; @@ -22297,10 +22484,10 @@ ${lanes.join("\n")} return node; } function updateJSDocPropertyTag(node, tagName = getDefaultTagName(node), name, isBracketed, typeExpression, isNameFirst, comment) { - return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag2(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; + return node.tagName !== tagName || node.name !== name || node.isBracketed !== isBracketed || node.typeExpression !== typeExpression || node.isNameFirst !== isNameFirst || node.comment !== comment ? update(createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node) : node; } - function createJSDocCallbackTag2(tagName, typeExpression, fullName, comment) { - const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier3("callback"), comment); + function createJSDocCallbackTag(tagName, typeExpression, fullName, comment) { + const node = createBaseJSDocTagDeclaration(341 /* JSDocCallbackTag */, tagName != null ? tagName : createIdentifier("callback"), comment); node.typeExpression = typeExpression; node.fullName = fullName; node.name = getJSDocTypeAliasName(fullName); @@ -22309,31 +22496,31 @@ ${lanes.join("\n")} return node; } function updateJSDocCallbackTag(node, tagName = getDefaultTagName(node), typeExpression, fullName, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag2(tagName, typeExpression, fullName, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.fullName !== fullName || node.comment !== comment ? update(createJSDocCallbackTag(tagName, typeExpression, fullName, comment), node) : node; } function createJSDocOverloadTag(tagName, typeExpression, comment) { - const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier3("overload"), comment); + const node = createBaseJSDocTag(342 /* JSDocOverloadTag */, tagName != null ? tagName : createIdentifier("overload"), comment); node.typeExpression = typeExpression; return node; } function updateJSDocOverloadTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocOverloadTag(tagName, typeExpression, comment), node) : node; } - function createJSDocAugmentsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier3("augments"), comment); + function createJSDocAugmentsTag(tagName, className, comment) { + const node = createBaseJSDocTag(331 /* JSDocAugmentsTag */, tagName != null ? tagName : createIdentifier("augments"), comment); node.class = className; return node; } function updateJSDocAugmentsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocAugmentsTag(tagName, className, comment), node) : node; } - function createJSDocImplementsTag2(tagName, className, comment) { - const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier3("implements"), comment); + function createJSDocImplementsTag(tagName, className, comment) { + const node = createBaseJSDocTag(332 /* JSDocImplementsTag */, tagName != null ? tagName : createIdentifier("implements"), comment); node.class = className; return node; } function createJSDocSeeTag(tagName, name, comment) { - const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier3("see"), comment); + const node = createBaseJSDocTag(350 /* JSDocSeeTag */, tagName != null ? tagName : createIdentifier("see"), comment); node.name = name; return node; } @@ -22386,17 +22573,17 @@ ${lanes.join("\n")} return node.name !== name ? update(createJSDocLinkPlain(name, text), node) : node; } function updateJSDocImplementsTag(node, tagName = getDefaultTagName(node), className, comment) { - return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag2(tagName, className, comment), node) : node; + return node.tagName !== tagName || node.class !== className || node.comment !== comment ? update(createJSDocImplementsTag(tagName, className, comment), node) : node; } function createJSDocSimpleTagWorker(kind, tagName, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); return node; } function updateJSDocSimpleTagWorker(kind, node, tagName = getDefaultTagName(node), comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocSimpleTagWorker(kind, tagName, comment), node) : node; } function createJSDocTypeLikeTagWorker(kind, tagName, typeExpression, comment) { - const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(kind)), comment); + const node = createBaseJSDocTag(kind, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(kind)), comment); node.typeExpression = typeExpression; return node; } @@ -22410,15 +22597,15 @@ ${lanes.join("\n")} function updateJSDocUnknownTag(node, tagName, comment) { return node.tagName !== tagName || node.comment !== comment ? update(createJSDocUnknownTag(tagName, comment), node) : node; } - function createJSDocEnumTag2(tagName, typeExpression, comment) { - const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier3(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); + function createJSDocEnumTag(tagName, typeExpression, comment) { + const node = createBaseJSDocTagDeclaration(343 /* JSDocEnumTag */, tagName != null ? tagName : createIdentifier(getDefaultTagNameForKind(343 /* JSDocEnumTag */)), comment); node.typeExpression = typeExpression; node.locals = void 0; node.nextContainer = void 0; return node; } function updateJSDocEnumTag(node, tagName = getDefaultTagName(node), typeExpression, comment) { - return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag2(tagName, typeExpression, comment), node) : node; + return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? update(createJSDocEnumTag(tagName, typeExpression, comment), node) : node; } function createJSDocText(text) { const node = createBaseNode(324 /* JSDocText */); @@ -22428,27 +22615,27 @@ ${lanes.join("\n")} function updateJSDocText(node, text) { return node.text !== text ? update(createJSDocText(text), node) : node; } - function createJSDocComment2(comment, tags) { + function createJSDocComment(comment, tags) { const node = createBaseNode(323 /* JSDoc */); node.comment = comment; node.tags = asNodeArray(tags); return node; } function updateJSDocComment(node, comment, tags) { - return node.comment !== comment || node.tags !== tags ? update(createJSDocComment2(comment, tags), node) : node; + return node.comment !== comment || node.tags !== tags ? update(createJSDocComment(comment, tags), node) : node; } - function createJsxElement2(openingElement, children, closingElement) { + function createJsxElement(openingElement, children, closingElement) { const node = createBaseNode(281 /* JsxElement */); node.openingElement = openingElement; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingElement = closingElement; node.transformFlags |= propagateChildFlags(node.openingElement) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingElement) | 2 /* ContainsJsx */; return node; } - function updateJsxElement2(node, openingElement, children, closingElement) { - return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement2(openingElement, children, closingElement), node) : node; + function updateJsxElement(node, openingElement, children, closingElement) { + return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? update(createJsxElement(openingElement, children, closingElement), node) : node; } - function createJsxSelfClosingElement2(tagName, typeArguments, attributes) { + function createJsxSelfClosingElement(tagName, typeArguments, attributes) { const node = createBaseNode(282 /* JsxSelfClosingElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -22459,10 +22646,10 @@ ${lanes.join("\n")} } return node; } - function updateJsxSelfClosingElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxSelfClosingElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxSelfClosingElement(tagName, typeArguments, attributes), node) : node; } - function createJsxOpeningElement2(tagName, typeArguments, attributes) { + function createJsxOpeningElement(tagName, typeArguments, attributes) { const node = createBaseNode(283 /* JsxOpeningElement */); node.tagName = tagName; node.typeArguments = asNodeArray(typeArguments); @@ -22473,112 +22660,111 @@ ${lanes.join("\n")} } return node; } - function updateJsxOpeningElement2(node, tagName, typeArguments, attributes) { - return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement2(tagName, typeArguments, attributes), node) : node; + function updateJsxOpeningElement(node, tagName, typeArguments, attributes) { + return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? update(createJsxOpeningElement(tagName, typeArguments, attributes), node) : node; } - function createJsxClosingElement2(tagName) { + function createJsxClosingElement(tagName) { const node = createBaseNode(284 /* JsxClosingElement */); node.tagName = tagName; node.transformFlags |= propagateChildFlags(node.tagName) | 2 /* ContainsJsx */; return node; } - function updateJsxClosingElement2(node, tagName) { - return node.tagName !== tagName ? update(createJsxClosingElement2(tagName), node) : node; + function updateJsxClosingElement(node, tagName) { + return node.tagName !== tagName ? update(createJsxClosingElement(tagName), node) : node; } - function createJsxFragment2(openingFragment, children, closingFragment) { + function createJsxFragment(openingFragment, children, closingFragment) { const node = createBaseNode(285 /* JsxFragment */); node.openingFragment = openingFragment; - node.children = createNodeArray2(children); + node.children = createNodeArray(children); node.closingFragment = closingFragment; node.transformFlags |= propagateChildFlags(node.openingFragment) | propagateChildrenFlags(node.children) | propagateChildFlags(node.closingFragment) | 2 /* ContainsJsx */; return node; } - function updateJsxFragment2(node, openingFragment, children, closingFragment) { - return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment2(openingFragment, children, closingFragment), node) : node; + function updateJsxFragment(node, openingFragment, children, closingFragment) { + return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? update(createJsxFragment(openingFragment, children, closingFragment), node) : node; } - function createJsxText2(text, containsOnlyTriviaWhiteSpaces) { + function createJsxText(text, containsOnlyTriviaWhiteSpaces) { const node = createBaseNode(11 /* JsxText */); node.text = text; node.containsOnlyTriviaWhiteSpaces = !!containsOnlyTriviaWhiteSpaces; node.transformFlags |= 2 /* ContainsJsx */; return node; } - function updateJsxText2(node, text, containsOnlyTriviaWhiteSpaces) { - return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText2(text, containsOnlyTriviaWhiteSpaces), node) : node; + function updateJsxText(node, text, containsOnlyTriviaWhiteSpaces) { + return node.text !== text || node.containsOnlyTriviaWhiteSpaces !== containsOnlyTriviaWhiteSpaces ? update(createJsxText(text, containsOnlyTriviaWhiteSpaces), node) : node; } - function createJsxOpeningFragment2() { + function createJsxOpeningFragment() { const node = createBaseNode(286 /* JsxOpeningFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxJsxClosingFragment2() { + function createJsxJsxClosingFragment() { const node = createBaseNode(287 /* JsxClosingFragment */); node.transformFlags |= 2 /* ContainsJsx */; return node; } - function createJsxAttribute2(name, initializer) { + function createJsxAttribute(name, initializer) { const node = createBaseDeclaration(288 /* JsxAttribute */); node.name = name; node.initializer = initializer; node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 2 /* ContainsJsx */; return node; } - function updateJsxAttribute2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute2(name, initializer), node) : node; + function updateJsxAttribute(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createJsxAttribute(name, initializer), node) : node; } - function createJsxAttributes2(properties) { + function createJsxAttributes(properties) { const node = createBaseDeclaration(289 /* JsxAttributes */); - node.properties = createNodeArray2(properties); + node.properties = createNodeArray(properties); node.transformFlags |= propagateChildrenFlags(node.properties) | 2 /* ContainsJsx */; return node; } - function updateJsxAttributes2(node, properties) { - return node.properties !== properties ? update(createJsxAttributes2(properties), node) : node; + function updateJsxAttributes(node, properties) { + return node.properties !== properties ? update(createJsxAttributes(properties), node) : node; } - function createJsxSpreadAttribute2(expression) { + function createJsxSpreadAttribute(expression) { const node = createBaseNode(290 /* JsxSpreadAttribute */); node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxSpreadAttribute2(node, expression) { - return node.expression !== expression ? update(createJsxSpreadAttribute2(expression), node) : node; + function updateJsxSpreadAttribute(node, expression) { + return node.expression !== expression ? update(createJsxSpreadAttribute(expression), node) : node; } - function createJsxExpression2(dotDotDotToken, expression) { + function createJsxExpression(dotDotDotToken, expression) { const node = createBaseNode(291 /* JsxExpression */); node.dotDotDotToken = dotDotDotToken; node.expression = expression; node.transformFlags |= propagateChildFlags(node.dotDotDotToken) | propagateChildFlags(node.expression) | 2 /* ContainsJsx */; return node; } - function updateJsxExpression2(node, expression) { - return node.expression !== expression ? update(createJsxExpression2(node.dotDotDotToken, expression), node) : node; + function updateJsxExpression(node, expression) { + return node.expression !== expression ? update(createJsxExpression(node.dotDotDotToken, expression), node) : node; } - function createCaseClause2(expression, statements) { + function createCaseClause(expression, statements) { const node = createBaseNode(292 /* CaseClause */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateCaseClause2(node, expression, statements) { - return node.expression !== expression || node.statements !== statements ? update(createCaseClause2(expression, statements), node) : node; + function updateCaseClause(node, expression, statements) { + return node.expression !== expression || node.statements !== statements ? update(createCaseClause(expression, statements), node) : node; } - function createDefaultClause2(statements) { + function createDefaultClause(statements) { const node = createBaseNode(293 /* DefaultClause */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.transformFlags = propagateChildrenFlags(node.statements); return node; } - function updateDefaultClause2(node, statements) { - return node.statements !== statements ? update(createDefaultClause2(statements), node) : node; + function updateDefaultClause(node, statements) { + return node.statements !== statements ? update(createDefaultClause(statements), node) : node; } - function createHeritageClause2(token, types) { + function createHeritageClause(token, types) { const node = createBaseNode(294 /* HeritageClause */); node.token = token; - node.types = createNodeArray2(types); + node.types = createNodeArray(types); node.transformFlags |= propagateChildrenFlags(node.types); switch (token) { case 94 /* ExtendsKeyword */: @@ -22592,10 +22778,10 @@ ${lanes.join("\n")} } return node; } - function updateHeritageClause2(node, types) { - return node.types !== types ? update(createHeritageClause2(node.token, types), node) : node; + function updateHeritageClause(node, types) { + return node.types !== types ? update(createHeritageClause(node.token, types), node) : node; } - function createCatchClause2(variableDeclaration, block) { + function createCatchClause(variableDeclaration, block) { const node = createBaseNode(295 /* CatchClause */); node.variableDeclaration = asVariableDeclaration(variableDeclaration); node.block = block; @@ -22604,87 +22790,79 @@ ${lanes.join("\n")} node.nextContainer = void 0; return node; } - function updateCatchClause2(node, variableDeclaration, block) { - return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause2(variableDeclaration, block), node) : node; + function updateCatchClause(node, variableDeclaration, block) { + return node.variableDeclaration !== variableDeclaration || node.block !== block ? update(createCatchClause(variableDeclaration, block), node) : node; } - function createPropertyAssignment2(name, initializer) { + function createPropertyAssignment(name, initializer) { const node = createBaseDeclaration(299 /* PropertyAssignment */); node.name = asName(name); node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer); - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updatePropertyAssignment2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment2(name, initializer), node) : node; + function updatePropertyAssignment(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? finishUpdatePropertyAssignment(createPropertyAssignment(name, initializer), node) : node; } function finishUpdatePropertyAssignment(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; } return update(updated, original); } - function createShorthandPropertyAssignment2(name, objectAssignmentInitializer) { + function createShorthandPropertyAssignment(name, objectAssignmentInitializer) { const node = createBaseDeclaration(300 /* ShorthandPropertyAssignment */); node.name = asName(name); node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer); node.transformFlags |= propagateIdentifierNameFlags(node.name) | propagateChildFlags(node.objectAssignmentInitializer) | 1024 /* ContainsES2015 */; node.equalsToken = void 0; - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateShorthandPropertyAssignment2(node, name, objectAssignmentInitializer) { - return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment2(name, objectAssignmentInitializer), node) : node; + function updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer) { + return node.name !== name || node.objectAssignmentInitializer !== objectAssignmentInitializer ? finishUpdateShorthandPropertyAssignment(createShorthandPropertyAssignment(name, objectAssignmentInitializer), node) : node; } function finishUpdateShorthandPropertyAssignment(updated, original) { if (updated !== original) { - updated.equalsToken = original.equalsToken; - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; + updated.equalsToken = original.equalsToken; } return update(updated, original); } - function createSpreadAssignment2(expression) { + function createSpreadAssignment(expression) { const node = createBaseDeclaration(301 /* SpreadAssignment */); node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateSpreadAssignment2(node, expression) { - return node.expression !== expression ? update(createSpreadAssignment2(expression), node) : node; + function updateSpreadAssignment(node, expression) { + return node.expression !== expression ? update(createSpreadAssignment(expression), node) : node; } - function createEnumMember2(name, initializer) { + function createEnumMember(name, initializer) { const node = createBaseDeclaration(302 /* EnumMember */); node.name = asName(name); node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } - function updateEnumMember2(node, name, initializer) { - return node.name !== name || node.initializer !== initializer ? update(createEnumMember2(name, initializer), node) : node; + function updateEnumMember(node, name, initializer) { + return node.name !== name || node.initializer !== initializer ? update(createEnumMember(name, initializer), node) : node; } function createSourceFile2(statements, endOfFileToken, flags2) { const node = baseFactory2.createBaseSourceFileNode(308 /* SourceFile */); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.endOfFileToken = endOfFileToken; node.flags |= flags2; node.text = ""; @@ -22785,7 +22963,7 @@ ${lanes.join("\n")} } function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) { const node = cloneSourceFile(source); - node.statements = createNodeArray2(statements); + node.statements = createNodeArray(statements); node.isDeclarationFile = isDeclarationFile; node.referencedFiles = referencedFiles; node.typeReferenceDirectives = typeReferences; @@ -22797,7 +22975,7 @@ ${lanes.join("\n")} function updateSourceFile2(node, statements, isDeclarationFile = node.isDeclarationFile, referencedFiles = node.referencedFiles, typeReferenceDirectives = node.typeReferenceDirectives, hasNoDefaultLib = node.hasNoDefaultLib, libReferenceDirectives = node.libReferenceDirectives) { return node.statements !== statements || node.isDeclarationFile !== isDeclarationFile || node.referencedFiles !== referencedFiles || node.typeReferenceDirectives !== typeReferenceDirectives || node.hasNoDefaultLib !== hasNoDefaultLib || node.libReferenceDirectives !== libReferenceDirectives ? update(cloneSourceFileWithChanges(node, statements, isDeclarationFile, referencedFiles, typeReferenceDirectives, hasNoDefaultLib, libReferenceDirectives), node) : node; } - function createBundle2(sourceFiles, prepends = emptyArray) { + function createBundle(sourceFiles, prepends = emptyArray) { const node = createBaseNode(309 /* Bundle */); node.prepends = prepends; node.sourceFiles = sourceFiles; @@ -22807,8 +22985,8 @@ ${lanes.join("\n")} node.hasNoDefaultLib = void 0; return node; } - function updateBundle2(node, sourceFiles, prepends = emptyArray) { - return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle2(sourceFiles, prepends), node) : node; + function updateBundle(node, sourceFiles, prepends = emptyArray) { + return node.sourceFiles !== sourceFiles || node.prepends !== prepends ? update(createBundle(sourceFiles, prepends), node) : node; } function createUnparsedSource(prologues, syntheticReferences, texts) { const node = createBaseNode(310 /* UnparsedSource */); @@ -22858,26 +23036,26 @@ ${lanes.join("\n")} return node; } function createSyntaxList3(children) { - const node = createBaseNode(353 /* SyntaxList */); + const node = createBaseNode(354 /* SyntaxList */); node._children = children; return node; } - function createNotEmittedStatement2(original) { - const node = createBaseNode(354 /* NotEmittedStatement */); + function createNotEmittedStatement(original) { + const node = createBaseNode(355 /* NotEmittedStatement */); node.original = original; setTextRange(node, original); return node; } - function createPartiallyEmittedExpression2(expression, original) { - const node = createBaseNode(355 /* PartiallyEmittedExpression */); + function createPartiallyEmittedExpression(expression, original) { + const node = createBaseNode(356 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; setTextRange(node, original); return node; } - function updatePartiallyEmittedExpression2(node, expression) { - return node.expression !== expression ? update(createPartiallyEmittedExpression2(expression, node.original), node) : node; + function updatePartiallyEmittedExpression(node, expression) { + return node.expression !== expression ? update(createPartiallyEmittedExpression(expression, node.original), node) : node; } function flattenCommaElements(node) { if (nodeIsSynthesized(node) && !isParseTreeNode(node) && !node.original && !node.emitNode && !node.id) { @@ -22891,8 +23069,8 @@ ${lanes.join("\n")} return node; } function createCommaListExpression(elements) { - const node = createBaseNode(356 /* CommaListExpression */); - node.elements = createNodeArray2(sameFlatMap(elements, flattenCommaElements)); + const node = createBaseNode(357 /* CommaListExpression */); + node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; } @@ -22900,19 +23078,19 @@ ${lanes.join("\n")} return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createEndOfDeclarationMarker(original) { - const node = createBaseNode(358 /* EndOfDeclarationMarker */); + const node = createBaseNode(359 /* EndOfDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createMergeDeclarationMarker(original) { - const node = createBaseNode(357 /* MergeDeclarationMarker */); + const node = createBaseNode(358 /* MergeDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(359 /* SyntheticReferenceExpression */); + const node = createBaseNode(360 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -22922,36 +23100,32 @@ ${lanes.join("\n")} return node.expression !== expression || node.thisArg !== thisArg ? update(createSyntheticReferenceExpression(expression, thisArg), node) : node; } function cloneGeneratedIdentifier(node) { - const clone2 = createBaseIdentifier( - node.escapedText, - /*originalKeywordKind*/ - void 0 - ); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function cloneIdentifier(node) { - const clone2 = createBaseIdentifier(node.escapedText, node.originalKeywordKind); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.typeArguments = node.typeArguments; - clone2.hasExtendedUnicodeEscape = node.hasExtendedUnicodeEscape; clone2.jsDoc = node.jsDoc; - clone2.jsDocCache = node.jsDocCache; clone2.flowNode = node.flowNode; clone2.symbol = node.symbol; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + const typeArguments = getIdentifierTypeArguments(node); + if (typeArguments) + setIdentifierTypeArguments(clone2, typeArguments); return clone2; } function cloneGeneratedPrivateIdentifier(node) { const clone2 = createBasePrivateIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function clonePrivateIdentifier(node) { @@ -22992,9 +23166,9 @@ ${lanes.join("\n")} } return clone2; } - function createImmediatelyInvokedFunctionExpression2(statements, param, paramValue) { + function createImmediatelyInvokedFunctionExpression(statements, param, paramValue) { return createCallExpression( - createFunctionExpression2( + createFunctionExpression( /*modifiers*/ void 0, /*asteriskToken*/ @@ -23007,7 +23181,7 @@ ${lanes.join("\n")} param ? [param] : [], /*type*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -23019,9 +23193,9 @@ ${lanes.join("\n")} paramValue ? [paramValue] : [] ); } - function createImmediatelyInvokedArrowFunction2(statements, param, paramValue) { + function createImmediatelyInvokedArrowFunction(statements, param, paramValue) { return createCallExpression( - createArrowFunction3( + createArrowFunction( /*modifiers*/ void 0, /*typeParameters*/ @@ -23032,7 +23206,7 @@ ${lanes.join("\n")} void 0, /*equalsGreaterThanToken*/ void 0, - createBlock2( + createBlock( statements, /*multiLine*/ true @@ -23044,11 +23218,11 @@ ${lanes.join("\n")} paramValue ? [paramValue] : [] ); } - function createVoidZero2() { - return createVoidExpression(createNumericLiteral2("0")); + function createVoidZero() { + return createVoidExpression(createNumericLiteral("0")); } - function createExportDefault2(expression) { - return createExportAssignment3( + function createExportDefault(expression) { + return createExportAssignment2( /*modifiers*/ void 0, /*isExportEquals*/ @@ -23056,14 +23230,14 @@ ${lanes.join("\n")} expression ); } - function createExternalModuleExport2(exportName) { - return createExportDeclaration3( + function createExternalModuleExport(exportName) { + return createExportDeclaration( /*modifiers*/ void 0, /*isTypeOnly*/ false, - createNamedExports2([ - createExportSpecifier2( + createNamedExports([ + createExportSpecifier( /*isTypeOnly*/ false, /*propertyName*/ @@ -23074,12 +23248,12 @@ ${lanes.join("\n")} ); } function createTypeCheck(value, tag) { - return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero2()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral2(tag)); + return tag === "undefined" ? factory2.createStrictEquality(value, createVoidZero()) : factory2.createStrictEquality(createTypeOfExpression(value), createStringLiteral(tag)); } function createMethodCall(object, methodName, argumentsList) { if (isCallChain(object)) { - return createCallChain2( - createPropertyAccessChain2( + return createCallChain( + createPropertyAccessChain( object, /*questionDotToken*/ void 0, @@ -23109,7 +23283,7 @@ ${lanes.join("\n")} return createMethodCall(target, "apply", [thisArg, argumentsExpression]); } function createGlobalMethodCall(globalObjectName, methodName, argumentsList) { - return createMethodCall(createIdentifier3(globalObjectName), methodName, argumentsList); + return createMethodCall(createIdentifier(globalObjectName), methodName, argumentsList); } function createArraySliceCall(array, start) { return createMethodCall(array, "slice", start === void 0 ? [] : [asExpression(start)]); @@ -23120,6 +23294,9 @@ ${lanes.join("\n")} function createObjectDefinePropertyCall(target, propertyName, attributes) { return createGlobalMethodCall("Object", "defineProperty", [target, asExpression(propertyName), attributes]); } + function createObjectGetOwnPropertyDescriptorCall(target, propertyName) { + return createGlobalMethodCall("Object", "getOwnPropertyDescriptor", [target, asExpression(propertyName)]); + } function createReflectGetCall(target, propertyKey, receiver) { return createGlobalMethodCall("Reflect", "get", receiver ? [target, propertyKey, receiver] : [target, propertyKey]); } @@ -23128,7 +23305,7 @@ ${lanes.join("\n")} } function tryAddPropertyAssignment(properties, propertyName, expression) { if (expression) { - properties.push(createPropertyAssignment2(propertyName, expression)); + properties.push(createPropertyAssignment(propertyName, expression)); return true; } return false; @@ -23149,15 +23326,15 @@ ${lanes.join("\n")} case 214 /* ParenthesizedExpression */: return updateParenthesizedExpression(outerExpression, expression); case 213 /* TypeAssertionExpression */: - return updateTypeAssertion2(outerExpression, outerExpression.type, expression); + return updateTypeAssertion(outerExpression, outerExpression.type, expression); case 231 /* AsExpression */: - return updateAsExpression2(outerExpression, expression, outerExpression.type); + return updateAsExpression(outerExpression, expression, outerExpression.type); case 235 /* SatisfiesExpression */: return updateSatisfiesExpression(outerExpression, expression, outerExpression.type); case 232 /* NonNullExpression */: - return updateNonNullExpression2(outerExpression, expression); - case 355 /* PartiallyEmittedExpression */: - return updatePartiallyEmittedExpression2(outerExpression, expression); + return updateNonNullExpression(outerExpression, expression); + case 356 /* PartiallyEmittedExpression */: + return updatePartiallyEmittedExpression(outerExpression, expression); } } function isIgnorableParen(node) { @@ -23213,13 +23390,13 @@ ${lanes.join("\n")} let thisArg; let target; if (isSuperProperty(callee)) { - thisArg = createThis2(); + thisArg = createThis(); target = callee; } else if (isSuperKeyword(callee)) { - thisArg = createThis2(); - target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier3("_super"), callee) : callee; + thisArg = createThis(); + target = languageVersion !== void 0 && languageVersion < 2 /* ES2015 */ ? setTextRange(createIdentifier("_super"), callee) : callee; } else if (getEmitFlags(callee) & 8192 /* HelperName */) { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( callee, /*optionalChain*/ @@ -23227,7 +23404,7 @@ ${lanes.join("\n")} ); } else if (isPropertyAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createPropertyAccessExpression( setTextRange( factory2.createAssignment( @@ -23245,7 +23422,7 @@ ${lanes.join("\n")} } } else if (isElementAccessExpression(callee)) { if (shouldBeCapturedInTempVariable(callee.expression, cacheIdentifiers)) { - thisArg = createTempVariable3(recordTempVariable); + thisArg = createTempVariable(recordTempVariable); target = createElementAccessExpression( setTextRange( factory2.createAssignment( @@ -23262,7 +23439,7 @@ ${lanes.join("\n")} target = callee; } } else { - thisArg = createVoidZero2(); + thisArg = createVoidZero(); target = parenthesizerRules().parenthesizeLeftSideOfAccess( expression, /*optionalChain*/ @@ -23293,8 +23470,8 @@ ${lanes.join("\n")} /*initializer*/ void 0 )], - createBlock2([ - createExpressionStatement2(expression) + createBlock([ + createExpressionStatement(expression) ]) ) ]) @@ -23318,7 +23495,7 @@ ${lanes.join("\n")} setEmitFlags(name, emitFlags); return name; } - return getGeneratedNameForNode3(node); + return getGeneratedNameForNode(node); } function getInternalName(node, allowComments, allowSourceMaps) { return getName(node, allowComments, allowSourceMaps, 32768 /* LocalName */ | 65536 /* InternalName */); @@ -23358,7 +23535,7 @@ ${lanes.join("\n")} return isStringLiteral(node.expression) && node.expression.text === "use strict"; } function createUseStrictPrologue() { - return startOnNewLine(createExpressionStatement2(createStringLiteral2("use strict"))); + return startOnNewLine(createExpressionStatement(createStringLiteral("use strict"))); } function copyStandardPrologue(source, target, statementOffset = 0, ensureUseStrict2) { Debug.assert(target.length === 0, "Prologue directives should be at the first statement in the target statements array"); @@ -23397,13 +23574,13 @@ ${lanes.join("\n")} function ensureUseStrict(statements) { const foundUseStrict = findUseStrictPrologue(statements); if (!foundUseStrict) { - return setTextRange(createNodeArray2([createUseStrictPrologue(), ...statements]), statements); + return setTextRange(createNodeArray([createUseStrictPrologue(), ...statements]), statements); } return statements; } function liftToBlock(nodes) { Debug.assert(every(nodes, isStatementOrBlock), "Cannot lift nodes to a Block."); - return singleOrUndefined(nodes) || createBlock2(nodes); + return singleOrUndefined(nodes) || createBlock(nodes); } function findSpanEnd(array, test, start) { let i = start; @@ -23452,7 +23629,7 @@ ${lanes.join("\n")} } } if (isNodeArray(statements)) { - return setTextRange(createNodeArray2(left, statements.hasTrailingComma), statements); + return setTextRange(createNodeArray(left, statements.hasTrailingComma), statements); } return statements; } @@ -23460,33 +23637,33 @@ ${lanes.join("\n")} var _a2; let modifierArray; if (typeof modifiers === "number") { - modifierArray = createModifiersFromModifierFlags2(modifiers); + modifierArray = createModifiersFromModifierFlags(modifiers); } else { modifierArray = modifiers; } - return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration2(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature3(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature3(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature2(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction3(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression3(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement2(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration2(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration2(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration2(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration2(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration2(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration2(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration2(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment2(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration3(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); + return isTypeParameterDeclaration(node) ? updateTypeParameterDeclaration(node, modifierArray, node.name, node.constraint, node.default) : isParameter(node) ? updateParameterDeclaration(node, modifierArray, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer) : isConstructorTypeNode(node) ? updateConstructorTypeNode1(node, modifierArray, node.typeParameters, node.parameters, node.type) : isPropertySignature(node) ? updatePropertySignature(node, modifierArray, node.name, node.questionToken, node.type) : isPropertyDeclaration(node) ? updatePropertyDeclaration2(node, modifierArray, node.name, (_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, node.type, node.initializer) : isMethodSignature(node) ? updateMethodSignature(node, modifierArray, node.name, node.questionToken, node.typeParameters, node.parameters, node.type) : isMethodDeclaration(node) ? updateMethodDeclaration(node, modifierArray, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body) : isConstructorDeclaration(node) ? updateConstructorDeclaration(node, modifierArray, node.parameters, node.body) : isGetAccessorDeclaration(node) ? updateGetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.type, node.body) : isSetAccessorDeclaration(node) ? updateSetAccessorDeclaration(node, modifierArray, node.name, node.parameters, node.body) : isIndexSignatureDeclaration(node) ? updateIndexSignature(node, modifierArray, node.parameters, node.type) : isFunctionExpression(node) ? updateFunctionExpression(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isArrowFunction(node) ? updateArrowFunction(node, modifierArray, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, node.body) : isClassExpression(node) ? updateClassExpression(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isVariableStatement(node) ? updateVariableStatement(node, modifierArray, node.declarationList) : isFunctionDeclaration(node) ? updateFunctionDeclaration(node, modifierArray, node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body) : isClassDeclaration(node) ? updateClassDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isInterfaceDeclaration(node) ? updateInterfaceDeclaration(node, modifierArray, node.name, node.typeParameters, node.heritageClauses, node.members) : isTypeAliasDeclaration(node) ? updateTypeAliasDeclaration(node, modifierArray, node.name, node.typeParameters, node.type) : isEnumDeclaration(node) ? updateEnumDeclaration(node, modifierArray, node.name, node.members) : isModuleDeclaration(node) ? updateModuleDeclaration(node, modifierArray, node.name, node.body) : isImportEqualsDeclaration(node) ? updateImportEqualsDeclaration(node, modifierArray, node.isTypeOnly, node.name, node.moduleReference) : isImportDeclaration(node) ? updateImportDeclaration(node, modifierArray, node.importClause, node.moduleSpecifier, node.assertClause) : isExportAssignment(node) ? updateExportAssignment(node, modifierArray, node.expression) : isExportDeclaration(node) ? updateExportDeclaration(node, modifierArray, node.isTypeOnly, node.exportClause, node.moduleSpecifier, node.assertClause) : Debug.assertNever(node); } function asNodeArray(array) { - return array ? createNodeArray2(array) : void 0; + return array ? createNodeArray(array) : void 0; } function asName(name) { - return typeof name === "string" ? createIdentifier3(name) : name; + return typeof name === "string" ? createIdentifier(name) : name; } function asExpression(value) { - return typeof value === "string" ? createStringLiteral2(value) : typeof value === "number" ? createNumericLiteral2(value) : typeof value === "boolean" ? value ? createTrue2() : createFalse2() : value; + return typeof value === "string" ? createStringLiteral(value) : typeof value === "number" ? createNumericLiteral(value) : typeof value === "boolean" ? value ? createTrue() : createFalse() : value; } function asInitializer(node) { return node && parenthesizerRules().parenthesizeExpressionForDisallowedComma(node); } function asToken(value) { - return typeof value === "number" ? createToken3(value) : value; + return typeof value === "number" ? createToken(value) : value; } function asEmbeddedStatement(statement) { - return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement2(), statement), statement) : statement; + return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement; } function asVariableDeclaration(variableDeclaration) { if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) { - return createVariableDeclaration3( + return createVariableDeclaration( variableDeclaration, /*exclamationToken*/ void 0, @@ -23690,7 +23867,7 @@ ${lanes.join("\n")} case 213 /* TypeAssertionExpression */: case 235 /* SatisfiesExpression */: case 231 /* AsExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 214 /* ParenthesizedExpression */: case 106 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -23963,6 +24140,7 @@ ${lanes.join("\n")} function mergeEmitNode(sourceEmitNode, destEmitNode) { const { flags, + internalFlags, leadingComments, trailingComments, commentRange, @@ -23980,7 +24158,9 @@ ${lanes.join("\n")} if (trailingComments) destEmitNode.trailingComments = addRange(trailingComments.slice(), destEmitNode.trailingComments); if (flags) - destEmitNode.flags = flags & ~536870912 /* Immutable */; + destEmitNode.flags = flags; + if (internalFlags) + destEmitNode.internalFlags = internalFlags & ~8 /* Immutable */; if (commentRange) destEmitNode.commentRange = commentRange; if (sourceMapRange) @@ -24049,7 +24229,7 @@ ${lanes.join("\n")} } node.emitNode = {}; } else { - Debug.assert(!(node.emitNode.flags & 536870912 /* Immutable */), "Invalid attempt to mutate an immutable node."); + Debug.assert(!(node.emitNode.internalFlags & 8 /* Immutable */), "Invalid attempt to mutate an immutable node."); } return node.emitNode; } @@ -24078,6 +24258,15 @@ ${lanes.join("\n")} emitNode.flags = emitNode.flags | emitFlags; return node; } + function setInternalEmitFlags(node, emitFlags) { + getOrCreateEmitNode(node).internalFlags = emitFlags; + return node; + } + function addInternalEmitFlags(node, emitFlags) { + const emitNode = getOrCreateEmitNode(node); + emitNode.internalFlags = emitNode.internalFlags | emitFlags; + return node; + } function getSourceMapRange(node) { var _a2, _b; return (_b = (_a2 = node.emitNode) == null ? void 0 : _a2.sourceMapRange) != null ? _b : node; @@ -24208,7 +24397,7 @@ ${lanes.join("\n")} return node; } function ignoreSourceNewlines(node) { - getOrCreateEmitNode(node).flags |= 268435456 /* IgnoreSourceNewlines */; + getOrCreateEmitNode(node).internalFlags |= 4 /* IgnoreSourceNewlines */; return node; } function setTypeNode(node, type) { @@ -24220,6 +24409,30 @@ ${lanes.join("\n")} var _a2; return (_a2 = node.emitNode) == null ? void 0 : _a2.typeNode; } + function setIdentifierTypeArguments(node, typeArguments) { + getOrCreateEmitNode(node).identifierTypeArguments = typeArguments; + return node; + } + function getIdentifierTypeArguments(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.identifierTypeArguments; + } + function setIdentifierAutoGenerate(node, autoGenerate) { + getOrCreateEmitNode(node).autoGenerate = autoGenerate; + return node; + } + function getIdentifierAutoGenerate(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + } + function setIdentifierGeneratedImportReference(node, value) { + getOrCreateEmitNode(node).generatedImportReference = value; + return node; + } + function getIdentifierGeneratedImportReference(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.generatedImportReference; + } var init_emitNode = __esm({ "src/compiler/factory/emitNode.ts"() { "use strict"; @@ -24230,14 +24443,17 @@ ${lanes.join("\n")} // src/compiler/factory/emitHelpers.ts function createEmitHelperFactory(context) { const factory2 = context.factory; - const immutableTrue = memoize(() => setEmitFlags(factory2.createTrue(), 536870912 /* Immutable */)); - const immutableFalse = memoize(() => setEmitFlags(factory2.createFalse(), 536870912 /* Immutable */)); + const immutableTrue = memoize(() => setInternalEmitFlags(factory2.createTrue(), 8 /* Immutable */)); + const immutableFalse = memoize(() => setInternalEmitFlags(factory2.createFalse(), 8 /* Immutable */)); return { getUnscopedHelperName, // TypeScript Helpers createDecorateHelper, createMetadataHelper, createParamHelper, + // ES Decorators Helpers + createESDecorateHelper, + createRunInitializersHelper, // ES2018 Helpers createAssignHelper, createAwaitHelper, @@ -24252,6 +24468,8 @@ ${lanes.join("\n")} createExtendsHelper, createTemplateObjectHelper, createSpreadArrayHelper, + createPropKeyHelper, + createSetFunctionNameHelper, // ES2015 Destructuring Helpers createValuesHelper, createReadHelper, @@ -24320,6 +24538,50 @@ ${lanes.join("\n")} location ); } + function createESDecorateClassContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral("class")), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name) + ]); + } + function createESDecorateClassElementContextObject(contextIn) { + return factory2.createObjectLiteralExpression([ + factory2.createPropertyAssignment(factory2.createIdentifier("kind"), factory2.createStringLiteral(contextIn.kind)), + factory2.createPropertyAssignment(factory2.createIdentifier("name"), contextIn.name.computed ? contextIn.name.name : factory2.createStringLiteralFromNode(contextIn.name.name)), + factory2.createPropertyAssignment(factory2.createIdentifier("static"), contextIn.static ? factory2.createTrue() : factory2.createFalse()), + factory2.createPropertyAssignment(factory2.createIdentifier("private"), contextIn.private ? factory2.createTrue() : factory2.createFalse()) + // Disabled, pending resolution of https://github.com/tc39/proposal-decorators/issues/494 + // factory.createPropertyAssignment(factory.createIdentifier("access"), createESDecorateClassElementAccessObject(contextIn.name, contextIn.access)) + ]); + } + function createESDecorateContextObject(contextIn) { + return contextIn.kind === "class" ? createESDecorateClassContextObject(contextIn) : createESDecorateClassElementContextObject(contextIn); + } + function createESDecorateHelper(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + context.requestEmitHelper(esDecorateHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__esDecorate"), + /*typeArguments*/ + void 0, + [ + ctor != null ? ctor : factory2.createNull(), + descriptorIn != null ? descriptorIn : factory2.createNull(), + decorators, + createESDecorateContextObject(contextIn), + initializers, + extraInitializers + ] + ); + } + function createRunInitializersHelper(thisArg, initializers, value) { + context.requestEmitHelper(runInitializersHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__runInitializers"), + /*typeArguments*/ + void 0, + value ? [thisArg, initializers, value] : [thisArg, initializers] + ); + } function createAssignHelper(attributesSegments) { if (getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { return factory2.createCallExpression( @@ -24476,6 +24738,24 @@ ${lanes.join("\n")} [to, from, packFrom ? immutableTrue() : immutableFalse()] ); } + function createPropKeyHelper(expr) { + context.requestEmitHelper(propKeyHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__propKey"), + /*typeArguments*/ + void 0, + [expr] + ); + } + function createSetFunctionNameHelper(f, name, prefix) { + context.requestEmitHelper(setFunctionNameHelper); + return context.factory.createCallExpression( + getUnscopedHelperName("__setFunctionName"), + /*typeArguments*/ + void 0, + prefix ? [f, name, context.factory.createStringLiteral(prefix)] : [f, name] + ); + } function createValuesHelper(expression) { context.requestEmitHelper(valuesHelper); return factory2.createCallExpression( @@ -24611,6 +24891,8 @@ ${lanes.join("\n")} decorateHelper, metadataHelper, paramHelper, + esDecorateHelper, + runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, @@ -24623,6 +24905,8 @@ ${lanes.join("\n")} spreadArrayHelper, valuesHelper, readHelper, + propKeyHelper, + setFunctionNameHelper, generatorHelper, importStarHelper, importDefaultHelper, @@ -24637,11 +24921,17 @@ ${lanes.join("\n")} function isCallToHelper(firstSegment, helperName) { return isCallExpression(firstSegment) && isIdentifier(firstSegment.expression) && (getEmitFlags(firstSegment.expression) & 8192 /* HelperName */) !== 0 && firstSegment.expression.escapedText === helperName; } - var decorateHelper, metadataHelper, paramHelper, assignHelper, awaitHelper, asyncGeneratorHelper, asyncDelegator, asyncValues, restHelper, awaiterHelper, extendsHelper, templateObjectHelper, readHelper, spreadArrayHelper, valuesHelper, generatorHelper, createBindingHelper, setModuleDefaultHelper, importStarHelper, importDefaultHelper, exportStarHelper, classPrivateFieldGetHelper, classPrivateFieldSetHelper, classPrivateFieldInHelper, allUnscopedEmitHelpers, asyncSuperHelper, advancedAsyncSuperHelper; + var PrivateIdentifierKind, decorateHelper, metadataHelper, paramHelper, esDecorateHelper, runInitializersHelper, assignHelper, awaitHelper, asyncGeneratorHelper, asyncDelegator, asyncValues, restHelper, awaiterHelper, extendsHelper, templateObjectHelper, readHelper, spreadArrayHelper, propKeyHelper, setFunctionNameHelper, valuesHelper, generatorHelper, createBindingHelper, setModuleDefaultHelper, importStarHelper, importDefaultHelper, exportStarHelper, classPrivateFieldGetHelper, classPrivateFieldSetHelper, classPrivateFieldInHelper, allUnscopedEmitHelpers, asyncSuperHelper, advancedAsyncSuperHelper; var init_emitHelpers = __esm({ "src/compiler/factory/emitHelpers.ts"() { "use strict"; init_ts2(); + PrivateIdentifierKind = /* @__PURE__ */ ((PrivateIdentifierKind2) => { + PrivateIdentifierKind2["Field"] = "f"; + PrivateIdentifierKind2["Method"] = "m"; + PrivateIdentifierKind2["Accessor"] = "a"; + return PrivateIdentifierKind2; + })(PrivateIdentifierKind || {}); decorateHelper = { name: "typescript:decorate", importName: "__decorate", @@ -24675,6 +24965,54 @@ ${lanes.join("\n")} return function (target, key) { decorator(target, key, paramIndex); } };` }; + esDecorateHelper = { + name: "typescript:esDecorate", + importName: "__esDecorate", + scoped: false, + priority: 2, + text: ` + var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + };` + }; + runInitializersHelper = { + name: "typescript:runInitializers", + importName: "__runInitializers", + scoped: false, + priority: 2, + text: ` + var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + };` + }; assignHelper = { name: "typescript:assign", importName: "__assign", @@ -24847,6 +25185,25 @@ ${lanes.join("\n")} return to.concat(ar || Array.prototype.slice.call(from)); };` }; + propKeyHelper = { + name: "typescript:propKey", + importName: "__propKey", + scoped: false, + text: ` + var __propKey = (this && this.__propKey) || function (x) { + return typeof x === "symbol" ? x : "".concat(x); + };` + }; + setFunctionNameHelper = { + name: "typescript:setFunctionName", + importName: "__setFunctionName", + scoped: false, + text: ` + var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + };` + }; valuesHelper = { name: "typescript:values", importName: "__values", @@ -25081,6 +25438,9 @@ ${lanes.join("\n")} function isExportModifier(node) { return node.kind === 93 /* ExportKeyword */; } + function isDefaultModifier(node) { + return node.kind === 88 /* DefaultKeyword */; + } function isAsyncModifier(node) { return node.kind === 132 /* AsyncKeyword */; } @@ -25334,10 +25694,10 @@ ${lanes.join("\n")} return node.kind === 234 /* SyntheticExpression */; } function isPartiallyEmittedExpression(node) { - return node.kind === 355 /* PartiallyEmittedExpression */; + return node.kind === 356 /* PartiallyEmittedExpression */; } function isCommaListExpression(node) { - return node.kind === 356 /* CommaListExpression */; + return node.kind === 357 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 236 /* TemplateSpan */; @@ -25481,16 +25841,16 @@ ${lanes.join("\n")} return node.kind === 279 /* MissingDeclaration */; } function isNotEmittedStatement(node) { - return node.kind === 354 /* NotEmittedStatement */; + return node.kind === 355 /* NotEmittedStatement */; } function isSyntheticReference(node) { - return node.kind === 359 /* SyntheticReferenceExpression */; + return node.kind === 360 /* SyntheticReferenceExpression */; } function isMergeDeclarationMarker(node) { - return node.kind === 357 /* MergeDeclarationMarker */; + return node.kind === 358 /* MergeDeclarationMarker */; } function isEndOfDeclarationMarker(node) { - return node.kind === 358 /* EndOfDeclarationMarker */; + return node.kind === 359 /* EndOfDeclarationMarker */; } function isExternalModuleReference(node) { return node.kind === 280 /* ExternalModuleReference */; @@ -25681,11 +26041,14 @@ ${lanes.join("\n")} function isJSDocImplementsTag(node) { return node.kind === 332 /* JSDocImplementsTag */; } + function isJSDocSatisfiesTag(node) { + return node.kind === 353 /* JSDocSatisfiesTag */; + } function isJSDocThrowsTag(node) { return node.kind === 352 /* JSDocThrowsTag */; } function isSyntaxList(n) { - return n.kind === 353 /* SyntaxList */; + return n.kind === 354 /* SyntaxList */; } var init_nodeTests = __esm({ "src/compiler/factory/nodeTests.ts"() { @@ -25714,7 +26077,7 @@ ${lanes.join("\n")} isMemberName(memberName) ? factory2.createPropertyAccessExpression(target, memberName) : factory2.createElementAccessExpression(target, memberName), memberName ); - getOrCreateEmitNode(expression).flags |= 128 /* NoNestedSourceMaps */; + addEmitFlags(expression, 128 /* NoNestedSourceMaps */); return expression; } } @@ -26058,8 +26421,11 @@ ${lanes.join("\n")} const firstStatement = firstOrUndefined(statements); return firstStatement !== void 0 && isPrologueDirective(firstStatement) && isUseStrictPrologue(firstStatement); } + function isCommaExpression(node) { + return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */; + } function isCommaSequence(node) { - return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */ || node.kind === 356 /* CommaListExpression */; + return isCommaExpression(node) || isCommaListExpression(node); } function isJSDocTypeAssertion(node) { return isParenthesizedExpression(node) && isInJSFile(node) && !!getJSDocTypeTag(node); @@ -26078,11 +26444,12 @@ ${lanes.join("\n")} return (kinds & 1 /* Parentheses */) !== 0; case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: + case 230 /* ExpressionWithTypeArguments */: case 235 /* SatisfiesExpression */: return (kinds & 2 /* TypeAssertions */) !== 0; case 232 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -26093,6 +26460,14 @@ ${lanes.join("\n")} } return node; } + function walkUpOuterExpressions(node, kinds = 15 /* All */) { + let parent2 = node.parent; + while (isOuterExpression(parent2, kinds)) { + parent2 = parent2.parent; + Debug.assert(parent2); + } + return parent2; + } function skipAssertions(node) { return skipOuterExpressions(node, 6 /* Assertions */); } @@ -26174,7 +26549,7 @@ ${lanes.join("\n")} /*assertClause*/ void 0 ); - addEmitFlags(externalHelpersImportDeclaration, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); return externalHelpersImportDeclaration; } } @@ -26386,6 +26761,21 @@ ${lanes.join("\n")} const kind = node.kind; return kind === 172 /* ClassStaticBlockDeclaration */ || kind === 299 /* PropertyAssignment */ || kind === 300 /* ShorthandPropertyAssignment */ || kind === 181 /* FunctionType */ || kind === 279 /* MissingDeclaration */ || kind === 267 /* NamespaceExportDeclaration */; } + function isQuestionOrExclamationToken(node) { + return isQuestionToken(node) || isExclamationToken(node); + } + function isIdentifierOrThisTypeNode(node) { + return isIdentifier(node) || isThisTypeNode(node); + } + function isReadonlyKeywordOrPlusOrMinusToken(node) { + return isReadonlyKeyword(node) || isPlusToken(node) || isMinusToken(node); + } + function isQuestionOrPlusOrMinusToken(node) { + return isQuestionToken(node) || isPlusToken(node) || isMinusToken(node); + } + function isModuleName(node) { + return isIdentifier(node) || isStringLiteral(node); + } function isLiteralTypeLikeExpression(node) { const kind = node.kind; return kind === 104 /* NullKeyword */ || kind === 110 /* TrueKeyword */ || kind === 95 /* FalseKeyword */ || isLiteralExpression(node) || isPrefixUnaryExpression(node); @@ -26460,6 +26850,17 @@ ${lanes.join("\n")} return resultHolder.value; } } + function isExportOrDefaultKeywordKind(kind) { + return kind === 93 /* ExportKeyword */ || kind === 88 /* DefaultKeyword */; + } + function isExportOrDefaultModifier(node) { + const kind = node.kind; + return isExportOrDefaultKeywordKind(kind); + } + function isNonExportDefaultModifier(node) { + const kind = node.kind; + return isModifierKind(kind) && !isExportOrDefaultKeywordKind(kind); + } function elideNodes(factory2, nodes) { if (nodes === void 0) return void 0; @@ -26468,13 +26869,16 @@ ${lanes.join("\n")} return setTextRange(factory2.createNodeArray([], nodes.hasTrailingComma), nodes); } function getNodeForGeneratedName(name) { - if (name.autoGenerate.flags & 4 /* Node */) { - const autoGenerateId = name.autoGenerate.id; + var _a2; + const autoGenerate = name.emitNode.autoGenerate; + if (autoGenerate.flags & 4 /* Node */) { + const autoGenerateId = autoGenerate.id; let node = name; let original = node.original; while (original) { node = original; - if (isMemberName(node) && (node.autoGenerate === void 0 || !!(node.autoGenerate.flags & 4 /* Node */) && node.autoGenerate.id !== autoGenerateId)) { + const autoGenerate2 = (_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate; + if (isMemberName(node) && (autoGenerate2 === void 0 || !!(autoGenerate2.flags & 4 /* Node */) && autoGenerate2.id !== autoGenerateId)) { break; } original = node.original; @@ -26573,17 +26977,55 @@ ${lanes.join("\n")} ]) ); } - var isTypeNodeOrTypeParameterDeclaration, isQuestionOrExclamationToken, isIdentifierOrThisTypeNode, isReadonlyKeywordOrPlusOrMinusToken, isQuestionOrPlusOrMinusToken, isModuleName, BinaryExpressionState, BinaryExpressionStateMachine; + function findComputedPropertyNameCacheAssignment(name) { + let node = name.expression; + while (true) { + node = skipOuterExpressions(node); + if (isCommaListExpression(node)) { + node = last(node.elements); + continue; + } + if (isCommaExpression(node)) { + node = node.right; + continue; + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + ) && isGeneratedIdentifier(node.left)) { + return node; + } + break; + } + } + function isSyntheticParenthesizedExpression(node) { + return isParenthesizedExpression(node) && nodeIsSynthesized(node) && !node.emitNode; + } + function flattenCommaListWorker(node, expressions) { + if (isSyntheticParenthesizedExpression(node)) { + flattenCommaListWorker(node.expression, expressions); + } else if (isCommaExpression(node)) { + flattenCommaListWorker(node.left, expressions); + flattenCommaListWorker(node.right, expressions); + } else if (isCommaListExpression(node)) { + for (const child of node.elements) { + flattenCommaListWorker(child, expressions); + } + } else { + expressions.push(node); + } + } + function flattenCommaList(node) { + const expressions = []; + flattenCommaListWorker(node, expressions); + return expressions; + } + var BinaryExpressionState, BinaryExpressionStateMachine; var init_utilities2 = __esm({ "src/compiler/factory/utilities.ts"() { "use strict"; init_ts2(); - isTypeNodeOrTypeParameterDeclaration = or(isTypeNode, isTypeParameterDeclaration); - isQuestionOrExclamationToken = or(isQuestionToken, isExclamationToken); - isIdentifierOrThisTypeNode = or(isIdentifier, isThisTypeNode); - isReadonlyKeywordOrPlusOrMinusToken = or(isReadonlyKeyword, isPlusToken, isMinusToken); - isQuestionOrPlusOrMinusToken = or(isQuestionToken, isPlusToken, isMinusToken); - isModuleName = or(isIdentifier, isStringLiteral); ((BinaryExpressionState2) => { function enter(machine, stackIndex, stateStack, nodeStack, userStateStack, _resultHolder, outerState) { const prevUserState = stackIndex > 0 ? userStateStack[stackIndex - 1] : void 0; @@ -27169,7 +27611,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.constraint) || visitNode2(cbNode, node.default) || visitNode2(cbNode, node.expression); }, [300 /* ShorthandPropertyAssignment */]: function forEachChildInShorthandPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); }, [301 /* SpreadAssignment */]: function forEachChildInSpreadAssignment(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.expression); @@ -27184,7 +27626,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); }, [299 /* PropertyAssignment */]: function forEachChildInPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); }, [257 /* VariableDeclaration */]: function forEachChildInVariableDeclaration(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); @@ -27193,7 +27635,7 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.dotDotDotToken) || visitNode2(cbNode, node.propertyName) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [178 /* IndexSignature */]: function forEachChildInIndexSignature(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [182 /* ConstructorType */]: function forEachChildInConstructorType(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -27210,7 +27652,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [173 /* Constructor */]: function forEachChildInConstructor(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [174 /* GetAccessor */]: function forEachChildInGetAccessor(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -27219,7 +27661,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [259 /* FunctionDeclaration */]: function forEachChildInFunctionDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [215 /* FunctionExpression */]: function forEachChildInFunctionExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -27228,7 +27670,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.equalsGreaterThanToken) || visitNode2(cbNode, node.body); }, [172 /* ClassStaticBlockDeclaration */]: function forEachChildInClassStaticBlockDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); }, [180 /* TypeReference */]: function forEachChildInTypeReference(node, cbNode, cbNodes) { return visitNode2(cbNode, node.typeName) || visitNodes(cbNode, cbNodes, node.typeArguments); @@ -27349,7 +27791,7 @@ ${lanes.join("\n")} return visitNodes(cbNode, cbNodes, node.statements) || visitNode2(cbNode, node.endOfFileToken); }, [240 /* VariableStatement */]: function forEachChildInVariableStatement(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); }, [258 /* VariableDeclarationList */]: function forEachChildInVariableDeclarationList(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.declarations); @@ -27413,25 +27855,25 @@ ${lanes.join("\n")} [260 /* ClassDeclaration */]: forEachChildInClassDeclarationOrExpression, [228 /* ClassExpression */]: forEachChildInClassDeclarationOrExpression, [261 /* InterfaceDeclaration */]: function forEachChildInInterfaceDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); }, [262 /* TypeAliasDeclaration */]: function forEachChildInTypeAliasDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); }, [263 /* EnumDeclaration */]: function forEachChildInEnumDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); }, [302 /* EnumMember */]: function forEachChildInEnumMember(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [264 /* ModuleDeclaration */]: function forEachChildInModuleDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); }, [268 /* ImportEqualsDeclaration */]: function forEachChildInImportEqualsDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); }, [269 /* ImportDeclaration */]: function forEachChildInImportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [270 /* ImportClause */]: function forEachChildInImportClause(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.namedBindings); @@ -27443,7 +27885,7 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.value); }, [267 /* NamespaceExportDeclaration */]: function forEachChildInNamespaceExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNode2(cbNode, node.name); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name); }, [271 /* NamespaceImport */]: function forEachChildInNamespaceImport(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name); @@ -27454,12 +27896,12 @@ ${lanes.join("\n")} [272 /* NamedImports */]: forEachChildInNamedImportsOrExports, [276 /* NamedExports */]: forEachChildInNamedImportsOrExports, [275 /* ExportDeclaration */]: function forEachChildInExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [273 /* ImportSpecifier */]: forEachChildInImportOrExportSpecifier, [278 /* ExportSpecifier */]: forEachChildInImportOrExportSpecifier, [274 /* ExportAssignment */]: function forEachChildInExportAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); }, [225 /* TemplateExpression */]: function forEachChildInTemplateExpression(node, cbNode, cbNodes) { return visitNode2(cbNode, node.head) || visitNodes(cbNode, cbNodes, node.templateSpans); @@ -27486,9 +27928,9 @@ ${lanes.join("\n")} return visitNode2(cbNode, node.expression); }, [279 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers); + return visitNodes(cbNode, cbNodes, node.modifiers); }, - [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [357 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [281 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -27560,6 +28002,7 @@ ${lanes.join("\n")} [347 /* JSDocTypeTag */]: forEachChildInJSDocTypeLikeTag, [346 /* JSDocThisTag */]: forEachChildInJSDocTypeLikeTag, [343 /* JSDocEnumTag */]: forEachChildInJSDocTypeLikeTag, + [353 /* JSDocSatisfiesTag */]: forEachChildInJSDocTypeLikeTag, [352 /* JSDocThrowsTag */]: forEachChildInJSDocTypeLikeTag, [342 /* JSDocOverloadTag */]: forEachChildInJSDocTypeLikeTag, [326 /* JSDocSignature */]: function forEachChildInJSDocSignature(node, cbNode, _cbNodes) { @@ -27579,7 +28022,7 @@ ${lanes.join("\n")} [339 /* JSDocReadonlyTag */]: forEachChildInJSDocTag, [334 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [340 /* JSDocOverrideTag */]: forEachChildInJSDocTag, - [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [356 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; ((Parser2) => { const scanner2 = createScanner( @@ -27709,7 +28152,7 @@ ${lanes.join("\n")} const pos = getNodePos(); let statements, endOfFileToken; if (token() === 1 /* EndOfFileToken */) { - statements = createNodeArray2([], pos, pos); + statements = createNodeArray([], pos, pos); endOfFileToken = parseTokenNode(); } else { let expressions; @@ -27755,7 +28198,7 @@ ${lanes.join("\n")} const expression = isArray(expressions) ? finishNode(factory2.createArrayLiteralExpression(expressions), pos) : Debug.checkDefined(expressions); const statement = factory2.createExpressionStatement(expression); finishNode(statement, pos); - statements = createNodeArray2([statement], pos); + statements = createNodeArray([statement], pos); endOfFileToken = parseExpectedToken(1 /* EndOfFileToken */, Diagnostics.Unexpected_token); } const sourceFile = createSourceFile2( @@ -28403,7 +28846,7 @@ ${lanes.join("\n")} function parseSemicolon() { return tryParseSemicolon() || parseExpected(26 /* SemicolonToken */); } - function createNodeArray2(elements, pos, end, hasTrailingComma) { + function createNodeArray(elements, pos, end, hasTrailingComma) { const array = factory2.createNodeArray(elements, hasTrailingComma); setTextRangePosEnd(array, pos, end != null ? end : scanner2.getStartPos()); return array; @@ -28428,8 +28871,6 @@ ${lanes.join("\n")} const pos = getNodePos(); const result = kind === 79 /* Identifier */ ? factory2.createIdentifier( "", - /*typeArguments*/ - void 0, /*originalKeywordKind*/ void 0 ) : isTemplateLiteralKind(kind) ? factory2.createTemplateLiteralLikeNode( @@ -28456,7 +28897,7 @@ ${lanes.join("\n")} } return identifier; } - function createIdentifier3(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { + function createIdentifier(isIdentifier3, diagnosticMessage, privateIdentifierDiagnosticMessage) { if (isIdentifier3) { identifierCount++; const pos = getNodePos(); @@ -28464,23 +28905,17 @@ ${lanes.join("\n")} const text = internIdentifier(scanner2.getTokenValue()); const hasExtendedUnicodeEscape = scanner2.hasExtendedUnicodeEscape(); nextTokenWithoutCheck(); - return finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind, - hasExtendedUnicodeEscape - ), pos); + return finishNode(factory2.createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape), pos); } if (token() === 80 /* PrivateIdentifier */) { parseErrorAtCurrentToken(privateIdentifierDiagnosticMessage || Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); } if (token() === 0 /* Unknown */ && scanner2.tryScan(() => scanner2.reScanInvalidIdentifier() === 79 /* Identifier */)) { - return createIdentifier3( + return createIdentifier( /*isIdentifier*/ true ); @@ -28493,7 +28928,7 @@ ${lanes.join("\n")} return createMissingNode(79 /* Identifier */, reportAtCurrentPosition, diagnosticMessage || defaultMessage, msgArg); } function parseBindingIdentifier(privateIdentifierDiagnosticMessage) { - return createIdentifier3( + return createIdentifier( isBindingIdentifier(), /*diagnosticMessage*/ void 0, @@ -28501,10 +28936,10 @@ ${lanes.join("\n")} ); } function parseIdentifier(diagnosticMessage, privateIdentifierDiagnosticMessage) { - return createIdentifier3(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); + return createIdentifier(isIdentifier2(), diagnosticMessage, privateIdentifierDiagnosticMessage); } function parseIdentifierName(diagnosticMessage) { - return createIdentifier3(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); + return createIdentifier(tokenIsIdentifierOrKeyword(token()), diagnosticMessage); } function isLiteralPropertyName() { return tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */; @@ -28581,7 +29016,7 @@ ${lanes.join("\n")} } } function canFollowExportModifier() { - return token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); + return token() === 59 /* AtToken */ || token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); } function nextTokenCanFollowExportModifier() { nextToken(); @@ -28595,7 +29030,7 @@ ${lanes.join("\n")} } function nextTokenCanFollowDefaultKeyword() { nextToken(); - return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); + return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 59 /* AtToken */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); } function isListElement2(parsingContext2, inErrorRecovery) { const node = currentNode(parsingContext2); @@ -28802,7 +29237,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseListElement(parsingContext2, parseElement) { const node = currentNode(parsingContext2); @@ -28812,6 +29247,7 @@ ${lanes.join("\n")} return parseElement(); } function currentNode(parsingContext2, pos) { + var _a2; if (!syntaxCursor || !isReusableParsingContext(parsingContext2) || parseErrorBeforeNextFinishedNode) { return void 0; } @@ -28826,8 +29262,8 @@ ${lanes.join("\n")} if (!canReuseNode(node, parsingContext2)) { return void 0; } - if (canHaveJSDoc(node) && node.jsDocCache) { - node.jsDocCache = void 0; + if (canHaveJSDoc(node) && ((_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache)) { + node.jsDoc.jsDocCache = void 0; } return node; } @@ -28886,7 +29322,7 @@ ${lanes.join("\n")} return true; case 171 /* MethodDeclaration */: const methodDeclaration = node; - const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.originalKeywordKind === 135 /* ConstructorKeyword */; + const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.escapedText === "constructor"; return !nameIsConstructor; } } @@ -29078,7 +29514,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2( + return createNodeArray( list, listPos, /*end*/ @@ -29090,7 +29526,7 @@ ${lanes.join("\n")} return kind === ParsingContext.EnumMembers ? Diagnostics.An_enum_member_name_must_be_followed_by_a_or : void 0; } function createMissingList() { - const list = createNodeArray2([], getNodePos()); + const list = createNodeArray([], getNodePos()); list.isMissingList = true; return list; } @@ -29108,13 +29544,10 @@ ${lanes.join("\n")} function parseEntityName(allowReservedWords, diagnosticMessage) { const pos = getNodePos(); let entity = allowReservedWords ? parseIdentifierName(diagnosticMessage) : parseIdentifier(diagnosticMessage); - let dotPos = getNodePos(); while (parseOptional(24 /* DotToken */)) { if (token() === 29 /* LessThanToken */) { - entity.jsdocDotPos = dotPos; break; } - dotPos = getNodePos(); entity = finishNode( factory2.createQualifiedName( entity, @@ -29129,7 +29562,7 @@ ${lanes.join("\n")} } return entity; } - function createQualifiedName2(entity, name) { + function createQualifiedName(entity, name) { return finishNode(factory2.createQualifiedName(entity, name), entity.pos); } function parseRightSideOfDot(allowIdentifierNames, allowPrivateIdentifiers) { @@ -29163,7 +29596,7 @@ ${lanes.join("\n")} node = parseTemplateSpan(isTaggedTemplate); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateExpression(isTaggedTemplate) { const pos = getNodePos(); @@ -29196,7 +29629,7 @@ ${lanes.join("\n")} node = parseTemplateTypeSpan(); list.push(node); } while (node.literal.kind === 16 /* TemplateMiddle */); - return createNodeArray2(list, pos); + return createNodeArray(list, pos); } function parseTemplateTypeSpan() { const pos = getNodePos(); @@ -29444,6 +29877,8 @@ ${lanes.join("\n")} function parseTypeParameter() { const pos = getNodePos(); const modifiers = parseModifiers( + /*allowDecorators*/ + false, /*permitConstAsModifier*/ true ); @@ -29496,13 +29931,19 @@ ${lanes.join("\n")} function parseParameterWorker(inOuterAwaitContext, allowAmbiguity = true) { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = inOuterAwaitContext ? doInAwaitContext(parseDecorators) : doOutsideOfAwaitContext(parseDecorators); + const modifiers = inOuterAwaitContext ? doInAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )) : doOutsideOfAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )); if (token() === 108 /* ThisKeyword */) { const node2 = factory2.createParameterDeclaration( - decorators, + modifiers, /*dotDotDotToken*/ void 0, - createIdentifier3( + createIdentifier( /*isIdentifier*/ true ), @@ -29512,14 +29953,14 @@ ${lanes.join("\n")} /*initializer*/ void 0 ); - if (decorators) { - parseErrorAtRange(decorators[0], Diagnostics.Decorators_may_not_be_applied_to_this_parameters); + const modifier = firstOrUndefined(modifiers); + if (modifier) { + parseErrorAtRange(modifier, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); } return withJSDoc(finishNode(node2, pos), hasJSDoc); } const savedTopLevel = topLevel; topLevel = false; - const modifiers = combineDecoratorsAndModifiers(decorators, parseModifiers()); const dotDotDotToken = parseOptionalToken(25 /* DotDotDotToken */); if (!allowAmbiguity && !isParameterNameStart()) { return void 0; @@ -29631,7 +30072,7 @@ ${lanes.join("\n")} nextToken(); return token() === 58 /* ColonToken */ || token() === 27 /* CommaToken */ || token() === 23 /* CloseBracketToken */; } - function parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers) { const parameters = parseBracketedList(ParsingContext.Parameters, () => parseParameter( /*inOuterAwaitContext*/ false @@ -29639,7 +30080,6 @@ ${lanes.join("\n")} const type = parseTypeAnnotation(); parseTypeMemberSemicolon(); const node = factory2.createIndexSignature(modifiers, parameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers) { @@ -29694,37 +30134,18 @@ ${lanes.join("\n")} } const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 174 /* GetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 4 /* Type */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 175 /* SetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 4 /* Type */); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers - ); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } return parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers); } @@ -29868,7 +30289,7 @@ ${lanes.join("\n")} const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(126 /* AbstractKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -30179,7 +30600,7 @@ ${lanes.join("\n")} while (parseOptional(operator)) { types.push(parseFunctionOrConstructorTypeToError(isUnionType) || parseConstituentType()); } - type = finishNode(createTypeNode(createNodeArray2(types, pos)), pos); + type = finishNode(createTypeNode(createNodeArray(types, pos)), pos); } return type; } @@ -30204,7 +30625,10 @@ ${lanes.join("\n")} } function skipParameterStart() { if (isModifierKind(token())) { - parseModifiers(); + parseModifiers( + /*allowDecorators*/ + false + ); } if (isIdentifier2() || token() === 108 /* ThisKeyword */) { nextToken(); @@ -30332,6 +30756,7 @@ ${lanes.join("\n")} case 133 /* AwaitKeyword */: case 125 /* YieldKeyword */: case 80 /* PrivateIdentifier */: + case 59 /* AtToken */: return true; default: if (isBinaryOperator2()) { @@ -30453,7 +30878,7 @@ ${lanes.join("\n")} void 0 ); finishNode(parameter, identifier.pos); - const parameters = createNodeArray2([parameter], parameter.pos, parameter.end); + const parameters = createNodeArray([parameter], parameter.pos, parameter.end); const equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */); const body = parseArrowFunctionExpressionBody( /*isAsync*/ @@ -30940,7 +31365,7 @@ ${lanes.join("\n")} lastChild.openingElement.pos, end ); - children = createNodeArray2([...children.slice(0, children.length - 1), newLast], children.pos, end); + children = createNodeArray([...children.slice(0, children.length - 1), newLast], children.pos, end); closingElement = lastChild.closingElement; } else { closingElement = parseJsxClosingElement(opening, inExpressionContext); @@ -31034,7 +31459,7 @@ ${lanes.join("\n")} } } parsingContext = saveParsingContext; - return createNodeArray2(list, listPos); + return createNodeArray(list, listPos); } function parseJsxAttributes() { const pos = getNodePos(); @@ -31423,6 +31848,8 @@ ${lanes.join("\n")} break; } return parseFunctionExpression(); + case 59 /* AtToken */: + return parseDecoratedExpression(); case 84 /* ClassKeyword */: return parseClassExpression(); case 98 /* FunctionKeyword */: @@ -31490,13 +31917,15 @@ ${lanes.join("\n")} ); return withJSDoc(finishNode(factory2.createSpreadAssignment(expression), pos), hasJSDoc); } - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const tokenIsIdentifier = isIdentifier2(); @@ -31504,7 +31933,7 @@ ${lanes.join("\n")} const questionToken = parseOptionalToken(57 /* QuestionToken */); const exclamationToken = parseOptionalToken(53 /* ExclamationToken */); if (asteriskToken || token() === 20 /* OpenParenToken */ || token() === 29 /* LessThanToken */) { - return parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken); + return parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken); } let node; const isShorthandPropertyAssignment2 = tokenIsIdentifier && token() !== 58 /* ColonToken */; @@ -31524,7 +31953,6 @@ ${lanes.join("\n")} )); node = factory2.createPropertyAssignment(name, initializer); } - node.illegalDecorators = decorators; node.modifiers = modifiers; node.questionToken = questionToken; node.exclamationToken = exclamationToken; @@ -31552,7 +31980,10 @@ ${lanes.join("\n")} ); const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); parseExpected(98 /* FunctionKeyword */); const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; @@ -31924,7 +32355,7 @@ ${lanes.join("\n")} if (currentToken2 === 154 /* TypeKeyword */) { currentToken2 = lookAhead(nextToken); } - if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */) { + if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */ || currentToken2 === 59 /* AtToken */) { return true; } continue; @@ -32008,8 +32439,6 @@ ${lanes.join("\n")} return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32018,8 +32447,6 @@ ${lanes.join("\n")} return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32029,8 +32456,6 @@ ${lanes.join("\n")} return parseFunctionDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32038,8 +32463,6 @@ ${lanes.join("\n")} return parseClassDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -32102,8 +32525,10 @@ ${lanes.join("\n")} function parseDeclaration() { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); const isAmbient = some(modifiers, isDeclareModifier); if (isAmbient) { const node = tryReuseAmbientDeclaration(pos); @@ -32113,9 +32538,9 @@ ${lanes.join("\n")} for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, modifiers)); } else { - return parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers); + return parseDeclarationWorker(pos, hasJSDoc, modifiers); } } function tryReuseAmbientDeclaration(pos) { @@ -32126,41 +32551,41 @@ ${lanes.join("\n")} } }); } - function parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers) { + function parseDeclarationWorker(pos, hasJSDoc, modifiersIn) { switch (token()) { case 113 /* VarKeyword */: case 119 /* LetKeyword */: case 85 /* ConstKeyword */: - return parseVariableStatement(pos, hasJSDoc, decorators, modifiers); + return parseVariableStatement(pos, hasJSDoc, modifiersIn); case 98 /* FunctionKeyword */: - return parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseFunctionDeclaration(pos, hasJSDoc, modifiersIn); case 84 /* ClassKeyword */: - return parseClassDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassDeclaration(pos, hasJSDoc, modifiersIn); case 118 /* InterfaceKeyword */: - return parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseInterfaceDeclaration(pos, hasJSDoc, modifiersIn); case 154 /* TypeKeyword */: - return parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseTypeAliasDeclaration(pos, hasJSDoc, modifiersIn); case 92 /* EnumKeyword */: - return parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseEnumDeclaration(pos, hasJSDoc, modifiersIn); case 159 /* GlobalKeyword */: case 142 /* ModuleKeyword */: case 143 /* NamespaceKeyword */: - return parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseModuleDeclaration(pos, hasJSDoc, modifiersIn); case 100 /* ImportKeyword */: - return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiersIn); case 93 /* ExportKeyword */: nextToken(); switch (token()) { case 88 /* DefaultKeyword */: case 63 /* EqualsToken */: - return parseExportAssignment(pos, hasJSDoc, decorators, modifiers); + return parseExportAssignment(pos, hasJSDoc, modifiersIn); case 128 /* AsKeyword */: - return parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseNamespaceExportDeclaration(pos, hasJSDoc, modifiersIn); default: - return parseExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseExportDeclaration(pos, hasJSDoc, modifiersIn); } default: - if (decorators || modifiers) { + if (modifiersIn) { const missing = createMissingNode( 279 /* MissingDeclaration */, /*reportAtCurrentPosition*/ @@ -32168,8 +32593,7 @@ ${lanes.join("\n")} Diagnostics.Declaration_expected ); setTextRangePos(missing, pos); - missing.illegalDecorators = decorators; - missing.modifiers = modifiers; + missing.modifiers = modifiersIn; return missing; } return void 0; @@ -32302,17 +32726,16 @@ ${lanes.join("\n")} function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 21 /* CloseParenToken */; } - function parseVariableStatement(pos, hasJSDoc, decorators, modifiers) { + function parseVariableStatement(pos, hasJSDoc, modifiers) { const declarationList = parseVariableDeclarationList( /*inForStatementInitializer*/ false ); parseSemicolon(); const node = factory2.createVariableStatement(modifiers, declarationList); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseFunctionDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); const modifierFlags = modifiersToFlags(modifiers); parseExpected(98 /* FunctionKeyword */); @@ -32335,7 +32758,6 @@ ${lanes.join("\n")} const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, Diagnostics.or_expected); setAwaitContext(savedAwaitContext); const node = factory2.createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseConstructorName() { @@ -32349,7 +32771,7 @@ ${lanes.join("\n")} }); } } - function tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers) { + function tryParseConstructorDeclaration(pos, hasJSDoc, modifiers) { return tryParse(() => { if (parseConstructorName()) { const typeParameters = parseTypeParameters(); @@ -32361,14 +32783,13 @@ ${lanes.join("\n")} ); const body = parseFunctionBlockOrSemicolon(0 /* None */, Diagnostics.or_expected); const node = factory2.createConstructorDeclaration(modifiers, parameters, body); - node.illegalDecorators = decorators; node.typeParameters = typeParameters; node.type = type; return withJSDoc(finishNode(node, pos), hasJSDoc); } }); } - function parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { + function parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; const isAsync = some(modifiers, isAsyncModifier) ? 2 /* Await */ : 0 /* None */; const typeParameters = parseTypeParameters(); @@ -32380,7 +32801,7 @@ ${lanes.join("\n")} ); const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage); const node = factory2.createMethodDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, asteriskToken, name, questionToken, @@ -32392,13 +32813,13 @@ ${lanes.join("\n")} node.exclamationToken = exclamationToken; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken) { + function parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken) { const exclamationToken = !questionToken && !scanner2.hasPrecedingLineBreak() ? parseOptionalToken(53 /* ExclamationToken */) : void 0; const type = parseTypeAnnotation(); const initializer = doOutsideOfContext(8192 /* YieldContext */ | 32768 /* AwaitContext */ | 4096 /* DisallowInContext */, parseInitializer); parseSemicolonAfterPropertyName(name, type, initializer); const node = factory2.createPropertyDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, name, questionToken || exclamationToken, type, @@ -32406,7 +32827,7 @@ ${lanes.join("\n")} ); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers) { const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const name = parsePropertyName(); const questionToken = parseOptionalToken(57 /* QuestionToken */); @@ -32414,7 +32835,6 @@ ${lanes.join("\n")} return parseMethodDeclaration( pos, hasJSDoc, - decorators, modifiers, asteriskToken, name, @@ -32424,9 +32844,9 @@ ${lanes.join("\n")} Diagnostics.or_expected ); } - return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken); + return parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken); } - function parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, kind, flags) { + function parseAccessorDeclaration(pos, hasJSDoc, modifiers, kind, flags) { const name = parsePropertyName(); const typeParameters = parseTypeParameters(); const parameters = parseParameters(0 /* None */); @@ -32436,7 +32856,7 @@ ${lanes.join("\n")} false ); const body = parseFunctionBlockOrSemicolon(flags); - const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body) : factory2.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body); + const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(modifiers, name, parameters, type, body) : factory2.createSetAccessorDeclaration(modifiers, name, parameters, body); node.typeParameters = typeParameters; if (isSetAccessorDeclaration(node)) node.type = type; @@ -32482,11 +32902,10 @@ ${lanes.join("\n")} } return false; } - function parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers) { parseExpectedToken(124 /* StaticKeyword */); const body = parseClassStaticBlockBody(); const node = withJSDoc(finishNode(factory2.createClassStaticBlockDeclaration(body), pos), hasJSDoc); - node.illegalDecorators = decorators; node.modifiers = modifiers; return node; } @@ -32526,15 +32945,7 @@ ${lanes.join("\n")} const expression = doInDecoratorContext(parseDecoratorExpression); return finishNode(factory2.createDecorator(expression), pos); } - function parseDecorators() { - const pos = getNodePos(); - let list, decorator; - while (decorator = tryParseDecorator()) { - list = append(list, decorator); - } - return list && createNodeArray2(list, pos); - } - function tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + function tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); const kind = token(); if (token() === 85 /* ConstKeyword */ && permitConstAsModifier) { @@ -32552,24 +32963,27 @@ ${lanes.join("\n")} } return finishNode(factory2.createToken(kind), pos); } - function combineDecoratorsAndModifiers(decorators, modifiers) { - if (!decorators) - return modifiers; - if (!modifiers) - return decorators; - const decoratorsAndModifiers = factory2.createNodeArray(concatenate(decorators, modifiers)); - setTextRangePosEnd(decoratorsAndModifiers, decorators.pos, modifiers.end); - return decoratorsAndModifiers; - } - function parseModifiers(permitConstAsModifier, stopOnStartOfClassStaticBlock) { + function parseModifiers(allowDecorators, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); - let list, modifier, hasSeenStatic = false; - while (modifier = tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) { + let list; + let modifier, hasSeenStaticModifier = false; + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { if (modifier.kind === 124 /* StaticKeyword */) - hasSeenStatic = true; + hasSeenStaticModifier = true; list = append(list, modifier); } - return list && createNodeArray2(list, pos); + if (allowDecorators && token() === 59 /* AtToken */) { + let decorator; + while (decorator = tryParseDecorator()) { + list = append(list, decorator); + } + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { + if (modifier.kind === 124 /* StaticKeyword */) + hasSeenStaticModifier = true; + list = append(list, modifier); + } + } + return list && createNodeArray(list, pos); } function parseModifiersForArrowFunction() { let modifiers; @@ -32577,7 +32991,7 @@ ${lanes.join("\n")} const pos = getNodePos(); nextToken(); const modifier = finishNode(factory2.createToken(132 /* AsyncKeyword */), pos); - modifiers = createNodeArray2([modifier], pos); + modifiers = createNodeArray([modifier], pos); } return modifiers; } @@ -32588,30 +33002,31 @@ ${lanes.join("\n")} return finishNode(factory2.createSemicolonClassElement(), pos); } const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); const modifiers = parseModifiers( + /*allowDecorators*/ + true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true ); if (token() === 124 /* StaticKeyword */ && lookAhead(nextTokenIsOpenBrace)) { - return parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers); } if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } if (token() === 135 /* ConstructorKeyword */ || token() === 10 /* StringLiteral */) { - const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers); + const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, modifiers); if (constructorDeclaration) { return constructorDeclaration; } } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } if (tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */ || token() === 41 /* AsteriskToken */ || token() === 22 /* OpenBracketToken */) { const isAmbient = some(modifiers, isDeclareModifier); @@ -32619,12 +33034,12 @@ ${lanes.join("\n")} for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers)); } else { - return parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers); + return parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers); } } - if (decorators || modifiers) { + if (modifiers) { const name = createMissingNode( 79 /* Identifier */, /*reportAtCurrentPosition*/ @@ -32634,7 +33049,6 @@ ${lanes.join("\n")} return parsePropertyDeclaration( pos, hasJSDoc, - decorators, modifiers, name, /*questionToken*/ @@ -32643,21 +33057,39 @@ ${lanes.join("\n")} } return Debug.fail("Should not have attempted to parse class member declaration."); } + function parseDecoratedExpression() { + const pos = getNodePos(); + const hasJSDoc = hasPrecedingJSDocComment(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); + if (token() === 84 /* ClassKeyword */) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 228 /* ClassExpression */); + } + const missing = createMissingNode( + 279 /* MissingDeclaration */, + /*reportAtCurrentPosition*/ + true, + Diagnostics.Expression_expected + ); + setTextRangePos(missing, pos); + missing.modifiers = modifiers; + return missing; + } function parseClassExpression() { return parseClassDeclarationOrExpression( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0, 228 /* ClassExpression */ ); } - function parseClassDeclaration(pos, hasJSDoc, decorators, modifiers) { - return parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, 260 /* ClassDeclaration */); + function parseClassDeclaration(pos, hasJSDoc, modifiers) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 260 /* ClassDeclaration */); } - function parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, kind) { + function parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, kind) { const savedAwaitContext = inAwaitContext(); parseExpected(84 /* ClassKeyword */); const name = parseNameOfClassDeclarationOrExpression(); @@ -32676,11 +33108,11 @@ ${lanes.join("\n")} members = createMissingList(); } setAwaitContext(savedAwaitContext); - const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members) : factory2.createClassExpression(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members); + const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : factory2.createClassExpression(modifiers, name, typeParameters, heritageClauses, members); return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseNameOfClassDeclarationOrExpression() { - return isBindingIdentifier() && !isImplementsClause() ? createIdentifier3(isBindingIdentifier()) : void 0; + return isBindingIdentifier() && !isImplementsClause() ? createIdentifier(isBindingIdentifier()) : void 0; } function isImplementsClause() { return token() === 117 /* ImplementsKeyword */ && lookAhead(nextTokenIsIdentifierOrKeyword); @@ -32717,17 +33149,16 @@ ${lanes.join("\n")} function parseClassMembers() { return parseList(ParsingContext.ClassMembers, parseClassElement); } - function parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseInterfaceDeclaration(pos, hasJSDoc, modifiers) { parseExpected(118 /* InterfaceKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); const heritageClauses = parseHeritageClauses(); const members = parseObjectTypeMembers(); const node = factory2.createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) { parseExpected(154 /* TypeKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); @@ -32735,7 +33166,6 @@ ${lanes.join("\n")} const type = token() === 139 /* IntrinsicKeyword */ && tryParse(parseKeywordAndNoDot) || parseType(); parseSemicolon(); const node = factory2.createTypeAliasDeclaration(modifiers, name, typeParameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseEnumMember() { @@ -32745,7 +33175,7 @@ ${lanes.join("\n")} const initializer = allowInAnd(parseInitializer); return withJSDoc(finishNode(factory2.createEnumMember(name, initializer), pos), hasJSDoc); } - function parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseEnumDeclaration(pos, hasJSDoc, modifiers) { parseExpected(92 /* EnumKeyword */); const name = parseIdentifier(); let members; @@ -32756,7 +33186,6 @@ ${lanes.join("\n")} members = createMissingList(); } const node = factory2.createEnumDeclaration(modifiers, name, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseModuleBlock() { @@ -32770,24 +33199,21 @@ ${lanes.join("\n")} } return finishNode(factory2.createModuleBlock(statements), pos); } - function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags) { + function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiers, flags) { const namespaceFlag = flags & 16 /* Namespace */; const name = parseIdentifier(); const body = parseOptional(24 /* DotToken */) ? parseModuleOrNamespaceDeclaration( getNodePos(), /*hasJSDoc*/ false, - /*decorators*/ - void 0, /*modifiers*/ void 0, 4 /* NestedNamespace */ | namespaceFlag ) : parseModuleBlock(); const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; let name; if (token() === 159 /* GlobalKeyword */) { @@ -32803,23 +33229,22 @@ ${lanes.join("\n")} } else { parseSemicolon(); } - const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; + const node = factory2.createModuleDeclaration(modifiersIn, name, body, flags); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; if (token() === 159 /* GlobalKeyword */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } else if (parseOptional(143 /* NamespaceKeyword */)) { flags |= 16 /* Namespace */; } else { parseExpected(142 /* ModuleKeyword */); if (token() === 10 /* StringLiteral */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } } - return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags); + return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiersIn, flags); } function isExternalModuleReference2() { return token() === 147 /* RequireKeyword */ && lookAhead(nextTokenIsOpenParen); @@ -32833,17 +33258,16 @@ ${lanes.join("\n")} function nextTokenIsSlash() { return nextToken() === 43 /* SlashToken */; } - function parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseNamespaceExportDeclaration(pos, hasJSDoc, modifiers) { parseExpected(128 /* AsKeyword */); parseExpected(143 /* NamespaceKeyword */); const name = parseIdentifier(); parseSemicolon(); const node = factory2.createNamespaceExportDeclaration(name); - node.illegalDecorators = decorators; node.modifiers = modifiers; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiers) { parseExpected(100 /* ImportKeyword */); const afterImportPos = scanner2.getStartPos(); let identifier; @@ -32856,7 +33280,7 @@ ${lanes.join("\n")} identifier = isIdentifier2() ? parseIdentifier() : void 0; } if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { - return parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly); + return parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly); } let importClause; if (identifier || // import id @@ -32872,7 +33296,6 @@ ${lanes.join("\n")} } parseSemicolon(); const node = factory2.createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseAssertEntry() { @@ -32910,7 +33333,7 @@ ${lanes.join("\n")} } return finishNode(factory2.createAssertClause(elements, multiLine), pos); } else { - const elements = createNodeArray2( + const elements = createNodeArray( [], getNodePos(), /*end*/ @@ -32931,12 +33354,11 @@ ${lanes.join("\n")} function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { return token() === 27 /* CommaToken */ || token() === 158 /* FromKeyword */; } - function parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly) { + function parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly) { parseExpected(63 /* EqualsToken */); const moduleReference = parseModuleReference(); parseSemicolon(); const node = factory2.createImportEqualsDeclaration(modifiers, isTypeOnly, identifier, moduleReference); - node.illegalDecorators = decorators; const finished = withJSDoc(finishNode(node, pos), hasJSDoc); return finished; } @@ -33046,7 +33468,7 @@ ${lanes.join("\n")} function parseNamespaceExport(pos) { return finishNode(factory2.createNamespaceExport(parseIdentifierName()), pos); } - function parseExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseExportDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -33076,10 +33498,9 @@ ${lanes.join("\n")} parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseExportAssignment(pos, hasJSDoc, decorators, modifiers) { + function parseExportAssignment(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -33098,7 +33519,6 @@ ${lanes.join("\n")} parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportAssignment(modifiers, isExportEquals, expression); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } let ParsingContext; @@ -33353,8 +33773,8 @@ ${lanes.join("\n")} } if (parts.length && tags) Debug.assertIsDefined(commentsPos, "having parsed tags implies that the end of the comment span should be set"); - const tagsArray = tags && createNodeArray2(tags, tagsPos, tagsEnd); - return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray2(parts, start, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start, end); + const tagsArray = tags && createNodeArray(tags, tagsPos, tagsEnd); + return finishNode(factory2.createJSDocComment(parts.length ? createNodeArray(parts, start, commentsPos) : comments.length ? comments.join("") : void 0, tagsArray), start, end); }); function removeLeadingNewlines(comments2) { while (comments2.length && (comments2[0] === "\n" || comments2[0] === "\r")) { @@ -33482,6 +33902,9 @@ ${lanes.join("\n")} case "overload": tag = parseOverloadTag(start2, tagName, margin, indentText); break; + case "satisfies": + tag = parseSatisfiesTag(start2, tagName, margin, indentText); + break; case "see": tag = parseSeeTag(start2, tagName, margin, indentText); break; @@ -33594,7 +34017,7 @@ ${lanes.join("\n")} if (comments2.length) { parts2.push(finishNode(factory2.createJSDocText(comments2.join("")), linkEnd2 != null ? linkEnd2 : commentsPos2)); } - return createNodeArray2(parts2, commentsPos2, scanner2.getTextPos()); + return createNodeArray(parts2, commentsPos2, scanner2.getTextPos()); } else if (comments2.length) { return comments2.join(""); } @@ -33760,7 +34183,7 @@ ${lanes.join("\n")} if (!comments2) { commentEnd = scanner2.getStartPos(); } - const allParts = typeof comments2 !== "string" ? createNodeArray2(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; + const allParts = typeof comments2 !== "string" ? createNodeArray(concatenate([finishNode(textOnly, commentStart, commentEnd)], comments2), commentStart) : textOnly.text + comments2; return finishNode(factory2.createJSDocAuthorTag(tagName, allParts), start2); } function parseAuthorNameAndEmail() { @@ -33790,6 +34213,14 @@ ${lanes.join("\n")} const className = parseExpressionWithTypeArgumentsForAugments(); return finishNode(factory2.createJSDocAugmentsTag(tagName, className, parseTrailingTagComments(start2, getNodePos(), margin, indentText)), start2); } + function parseSatisfiesTag(start2, tagName, margin, indentText) { + const typeExpression = parseJSDocTypeExpression( + /*mayOmitBraces*/ + false + ); + const comments2 = margin !== void 0 && indentText !== void 0 ? parseTrailingTagComments(start2, getNodePos(), margin, indentText) : void 0; + return finishNode(factory2.createJSDocSatisfiesTag(tagName, typeExpression, comments2), start2); + } function parseExpressionWithTypeArgumentsForAugments() { const usedBrace = parseOptional(18 /* OpenBraceToken */); const pos = getNodePos(); @@ -33894,7 +34325,7 @@ ${lanes.join("\n")} return finishNode(jsDocNamespaceNode, pos); } if (nested) { - typeNameOrNamespaceName.isInJSDocNamespace = true; + typeNameOrNamespaceName.flags |= 2048 /* IdentifierIsInJSDocNamespace */; } return typeNameOrNamespaceName; } @@ -33905,7 +34336,7 @@ ${lanes.join("\n")} while (child = tryParse(() => parseChildParameterOrPropertyTag(4 /* CallbackParameter */, indent2))) { parameters = append(parameters, child); } - return createNodeArray2(parameters || [], pos); + return createNodeArray(parameters || [], pos); } function parseJSDocSignature(start2, indent2) { const parameters = parseCallbackTagParameters(indent2); @@ -34056,7 +34487,7 @@ ${lanes.join("\n")} } skipWhitespaceOrAsterisk(); } while (parseOptionalJsdoc(27 /* CommaToken */)); - return createNodeArray2(typeParameters, pos); + return createNodeArray(typeParameters, pos); } function parseTemplateTag(start2, tagName, indent2, indentText) { const constraint = token() === 18 /* OpenBraceToken */ ? parseJSDocTypeExpression() : void 0; @@ -34080,7 +34511,7 @@ ${lanes.join("\n")} if (parseOptional(22 /* OpenBracketToken */)) { parseExpected(23 /* CloseBracketToken */); } - entity = createQualifiedName2(entity, name); + entity = createQualifiedName(entity, name); } return entity; } @@ -34098,12 +34529,7 @@ ${lanes.join("\n")} const end2 = scanner2.getTextPos(); const originalKeywordKind = token(); const text = internIdentifier(scanner2.getTokenValue()); - const result = finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind - ), pos, end2); + const result = finishNode(factory2.createIdentifier(text, originalKeywordKind), pos, end2); nextTokenJSDoc(); return result; } @@ -34504,16 +34930,6 @@ ${lanes.join("\n")} function getOptionsNameMap() { return optionsNameMapCache || (optionsNameMapCache = createOptionNameMap(optionDeclarations)); } - function convertEnableAutoDiscoveryToEnable(typeAcquisition) { - if (typeAcquisition && typeAcquisition.enableAutoDiscovery !== void 0 && typeAcquisition.enable === void 0) { - return { - enable: typeAcquisition.enableAutoDiscovery, - include: typeAcquisition.include || [], - exclude: typeAcquisition.exclude || [] - }; - } - return typeAcquisition; - } function createCompilerDiagnosticForInvalidCustomType(opt) { return createDiagnosticForInvalidCustomType(opt, createCompilerDiagnostic); } @@ -34844,12 +35260,6 @@ ${lanes.join("\n")} elementOptions: getCommandLineWatchOptionsMap(), extraKeyDiagnostics: watchOptionsDidYouMeanDiagnostics }, - { - name: "typingOptions", - type: "object", - elementOptions: getCommandLineTypeAcquisitionMap(), - extraKeyDiagnostics: typeAcquisitionDidYouMeanDiagnostics - }, { name: "typeAcquisition", type: "object", @@ -35696,11 +36106,11 @@ ${lanes.join("\n")} errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); } const options = convertCompilerOptionsFromJsonWorker(json.compilerOptions, basePath, errors, configFileName); - const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition || json.typingOptions, basePath, errors, configFileName); + const typeAcquisition = convertTypeAcquisitionFromJsonWorker(json.typeAcquisition, basePath, errors, configFileName); const watchOptions = convertWatchOptionsFromJsonWorker(json.watchOptions, basePath, errors); json.compileOnSave = convertCompileOnSaveOptionFromJson(json, basePath, errors); let extendedConfigPath; - if (json.extends) { + if (json.extends || json.extends === "") { if (!isCompilerOptionsValue(extendsOptionDeclaration, json.extends)) { errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "extends", getCompilerOptionValueTypeString(extendsOptionDeclaration))); } else { @@ -35723,7 +36133,7 @@ ${lanes.join("\n")} } function parseOwnConfigOfJsonSourceFile(sourceFile, host, basePath, configFileName, errors) { const options = getDefaultCompilerOptions(configFileName); - let typeAcquisition, typingOptionstypeAcquisition; + let typeAcquisition; let watchOptions; let extendedConfigPath; let rootCompilerOptions; @@ -35740,9 +36150,6 @@ ${lanes.join("\n")} case "typeAcquisition": currentOption = typeAcquisition || (typeAcquisition = getDefaultTypeAcquisition(configFileName)); break; - case "typingOptions": - currentOption = typingOptionstypeAcquisition || (typingOptionstypeAcquisition = getDefaultTypeAcquisition(configFileName)); - break; default: Debug.fail("Unknown option"); } @@ -35795,15 +36202,7 @@ ${lanes.join("\n")} optionsIterator ); if (!typeAcquisition) { - if (typingOptionstypeAcquisition) { - typeAcquisition = typingOptionstypeAcquisition.enableAutoDiscovery !== void 0 ? { - enable: typingOptionstypeAcquisition.enableAutoDiscovery, - include: typingOptionstypeAcquisition.include, - exclude: typingOptionstypeAcquisition.exclude - } : typingOptionstypeAcquisition; - } else { - typeAcquisition = getDefaultTypeAcquisition(configFileName); - } + typeAcquisition = getDefaultTypeAcquisition(configFileName); } if (rootCompilerOptions && json && json.compilerOptions === void 0) { errors.push(createDiagnosticForNodeInSourceFile(sourceFile, rootCompilerOptions[0], Diagnostics._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file, getTextOfPropertyName(rootCompilerOptions[0]))); @@ -35827,7 +36226,11 @@ ${lanes.join("\n")} if (resolved.resolvedModule) { return resolved.resolvedModule.resolvedFileName; } - errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + if (extendedConfig === "") { + errors.push(createDiagnostic(Diagnostics.Compiler_option_0_cannot_be_given_an_empty_string, "extends")); + } else { + errors.push(createDiagnostic(Diagnostics.File_0_not_found, extendedConfig)); + } return void 0; } function getExtendedConfig(sourceFile, extendedConfigPath, host, resolutionStack, errors, extendedConfigCache, result) { @@ -35905,8 +36308,7 @@ ${lanes.join("\n")} } function convertTypeAcquisitionFromJsonWorker(jsonOptions, basePath, errors, configFileName) { const options = getDefaultTypeAcquisition(configFileName); - const typeAcquisition = convertEnableAutoDiscoveryToEnable(jsonOptions); - convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), typeAcquisition, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); + convertOptionsFromJson(getCommandLineTypeAcquisitionMap(), jsonOptions, basePath, options, typeAcquisitionDidYouMeanDiagnostics, errors); return options; } function convertWatchOptionsFromJsonWorker(jsonOptions, basePath, errors) { @@ -36108,6 +36510,7 @@ ${lanes.join("\n")} } } function specToDiagnostic(spec, disallowTrailingRecursion) { + Debug.assert(typeof spec === "string"); if (disallowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return [Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec]; } else if (invalidDotDotAfterRecursiveWildcard(spec)) { @@ -36290,6 +36693,7 @@ ${lanes.join("\n")} ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], + ["es2023", "lib.es2023.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -36343,14 +36747,17 @@ ${lanes.join("\n")} ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], - ["esnext.array", "lib.es2022.array.d.ts"], + ["es2023.array", "lib.es2023.array.d.ts"], + ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], - ["esnext.weakref", "lib.es2021.weakref.d.ts"] + ["esnext.weakref", "lib.es2021.weakref.d.ts"], + ["decorators", "lib.decorators.d.ts"], + ["decorators.legacy", "lib.decorators.legacy.d.ts"] ]; libs = libEntries.map((entry) => entry[0]); libMap = new Map(libEntries); @@ -36893,6 +37300,13 @@ ${lanes.join("\n")} transpileOptionValue: true, defaultValueDescription: false }, + { + name: "verbatimModuleSyntax", + type: "boolean", + category: Diagnostics.Interop_Constraints, + description: Diagnostics.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting, + defaultValueDescription: false + }, // Strict Type Checks { name: "strict", @@ -37194,7 +37608,7 @@ ${lanes.join("\n")} { name: "allowImportingTsExtensions", type: "boolean", - affectsModuleResolution: true, + affectsSemanticDiagnostics: true, category: Diagnostics.Modules, description: Diagnostics.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set, defaultValueDescription: false @@ -37258,10 +37672,11 @@ ${lanes.join("\n")} { name: "experimentalDecorators", type: "boolean", + affectsEmit: true, affectsSemanticDiagnostics: true, affectsBuildInfo: true, category: Diagnostics.Language_and_Environment, - description: Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, + description: Diagnostics.Enable_experimental_support_for_legacy_experimental_decorators, defaultValueDescription: false }, { @@ -37375,7 +37790,7 @@ ${lanes.join("\n")} paramType: Diagnostics.NEWLINE, category: Diagnostics.Emit, description: Diagnostics.Set_the_newline_character_for_emitting_files, - defaultValueDescription: Diagnostics.Platform_specific + defaultValueDescription: "lf" }, { name: "noErrorTruncation", @@ -37551,7 +37966,7 @@ ${lanes.join("\n")} affectsModuleResolution: true, category: Diagnostics.Interop_Constraints, description: Diagnostics.Ensure_that_casing_is_correct_in_imports, - defaultValueDescription: false + defaultValueDescription: true }, { name: "maxNodeModuleJsDepth", @@ -37675,14 +38090,6 @@ ${lanes.join("\n")} ...optionsForBuild ]; typeAcquisitionDeclarations = [ - { - /* @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - name: "enableAutoDiscovery", - type: "boolean", - defaultValueDescription: false - }, { name: "enable", type: "boolean", @@ -37822,7 +38229,7 @@ ${lanes.join("\n")} Debug.assert(extensionIsTS(resolved.extension)); return { fileName: resolved.path, packageId: resolved.packageId }; } - function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache) { + function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache, legacyResult) { if (resultFromCache) { resultFromCache.failedLookupLocations = updateResolutionField(resultFromCache.failedLookupLocations, failedLookupLocations); resultFromCache.affectingLocations = updateResolutionField(resultFromCache.affectingLocations, affectingLocations); @@ -37840,7 +38247,8 @@ ${lanes.join("\n")} }, failedLookupLocations: initializeResolutionField(failedLookupLocations), affectingLocations: initializeResolutionField(affectingLocations), - resolutionDiagnostics: initializeResolutionField(diagnostics) + resolutionDiagnostics: initializeResolutionField(diagnostics), + node10Result: legacyResult }; } function initializeResolutionField(value) { @@ -38880,7 +39288,7 @@ ${lanes.join("\n")} ); } function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, compilerOptions, host, cache, extensions, isConfigLookup, redirectedReference) { - var _a2, _b; + var _a2, _b, _c, _d; const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations = []; const affectingLocations = []; @@ -38907,44 +39315,60 @@ ${lanes.join("\n")} if (getEmitModuleResolutionKind(compilerOptions) === 2 /* Node10 */) { const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */); const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */); - result = priorityExtensions && tryResolve(priorityExtensions) || secondaryExtensions && tryResolve(secondaryExtensions) || void 0; + result = priorityExtensions && tryResolve(priorityExtensions, state) || secondaryExtensions && tryResolve(secondaryExtensions, state) || void 0; } else { - result = tryResolve(extensions); + result = tryResolve(extensions, state); + } + let legacyResult; + if (((_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.isExternalLibraryImport) && !isConfigLookup && extensions & (1 /* TypeScript */ | 4 /* Declaration */) && features & 8 /* Exports */ && !isExternalModuleNameRelative(moduleName) && !extensionIsOk(1 /* TypeScript */ | 4 /* Declaration */, result.value.resolved.extension) && conditions.indexOf("import") > -1) { + traceIfEnabled(state, Diagnostics.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update); + const diagnosticState = { + ...state, + features: state.features & ~8 /* Exports */, + failedLookupLocations: [], + affectingLocations: [], + reportDiagnostic: noop + }; + const diagnosticResult = tryResolve(extensions & (1 /* TypeScript */ | 4 /* Declaration */), diagnosticState); + if ((_b = diagnosticResult == null ? void 0 : diagnosticResult.value) == null ? void 0 : _b.isExternalLibraryImport) { + legacyResult = diagnosticResult.value.resolved.path; + } } return createResolvedModuleWithFailedLookupLocations( - (_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.resolved, - (_b = result == null ? void 0 : result.value) == null ? void 0 : _b.isExternalLibraryImport, + (_c = result == null ? void 0 : result.value) == null ? void 0 : _c.resolved, + (_d = result == null ? void 0 : result.value) == null ? void 0 : _d.isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, - state.resultFromCache + state.resultFromCache, + legacyResult ); - function tryResolve(extensions2) { - const loader = (extensions3, candidate, onlyRecordFailures, state2) => nodeLoadModuleByRelativeName( + function tryResolve(extensions2, state2) { + const loader = (extensions3, candidate, onlyRecordFailures, state3) => nodeLoadModuleByRelativeName( extensions3, candidate, onlyRecordFailures, - state2, + state3, /*considerPackageJson*/ true ); - const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state); + const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state2); if (resolved) { return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) { if (traceEnabled) { trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) return void 0; @@ -38963,7 +39387,7 @@ ${lanes.join("\n")} candidate, /*onlyRecordFailures*/ false, - state, + state2, /*considerPackageJson*/ true ); @@ -40164,7 +40588,7 @@ ${lanes.join("\n")} } } function shouldAllowImportingTsExtension(compilerOptions, fromFileName) { - return getEmitModuleResolutionKind(compilerOptions) === 100 /* Bundler */ && (!!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName)); + return !!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName); } function loadModuleFromGlobalCache(moduleName, projectName, compilerOptions, host, globalCache, packageJsonInfoCache) { const traceEnabled = isTraceEnabled(compilerOptions, host); @@ -40318,7 +40742,7 @@ ${lanes.join("\n")} case 264 /* ModuleDeclaration */: return getModuleInstanceState(node, visited); case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { return 0 /* NonInstantiated */; } } @@ -40754,6 +41178,7 @@ ${lanes.join("\n")} } else if (containerFlags & 64 /* IsInterface */) { seenThisKeyword = false; bindChildren(node); + Debug.assertNotNode(node, isIdentifier); node.flags = seenThisKeyword ? node.flags | 128 /* ContainsThis */ : node.flags & ~128 /* ContainsThis */; } else { bindChildren(node); @@ -41054,13 +41479,12 @@ ${lanes.join("\n")} } else if (node.kind === 221 /* PrefixUnaryExpression */ && node.operator === 53 /* ExclamationToken */) { node = node.operand; } else { - return node.kind === 223 /* BinaryExpression */ && (node.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || node.operatorToken.kind === 56 /* BarBarToken */ || node.operatorToken.kind === 60 /* QuestionQuestionToken */); + return isLogicalOrCoalescingBinaryExpression(node); } } } function isLogicalAssignmentExpression(node) { - node = skipParentheses(node); - return isBinaryExpression(node) && isLogicalOrCoalescingAssignmentOperator(node.operatorToken.kind); + return isLogicalOrCoalescingAssignmentExpression(skipParentheses(node)); } function isTopLevelLogicalExpression(node) { while (isParenthesizedExpression(node.parent) || isPrefixUnaryExpression(node.parent) && node.parent.operator === 53 /* ExclamationToken */) { @@ -41443,7 +41867,7 @@ ${lanes.join("\n")} }; } const operator = node.operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */ || isLogicalOrCoalescingAssignmentOperator(operator)) { + if (isLogicalOrCoalescingBinaryOperator(operator) || isLogicalOrCoalescingAssignmentOperator(operator)) { if (isTopLevelLogicalExpression(node)) { const postExpressionLabel = createBranchLabel(); bindLogicalLikeExpression(node, postExpressionLabel, postExpressionLabel); @@ -41913,13 +42337,17 @@ ${lanes.join("\n")} } function checkContextualIdentifier(node) { if (!file.parseDiagnostics.length && !(node.flags & 16777216 /* Ambient */) && !(node.flags & 8388608 /* JSDoc */) && !isIdentifierName(node)) { - if (inStrictMode && node.originalKeywordKind >= 117 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 125 /* LastFutureReservedWord */) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind === void 0) { + return; + } + if (inStrictMode && originalKeywordKind >= 117 /* FirstFutureReservedWord */ && originalKeywordKind <= 125 /* LastFutureReservedWord */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, getStrictModeIdentifierMessage(node), declarationNameToString(node) )); - } else if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + } else if (originalKeywordKind === 133 /* AwaitKeyword */) { if (isExternalModule(file) && isInTopLevelContext(node)) { file.bindDiagnostics.push(createDiagnosticForNode2( node, @@ -41933,7 +42361,7 @@ ${lanes.join("\n")} declarationNameToString(node) )); } - } else if (node.originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { + } else if (originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, @@ -42145,7 +42573,7 @@ ${lanes.join("\n")} function bindWorker(node) { switch (node.kind) { case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; while (parentNode && !isJSDocTypeAlias(parentNode)) { parentNode = parentNode.parent; @@ -44078,6 +44506,7 @@ ${lanes.join("\n")} deferredDiagnosticsCallbacks.push(arg); }; let cancellationToken; + const requestedExternalEmitHelperNames = /* @__PURE__ */ new Set(); let requestedExternalEmitHelpers; let externalHelpersModule; const Symbol46 = objectAllocator.getSymbolConstructor(); @@ -44096,6 +44525,7 @@ ${lanes.join("\n")} const compilerOptions = host.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const allowSyntheticDefaultImports = getAllowSyntheticDefaultImports(compilerOptions); const strictNullChecks = getStrictOptionValue(compilerOptions, "strictNullChecks"); @@ -44120,6 +44550,7 @@ ${lanes.join("\n")} globals.set(globalThisSymbol.escapedName, globalThisSymbol); const argumentsSymbol = createSymbol(4 /* Property */, "arguments"); const requireSymbol = createSymbol(4 /* Property */, "require"); + const isolatedModulesLikeFlagName = compilerOptions.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules"; let apparentArgumentCount; const checker = { getNodeCount: () => reduceLeft(host.getSourceFiles(), (n, s) => n + s.nodeCount, 0), @@ -44540,6 +44971,7 @@ ${lanes.join("\n")} const stringMappingTypes = /* @__PURE__ */ new Map(); const substitutionTypes = /* @__PURE__ */ new Map(); const subtypeReductionCache = /* @__PURE__ */ new Map(); + const decoratorContextOverrideTypeCache = /* @__PURE__ */ new Map(); const cachedTypes = /* @__PURE__ */ new Map(); const evolvingArrayTypes = []; const undefinedProperties = /* @__PURE__ */ new Map(); @@ -44779,6 +45211,14 @@ ${lanes.join("\n")} let deferredGlobalBigIntType; let deferredGlobalNaNSymbol; let deferredGlobalRecordSymbol; + let deferredGlobalClassDecoratorContextType; + let deferredGlobalClassMethodDecoratorContextType; + let deferredGlobalClassGetterDecoratorContextType; + let deferredGlobalClassSetterDecoratorContextType; + let deferredGlobalClassAccessorDecoratorContextType; + let deferredGlobalClassAccessorDecoratorTargetType; + let deferredGlobalClassAccessorDecoratorResultType; + let deferredGlobalClassFieldDecoratorContextType; const allPotentiallyUnusedIdentifiers = /* @__PURE__ */ new Map(); let flowLoopStart = 0; let flowLoopCount = 0; @@ -44865,7 +45305,7 @@ ${lanes.join("\n")} if (jsxFragmentPragma) { const chosenPragma = isArray(jsxFragmentPragma) ? jsxFragmentPragma[0] : jsxFragmentPragma; file.localJsxFragmentFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFragmentFactory, markAsSynthetic); + visitNode(file.localJsxFragmentFactory, markAsSynthetic, isEntityName); if (file.localJsxFragmentFactory) { return file.localJsxFragmentNamespace = getFirstIdentifier(file.localJsxFragmentFactory).escapedText; } @@ -44908,7 +45348,7 @@ ${lanes.join("\n")} if (jsxPragma) { const chosenPragma = isArray(jsxPragma) ? jsxPragma[0] : jsxPragma; file.localJsxFactory = parseIsolatedEntityName(chosenPragma.arguments.factory, languageVersion); - visitNode(file.localJsxFactory, markAsSynthetic); + visitNode(file.localJsxFactory, markAsSynthetic, isEntityName); if (file.localJsxFactory) { return file.localJsxNamespace = getFirstIdentifier(file.localJsxFactory).escapedText; } @@ -44961,7 +45401,7 @@ ${lanes.join("\n")} addErrorOrSuggestion(isError, "message" in message ? createFileDiagnostic(file, 0, 0, message, arg0, arg1, arg2, arg3) : createDiagnosticForFileFromMessageChain(file, message)); return; } - addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(location, message)); + addErrorOrSuggestion(isError, "message" in message ? createDiagnosticForNode(location, message, arg0, arg1, arg2, arg3) : createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(location), location, message)); } function errorAndMaybeSuggestAwait(location, maybeMissingAwait, message, arg0, arg1, arg2, arg3) { const diagnostic = error(location, message, arg0, arg1, arg2, arg3); @@ -45006,6 +45446,16 @@ ${lanes.join("\n")} symbol.links.checkFlags = checkFlags || 0 /* None */; return symbol; } + function createParameter(name, type) { + const symbol = createSymbol(1 /* FunctionScopedVariable */, name); + symbol.links.type = type; + return symbol; + } + function createProperty(name, type) { + const symbol = createSymbol(4 /* Property */, name); + symbol.links.type = type; + return symbol; + } function getExcludedSymbolFlags(flags) { let result = 0; if (flags & 2 /* BlockScopedVariable */) @@ -45552,6 +46002,15 @@ ${lanes.join("\n")} break; case 263 /* EnumDeclaration */: if (result = lookup(((_c = getSymbolOfDeclaration(location)) == null ? void 0 : _c.exports) || emptySymbols, name, meaning & 8 /* EnumMember */)) { + if (nameNotFoundMessage && getIsolatedModules(compilerOptions) && !(location.flags & 16777216 /* Ambient */) && getSourceFileOfNode(location) !== getSourceFileOfNode(result.valueDeclaration)) { + error( + errorLocation, + Diagnostics.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead, + unescapeLeadingUnderscores(name), + isolatedModulesLikeFlagName, + `${unescapeLeadingUnderscores(getSymbolOfNode(location).escapedName)}.${unescapeLeadingUnderscores(name)}` + ); + } break loop; } break; @@ -45797,7 +46256,7 @@ ${lanes.join("\n")} if (result && errorLocation && meaning & 111551 /* Value */ && result.flags & 2097152 /* Alias */ && !(result.flags & 111551 /* Value */) && !isValidTypeOnlyAliasUseSite(errorLocation)) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(result, 111551 /* Value */); if (typeOnlyDeclaration) { - const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; + const message = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type; const unescapedName = unescapeLeadingUnderscores(name); addTypeOnlyDeclarationRelatedInfo( error(errorLocation, message, unescapedName), @@ -45817,7 +46276,7 @@ ${lanes.join("\n")} diagnostic, createDiagnosticForNode( typeOnlyDeclaration, - typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, + typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ || typeOnlyDeclaration.kind === 277 /* NamespaceExport */ ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here, unescapedName ) ); @@ -46196,10 +46655,10 @@ ${lanes.join("\n")} false ) && !node.isTypeOnly) { const typeOnlyDeclaration = getTypeOnlyAliasDeclaration(getSymbolOfDeclaration(node)); - const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */; + const isExport = typeOnlyDeclaration.kind === 278 /* ExportSpecifier */ || typeOnlyDeclaration.kind === 275 /* ExportDeclaration */; const message = isExport ? Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type : Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type; const relatedMessage = isExport ? Diagnostics._0_was_exported_here : Diagnostics._0_was_imported_here; - const name = unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); + const name = typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? "*" : unescapeLeadingUnderscores(typeOnlyDeclaration.name.escapedText); addRelatedInfo(error(node.moduleReference, message), createDiagnosticForNode(typeOnlyDeclaration, relatedMessage, name)); } } @@ -46419,6 +46878,7 @@ ${lanes.join("\n")} return valueSymbol; } const result = createSymbol(valueSymbol.flags | typeSymbol.flags, valueSymbol.escapedName); + Debug.assert(valueSymbol.declarations || typeSymbol.declarations); result.declarations = deduplicate(concatenate(valueSymbol.declarations, typeSymbol.declarations), equateValues); result.parent = valueSymbol.parent || typeSymbol.parent; if (valueSymbol.valueDeclaration) @@ -46430,15 +46890,19 @@ ${lanes.join("\n")} return result; } function getExportOfModule(symbol, name, specifier, dontResolveAlias) { + var _a2; if (symbol.flags & 1536 /* Module */) { const exportSymbol = getExportsOfSymbol(symbol).get(name.escapedText); const resolved = resolveSymbol(exportSymbol, dontResolveAlias); + const exportStarDeclaration = (_a2 = getSymbolLinks(symbol).typeOnlyExportStarMap) == null ? void 0 : _a2.get(name.escapedText); markSymbolOfAliasDeclarationIfTypeOnly( specifier, exportSymbol, resolved, /*overwriteEmpty*/ - false + false, + exportStarDeclaration, + name.escapedText ); return resolved; } @@ -46765,7 +47229,7 @@ ${lanes.join("\n")} } return flags; } - function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty) { + function markSymbolOfAliasDeclarationIfTypeOnly(aliasDeclaration, immediateTarget, finalTarget, overwriteEmpty, exportStarDeclaration, exportStarName) { if (!aliasDeclaration || isPropertyAccessExpression(aliasDeclaration)) return false; const sourceSymbol = getSymbolOfDeclaration(aliasDeclaration); @@ -46774,6 +47238,14 @@ ${lanes.join("\n")} links2.typeOnlyDeclaration = aliasDeclaration; return true; } + if (exportStarDeclaration) { + const links2 = getSymbolLinks(sourceSymbol); + links2.typeOnlyDeclaration = exportStarDeclaration; + if (sourceSymbol.escapedName !== exportStarName) { + links2.typeOnlyExportStarName = exportStarName; + } + return true; + } const links = getSymbolLinks(sourceSymbol); return markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, immediateTarget, overwriteEmpty) || markSymbolOfAliasDeclarationIfTypeOnlyWorker(links, finalTarget, overwriteEmpty); } @@ -46795,11 +47267,15 @@ ${lanes.join("\n")} return links.typeOnlyDeclaration || void 0; } if (links.typeOnlyDeclaration) { - return getAllSymbolFlags(resolveAlias(links.typeOnlyDeclaration.symbol)) & include ? links.typeOnlyDeclaration : void 0; + const resolved = links.typeOnlyDeclaration.kind === 275 /* ExportDeclaration */ ? resolveSymbol(getExportsOfModule(links.typeOnlyDeclaration.symbol.parent).get(links.typeOnlyExportStarName || symbol.escapedName)) : resolveAlias(links.typeOnlyDeclaration.symbol); + return getAllSymbolFlags(resolved) & include ? links.typeOnlyDeclaration : void 0; } return void 0; } function markExportAsReferenced(node) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } const symbol = getSymbolOfDeclaration(node); const target = resolveAlias(symbol); if (target) { @@ -46810,6 +47286,7 @@ ${lanes.join("\n")} } } function markAliasSymbolAsReferenced(symbol) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); const links = getSymbolLinks(symbol); if (!links.referenced) { links.referenced = true; @@ -47116,6 +47593,8 @@ ${lanes.join("\n")} /*isError*/ false, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -47167,7 +47646,7 @@ ${lanes.join("\n")} } } } - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chainDiagnosticMessages( + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chainDiagnosticMessages( diagnosticDetails, Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead, moduleReference @@ -47201,6 +47680,8 @@ ${lanes.join("\n")} /*isError*/ noImplicitAny && !!moduleNotFoundError, errorNode, + currentSourceFile, + mode, resolvedModule, moduleReference ); @@ -47255,26 +47736,37 @@ ${lanes.join("\n")} return importSourceWithoutExtension; } } - function errorOnImplicitAnyModule(isError, errorNode, { packageId, resolvedFileName }, moduleReference) { - const errorInfo = !isExternalModuleNameRelative(moduleReference) && packageId ? typesPackageExists(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, - packageId.name, - mangleScopedPackageName(packageId.name) - ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, - packageId.name, - moduleReference - ) : chainDiagnosticMessages( - /*details*/ - void 0, - Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, - moduleReference, - mangleScopedPackageName(packageId.name) - ) : void 0; + function errorOnImplicitAnyModule(isError, errorNode, sourceFile, mode, { packageId, resolvedFileName }, moduleReference) { + var _a2, _b; + let errorInfo; + if (!isExternalModuleNameRelative(moduleReference) && packageId) { + const node10Result = (_b = (_a2 = sourceFile.resolvedModules) == null ? void 0 : _a2.get(moduleReference, mode)) == null ? void 0 : _b.node10Result; + errorInfo = node10Result ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings, + node10Result, + node10Result.indexOf(nodeModulesPathPart + "@types/") > -1 ? `@types/${mangleScopedPackageName(packageId.name)}` : packageId.name + ) : typesPackageExists(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, + packageId.name, + mangleScopedPackageName(packageId.name) + ) : packageBundlesTypes(packageId.name) ? chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, + packageId.name, + moduleReference + ) : chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, + moduleReference, + mangleScopedPackageName(packageId.name) + ); + } errorOrSuggestion(isError, errorNode, chainDiagnosticMessages( errorInfo, Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, @@ -47434,7 +47926,12 @@ ${lanes.join("\n")} } function getExportsOfModule(moduleSymbol) { const links = getSymbolLinks(moduleSymbol); - return links.resolvedExports || (links.resolvedExports = getExportsOfModuleWorker(moduleSymbol)); + if (!links.resolvedExports) { + const { exports, typeOnlyExportStarMap } = getExportsOfModuleWorker(moduleSymbol); + links.resolvedExports = exports; + links.typeOnlyExportStarMap = typeOnlyExportStarMap; + } + return links.resolvedExports; } function extendExportSymbols(target, source, lookupTable, exportNode) { if (!source) @@ -47462,9 +47959,21 @@ ${lanes.join("\n")} } function getExportsOfModuleWorker(moduleSymbol) { const visitedSymbols = []; + let typeOnlyExportStarMap; + const nonTypeOnlyNames = /* @__PURE__ */ new Set(); moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); - return visit(moduleSymbol) || emptySymbols; - function visit(symbol) { + const exports = visit(moduleSymbol) || emptySymbols; + if (typeOnlyExportStarMap) { + nonTypeOnlyNames.forEach((name) => typeOnlyExportStarMap.delete(name)); + } + return { + exports, + typeOnlyExportStarMap + }; + function visit(symbol, exportStar, isTypeOnly) { + if (!isTypeOnly && (symbol == null ? void 0 : symbol.exports)) { + symbol.exports.forEach((_, name) => nonTypeOnlyNames.add(name)); + } if (!(symbol && symbol.exports && pushIfUnique(visitedSymbols, symbol))) { return; } @@ -47476,7 +47985,7 @@ ${lanes.join("\n")} if (exportStars.declarations) { for (const node of exportStars.declarations) { const resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); - const exportedSymbols = visit(resolvedModule); + const exportedSymbols = visit(resolvedModule, node, isTypeOnly || node.isTypeOnly); extendExportSymbols( nestedSymbols, exportedSymbols, @@ -47500,6 +48009,13 @@ ${lanes.join("\n")} }); extendExportSymbols(symbols, nestedSymbols); } + if (exportStar == null ? void 0 : exportStar.isTypeOnly) { + typeOnlyExportStarMap != null ? typeOnlyExportStarMap : typeOnlyExportStarMap = /* @__PURE__ */ new Map(); + symbols.forEach((_, escapedName) => typeOnlyExportStarMap.set( + escapedName, + exportStar + )); + } return symbols; } } @@ -48931,13 +49447,17 @@ ${lanes.join("\n")} let qualifier = root.qualifier; if (qualifier) { if (isIdentifier(qualifier)) { - qualifier = factory.updateIdentifier(qualifier, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(qualifier)) { + qualifier = setIdentifierTypeArguments(factory.cloneNode(qualifier), typeArguments); + } } else { - qualifier = factory.updateQualifiedName( - qualifier, - qualifier.left, - factory.updateIdentifier(qualifier.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(qualifier.right)) { + qualifier = factory.updateQualifiedName( + qualifier, + qualifier.left, + setIdentifierTypeArguments(factory.cloneNode(qualifier.right), typeArguments) + ); + } } } typeArguments = ref.typeArguments; @@ -48957,13 +49477,17 @@ ${lanes.join("\n")} let typeArguments = root.typeArguments; let typeName = root.typeName; if (isIdentifier(typeName)) { - typeName = factory.updateIdentifier(typeName, typeArguments); + if (typeArguments !== getIdentifierTypeArguments(typeName)) { + typeName = setIdentifierTypeArguments(factory.cloneNode(typeName), typeArguments); + } } else { - typeName = factory.updateQualifiedName( - typeName, - typeName.left, - factory.updateIdentifier(typeName.right, typeArguments) - ); + if (typeArguments !== getIdentifierTypeArguments(typeName.right)) { + typeName = factory.updateQualifiedName( + typeName, + typeName.left, + setIdentifierTypeArguments(factory.cloneNode(typeName.right), typeArguments) + ); + } } typeArguments = ref.typeArguments; const ids = getAccessStack(ref); @@ -49677,7 +50201,11 @@ ${lanes.join("\n")} if (!nonRootParts || isEntityName(nonRootParts)) { if (nonRootParts) { const lastId = isIdentifier(nonRootParts) ? nonRootParts : nonRootParts.right; - lastId.typeArguments = void 0; + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); } return factory.createImportTypeNode(lit, assertion, nonRootParts, typeParameterNodes, isTypeOf); } else { @@ -49694,8 +50222,12 @@ ${lanes.join("\n")} return factory.createTypeQueryNode(entityName); } else { const lastId = isIdentifier(entityName) ? entityName : entityName.right; - const lastTypeArgs = lastId.typeArguments; - lastId.typeArguments = void 0; + const lastTypeArgs = getIdentifierTypeArguments(lastId); + setIdentifierTypeArguments( + lastId, + /*typeArguments*/ + void 0 + ); return factory.createTypeReferenceNode(entityName, lastTypeArgs); } function createAccessFromSymbolChain(chain2, index, stopper) { @@ -49739,7 +50271,9 @@ ${lanes.join("\n")} return factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(LHS, typeParameterNodes), factory.createLiteralTypeNode(factory.createStringLiteral(symbolName2))); } } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; if (index > stopper) { const LHS = createAccessFromSymbolChain(chain2, index - 1, stopper); @@ -49797,7 +50331,9 @@ ${lanes.join("\n")} text = `${rawtext}_${i}`; } if (text !== rawtext) { - result = factory.createIdentifier(text, result.typeArguments); + const typeArguments = getIdentifierTypeArguments(result); + result = factory.createIdentifier(text); + setIdentifierTypeArguments(result, typeArguments); } (context.typeParameterNamesByTextNextNameCount || (context.typeParameterNamesByTextNextNameCount = /* @__PURE__ */ new Map())).set(rawtext, i); (context.typeParameterNames || (context.typeParameterNames = /* @__PURE__ */ new Map())).set(getTypeId(type), result); @@ -49821,7 +50357,9 @@ ${lanes.join("\n")} if (index === 0) { context.flags ^= 16777216 /* InInitialEntityName */; } - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createQualifiedName(createEntityNameFromSymbolChain(chain2, index - 1), identifier) : identifier; } @@ -49844,7 +50382,9 @@ ${lanes.join("\n")} return factory.createStringLiteral(getSpecifierForModuleSymbol(symbol2, context)); } if (index === 0 || canUsePropertyAccess(symbolName2, languageVersion)) { - const identifier = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); identifier.symbol = symbol2; return index > 0 ? factory.createPropertyAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), identifier) : identifier; } else { @@ -49859,8 +50399,11 @@ ${lanes.join("\n")} expression = factory.createNumericLiteral(+symbolName2); } if (!expression) { - expression = setEmitFlags(factory.createIdentifier(symbolName2, typeParameterNodes), 33554432 /* NoAsciiEscaping */); - expression.symbol = symbol2; + const identifier = setEmitFlags(factory.createIdentifier(symbolName2), 33554432 /* NoAsciiEscaping */); + if (typeParameterNodes) + setIdentifierTypeArguments(identifier, factory.createNodeArray(typeParameterNodes)); + identifier.symbol = symbol2; + expression = identifier; } return factory.createElementAccessExpression(createExpressionFromSymbolChain(chain2, index - 1), expression); } @@ -50016,7 +50559,7 @@ ${lanes.join("\n")} } let hadError = false; const file = getSourceFileOfNode(existing); - const transformed = visitNode(existing, visitExistingNodeTreeSymbols); + const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); if (hadError) { return void 0; } @@ -50029,16 +50572,16 @@ ${lanes.join("\n")} return factory.createKeywordTypeNode(157 /* UnknownKeyword */); } if (isJSDocNullableType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createLiteralTypeNode(factory.createNull())]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); } if (isJSDocOptionalType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(155 /* UndefinedKeyword */)]); } if (isJSDocNonNullableType(node)) { return visitNode(node.type, visitExistingNodeTreeSymbols); } if (isJSDocVariadicType(node)) { - return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols)); + return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); } if (isJSDocTypeLiteral(node)) { return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { @@ -50050,7 +50593,7 @@ ${lanes.join("\n")} void 0, name, t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(57 /* QuestionToken */) : void 0, - overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); })); } @@ -50069,9 +50612,9 @@ ${lanes.join("\n")} "x", /*questionToken*/ void 0, - visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) )], - visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols) + visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) )]); } if (isJSDocFunctionType(node)) { @@ -50080,33 +50623,33 @@ ${lanes.join("\n")} return factory.createConstructorTypeNode( /*modifiers*/ void 0, - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } else { return factory.createFunctionTypeNode( - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols), + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), map(node.parameters, (p, i) => factory.createParameterDeclaration( /*modifiers*/ void 0, getEffectiveDotDotDotForParameter(p), getNameForJSDocFunctionParameter(p, i), p.questionToken, - visitNode(p.type, visitExistingNodeTreeSymbols), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), /*initializer*/ void 0 )), - visitNode(node.type, visitExistingNodeTreeSymbols) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ); } } @@ -50555,7 +51098,7 @@ ${lanes.join("\n")} /*modifiers*/ void 0, /*isTypeOnly*/ - false, + node.isTypeOnly, /*exportClause*/ void 0, factory.createStringLiteral(getSpecifierForModuleSymbol(resolvedModule, context)) @@ -51028,7 +51571,7 @@ ${lanes.join("\n")} break; } case 268 /* ImportEqualsDeclaration */: - if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, isJsonSourceFile)) { + if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, (d) => isSourceFile(d) && isJsonSourceFile(d))) { serializeMaybeAliasAssignment(symbol); break; } @@ -52123,6 +52666,12 @@ ${lanes.join("\n")} const isProperty = isPropertyDeclaration(declaration) && !hasAccessorModifier(declaration) || isPropertySignature(declaration) || isJSDocPropertyTag(declaration); const isOptional = includeOptionality && isOptionalDeclaration(declaration); const declaredType = tryGetTypeFromEffectiveTypeNode(declaration); + if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { + if (declaredType) { + return isTypeAny(declaredType) || declaredType === unknownType ? declaredType : errorType; + } + return useUnknownInCatchVariables ? unknownType : anyType; + } if (declaredType) { return addOptionality(declaredType, isProperty, isOptional); } @@ -52701,14 +53250,6 @@ ${lanes.join("\n")} } Debug.assertIsDefined(symbol.valueDeclaration); const declaration = symbol.valueDeclaration; - if (isCatchClauseVariableDeclarationOrBindingElement(declaration)) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); - if (typeNode === void 0) { - return useUnknownInCatchVariables ? unknownType : anyType; - } - const type2 = getTypeOfNode(typeNode); - return isTypeAny(type2) || type2 === unknownType ? type2 : errorType; - } if (isSourceFile(declaration) && isJsonSourceFile(declaration)) { if (!declaration.statements.length) { return emptyObjectType; @@ -53300,7 +53841,7 @@ ${lanes.join("\n")} baseType ); const diagnostic = chainDiagnosticMessages(elaboration, Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members, typeToString(reducedBaseType)); - diagnostics.add(createDiagnosticForNodeFromMessageChain(baseTypeNode.expression, diagnostic)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(baseTypeNode.expression), baseTypeNode.expression, diagnostic)); return type.resolvedBaseTypes = emptyArray; } if (type === reducedBaseType || hasBaseType(reducedBaseType, type)) { @@ -53701,7 +54242,7 @@ ${lanes.join("\n")} const links = getSymbolLinks(symbol); if (!links[resolutionKind]) { const isStatic2 = resolutionKind === "resolvedExports" /* resolvedExports */; - const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol) : symbol.exports; + const earlySymbols = !isStatic2 ? symbol.members : symbol.flags & 1536 /* Module */ ? getExportsOfModuleWorker(symbol).exports : symbol.exports; links[resolutionKind] = earlySymbols || emptySymbols; const lateSymbols = createSymbolTable(); for (const decl of symbol.declarations || emptyArray) { @@ -54690,7 +55231,7 @@ ${lanes.join("\n")} } function isConstTypeVariable(type) { var _a2; - return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); + return !!(type.flags & 262144 /* TypeParameter */ && some((_a2 = type.symbol) == null ? void 0 : _a2.declarations, (d) => hasSyntacticModifier(d, 2048 /* Const */)) || isGenericTupleType(type) && findIndex(getTypeArguments(type), (t, i) => !!(type.target.elementFlags[i] & 8 /* Variadic */) && isConstTypeVariable(t)) >= 0 || type.flags & 8388608 /* IndexedAccess */ && isConstTypeVariable(type.objectType)); } function getConstraintOfIndexedAccess(type) { return hasNonCircularBaseConstraint(type) ? getConstraintFromIndexedAccess(type) : void 0; @@ -55914,6 +56455,12 @@ ${lanes.join("\n")} } return result & 458752 /* PropagatingFlags */; } + function tryCreateTypeReference(target, typeArguments) { + if (some(typeArguments) && target === emptyGenericType) { + return unknownType; + } + return createTypeReference(target, typeArguments); + } function createTypeReference(target, typeArguments) { const id = getTypeListId(typeArguments); let type = target.instantiations.get(id); @@ -56608,6 +57155,78 @@ ${lanes.join("\n")} false )) || emptyObjectType; } + function getGlobalClassDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassDecoratorContextType != null ? deferredGlobalClassDecoratorContextType : deferredGlobalClassDecoratorContextType = getGlobalType( + "ClassDecoratorContext", + /*arity*/ + 1, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassMethodDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassMethodDecoratorContextType != null ? deferredGlobalClassMethodDecoratorContextType : deferredGlobalClassMethodDecoratorContextType = getGlobalType( + "ClassMethodDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassGetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassGetterDecoratorContextType != null ? deferredGlobalClassGetterDecoratorContextType : deferredGlobalClassGetterDecoratorContextType = getGlobalType( + "ClassGetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassSetterDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassSetterDecoratorContextType != null ? deferredGlobalClassSetterDecoratorContextType : deferredGlobalClassSetterDecoratorContextType = getGlobalType( + "ClassSetterDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorContextType != null ? deferredGlobalClassAccessorDecoratorContextType : deferredGlobalClassAccessorDecoratorContextType = getGlobalType( + "ClassAccessorDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorTargetType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorTargetType != null ? deferredGlobalClassAccessorDecoratorTargetType : deferredGlobalClassAccessorDecoratorTargetType = getGlobalType( + "ClassAccessorDecoratorTarget", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassAccessorDecoratorResultType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassAccessorDecoratorResultType != null ? deferredGlobalClassAccessorDecoratorResultType : deferredGlobalClassAccessorDecoratorResultType = getGlobalType( + "ClassAccessorDecoratorResult", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } + function getGlobalClassFieldDecoratorContextType(reportErrors2) { + var _a2; + return (_a2 = deferredGlobalClassFieldDecoratorContextType != null ? deferredGlobalClassFieldDecoratorContextType : deferredGlobalClassFieldDecoratorContextType = getGlobalType( + "ClassFieldDecoratorContext", + /*arity*/ + 2, + reportErrors2 + )) != null ? _a2 : emptyGenericType; + } function getGlobalNaNSymbol() { return deferredGlobalNaNSymbol || (deferredGlobalNaNSymbol = getGlobalValueSymbol( "NaN", @@ -57918,7 +58537,7 @@ ${lanes.join("\n")} typeToString(fullIndexType), typeToString(objectType) ); - diagnostics.add(createDiagnosticForNodeFromMessageChain(accessExpression, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(accessExpression), accessExpression, errorInfo)); } } } @@ -60332,7 +60951,7 @@ ${lanes.join("\n")} } } } - const diag2 = createDiagnosticForNodeFromMessageChain(errorNode, errorInfo, relatedInformation); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, errorInfo, relatedInformation); if (relatedInfo) { addRelatedInfo(diag2, ...relatedInfo); } @@ -63375,19 +63994,22 @@ ${lanes.join("\n")} break; case 166 /* Parameter */: const param = declaration; - if (isIdentifier(param.name) && (isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( - param, - param.name.escapedText, - 788968 /* Type */, - void 0, - param.name.escapedText, - /*isUse*/ - true - ) || param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) { - const newName = "arg" + param.parent.parameters.indexOf(param); - const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); - errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); - return; + if (isIdentifier(param.name)) { + const originalKeywordKind = identifierToKeywordKind(param.name); + if ((isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) && param.parent.parameters.indexOf(param) > -1 && (resolveName( + param, + param.name.escapedText, + 788968 /* Type */, + void 0, + param.name.escapedText, + /*isUse*/ + true + ) || originalKeywordKind && isTypeNodeKind(originalKeywordKind))) { + const newName = "arg" + param.parent.parameters.indexOf(param); + const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : ""); + errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName); + return; + } } diagnostic = declaration.dotDotDotToken ? noImplicitAny ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage : noImplicitAny ? Diagnostics.Parameter_0_implicitly_has_an_1_type : Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; break; @@ -63575,6 +64197,10 @@ ${lanes.join("\n")} function isTypeParameterAtTopLevel(type, typeParameter) { return !!(type === typeParameter || type.flags & 3145728 /* UnionOrIntersection */ && some(type.types, (t) => isTypeParameterAtTopLevel(t, typeParameter)) || type.flags & 16777216 /* Conditional */ && (getTrueTypeFromConditionalType(type) === typeParameter || getFalseTypeFromConditionalType(type) === typeParameter)); } + function isTypeParameterAtTopLevelInReturnType(signature, typeParameter) { + const typePredicate = getTypePredicateOfSignature(signature); + return typePredicate ? !!typePredicate.type && isTypeParameterAtTopLevel(typePredicate.type, typeParameter) : isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), typeParameter); + } function createEmptyObjectTypeFromStringLiteral(type) { const members = createSymbolTable(); forEachType(type, (t) => { @@ -64298,7 +64924,7 @@ ${lanes.join("\n")} } else { const middleLength = targetArity - startLength - endLength; if (middleLength === 2) { - if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + if (elementFlags[startLength] & elementFlags[startLength + 1] & 8 /* Variadic */) { const targetInfo = getInferenceInfoForType(elementTypes[startLength]); if (targetInfo && targetInfo.impliedArity !== void 0) { inferFromTypes(sliceTupleType(source, startLength, endLength + sourceArity - targetInfo.impliedArity), elementTypes[startLength]); @@ -64312,7 +64938,7 @@ ${lanes.join("\n")} inferFromTypes(sliceTupleType(source, startLength, sourceArity - (startLength + impliedArity)), elementTypes[startLength]); inferFromTypes(getElementTypeOfSliceOfTupleType(source, startLength + impliedArity, endLength), elementTypes[startLength + 1]); } - } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */ && isTupleType(source)) { + } else if (elementFlags[startLength] & 4 /* Rest */ && elementFlags[startLength + 1] & 8 /* Variadic */) { const param = (_b = getInferenceInfoForType(elementTypes[startLength + 1])) == null ? void 0 : _b.typeParameter; const constraint = param && getBaseConstraintOfType(param); if (constraint && isTupleType(constraint) && !constraint.target.hasRestElement) { @@ -64332,10 +64958,10 @@ ${lanes.join("\n")} } } else if (middleLength === 1 && elementFlags[startLength] & 8 /* Variadic */) { const endsInOptional = target.target.elementFlags[targetArity - 1] & 2 /* Optional */; - const sourceSlice = isTupleType(source) ? sliceTupleType(source, startLength, endLength) : createArrayType(getTypeArguments(source)[0]); + const sourceSlice = sliceTupleType(source, startLength, endLength); inferWithPriority(sourceSlice, elementTypes[startLength], endsInOptional ? 2 /* SpeculativeTuple */ : 0); } else if (middleLength === 1 && elementFlags[startLength] & 4 /* Rest */) { - const restType = isTupleType(source) ? getElementTypeOfSliceOfTupleType(source, startLength, endLength) : getTypeArguments(source)[0]; + const restType = getElementTypeOfSliceOfTupleType(source, startLength, endLength); if (restType) { inferFromTypes(restType, elementTypes[startLength]); } @@ -64446,7 +65072,7 @@ ${lanes.join("\n")} function getCovariantInference(inference, signature) { const candidates = unionObjectAndArrayLiteralCandidates(inference.candidates); const primitiveConstraint = hasPrimitiveConstraint(inference.typeParameter) || isConstTypeVariable(inference.typeParameter); - const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevel(getReturnTypeOfSignature(signature), inference.typeParameter)); + const widenLiteralTypes = !primitiveConstraint && inference.topLevel && (inference.isFixed || !isTypeParameterAtTopLevelInReturnType(signature, inference.typeParameter)); const baseCandidates = primitiveConstraint ? sameMap(candidates, getRegularTypeOfLiteralType) : widenLiteralTypes ? sameMap(candidates, getWidenedLiteralType) : candidates; const unwidenedType = inference.priority & 416 /* PriorityImpliesCombination */ ? getUnionType(baseCandidates, 2 /* Subtype */) : getCommonSupertype(baseCandidates); return getWidenedType(unwidenedType); @@ -66501,7 +67127,7 @@ ${lanes.join("\n")} return getNonMissingTypeOfSymbol(symbol); } function getControlFlowContainer(node) { - return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 169 /* PropertyDeclaration */); + return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 265 /* ModuleBlock */ || node2.kind === 308 /* SourceFile */ || node2.kind === 295 /* CatchClause */ || node2.kind === 169 /* PropertyDeclaration */); } function isSymbolAssigned(symbol) { if (!symbol.valueDeclaration) { @@ -66583,6 +67209,9 @@ ${lanes.join("\n")} }); } function markAliasReferenced(symbol, location) { + if (compilerOptions.verbatimModuleSyntax) { + return; + } if (isNonLocalAlias( symbol, /*excludes*/ @@ -66590,7 +67219,7 @@ ${lanes.join("\n")} ) && !isInTypeQuery(location) && !getTypeOnlyAliasDeclaration(symbol, 111551 /* Value */)) { const target = resolveAlias(symbol); if (getAllSymbolFlags(target) & (111551 /* Value */ | 1048576 /* ExportValue */)) { - if (compilerOptions.isolatedModules || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { + if (getIsolatedModules(compilerOptions) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(getExportSymbolOfValueSymbolIfExported(target))) { markAliasSymbolAsReferenced(symbol); } else { markConstEnumAliasAsReferenced(symbol); @@ -66599,6 +67228,7 @@ ${lanes.join("\n")} } } function getNarrowedTypeOfSymbol(symbol, location) { + var _a2; const type = getTypeOfSymbol(symbol); const declaration = symbol.valueDeclaration; if (declaration) { @@ -66634,7 +67264,7 @@ ${lanes.join("\n")} if (func.parameters.length >= 2 && isContextSensitiveFunctionOrObjectLiteralMethod(func)) { const contextualSignature = getContextualSignature(func); if (contextualSignature && contextualSignature.parameters.length === 1 && signatureHasRestParameter(contextualSignature)) { - const restType = getReducedApparentType(getTypeOfSymbol(contextualSignature.parameters[0])); + const restType = getReducedApparentType(instantiateType(getTypeOfSymbol(contextualSignature.parameters[0]), (_a2 = getInferenceContext(func)) == null ? void 0 : _a2.nonFixingMapper)); if (restType.flags & 1048576 /* Union */ && everyType(restType, isTupleType) && !isSymbolAssigned(symbol)) { const narrowedType = getFlowTypeOfReference( func, @@ -66687,7 +67317,7 @@ ${lanes.join("\n")} } let declaration = localOrExportSymbol.valueDeclaration; if (declaration && localOrExportSymbol.flags & 32 /* Class */) { - if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(declaration)) { + if (declaration.kind === 260 /* ClassDeclaration */ && nodeIsDecorated(legacyDecorators, declaration)) { let container = getContainingClass(node); while (container !== void 0) { if (container === declaration && container.name !== node) { @@ -66758,13 +67388,14 @@ ${lanes.join("\n")} const isParameter2 = getRootDeclaration(declaration).kind === 166 /* Parameter */; const declarationContainer = getControlFlowContainer(declaration); let flowContainer = getControlFlowContainer(node); + const isCatch = flowContainer.kind === 295 /* CatchClause */; const isOuterVariable = flowContainer !== declarationContainer; const isSpreadDestructuringAssignmentTarget = node.parent && node.parent.parent && isSpreadAssignment(node.parent) && isDestructuringAssignmentTarget(node.parent.parent); const isModuleExports = symbol.flags & 134217728 /* ModuleExports */; while (flowContainer !== declarationContainer && (flowContainer.kind === 215 /* FunctionExpression */ || flowContainer.kind === 216 /* ArrowFunction */ || isObjectLiteralOrClassExpressionMethodOrAccessor(flowContainer)) && (isConstVariable(localOrExportSymbol) && type !== autoArrayType || isParameter2 && !isSymbolAssigned(localOrExportSymbol))) { flowContainer = getControlFlowContainer(flowContainer); } - const assumeInitialized = isParameter2 || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; + const assumeInitialized = isParameter2 || isCatch || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 278 /* ExportSpecifier */) || node.parent.kind === 232 /* NonNullExpression */ || declaration.kind === 257 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 16777216 /* Ambient */; const initialType = assumeInitialized ? isParameter2 ? removeOptionalityFromDeclaredType(type, declaration) : type : type === autoType || type === autoArrayType ? undefinedType : getOptionalType(type); const flowType = getFlowTypeOfReference(node, type, initialType, flowContainer); if (!isEvolvingArrayOperationTarget(node) && (type === autoType || type === autoArrayType)) { @@ -66911,7 +67542,7 @@ ${lanes.join("\n")} } } function checkThisInStaticClassFieldInitializerInDecoratedClass(thisExpression, container) { - if (isPropertyDeclaration(container) && hasStaticModifier(container) && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { + if (isPropertyDeclaration(container) && hasStaticModifier(container) && legacyDecorators && container.initializer && textRangeContainsPositionInclusive(container.initializer, thisExpression.pos) && hasDecorators(container.parent)) { error(thisExpression, Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class); } } @@ -67289,7 +67920,7 @@ ${lanes.join("\n")} } } function getContextualTypeForVariableLikeDeclaration(declaration, contextFlags) { - const typeNode = getEffectiveTypeAnnotationNode(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration) || (isInJSFile(declaration) ? tryGetJSDocSatisfiesTypeNode(declaration) : void 0); if (typeNode) { return getTypeFromTypeNode(typeNode); } @@ -67455,6 +68086,10 @@ ${lanes.join("\n")} const restIndex = signature.parameters.length - 1; return signatureHasRestParameter(signature) && argIndex >= restIndex ? getIndexedAccessType(getTypeOfSymbol(signature.parameters[restIndex]), getNumberLiteralType(argIndex - restIndex), 256 /* Contextual */) : getTypeAtPosition(signature, argIndex); } + function getContextualTypeForDecorator(decorator) { + const signature = getDecoratorCallSignature(decorator); + return signature ? getOrCreateTypeFromSignature(signature) : void 0; + } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { if (template.parent.kind === 212 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); @@ -67855,7 +68490,9 @@ ${lanes.join("\n")} } const index = findContextualNode(node); if (index >= 0) { - return contextualTypes[index]; + const cached = contextualTypes[index]; + if (cached || !contextFlags) + return cached; } const { parent: parent2 } = node; switch (parent2.kind) { @@ -67875,6 +68512,8 @@ ${lanes.join("\n")} case 210 /* CallExpression */: case 211 /* NewExpression */: return getContextualTypeForArgument(parent2, node); + case 167 /* Decorator */: + return getContextualTypeForDecorator(parent2); case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: return isConstTypeReference(parent2.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(parent2.type); @@ -67896,8 +68535,16 @@ ${lanes.join("\n")} Debug.assert(parent2.parent.kind === 225 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent2.parent, node); case 214 /* ParenthesizedExpression */: { - const tag = isInJSFile(parent2) ? getJSDocTypeTag(parent2) : void 0; - return !tag ? getContextualType2(parent2, contextFlags) : isJSDocTypeTag(tag) && isConstTypeReference(tag.typeExpression.type) ? getContextualType2(parent2, contextFlags) : getTypeFromTypeNode(tag.typeExpression.type); + if (isInJSFile(parent2)) { + if (isJSDocSatisfiesExpression(parent2)) { + return getTypeFromTypeNode(getJSDocSatisfiesExpressionType(parent2)); + } + const typeTag = getJSDocTypeTag(parent2); + if (typeTag && !isConstTypeReference(typeTag.typeExpression.type)) { + return getTypeFromTypeNode(typeTag.typeExpression.type); + } + } + return getContextualType2(parent2, contextFlags); } case 232 /* NonNullExpression */: return getContextualType2(parent2, contextFlags); @@ -69049,7 +69696,7 @@ ${lanes.join("\n")} } if (jsxFactorySym) { jsxFactorySym.isReferenced = 67108863 /* All */; - if (jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { + if (!compilerOptions.verbatimModuleSyntax && jsxFactorySym.flags & 2097152 /* Alias */ && !getTypeOnlyAliasDeclaration(jsxFactorySym)) { markAliasSymbolAsReferenced(jsxFactorySym); } } @@ -69506,7 +70153,7 @@ ${lanes.join("\n")} node.kind === 163 /* QualifiedName */ ); } - if (isIdentifier(left) && parentSymbol && (compilerOptions.isolatedModules || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { + if (isIdentifier(left) && parentSymbol && (getIsolatedModules(compilerOptions) || !(prop && (isConstEnumOrConstEnumOnlyModule(prop) || prop.flags & 8 /* EnumMember */ && node.parent.kind === 302 /* EnumMember */)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { markAliasReferenced(parentSymbol, node); } let propType; @@ -69715,7 +70362,7 @@ ${lanes.join("\n")} } } } - const resultDiagnostic = createDiagnosticForNodeFromMessageChain(propNode, errorInfo); + const resultDiagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(propNode), propNode, errorInfo); if (relatedInfo) { addRelatedInfo(resultDiagnostic, relatedInfo); } @@ -70577,35 +71224,22 @@ ${lanes.join("\n")} return args; } function getEffectiveDecoratorArguments(node) { - const parent2 = node.parent; const expr = node.expression; - switch (parent2.kind) { - case 260 /* ClassDeclaration */: - case 228 /* ClassExpression */: - return [ - createSyntheticExpression(expr, getTypeOfSymbol(getSymbolOfDeclaration(parent2))) - ]; - case 166 /* Parameter */: - const func = parent2.parent; - return [ - createSyntheticExpression(expr, parent2.parent.kind === 173 /* Constructor */ ? getTypeOfSymbol(getSymbolOfDeclaration(func)) : errorType), - createSyntheticExpression(expr, anyType), - createSyntheticExpression(expr, numberType) - ]; - case 169 /* PropertyDeclaration */: - case 171 /* MethodDeclaration */: - case 174 /* GetAccessor */: - case 175 /* SetAccessor */: - const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); - return [ - createSyntheticExpression(expr, getParentTypeOfClassElement(parent2)), - createSyntheticExpression(expr, getClassElementPropertyKeyType(parent2)), - createSyntheticExpression(expr, hasPropDesc ? createTypedPropertyDescriptorType(getTypeOfNode(parent2)) : anyType) - ]; + const signature = getDecoratorCallSignature(node); + if (signature) { + const args = []; + for (const param of signature.parameters) { + const type = getTypeOfSymbol(param); + args.push(createSyntheticExpression(expr, type)); + } + return args; } return Debug.fail(); } function getDecoratorArgumentCount(node, signature) { + return compilerOptions.experimentalDecorators ? getLegacyDecoratorArgumentCount(node, signature) : 2; + } + function getLegacyDecoratorArgumentCount(node, signature) { switch (node.parent.kind) { case 260 /* ClassDeclaration */: case 228 /* ClassExpression */: @@ -70640,9 +71274,15 @@ ${lanes.join("\n")} function getDiagnosticForCallNode(node, message, arg0, arg1, arg2, arg3) { if (isCallExpression(node)) { const { sourceFile, start, length: length2 } = getDiagnosticSpanForCallNode(node); - return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createFileDiagnostic(sourceFile, start, length2, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForFileFromMessageChain(sourceFile, message); } else { - return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + if ("message" in message) { + return createDiagnosticForNode(node, message, arg0, arg1, arg2, arg3); + } + return createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, message); } } function isPromiseResolveArityError(node) { @@ -70666,7 +71306,7 @@ ${lanes.join("\n")} ); return constructorSymbol === globalPromiseSymbol; } - function getArgumentArityError(node, signatures, args) { + function getArgumentArityError(node, signatures, args, headMessage) { var _a2; const spreadIndex = getSpreadArgumentIndex(args); if (spreadIndex > -1) { @@ -70696,11 +71336,36 @@ ${lanes.join("\n")} if (isVoidPromiseError && isInJSFile(node)) { return getDiagnosticForCallNode(node, Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); } - const error2 = hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; + const error2 = isDecorator(node) ? hasRestParameter2 ? Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0 : Diagnostics.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0 : hasRestParameter2 ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : isVoidPromiseError ? Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : Diagnostics.Expected_0_arguments_but_got_1; if (min2 < args.length && args.length < max) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, + args.length, + maxBelow, + minAbove + ); + chain = chainDiagnosticMessages(chain, headMessage); + return getDiagnosticForCallNode(node, chain); + } return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, args.length, maxBelow, minAbove); } else if (args.length < min2) { - const diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + let diagnostic; + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + diagnostic = getDiagnosticForCallNode(node, chain); + } else { + diagnostic = getDiagnosticForCallNode(node, error2, parameterRange, args.length); + } const parameter = (_a2 = closestSignature == null ? void 0 : closestSignature.declaration) == null ? void 0 : _a2.parameters[closestSignature.thisParameter ? args.length + 1 : args.length]; if (parameter) { const parameterError = createDiagnosticForNode( @@ -70719,15 +71384,37 @@ ${lanes.join("\n")} end++; } setTextRangePosEnd(errorSpan, pos, end); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + error2, + parameterRange, + args.length + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), errorSpan, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), errorSpan, error2, parameterRange, args.length); } } - function getTypeArgumentArityError(node, signatures, typeArguments) { + function getTypeArgumentArityError(node, signatures, typeArguments, headMessage) { const argCount = typeArguments.length; if (signatures.length === 1) { const sig = signatures[0]; const min2 = getMinTypeArgumentCount(sig.typeParameters); const max = length(sig.typeParameters); + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + min2 < max ? min2 + "-" + max : min2, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, min2 < max ? min2 + "-" + max : min2, argCount); } let belowArgCount = -Infinity; @@ -70742,11 +71429,34 @@ ${lanes.join("\n")} } } if (belowArgCount !== -Infinity && aboveArgCount !== Infinity) { + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, + argCount, + belowArgCount, + aboveArgCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, argCount, belowArgCount, aboveArgCount); } + if (headMessage) { + let chain = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Expected_0_type_arguments_but_got_1, + belowArgCount === -Infinity ? aboveArgCount : belowArgCount, + argCount + ); + chain = chainDiagnosticMessages(chain, headMessage); + return createDiagnosticForNodeArrayFromMessageChain(getSourceFileOfNode(node), typeArguments, chain); + } return createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, belowArgCount === -Infinity ? aboveArgCount : belowArgCount, argCount); } - function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, fallbackError) { + function resolveCall(node, signatures, candidatesOutArray, checkMode, callChainFlags, headMessage) { const isTaggedTemplate = node.kind === 212 /* TaggedTemplateExpression */; const isDecorator2 = node.kind === 167 /* Decorator */; const isJsxOpeningOrSelfClosingElement = isJsxOpeningLikeElement(node); @@ -70795,6 +71505,9 @@ ${lanes.join("\n")} chain = chainDiagnosticMessages(chain, Diagnostics.The_last_overload_gave_the_following_error); chain = chainDiagnosticMessages(chain, Diagnostics.No_overload_matches_this_call); } + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const diags = getSignatureApplicabilityError( node, args, @@ -70855,39 +71568,40 @@ ${lanes.join("\n")} } const diags = max > 1 ? allDiagnostics[minIndex] : flatten(allDiagnostics); Debug.assert(diags.length > 0, "No errors reported for 3 or fewer overload signatures"); - const chain = chainDiagnosticMessages( + let chain = chainDiagnosticMessages( map(diags, createDiagnosticMessageChainFromDiagnostic), Diagnostics.No_overload_matches_this_call ); + if (headMessage) { + chain = chainDiagnosticMessages(chain, headMessage); + } const related = [...flatMap(diags, (d) => d.relatedInformation)]; let diag2; if (every(diags, (d) => d.start === diags[0].start && d.length === diags[0].length && d.file === diags[0].file)) { const { file, start, length: length2 } = diags[0]; diag2 = { file, start, length: length2, code: chain.code, category: chain.category, messageText: chain, relatedInformation: related }; } else { - diag2 = createDiagnosticForNodeFromMessageChain(node, chain, related); + diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, chain, related); } addImplementationSuccessElaboration(candidatesForArgumentError[0], diag2); diagnostics.add(diag2); } } else if (candidateForArgumentArityError) { - diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args)); + diagnostics.add(getArgumentArityError(node, [candidateForArgumentArityError], args, headMessage)); } else if (candidateForTypeArgumentError) { checkTypeArguments( candidateForTypeArgumentError, node.typeArguments, /*reportErrors*/ true, - fallbackError + headMessage ); } else { const signaturesWithCorrectTypeArgumentArity = filter(signatures, (s) => hasCorrectTypeArgumentArity(s, typeArguments)); if (signaturesWithCorrectTypeArgumentArity.length === 0) { - diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments)); - } else if (!isDecorator2) { - diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args)); - } else if (fallbackError) { - diagnostics.add(getDiagnosticForCallNode(node, fallbackError)); + diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments, headMessage)); + } else { + diagnostics.add(getArgumentArityError(node, signaturesWithCorrectTypeArgumentArity, args, headMessage)); } } } @@ -71390,7 +72104,7 @@ ${lanes.join("\n")} } function invocationError(errorTarget, apparentType, kind, relatedInformation) { const { messageChain, relatedMessage: relatedInfo } = invocationErrorDetails(errorTarget, apparentType, kind); - const diagnostic = createDiagnosticForNodeFromMessageChain(errorTarget, messageChain); + const diagnostic = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorTarget), errorTarget, messageChain); if (relatedInfo) { addRelatedInfo(diagnostic, createDiagnosticForNode(errorTarget, relatedInfo)); } @@ -71471,7 +72185,7 @@ ${lanes.join("\n")} if (isUntypedFunctionCall(funcType, apparentType, callSignatures.length, numConstructSignatures)) { return resolveUntypedCall(node); } - if (isPotentiallyUncalledDecorator(node, callSignatures)) { + if (isPotentiallyUncalledDecorator(node, callSignatures) && !isParenthesizedExpression(node.expression)) { const nodeStr = getTextOfNode( node.expression, /*includeTrivia*/ @@ -71484,7 +72198,7 @@ ${lanes.join("\n")} if (!callSignatures.length) { const errorDetails = invocationErrorDetails(node.expression, apparentType, 0 /* Call */); const messageChain = chainDiagnosticMessages(errorDetails.messageChain, headMessage); - const diag2 = createDiagnosticForNodeFromMessageChain(node.expression, messageChain); + const diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node.expression), node.expression, messageChain); if (errorDetails.relatedMessage) { addRelatedInfo(diag2, createDiagnosticForNode(node.expression, errorDetails.relatedMessage)); } @@ -72101,12 +72815,15 @@ ${lanes.join("\n")} } function checkSatisfiesExpression(node) { checkSourceElement(node.type); - const exprType = checkExpression(node.expression); - const targetType = getTypeFromTypeNode(node.type); + return checkSatisfiesExpressionWorker(node.expression, node.type); + } + function checkSatisfiesExpressionWorker(expression, target, checkMode) { + const exprType = checkExpression(expression, checkMode); + const targetType = getTypeFromTypeNode(target); if (isErrorType(targetType)) { return targetType; } - checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, node.type, node.expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); + checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, target, expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); return exprType; } function checkMetaProperty(node) { @@ -72444,6 +73161,243 @@ ${lanes.join("\n")} } } } + function createClassDecoratorContextType(classType) { + return tryCreateTypeReference(getGlobalClassDecoratorContextType( + /*reportErrors*/ + true + ), [classType]); + } + function createClassMethodDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassMethodDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassGetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassGetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassSetterDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassSetterDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorContextType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassFieldDecoratorContextType( + /*reportErrors*/ + true + ), [thisType, valueType]); + } + function getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2) { + const key = `${isPrivate ? "p" : "P"}${isStatic2 ? "s" : "S"}${nameType.id}`; + let overrideType = decoratorContextOverrideTypeCache.get(key); + if (!overrideType) { + const members = createSymbolTable(); + members.set("name", createProperty("name", nameType)); + members.set("private", createProperty("private", isPrivate ? trueType : falseType)); + members.set("static", createProperty("static", isStatic2 ? trueType : falseType)); + overrideType = createAnonymousType( + /*symbol*/ + void 0, + members, + emptyArray, + emptyArray, + emptyArray + ); + decoratorContextOverrideTypeCache.set(key, overrideType); + } + return overrideType; + } + function createClassMemberDecoratorContextTypeForNode(node, thisType, valueType) { + const isStatic2 = hasStaticModifier(node); + const isPrivate = isPrivateIdentifier(node.name); + const nameType = isPrivate ? getStringLiteralType(idText(node.name)) : getLiteralTypeFromPropertyName(node.name); + const contextType = isMethodDeclaration(node) ? createClassMethodDecoratorContextType(thisType, valueType) : isGetAccessorDeclaration(node) ? createClassGetterDecoratorContextType(thisType, valueType) : isSetAccessorDeclaration(node) ? createClassSetterDecoratorContextType(thisType, valueType) : isAutoAccessorPropertyDeclaration(node) ? createClassAccessorDecoratorContextType(thisType, valueType) : isPropertyDeclaration(node) ? createClassFieldDecoratorContextType(thisType, valueType) : Debug.failBadSyntaxKind(node); + const overrideType = getClassMemberDecoratorContextOverrideType(nameType, isPrivate, isStatic2); + return getIntersectionType([contextType, overrideType]); + } + function createClassAccessorDecoratorTargetType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorTargetType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassAccessorDecoratorResultType(thisType, valueType) { + return tryCreateTypeReference(getGlobalClassAccessorDecoratorResultType( + /*reportError*/ + true + ), [thisType, valueType]); + } + function createClassFieldDecoratorInitializerMutatorType(thisType, valueType) { + const thisParam = createParameter("this", thisType); + const valueParam = createParameter("value", valueType); + return createFunctionType( + /*typeParameters*/ + void 0, + thisParam, + [valueParam], + valueType, + /*typePredicate*/ + void 0, + 1 + ); + } + function createESDecoratorCallSignature(targetType, contextType, nonOptionalReturnType) { + const targetParam = createParameter("target", targetType); + const contextParam = createParameter("context", contextType); + const returnType = getUnionType([nonOptionalReturnType, voidType]); + return createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, contextParam], + returnType + ); + } + function getESDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const contextType = createClassDecoratorContextType(targetType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, targetType); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = isMethodDeclaration(node) ? getOrCreateTypeFromSignature(getSignatureFromDeclaration(node)) : getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = isGetAccessorDeclaration(node) ? createGetterFunctionType(valueType) : isSetAccessorDeclaration(node) ? createSetterFunctionType(valueType) : valueType; + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const valueType = getTypeOfNode(node); + const thisType = hasStaticModifier(node) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent)) : getDeclaredTypeOfClassOrInterface(getSymbolOfDeclaration(node.parent)); + const targetType = hasAccessorModifier(node) ? createClassAccessorDecoratorTargetType(thisType, valueType) : undefinedType; + const contextType = createClassMemberDecoratorContextTypeForNode(node, thisType, valueType); + const returnType = hasAccessorModifier(node) ? createClassAccessorDecoratorResultType(thisType, valueType) : createClassFieldDecoratorInitializerMutatorType(thisType, valueType); + links.decoratorSignature = createESDecoratorCallSignature(targetType, contextType, returnType); + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getLegacyDecoratorCallSignature(decorator) { + const { parent: parent2 } = decorator; + const links = getNodeLinks(parent2); + if (!links.decoratorSignature) { + links.decoratorSignature = anySignature; + switch (parent2.kind) { + case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: { + const node = parent2; + const targetType = getTypeOfSymbol(getSymbolOfDeclaration(node)); + const targetParam = createParameter("target", targetType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam], + getUnionType([targetType, voidType]) + ); + break; + } + case 166 /* Parameter */: { + const node = parent2; + if (!isConstructorDeclaration(node.parent) && !(isMethodDeclaration(node.parent) || isSetAccessorDeclaration(node.parent) && isClassLike(node.parent.parent))) { + break; + } + if (getThisParameter(node.parent) === node) { + break; + } + const index = getThisParameter(node.parent) ? node.parent.parameters.indexOf(node) - 1 : node.parent.parameters.indexOf(node); + Debug.assert(index >= 0); + const targetType = isConstructorDeclaration(node.parent) ? getTypeOfSymbol(getSymbolOfDeclaration(node.parent.parent)) : getParentTypeOfClassElement(node.parent); + const keyType = isConstructorDeclaration(node.parent) ? undefinedType : getClassElementPropertyKeyType(node.parent); + const indexType = getNumberLiteralType(index); + const targetParam = createParameter("target", targetType); + const keyParam = createParameter("propertyKey", keyType); + const indexParam = createParameter("parameterIndex", indexType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, indexParam], + voidType + ); + break; + } + case 171 /* MethodDeclaration */: + case 174 /* GetAccessor */: + case 175 /* SetAccessor */: + case 169 /* PropertyDeclaration */: { + const node = parent2; + if (!isClassLike(node.parent)) + break; + const targetType = getParentTypeOfClassElement(node); + const targetParam = createParameter("target", targetType); + const keyType = getClassElementPropertyKeyType(node); + const keyParam = createParameter("propertyKey", keyType); + const returnType = isPropertyDeclaration(node) ? voidType : createTypedPropertyDescriptorType(getTypeOfNode(node)); + const hasPropDesc = languageVersion !== 0 /* ES3 */ && (!isPropertyDeclaration(parent2) || hasAccessorModifier(parent2)); + if (hasPropDesc) { + const descriptorType = createTypedPropertyDescriptorType(getTypeOfNode(node)); + const descriptorParam = createParameter("descriptor", descriptorType); + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam, descriptorParam], + getUnionType([returnType, voidType]) + ); + } else { + links.decoratorSignature = createCallSignature( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [targetParam, keyParam], + getUnionType([returnType, voidType]) + ); + } + break; + } + } + } + return links.decoratorSignature === anySignature ? void 0 : links.decoratorSignature; + } + function getDecoratorCallSignature(decorator) { + return legacyDecorators ? getLegacyDecoratorCallSignature(decorator) : getESDecoratorCallSignature(decorator); + } function createPromiseType(promisedType) { const globalPromiseType = getGlobalPromiseType( /*reportErrors*/ @@ -73513,12 +74467,12 @@ ${lanes.join("\n")} void 0 ); const operator = operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { - if (operator === 55 /* AmpersandAmpersandToken */) { - let parent2 = node.parent; - while (parent2.kind === 214 /* ParenthesizedExpression */ || isBinaryExpression(parent2) && (parent2.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || parent2.operatorToken.kind === 56 /* BarBarToken */)) { - parent2 = parent2.parent; - } + if (isLogicalOrCoalescingBinaryOperator(operator)) { + let parent2 = node.parent; + while (parent2.kind === 214 /* ParenthesizedExpression */ || isLogicalOrCoalescingBinaryExpression(parent2)) { + parent2 = parent2.parent; + } + if (operator === 55 /* AmpersandAmpersandToken */ || isIfStatement(parent2)) { checkTestingKnownTruthyCallableOrAwaitableType(node.left, leftType, isIfStatement(parent2) ? parent2.thenStatement : void 0); } checkTruthinessOfType(leftType, node.left); @@ -73595,7 +74549,7 @@ ${lanes.join("\n")} return checkDestructuringAssignment(left, checkExpression(right, checkMode), checkMode, right.kind === 108 /* ThisKeyword */); } let leftType; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */) { + if (isLogicalOrCoalescingBinaryOperator(operator)) { leftType = checkTruthinessExpression(left, checkMode); } else { leftType = checkExpression(left, checkMode); @@ -73746,7 +74700,14 @@ ${lanes.join("\n")} if (checkForDisallowedESSymbolOperand(operator)) { leftType = getBaseTypeOfLiteralType(checkNonNullType(leftType, left)); rightType = getBaseTypeOfLiteralType(checkNonNullType(rightType, right)); - reportOperatorErrorUnless((left2, right2) => isTypeComparableTo(left2, right2) || isTypeComparableTo(right2, left2) || isTypeAssignableTo(left2, numberOrBigIntType) && isTypeAssignableTo(right2, numberOrBigIntType)); + reportOperatorErrorUnless((left2, right2) => { + if (isTypeAny(left2) || isTypeAny(right2)) { + return true; + } + const leftAssignableToNumber = isTypeAssignableTo(left2, numberOrBigIntType); + const rightAssignableToNumber = isTypeAssignableTo(right2, numberOrBigIntType); + return leftAssignableToNumber && rightAssignableToNumber || !leftAssignableToNumber && !rightAssignableToNumber && areTypesComparable(left2, right2); + }); } return booleanType; case 34 /* EqualsEqualsToken */: @@ -73879,7 +74840,7 @@ ${lanes.join("\n")} left, Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access - ) && (!isIdentifier(left) || unescapeLeadingUnderscores(left.escapedText) !== "exports")) { + )) { let headMessage; if (exactOptionalPropertyTypes && isPropertyAccessExpression(left) && maybeTypeOfKind(valueType, 32768 /* Undefined */)) { const target = getTypeOfPropertyOfType(getTypeOfExpression(left.expression), left.name.escapedText); @@ -74128,7 +75089,7 @@ ${lanes.join("\n")} } return links.resolvedType; } - function isTypeAssertion3(node) { + function isTypeAssertion(node) { node = skipParentheses( node, /*excludeJSDocTypeAssertions*/ @@ -74138,6 +75099,12 @@ ${lanes.join("\n")} } function checkDeclarationInitializer(declaration, checkMode, contextualType) { const initializer = getEffectiveInitializer(declaration); + if (isInJSFile(declaration)) { + const typeNode = tryGetJSDocSatisfiesTypeNode(declaration); + if (typeNode) { + return checkSatisfiesExpressionWorker(initializer, typeNode, checkMode); + } + } const type = getQuickTypeOfExpression(initializer) || (contextualType ? checkExpressionWithContextualType( initializer, contextualType, @@ -74206,7 +75173,7 @@ ${lanes.join("\n")} } function checkExpressionForMutableLocation(node, checkMode, forceTuple) { const type = checkExpression(node, checkMode, forceTuple); - return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion3(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( + return isConstContext(node) || isCommonJsExportedExpression(node) ? getRegularTypeOfLiteralType(type) : isTypeAssertion(node) ? type : getWidenedLiteralLikeTypeForContextualType(type, instantiateContextualType( getContextualType2( node, /*contextFlags*/ @@ -74456,18 +75423,23 @@ ${lanes.join("\n")} if (!ok) { error(node, Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query); } - if (compilerOptions.isolatedModules) { + if (getIsolatedModules(compilerOptions)) { Debug.assert(!!(type.symbol.flags & 128 /* ConstEnum */)); const constEnumDeclaration = type.symbol.valueDeclaration; if (constEnumDeclaration.flags & 16777216 /* Ambient */) { - error(node, Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_access_ambient_const_enums_when_0_is_enabled, isolatedModulesLikeFlagName); } } } function checkParenthesizedExpression(node, checkMode) { - if (hasJSDocNodes(node) && isJSDocTypeAssertion(node)) { - const type = getJSDocTypeAssertionType(node); - return checkAssertionWorker(type, type, node.expression, checkMode); + if (hasJSDocNodes(node)) { + if (isJSDocSatisfiesExpression(node)) { + return checkSatisfiesExpressionWorker(node.expression, getJSDocSatisfiesExpressionType(node), checkMode); + } + if (isJSDocTypeAssertion(node)) { + const type = getJSDocTypeAssertionType(node); + return checkAssertionWorker(type, type, node.expression, checkMode); + } } return checkExpression(node.expression, checkMode); } @@ -74630,7 +75602,7 @@ ${lanes.join("\n")} } } function checkParameter(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkVariableLikeDeclaration(node); const func = getContainingFunction(node); if (hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */)) { @@ -74951,7 +75923,7 @@ ${lanes.join("\n")} } } function checkPropertyDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarProperty(node)) + if (!checkGrammarModifiers(node) && !checkGrammarProperty(node)) checkGrammarComputedPropertyName(node.name); checkVariableLikeDeclaration(node); setNodeLinksForPrivateIdentifierScope(node); @@ -74995,7 +75967,7 @@ ${lanes.join("\n")} } } function checkClassStaticBlockDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); forEachChild(node, checkSourceElement); } function checkConstructorDeclaration(node) { @@ -75175,8 +76147,11 @@ ${lanes.join("\n")} } function checkTypeReferenceNode(node) { checkGrammarTypeArguments(node, node.typeArguments); - if (node.kind === 180 /* TypeReference */ && node.typeName.jsdocDotPos !== void 0 && !isInJSFile(node) && !isInJSDoc(node)) { - grammarErrorAtPos(node, node.typeName.jsdocDotPos, 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + if (node.kind === 180 /* TypeReference */ && !isInJSFile(node) && !isInJSDoc(node) && node.typeArguments && node.typeName.end !== node.typeArguments.pos) { + const sourceFile = getSourceFileOfNode(node); + if (scanTokenAtPosition(sourceFile, node.typeName.end) === 24 /* DotToken */) { + grammarErrorAtPos(node, skipTrivia(sourceFile.text, node.typeName.end), 1, Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + } } forEach(node.typeArguments, checkSourceElement); const type = getTypeFromTypeReference(node); @@ -75869,7 +76844,7 @@ ${lanes.join("\n")} chain = chainDiagnosticMessages(chain, Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1, typeToString(type), typeToString(thisTypeForErrorOut.value)); } chain = chainDiagnosticMessages(chain, diagnosticMessage, arg0); - diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, chain)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(errorNode), errorNode, chain)); } return void 0; } @@ -75960,36 +76935,66 @@ ${lanes.join("\n")} if (returnType.flags & 1 /* Any */) { return; } + const decoratorSignature = getDecoratorCallSignature(node); + if (!(decoratorSignature == null ? void 0 : decoratorSignature.resolvedReturnType)) + return; let headMessage; - let expectedReturnType; + const expectedReturnType = decoratorSignature.resolvedReturnType; switch (node.parent.kind) { case 260 /* ClassDeclaration */: + case 228 /* ClassExpression */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const classSymbol = getSymbolOfDeclaration(node.parent); - const classConstructorType = getTypeOfSymbol(classSymbol); - expectedReturnType = getUnionType([classConstructorType, voidType]); break; case 169 /* PropertyDeclaration */: + if (!legacyDecorators) { + headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + break; + } case 166 /* Parameter */: headMessage = Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any; - expectedReturnType = voidType; break; case 171 /* MethodDeclaration */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; - const methodType = getTypeOfNode(node.parent); - const descriptorType = createTypedPropertyDescriptorType(methodType); - expectedReturnType = getUnionType([descriptorType, voidType]); break; default: - return Debug.fail(); + return Debug.failBadSyntaxKind(node.parent); } - checkTypeAssignableTo( - returnType, - expectedReturnType, - node, - headMessage + checkTypeAssignableTo(returnType, expectedReturnType, node.expression, headMessage); + } + function createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount = parameters.length, flags = 0 /* None */) { + const decl = factory.createFunctionTypeNode( + /*typeParameters*/ + void 0, + emptyArray, + factory.createKeywordTypeNode(131 /* AnyKeyword */) + ); + return createSignature(decl, typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + } + function createFunctionType(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags) { + const signature = createCallSignature(typeParameters, thisParameter, parameters, returnType, typePredicate, minArgumentCount, flags); + return getOrCreateTypeFromSignature(signature); + } + function createGetterFunctionType(type) { + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + emptyArray, + type + ); + } + function createSetterFunctionType(type) { + const valueParam = createParameter("value", type); + return createFunctionType( + /*typeParameters*/ + void 0, + /*thisParameter*/ + void 0, + [valueParam], + voidType ); } function markTypeNodeAsReferenced(node) { @@ -76016,9 +77021,9 @@ ${lanes.join("\n")} true ); if (rootSymbol && rootSymbol.flags & 2097152 /* Alias */) { - if (symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { + if (!compilerOptions.verbatimModuleSyntax && symbolIsValue(rootSymbol) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(rootSymbol)) && !getTypeOnlyAliasDeclaration(rootSymbol)) { markAliasSymbolAsReferenced(rootSymbol); - } else if (forDecoratorMetadata && compilerOptions.isolatedModules && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { + } else if (forDecoratorMetadata && getIsolatedModules(compilerOptions) && getEmitModuleKind(compilerOptions) >= 5 /* ES2015 */ && !symbolIsValue(rootSymbol) && !some(rootSymbol.declarations, isTypeOnlyImportOrExportDeclaration)) { const diag2 = error(typeName, Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled); const aliasDeclaration = find(rootSymbol.declarations || emptyArray, isAliasSymbolDeclaration2); if (aliasDeclaration) { @@ -76084,19 +77089,37 @@ ${lanes.join("\n")} return isRestParameter(node) ? getRestParameterElementType(typeNode) : typeNode; } function checkDecorators(node) { - if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(node, node.parent, node.parent.parent)) { + if (!canHaveDecorators(node) || !hasDecorators(node) || !node.modifiers || !nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { return; } - if (!compilerOptions.experimentalDecorators) { - error(node, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning); - } const firstDecorator = find(node.modifiers, isDecorator); if (!firstDecorator) { return; } - checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); - if (node.kind === 166 /* Parameter */) { - checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + if (legacyDecorators) { + checkExternalEmitHelpers(firstDecorator, 8 /* Decorate */); + if (node.kind === 166 /* Parameter */) { + checkExternalEmitHelpers(firstDecorator, 32 /* Param */); + } + } else if (languageVersion < 99 /* ESNext */) { + checkExternalEmitHelpers(firstDecorator, 8 /* ESDecorateAndRunInitializers */); + if (isClassDeclaration(node)) { + if (!node.name) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } else { + const member = getFirstTransformableStaticClassElement(node); + if (member) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + } + } else if (!isClassExpression(node)) { + if (isPrivateIdentifier(node.name) && (isMethodDeclaration(node) || isAccessor(node) || isAutoAccessorPropertyDeclaration(node))) { + checkExternalEmitHelpers(firstDecorator, 8388608 /* SetFunctionName */); + } + if (isComputedPropertyName(node.name)) { + checkExternalEmitHelpers(firstDecorator, 16777216 /* PropKey */); + } + } } if (compilerOptions.emitDecoratorMetadata) { checkExternalEmitHelpers(firstDecorator, 16 /* Metadata */); @@ -76166,6 +77189,19 @@ ${lanes.join("\n")} function checkJSDocTypeTag(node) { checkSourceElement(node.typeExpression); } + function checkJSDocSatisfiesTag(node) { + checkSourceElement(node.typeExpression); + const host2 = getEffectiveJSDocHost(node); + if (host2) { + const tags = getAllJSDocTags(host2, isJSDocSatisfiesTag); + if (length(tags) > 1) { + for (let i = 1; i < length(tags); i++) { + const tagName = tags[i].tagName; + error(tagName, Diagnostics._0_tag_already_specified, idText(tagName)); + } + } + } + } function checkJSDocLinkLikeTag(node) { if (node.name) { resolveJSDocMemberName( @@ -76838,7 +77874,7 @@ ${lanes.join("\n")} return; } const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 2097152 /* Alias */ && isVariableDeclarationInitializedToBareOrAccessedRequire(node.kind === 205 /* BindingElement */ ? node.parent.parent : node)) { + if (symbol.flags & 2097152 /* Alias */ && (isVariableDeclarationInitializedToBareOrAccessedRequire(node) || isBindingElementOfBareOrAccessedRequire(node))) { checkAliasSymbol(node); return; } @@ -76930,7 +77966,7 @@ ${lanes.join("\n")} return checkVariableLikeDeclaration(node); } function checkVariableStatement(node) { - if (!checkGrammarDecoratorsAndModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) + if (!checkGrammarModifiers(node) && !checkGrammarVariableDeclarationList(node.declarationList)) checkGrammarForDisallowedLetOrConstStatement(node); forEach(node.declarationList.declarations, checkSourceElement); } @@ -76951,17 +77987,26 @@ ${lanes.join("\n")} function checkTestingKnownTruthyCallableOrAwaitableType(condExpr, condType, body) { if (!strictNullChecks) return; - helper(condExpr, body); - while (isBinaryExpression(condExpr) && condExpr.operatorToken.kind === 56 /* BarBarToken */) { - condExpr = condExpr.left; - helper(condExpr, body); + bothHelper(condExpr, body); + function bothHelper(condExpr2, body2) { + condExpr2 = skipParentheses(condExpr2); + helper(condExpr2, body2); + while (isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 60 /* QuestionQuestionToken */)) { + condExpr2 = skipParentheses(condExpr2.left); + helper(condExpr2, body2); + } } function helper(condExpr2, body2) { - const location = isBinaryExpression(condExpr2) && (condExpr2.operatorToken.kind === 56 /* BarBarToken */ || condExpr2.operatorToken.kind === 55 /* AmpersandAmpersandToken */) ? condExpr2.right : condExpr2; - if (isModuleExportsAccessExpression(location)) + const location = isLogicalOrCoalescingBinaryExpression(condExpr2) ? skipParentheses(condExpr2.right) : condExpr2; + if (isModuleExportsAccessExpression(location)) { return; + } + if (isLogicalOrCoalescingBinaryExpression(location)) { + bothHelper(location, body2); + return; + } const type = location === condExpr2 ? condType : checkTruthinessExpression(location); - const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion3(location.expression); + const isPropertyExpressionCast = isPropertyAccessExpression(location) && isTypeAssertion(location.expression); if (!(getTypeFacts(type) & 4194304 /* Truthy */) || isPropertyExpressionCast) return; const callSignatures = getSignaturesOfType(type, 0 /* Call */); @@ -76969,7 +78014,7 @@ ${lanes.join("\n")} if (callSignatures.length === 0 && !isPromise) { return; } - const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : isBinaryExpression(location) && isIdentifier(location.right) ? location.right : void 0; + const testedNode = isIdentifier(location) ? location : isPropertyAccessExpression(location) ? location.name : void 0; const testedSymbol = testedNode && getSymbolAtLocation(testedNode); if (!testedSymbol && !isPromise) { return; @@ -77927,14 +78972,10 @@ ${lanes.join("\n")} if (catchClause) { if (catchClause.variableDeclaration) { const declaration = catchClause.variableDeclaration; - const typeNode = getEffectiveTypeAnnotationNode(getRootDeclaration(declaration)); + checkVariableLikeDeclaration(declaration); + const typeNode = getEffectiveTypeAnnotationNode(declaration); if (typeNode) { - const type = getTypeForVariableLikeDeclaration( - declaration, - /*includeOptionality*/ - false, - 0 /* Normal */ - ); + const type = getTypeFromTypeNode(typeNode); if (type && !(type.flags & 3 /* AnyOrUnknown */)) { grammarErrorOnFirstToken(typeNode, Diagnostics.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified); } @@ -78189,9 +79230,65 @@ ${lanes.join("\n")} } return true; } + function getFirstTransformableStaticClassElement(node) { + var _a2; + const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < 99 /* ESNext */ && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + ); + const willTransformPrivateElementsOrClassStaticBlocks = languageVersion <= 9 /* ES2022 */; + const willTransformInitializers = !useDefineForClassFields || languageVersion < 9 /* ES2022 */; + if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) { + for (const member of node.members) { + if (willTransformStaticElementsOfDecoratedClass && classElementOrClassElementParameterIsDecorated( + /*useLegacyDecorators*/ + false, + member, + node + )) { + return (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else if (willTransformPrivateElementsOrClassStaticBlocks) { + if (isClassStaticBlockDeclaration(member)) { + return member; + } else if (isStatic(member)) { + if (isPrivateIdentifierClassElementDeclaration(member) || willTransformInitializers && isInitializedProperty(member)) { + return member; + } + } + } + } + } + } + function checkClassExpressionExternalHelpers(node) { + var _a2; + if (node.name) + return; + const parent2 = walkUpOuterExpressions(node); + if (!isNamedEvaluationSource(parent2)) + return; + const willTransformESDecorators = !legacyDecorators && languageVersion < 99 /* ESNext */; + let location; + if (willTransformESDecorators && classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + false, + node + )) { + location = (_a2 = firstOrUndefined(getDecorators(node))) != null ? _a2 : node; + } else { + location = getFirstTransformableStaticClassElement(node); + } + if (location) { + checkExternalEmitHelpers(location, 8388608 /* SetFunctionName */); + if ((isPropertyAssignment(parent2) || isPropertyDeclaration(parent2) || isBindingElement(parent2)) && isComputedPropertyName(parent2.name)) { + checkExternalEmitHelpers(location, 16777216 /* PropKey */); + } + } + } function checkClassExpression(node) { checkClassLikeDeclaration(node); checkNodeDeferred(node); + checkClassExpressionExternalHelpers(node); return getTypeOfSymbol(getSymbolOfDeclaration(node)); } function checkClassExpressionDeferred(node) { @@ -78200,7 +79297,7 @@ ${lanes.join("\n")} } function checkClassDeclaration(node) { const firstDecorator = find(node.modifiers, isDecorator); - if (firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { + if (legacyDecorators && firstDecorator && some(node.members, (p) => hasStaticModifier(p) && isPrivateIdentifierClassElementDeclaration(p))) { grammarErrorOnNode(firstDecorator, Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator); } if (!node.name && !hasSyntacticModifier(node, 1024 /* Default */)) { @@ -78674,7 +79771,7 @@ ${lanes.join("\n")} typeName2 ); errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, typeToString(type), typeName1, typeName2); - diagnostics.add(createDiagnosticForNodeFromMessageChain(typeNode, errorInfo)); + diagnostics.add(createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(typeNode), typeNode, errorInfo)); } } } @@ -78730,7 +79827,7 @@ ${lanes.join("\n")} return !containsUndefinedType(flowType); } function checkInterfaceDeclaration(node) { - if (!checkGrammarDecoratorsAndModifiers(node)) + if (!checkGrammarModifiers(node)) checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); addLazyDiagnostic(() => { @@ -78764,7 +79861,7 @@ ${lanes.join("\n")} }); } function checkTypeAliasDeclaration(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); @@ -78960,7 +80057,7 @@ ${lanes.join("\n")} addLazyDiagnostic(() => checkEnumDeclarationWorker(node)); } function checkEnumDeclarationWorker(node) { - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); checkCollisionsForDeclarationName(node, node.name); checkExportsOnMergedDeclarations(node); node.members.forEach(checkEnumMember); @@ -79035,6 +80132,7 @@ ${lanes.join("\n")} } addLazyDiagnostic(checkModuleDeclarationDiagnostics); function checkModuleDeclarationDiagnostics() { + var _a2, _b; const isGlobalAugmentation = isGlobalScopeAugmentation(node); const inAmbientContext = node.flags & 16777216 /* Ambient */; if (isGlobalAugmentation && !inAmbientContext) { @@ -79045,7 +80143,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, contextErrorMessage)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node)) { + if (!checkGrammarModifiers(node)) { if (!inAmbientContext && node.name.kind === 10 /* StringLiteral */) { grammarErrorOnNode(node.name, Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -79055,18 +80153,29 @@ ${lanes.join("\n")} } checkExportsOnMergedDeclarations(node); const symbol = getSymbolOfDeclaration(node); - if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && symbol.declarations && symbol.declarations.length > 1 && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { - const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); - if (firstNonAmbientClassOrFunc) { - if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); - } else if (node.pos < firstNonAmbientClassOrFunc.pos) { - error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + if (symbol.flags & 512 /* ValueModule */ && !inAmbientContext && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { + if (getIsolatedModules(compilerOptions) && !getSourceFileOfNode(node).externalModuleIndicator) { + error(node.name, Diagnostics.Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement, isolatedModulesLikeFlagName); + } + if (((_a2 = symbol.declarations) == null ? void 0 : _a2.length) > 1) { + const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); + if (firstNonAmbientClassOrFunc) { + if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged); + } else if (node.pos < firstNonAmbientClassOrFunc.pos) { + error(node.name, Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); + } + } + const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); + if (mergedClass && inSameLexicalScope(node, mergedClass)) { + getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; } } - const mergedClass = getDeclarationOfKind(symbol, 260 /* ClassDeclaration */); - if (mergedClass && inSameLexicalScope(node, mergedClass)) { - getNodeLinks(node).flags |= 2048 /* LexicalModuleMergesWithClass */; + if (compilerOptions.verbatimModuleSyntax && node.parent.kind === 308 /* SourceFile */) { + const exportModifier = (_b = node.modifiers) == null ? void 0 : _b.find((m) => m.kind === 93 /* ExportKeyword */); + if (exportModifier) { + error(exportModifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } } if (isAmbientExternalModule) { @@ -79222,7 +80331,7 @@ ${lanes.join("\n")} const message = node.kind === 278 /* ExportSpecifier */ ? Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); } - if (compilerOptions.isolatedModules && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { + if (getIsolatedModules(compilerOptions) && !isTypeOnlyImportOrExportDeclaration(node) && !(node.flags & 16777216 /* Ambient */)) { const typeOnlyAlias = getTypeOnlyAliasDeclaration(symbol); const isType = !(targetFlags & 111551 /* Value */); if (isType || typeOnlyAlias) { @@ -79230,9 +80339,9 @@ ${lanes.join("\n")} case 270 /* ImportClause */: case 273 /* ImportSpecifier */: case 268 /* ImportEqualsDeclaration */: { - if (compilerOptions.preserveValueImports) { + if (compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) { Debug.assertIsDefined(node.name, "An ImportClause with a symbol should have a name"); - const message = isType ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; + const message = compilerOptions.verbatimModuleSyntax && isInternalModuleImportEqualsDeclaration(node) ? Diagnostics.An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled : isType ? compilerOptions.verbatimModuleSyntax ? Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : compilerOptions.verbatimModuleSyntax ? Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled; const name = idText(node.kind === 273 /* ImportSpecifier */ ? node.propertyName || node.name : node.name); addTypeOnlyDeclarationRelatedInfo( error(node, message, name), @@ -79241,24 +80350,23 @@ ${lanes.join("\n")} ); } if (isType && node.kind === 268 /* ImportEqualsDeclaration */ && hasEffectiveModifier(node, 1 /* Export */)) { - error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided); + error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled, isolatedModulesLikeFlagName); } break; } case 278 /* ExportSpecifier */: { - if (getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { - const message = isType ? Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type : Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled; + if (compilerOptions.verbatimModuleSyntax || getSourceFileOfNode(typeOnlyAlias) !== getSourceFileOfNode(node)) { const name = idText(node.propertyName || node.name); - addTypeOnlyDeclarationRelatedInfo( - error(node, message, name), - isType ? void 0 : typeOnlyAlias, - name - ); - return; + const diagnostic = isType ? error(node, Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type, isolatedModulesLikeFlagName) : error(node, Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled, name, isolatedModulesLikeFlagName); + addTypeOnlyDeclarationRelatedInfo(diagnostic, isType ? void 0 : typeOnlyAlias, name); + break; } } } } + if (compilerOptions.verbatimModuleSyntax && node.kind !== 268 /* ImportEqualsDeclaration */ && !isInJSFile(node) && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } } if (isImportSpecifier(node)) { const targetSymbol = checkDeprecatedAliasedSymbol(symbol, node); @@ -79338,7 +80446,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -79368,7 +80476,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - checkGrammarDecoratorsAndModifiers(node); + checkGrammarModifiers(node); if (isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (hasSyntacticModifier(node, 1 /* Export */)) { @@ -79404,7 +80512,7 @@ ${lanes.join("\n")} if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasSyntacticModifiers(node)) { + if (!checkGrammarModifiers(node) && hasSyntacticModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_declaration_cannot_have_modifiers); } if (node.moduleSpecifier && node.exportClause && isNamedExports(node.exportClause) && length(node.exportClause.elements) && languageVersion === 0 /* ES3 */) { @@ -79441,12 +80549,8 @@ ${lanes.join("\n")} } function checkGrammarExportDeclaration(node) { var _a2; - if (node.isTypeOnly) { - if (((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { - return checkGrammarNamedImportsOrExports(node.exportClause); - } else { - return grammarErrorOnNode(node, Diagnostics.Only_named_exports_may_use_export_type); - } + if (node.isTypeOnly && ((_a2 = node.exportClause) == null ? void 0 : _a2.kind) === 276 /* NamedExports */) { + return checkGrammarNamedImportsOrExports(node.exportClause); } return false; } @@ -79544,13 +80648,14 @@ ${lanes.join("\n")} } return; } - if (!checkGrammarDecoratorsAndModifiers(node) && hasEffectiveModifiers(node)) { + if (!checkGrammarModifiers(node) && hasEffectiveModifiers(node)) { grammarErrorOnFirstToken(node, Diagnostics.An_export_assignment_cannot_have_modifiers); } const typeAnnotationNode = getEffectiveTypeAnnotationNode(node); if (typeAnnotationNode) { checkTypeAssignableTo(checkExpressionCached(node.expression), getTypeFromTypeNode(typeAnnotationNode), node.expression); } + const isIllegalExportDefaultInCJS = !node.isExportEquals && compilerOptions.verbatimModuleSyntax && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */); if (node.expression.kind === 79 /* Identifier */) { const id = node.expression; const sym = resolveEntityName( @@ -79564,16 +80669,28 @@ ${lanes.join("\n")} ); if (sym) { markAliasReferenced(sym, id); - const target = sym.flags & 2097152 /* Alias */ ? resolveAlias(sym) : sym; - if (getAllSymbolFlags(target) & 111551 /* Value */) { - checkExpressionCached(node.expression); + if (getAllSymbolFlags(sym) & 111551 /* Value */) { + checkExpressionCached(id); + if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax && getTypeOnlyAliasDeclaration(sym, 111551 /* Value */)) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration : Diagnostics.An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration, + idText(id) + ); + } + } else if (!isIllegalExportDefaultInCJS && compilerOptions.verbatimModuleSyntax) { + error( + id, + node.isExportEquals ? Diagnostics.An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type : Diagnostics.An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type, + idText(id) + ); } } else { - checkExpressionCached(node.expression); + checkExpressionCached(id); } if (getEmitDeclarations(compilerOptions)) { collectLinkedAliases( - node.expression, + id, /*setVisibility*/ true ); @@ -79581,6 +80698,9 @@ ${lanes.join("\n")} } else { checkExpressionCached(node.expression); } + if (isIllegalExportDefaultInCJS) { + error(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } checkExternalModuleExports(container); if (node.flags & 16777216 /* Ambient */ && !isEntityNameExpression(node.expression)) { grammarErrorOnNode(node.expression, Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context); @@ -79770,6 +80890,8 @@ ${lanes.join("\n")} case 338 /* JSDocProtectedTag */: case 337 /* JSDocPrivateTag */: return checkJSDocAccessibilityModifiers(node); + case 353 /* JSDocSatisfiesTag */: + return checkJSDocSatisfiesTag(node); case 196 /* IndexedAccessType */: return checkIndexedAccessType(node); case 197 /* MappedType */: @@ -80785,8 +81907,9 @@ ${lanes.join("\n")} } } function getReferencedImportDeclaration(nodeIn) { - if (nodeIn.generatedImportReference) { - return nodeIn.generatedImportReference; + const specifier = getIdentifierGeneratedImportReference(nodeIn); + if (specifier) { + return specifier; } const node = getParseTreeNode(nodeIn, isIdentifier); if (node) { @@ -80868,6 +81991,7 @@ ${lanes.join("\n")} return false; } function isValueAliasDeclaration(node) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); switch (node.kind) { case 268 /* ImportEqualsDeclaration */: return isAliasResolvedToValue(getSymbolOfDeclaration(node)); @@ -80908,6 +82032,7 @@ ${lanes.join("\n")} return isConstEnumSymbol(s) || !!s.constEnumOnlyModule; } function isReferencedAliasDeclaration(node, checkChildren) { + Debug.assert(!compilerOptions.verbatimModuleSyntax); if (isAliasSymbolDeclaration2(node)) { const symbol = getSymbolOfDeclaration(node); const links = symbol && getSymbolLinks(symbol); @@ -81624,23 +82749,27 @@ ${lanes.join("\n")} const helpersModule = resolveHelpersModule(sourceFile, location); if (helpersModule !== unknownSymbol) { const uncheckedHelpers = helpers & ~requestedExternalEmitHelpers; - for (let helper = 1 /* FirstEmitHelper */; helper <= 4194304 /* LastEmitHelper */; helper <<= 1) { + for (let helper = 1 /* FirstEmitHelper */; helper <= 16777216 /* LastEmitHelper */; helper <<= 1) { if (uncheckedHelpers & helper) { - const name = getHelperName(helper); - const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); - if (!symbol) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); - } else if (helper & 524288 /* ClassPrivateFieldGet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); - } - } else if (helper & 1048576 /* ClassPrivateFieldSet */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); - } - } else if (helper & 1024 /* SpreadArray */) { - if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { - error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + for (const name of getHelperNames(helper)) { + if (requestedExternalEmitHelperNames.has(name)) + continue; + requestedExternalEmitHelperNames.add(name); + const symbol = getSymbol2(helpersModule.exports, escapeLeadingUnderscores(name), 111551 /* Value */); + if (!symbol) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name); + } else if (helper & 524288 /* ClassPrivateFieldGet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 3)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 4); + } + } else if (helper & 1048576 /* ClassPrivateFieldSet */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 4)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 5); + } + } else if (helper & 1024 /* SpreadArray */) { + if (!some(getSignaturesOfSymbol(symbol), (signature) => getParameterCount(signature) > 2)) { + error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name, 3); + } } } } @@ -81650,54 +82779,58 @@ ${lanes.join("\n")} } } } - function getHelperName(helper) { + function getHelperNames(helper) { switch (helper) { case 1 /* Extends */: - return "__extends"; + return ["__extends"]; case 2 /* Assign */: - return "__assign"; + return ["__assign"]; case 4 /* Rest */: - return "__rest"; + return ["__rest"]; case 8 /* Decorate */: - return "__decorate"; + return legacyDecorators ? ["__decorate"] : ["__esDecorate", "__runInitializers"]; case 16 /* Metadata */: - return "__metadata"; + return ["__metadata"]; case 32 /* Param */: - return "__param"; + return ["__param"]; case 64 /* Awaiter */: - return "__awaiter"; + return ["__awaiter"]; case 128 /* Generator */: - return "__generator"; + return ["__generator"]; case 256 /* Values */: - return "__values"; + return ["__values"]; case 512 /* Read */: - return "__read"; + return ["__read"]; case 1024 /* SpreadArray */: - return "__spreadArray"; + return ["__spreadArray"]; case 2048 /* Await */: - return "__await"; + return ["__await"]; case 4096 /* AsyncGenerator */: - return "__asyncGenerator"; + return ["__asyncGenerator"]; case 8192 /* AsyncDelegator */: - return "__asyncDelegator"; + return ["__asyncDelegator"]; case 16384 /* AsyncValues */: - return "__asyncValues"; + return ["__asyncValues"]; case 32768 /* ExportStar */: - return "__exportStar"; + return ["__exportStar"]; case 65536 /* ImportStar */: - return "__importStar"; + return ["__importStar"]; case 131072 /* ImportDefault */: - return "__importDefault"; + return ["__importDefault"]; case 262144 /* MakeTemplateObject */: - return "__makeTemplateObject"; + return ["__makeTemplateObject"]; case 524288 /* ClassPrivateFieldGet */: - return "__classPrivateFieldGet"; + return ["__classPrivateFieldGet"]; case 1048576 /* ClassPrivateFieldSet */: - return "__classPrivateFieldSet"; + return ["__classPrivateFieldSet"]; case 2097152 /* ClassPrivateFieldIn */: - return "__classPrivateFieldIn"; + return ["__classPrivateFieldIn"]; case 4194304 /* CreateBinding */: - return "__createBinding"; + return ["__createBinding"]; + case 8388608 /* SetFunctionName */: + return ["__setFunctionName"]; + case 16777216 /* PropKey */: + return ["__propKey"]; default: return Debug.fail("Unrecognized helper"); } @@ -81708,257 +82841,264 @@ ${lanes.join("\n")} } return externalHelpersModule; } - function checkGrammarDecoratorsAndModifiers(node) { - return checkGrammarDecorators(node) || checkGrammarModifiers(node); - } - function checkGrammarDecorators(node) { - if (canHaveIllegalDecorators(node) && some(node.illegalDecorators)) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - if (!canHaveDecorators(node) || !hasDecorators(node)) { - return false; - } - if (!nodeCanBeDecorated(node, node.parent, node.parent.parent)) { - if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { - return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); - } else { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); - } - } else if (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */) { - const accessors = getAllAccessorDeclarations(node.parent.members, node); - if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { - return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); - } - } - return false; - } function checkGrammarModifiers(node) { - const quickResult = reportObviousModifierErrors(node); + const quickResult = reportObviousDecoratorErrors(node) || reportObviousModifierErrors(node); if (quickResult !== void 0) { return quickResult; } - let lastStatic, lastDeclare, lastAsync, lastOverride; + if (isParameter(node) && parameterIsThisKeyword(node)) { + return grammarErrorOnFirstToken(node, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); + } + let lastStatic, lastDeclare, lastAsync, lastOverride, firstDecorator; let flags = 0 /* None */; + let sawExportBeforeDecorators = false; for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - if (modifier.kind !== 146 /* ReadonlyKeyword */) { - if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); + if (isDecorator(modifier)) { + if (!nodeCanBeDecorated(legacyDecorators, node, node.parent, node.parent.parent)) { + if (node.kind === 171 /* MethodDeclaration */ && !nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } else { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_are_not_valid_here); + } + } else if (legacyDecorators && (node.kind === 174 /* GetAccessor */ || node.kind === 175 /* SetAccessor */)) { + const accessors = getAllAccessorDeclarations(node.parent.members, node); + if (hasDecorators(accessors.firstAccessor) && node === accessors.secondAccessor) { + return grammarErrorOnFirstToken(node, Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } } - if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); + if (flags & ~(1025 /* ExportDefault */ | 131072 /* Decorator */)) { + return grammarErrorOnNode(modifier, Diagnostics.Decorators_are_not_valid_here); } - } - if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { - if (node.kind === 165 /* TypeParameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); + flags |= 131072 /* Decorator */; + if (flags & 1 /* Export */) { + sawExportBeforeDecorators = true; } - } - switch (modifier.kind) { - case 85 /* ConstKeyword */: - if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { - return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); + firstDecorator != null ? firstDecorator : firstDecorator = modifier; + } else { + if (modifier.kind !== 146 /* ReadonlyKeyword */) { + if (node.kind === 168 /* PropertySignature */ || node.kind === 170 /* MethodSignature */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_member, tokenToString(modifier.kind)); } - const parent2 = node.parent; - if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); + if (node.kind === 178 /* IndexSignature */ && (modifier.kind !== 124 /* StaticKeyword */ || !isClassLike(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_an_index_signature, tokenToString(modifier.kind)); } - break; - case 161 /* OverrideKeyword */: - if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); + } + if (modifier.kind !== 101 /* InKeyword */ && modifier.kind !== 145 /* OutKeyword */ && modifier.kind !== 85 /* ConstKeyword */) { + if (node.kind === 165 /* TypeParameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, tokenToString(modifier.kind)); } - flags |= 16384 /* Override */; - lastOverride = modifier; - break; - case 123 /* PublicKeyword */: - case 122 /* ProtectedKeyword */: - case 121 /* PrivateKeyword */: - const text = visibilityToString(modifierToFlag(modifier.kind)); - if (flags & 28 /* AccessibilityModifier */) { - return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); - } else if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); - } else if (flags & 256 /* Abstract */) { - if (modifier.kind === 121 /* PrivateKeyword */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); - } else { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + switch (modifier.kind) { + case 85 /* ConstKeyword */: + if (node.kind !== 263 /* EnumDeclaration */ && node.kind !== 165 /* TypeParameter */) { + return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(85 /* ConstKeyword */)); } - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); - } - flags |= modifierToFlag(modifier.kind); - break; - case 124 /* StaticKeyword */: - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); - } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); - } - flags |= 32 /* Static */; - lastStatic = modifier; - break; - case 127 /* AccessorKeyword */: - if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); - } else if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); - } else if (node.kind !== 169 /* PropertyDeclaration */) { - return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); - } - flags |= 128 /* Accessor */; - break; - case 146 /* ReadonlyKeyword */: - if (flags & 64 /* Readonly */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); - } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); - } - flags |= 64 /* Readonly */; - break; - case 93 /* ExportKeyword */: - if (flags & 1 /* Export */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); - } else if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); - } else if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); - } else if (isClassLike(node.parent)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); - } - flags |= 1 /* Export */; - break; - case 88 /* DefaultKeyword */: - const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { - return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); - } else if (!(flags & 1 /* Export */)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); - } - flags |= 1024 /* Default */; - break; - case 136 /* DeclareKeyword */: - if (flags & 2 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); - } else if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); - } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); - } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { - return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); - } else if (isPrivateIdentifierClassElementDeclaration(node)) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); - } else if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); - } - flags |= 2 /* Ambient */; - lastDeclare = modifier; - break; - case 126 /* AbstractKeyword */: - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); - } - if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { - if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { - return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); - } - if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { - return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); - } - if (flags & 32 /* Static */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); - } - if (flags & 8 /* Private */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); - } - if (flags & 512 /* Async */ && lastAsync) { - return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + const parent2 = node.parent; + if (node.kind === 165 /* TypeParameter */ && !(isFunctionLikeDeclaration(parent2) || isClassLike(parent2) || isFunctionTypeNode(parent2) || isConstructorTypeNode(parent2) || isCallSignatureDeclaration(parent2) || isConstructSignatureDeclaration(parent2) || isMethodSignature(parent2))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class, tokenToString(modifier.kind)); } + break; + case 161 /* OverrideKeyword */: if (flags & 16384 /* Override */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "accessor"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); } + flags |= 16384 /* Override */; + lastOverride = modifier; + break; + case 123 /* PublicKeyword */: + case 122 /* ProtectedKeyword */: + case 121 /* PrivateKeyword */: + const text = visibilityToString(modifierToFlag(modifier.kind)); + if (flags & 28 /* AccessibilityModifier */) { + return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); + } else if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, text); + } else if (flags & 256 /* Abstract */) { + if (modifier.kind === 121 /* PrivateKeyword */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, text, "abstract"); + } else { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "abstract"); + } + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + } + flags |= modifierToFlag(modifier.kind); + break; + case 124 /* StaticKeyword */: + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "static"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "accessor"); + } else if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); + } + flags |= 32 /* Static */; + lastStatic = modifier; + break; + case 127 /* AccessorKeyword */: if (flags & 128 /* Accessor */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "accessor"); + } else if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "readonly"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "accessor", "declare"); + } else if (node.kind !== 169 /* PropertyDeclaration */) { + return grammarErrorOnNode(modifier, Diagnostics.accessor_modifier_can_only_appear_on_a_property_declaration); } - } - if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); - } - flags |= 256 /* Abstract */; - break; - case 132 /* AsyncKeyword */: - if (flags & 512 /* Async */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); - } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); - } else if (node.kind === 166 /* Parameter */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); - } - if (flags & 256 /* Abstract */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); - } - flags |= 512 /* Async */; - lastAsync = modifier; - break; - case 101 /* InKeyword */: - case 145 /* OutKeyword */: - const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; - const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; - if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); - } - if (flags & inOutFlag) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); - } - if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { - return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); - } - flags |= inOutFlag; - break; + flags |= 128 /* Accessor */; + break; + case 146 /* ReadonlyKeyword */: + if (flags & 64 /* Readonly */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "readonly"); + } else if (node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 168 /* PropertySignature */ && node.kind !== 178 /* IndexSignature */ && node.kind !== 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "readonly", "accessor"); + } + flags |= 64 /* Readonly */; + break; + case 93 /* ExportKeyword */: + if (compilerOptions.verbatimModuleSyntax && !(node.flags & 16777216 /* Ambient */) && node.kind !== 262 /* TypeAliasDeclaration */ && node.kind !== 261 /* InterfaceDeclaration */ && // ModuleDeclaration needs to be checked that it is uninstantiated later + node.kind !== 264 /* ModuleDeclaration */ && node.parent.kind === 308 /* SourceFile */ && (moduleKind === 1 /* CommonJS */ || getSourceFileOfNode(node).impliedNodeFormat === 1 /* CommonJS */)) { + return grammarErrorOnNode(modifier, Diagnostics.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } + if (flags & 1 /* Export */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "export"); + } else if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + } else if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); + } else if (isClassLike(node.parent)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + } + flags |= 1 /* Export */; + break; + case 88 /* DefaultKeyword */: + const container = node.parent.kind === 308 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 264 /* ModuleDeclaration */ && !isAmbientModule(container)) { + return grammarErrorOnNode(modifier, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + } else if (!(flags & 1 /* Export */)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); + } else if (sawExportBeforeDecorators) { + return grammarErrorOnNode(firstDecorator, Diagnostics.Decorators_are_not_valid_here); + } + flags |= 1024 /* Default */; + break; + case 136 /* DeclareKeyword */: + if (flags & 2 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "declare"); + } else if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); + } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + } else if (node.parent.flags & 16777216 /* Ambient */ && node.parent.kind === 265 /* ModuleBlock */) { + return grammarErrorOnNode(modifier, Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + } else if (isPrivateIdentifierClassElementDeclaration(node)) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); + } else if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "declare", "accessor"); + } + flags |= 2 /* Ambient */; + lastDeclare = modifier; + break; + case 126 /* AbstractKeyword */: + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "abstract"); + } + if (node.kind !== 260 /* ClassDeclaration */ && node.kind !== 182 /* ConstructorType */) { + if (node.kind !== 171 /* MethodDeclaration */ && node.kind !== 169 /* PropertyDeclaration */ && node.kind !== 174 /* GetAccessor */ && node.kind !== 175 /* SetAccessor */) { + return grammarErrorOnNode(modifier, Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); + } + if (!(node.parent.kind === 260 /* ClassDeclaration */ && hasSyntacticModifier(node.parent, 256 /* Abstract */))) { + return grammarErrorOnNode(modifier, Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); + } + if (flags & 32 /* Static */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + } + if (flags & 8 /* Private */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); + } + if (flags & 512 /* Async */ && lastAsync) { + return grammarErrorOnNode(lastAsync, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + if (flags & 16384 /* Override */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + } + if (flags & 128 /* Accessor */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "accessor"); + } + } + if (isNamedDeclaration(node) && node.name.kind === 80 /* PrivateIdentifier */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); + } + flags |= 256 /* Abstract */; + break; + case 132 /* AsyncKeyword */: + if (flags & 512 /* Async */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "async"); + } else if (flags & 2 /* Ambient */ || node.parent.flags & 16777216 /* Ambient */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + } else if (node.kind === 166 /* Parameter */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); + } + if (flags & 256 /* Abstract */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + } + flags |= 512 /* Async */; + lastAsync = modifier; + break; + case 101 /* InKeyword */: + case 145 /* OutKeyword */: + const inOutFlag = modifier.kind === 101 /* InKeyword */ ? 32768 /* In */ : 65536 /* Out */; + const inOutText = modifier.kind === 101 /* InKeyword */ ? "in" : "out"; + if (node.kind !== 165 /* TypeParameter */ || !(isInterfaceDeclaration(node.parent) || isClassLike(node.parent) || isTypeAliasDeclaration(node.parent))) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, inOutText); + } + if (flags & inOutFlag) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, inOutText); + } + if (inOutFlag & 32768 /* In */ && flags & 65536 /* Out */) { + return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); + } + flags |= inOutFlag; + break; + } } } if (node.kind === 173 /* Constructor */) { @@ -81985,9 +83125,16 @@ ${lanes.join("\n")} return false; } function reportObviousModifierErrors(node) { - return !node.modifiers ? false : shouldReportBadModifier(node) ? grammarErrorOnFirstToken(node, Diagnostics.Modifiers_cannot_appear_here) : void 0; + if (!node.modifiers) + return false; + const modifier = findFirstIllegalModifier(node); + return modifier && grammarErrorOnFirstToken(modifier, Diagnostics.Modifiers_cannot_appear_here); } - function shouldReportBadModifier(node) { + function findFirstModifierExcept(node, allowedModifier) { + const modifier = find(node.modifiers, isModifier); + return modifier && modifier.kind !== allowedModifier ? modifier : void 0; + } + function findFirstIllegalModifier(node) { switch (node.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: @@ -82006,43 +83153,42 @@ ${lanes.join("\n")} case 216 /* ArrowFunction */: case 166 /* Parameter */: case 165 /* TypeParameter */: - return false; + return void 0; case 172 /* ClassStaticBlockDeclaration */: case 299 /* PropertyAssignment */: case 300 /* ShorthandPropertyAssignment */: case 267 /* NamespaceExportDeclaration */: case 181 /* FunctionType */: case 279 /* MissingDeclaration */: - return true; + return find(node.modifiers, isModifier); default: if (node.parent.kind === 265 /* ModuleBlock */ || node.parent.kind === 308 /* SourceFile */) { - return false; + return void 0; } switch (node.kind) { case 259 /* FunctionDeclaration */: - return nodeHasAnyModifiersExcept(node, 132 /* AsyncKeyword */); + return findFirstModifierExcept(node, 132 /* AsyncKeyword */); case 260 /* ClassDeclaration */: case 182 /* ConstructorType */: - return nodeHasAnyModifiersExcept(node, 126 /* AbstractKeyword */); + return findFirstModifierExcept(node, 126 /* AbstractKeyword */); case 228 /* ClassExpression */: case 261 /* InterfaceDeclaration */: case 240 /* VariableStatement */: case 262 /* TypeAliasDeclaration */: - return true; + return find(node.modifiers, isModifier); case 263 /* EnumDeclaration */: - return nodeHasAnyModifiersExcept(node, 85 /* ConstKeyword */); + return findFirstModifierExcept(node, 85 /* ConstKeyword */); default: Debug.assertNever(node); } } } - function nodeHasAnyModifiersExcept(node, allowedModifier) { - for (const modifier of node.modifiers) { - if (isDecorator(modifier)) - continue; - return modifier.kind !== allowedModifier; - } - return false; + function reportObviousDecoratorErrors(node) { + const decorator = findFirstIllegalDecorator(node); + return decorator && grammarErrorOnFirstToken(decorator, Diagnostics.Decorators_are_not_valid_here); + } + function findFirstIllegalDecorator(node) { + return canHaveIllegalDecorators(node) ? find(node.modifiers, isDecorator) : void 0; } function checkGrammarAsyncModifier(node, asyncModifier) { switch (node.kind) { @@ -82121,7 +83267,7 @@ ${lanes.join("\n")} } function checkGrammarFunctionLikeDeclaration(node) { const file = getSourceFileOfNode(node); - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); + return checkGrammarModifiers(node) || checkGrammarTypeParameterList(node.typeParameters, file) || checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file) || isFunctionLikeDeclaration(node) && checkGrammarForUseStrictSimpleParameterList(node); } function checkGrammarClassLikeDeclaration(node) { const file = getSourceFileOfNode(node); @@ -82179,7 +83325,7 @@ ${lanes.join("\n")} return false; } function checkGrammarIndexSignature(node) { - return checkGrammarDecoratorsAndModifiers(node) || checkGrammarIndexSignatureParameters(node); + return checkGrammarModifiers(node) || checkGrammarIndexSignatureParameters(node); } function checkGrammarForAtLeastOneTypeArgument(node, typeArguments) { if (typeArguments && typeArguments.length === 0) { @@ -82219,7 +83365,7 @@ ${lanes.join("\n")} function checkGrammarClassDeclarationHeritageClauses(node) { let seenExtendsClause = false; let seenImplementsClause = false; - if (!checkGrammarDecoratorsAndModifiers(node) && node.heritageClauses) { + if (!checkGrammarModifiers(node) && node.heritageClauses) { for (const heritageClause of node.heritageClauses) { if (heritageClause.token === 94 /* ExtendsKeyword */) { if (seenExtendsClause) { @@ -82320,7 +83466,9 @@ ${lanes.join("\n")} } } else if (canHaveIllegalModifiers(prop) && prop.modifiers) { for (const mod of prop.modifiers) { - grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + if (isModifier(mod)) { + grammarErrorOnNode(mod, Diagnostics._0_modifier_cannot_be_used_here, getTextOfNode(mod)); + } } } let currentKind; @@ -82764,7 +83912,7 @@ ${lanes.join("\n")} } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 79 /* Identifier */) { - if (name.originalKeywordKind === 119 /* LetKeyword */) { + if (name.escapedText === "let") { return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } else { @@ -83052,6 +84200,9 @@ ${lanes.join("\n")} }); } function checkGrammarImportCallExpression(node) { + if (compilerOptions.verbatimModuleSyntax && moduleKind === 1 /* CommonJS */) { + return grammarErrorOnNode(node, Diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled); + } if (moduleKind === 5 /* ES2015 */) { return grammarErrorOnNode(node, Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext); } @@ -83460,13 +84611,10 @@ ${lanes.join("\n")} // src/compiler/visitorPublic.ts function visitNode(node, visitor, test, lift) { - if (node === void 0 || visitor === void 0) { + if (node === void 0) { return node; } const visited = visitor(node); - if (visited === node) { - return node; - } let visitedNode; if (visited === void 0) { return void 0; @@ -83479,7 +84627,7 @@ ${lanes.join("\n")} return visitedNode; } function visitNodes2(nodes, visitor, test, start, count) { - if (nodes === void 0 || visitor === void 0) { + if (nodes === void 0) { return nodes; } const length2 = nodes.length; @@ -83528,25 +84676,30 @@ ${lanes.join("\n")} } for (let i = 0; i < count; i++) { const node = nodes[i + start]; - const visited = node !== void 0 ? visitor(node) : void 0; + const visited = node !== void 0 ? visitor ? visitor(node) : node : void 0; if (updated !== void 0 || visited === void 0 || visited !== node) { if (updated === void 0) { updated = nodes.slice(0, i); + Debug.assertEachNode(updated, test); } if (visited) { if (isArray(visited)) { for (const visitedNode of visited) { - void Debug.assertNode(visitedNode, test); + Debug.assertNode(visitedNode, test); updated.push(visitedNode); } } else { - void Debug.assertNode(visited, test); + Debug.assertNode(visited, test); updated.push(visited); } } } } - return updated != null ? updated : nodes; + if (updated) { + return updated; + } + Debug.assertEachNode(nodes, test); + return nodes; } function visitLexicalEnvironment(statements, visitor, context, start, ensureUseStrict, nodesVisitor = visitNodes2) { context.startLexicalEnvironment(); @@ -83560,7 +84713,7 @@ ${lanes.join("\n")} context.startLexicalEnvironment(); if (nodes) { context.setLexicalEnvironmentFlags(1 /* InParameters */, true); - updated = nodesVisitor(nodes, visitor, isParameterDeclaration); + updated = nodesVisitor(nodes, visitor, isParameter); if (context.getLexicalEnvironmentFlags() & 2 /* VariablesHoistedInParameters */ && getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } @@ -83682,6 +84835,7 @@ ${lanes.join("\n")} function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { context.startBlockScope(); const updated = nodeVisitor(body, visitor, isStatement, context.factory.liftToBlock); + Debug.assert(updated); const declarations = context.endBlockScope(); if (some(declarations)) { if (isBlock(updated)) { @@ -83693,6 +84847,18 @@ ${lanes.join("\n")} } return updated; } + function visitCommaListElements(elements, visitor, discardVisitor = visitor) { + if (discardVisitor === visitor || elements.length <= 1) { + return visitNodes2(elements, visitor, isExpression); + } + let i = 0; + const length2 = elements.length; + return visitNodes2(elements, (node) => { + const discarded = i < length2 - 1; + i++; + return discarded ? discardVisitor(node) : visitor(node); + }, isExpression); + } function visitEachChild(node, visitor, context, nodesVisitor = visitNodes2, tokenVisitor, nodeVisitor = visitNode) { if (node === void 0) { return void 0; @@ -83710,23 +84876,17 @@ ${lanes.join("\n")} "use strict"; init_ts2(); visitEachChildTable = { - [79 /* Identifier */]: function visitEachChildOfIdentifier(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { - return context.factory.updateIdentifier( - node, - nodesVisitor(node.typeArguments, visitor, isTypeNodeOrTypeParameterDeclaration) - ); - }, [163 /* QualifiedName */]: function visitEachChildOfQualifiedName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateQualifiedName( node, - nodeVisitor(node.left, visitor, isEntityName), - nodeVisitor(node.right, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.left, visitor, isEntityName)), + Debug.checkDefined(nodeVisitor(node.right, visitor, isIdentifier)) ); }, [164 /* ComputedPropertyName */]: function visitEachChildOfComputedPropertyName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateComputedPropertyName( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Signature elements @@ -83734,7 +84894,7 @@ ${lanes.join("\n")} return context.factory.updateTypeParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.constraint, visitor, isTypeNode), nodeVisitor(node.default, visitor, isTypeNode) ); @@ -83743,9 +84903,9 @@ ${lanes.join("\n")} return context.factory.updateParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -83753,7 +84913,7 @@ ${lanes.join("\n")} [167 /* Decorator */]: function visitEachChildOfDecorator(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDecorator( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Type elements @@ -83761,19 +84921,19 @@ ${lanes.join("\n")} return context.factory.updatePropertySignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode) ); }, [169 /* PropertyDeclaration */]: function visitEachChildOfPropertyDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { - var _a2; + var _a2, _b; return context.factory.updatePropertyDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), // QuestionToken and ExclamationToken are mutually exclusive in PropertyDeclaration - nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken), + tokenVisitor ? nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken) : (_b = node.questionToken) != null ? _b : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -83782,10 +84942,10 @@ ${lanes.join("\n")} return context.factory.updateMethodSignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -83793,9 +84953,9 @@ ${lanes.join("\n")} return context.factory.updateMethodDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), @@ -83805,7 +84965,7 @@ ${lanes.join("\n")} [173 /* Constructor */]: function visitEachChildOfConstructorDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConstructorDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -83814,7 +84974,7 @@ ${lanes.join("\n")} return context.factory.updateGetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), visitFunctionBody(node.body, visitor, context, nodeVisitor) @@ -83824,7 +84984,7 @@ ${lanes.join("\n")} return context.factory.updateSetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -83841,7 +85001,7 @@ ${lanes.join("\n")} return context.factory.updateCallSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -83849,16 +85009,16 @@ ${lanes.join("\n")} return context.factory.updateConstructSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, [178 /* IndexSignature */]: function visitEachChildOfIndexSignatureDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexSignature( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.modifiers, visitor, isModifierLike), + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, // Types @@ -83866,14 +85026,14 @@ ${lanes.join("\n")} return context.factory.updateTypePredicateNode( node, nodeVisitor(node.assertsModifier, visitor, isAssertsKeyword), - nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode), + Debug.checkDefined(nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode)), nodeVisitor(node.type, visitor, isTypeNode) ); }, [180 /* TypeReference */]: function visitEachChildOfTypeReferenceNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeReferenceNode( node, - nodeVisitor(node.typeName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.typeName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -83881,8 +85041,8 @@ ${lanes.join("\n")} return context.factory.updateFunctionTypeNode( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [182 /* ConstructorType */]: function visitEachChildOfConstructorTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -83890,14 +85050,14 @@ ${lanes.join("\n")} node, nodesVisitor(node.modifiers, visitor, isModifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [183 /* TypeQuery */]: function visitEachChildOfTypeQueryNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeQueryNode( node, - nodeVisitor(node.exprName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.exprName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -83910,7 +85070,7 @@ ${lanes.join("\n")} [185 /* ArrayType */]: function visitEachChildOfArrayTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateArrayTypeNode( node, - nodeVisitor(node.elementType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.elementType, visitor, isTypeNode)) ); }, [186 /* TupleType */]: function visitEachChildOfTupleTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -83922,13 +85082,13 @@ ${lanes.join("\n")} [187 /* OptionalType */]: function visitEachChildOfOptionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateOptionalTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [188 /* RestType */]: function visitEachChildOfRestTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateRestTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [189 /* UnionType */]: function visitEachChildOfUnionTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -83946,22 +85106,22 @@ ${lanes.join("\n")} [191 /* ConditionalType */]: function visitEachChildOfConditionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConditionalTypeNode( node, - nodeVisitor(node.checkType, visitor, isTypeNode), - nodeVisitor(node.extendsType, visitor, isTypeNode), - nodeVisitor(node.trueType, visitor, isTypeNode), - nodeVisitor(node.falseType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.checkType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.extendsType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.trueType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.falseType, visitor, isTypeNode)) ); }, [192 /* InferType */]: function visitEachChildOfInferTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInferTypeNode( node, - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration) + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)) ); }, [202 /* ImportType */]: function visitEachChildOfImportTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeNode( node, - nodeVisitor(node.argument, visitor, isTypeNode), + Debug.checkDefined(nodeVisitor(node.argument, visitor, isTypeNode)), nodeVisitor(node.assertions, visitor, isImportTypeAssertionContainer), nodeVisitor(node.qualifier, visitor, isEntityName), nodesVisitor(node.typeArguments, visitor, isTypeNode), @@ -83971,45 +85131,45 @@ ${lanes.join("\n")} [298 /* ImportTypeAssertionContainer */]: function visitEachChildOfImportTypeAssertionContainer(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeAssertionContainer( node, - nodeVisitor(node.assertClause, visitor, isAssertClause), + Debug.checkDefined(nodeVisitor(node.assertClause, visitor, isAssertClause)), node.multiLine ); }, [199 /* NamedTupleMember */]: function visitEachChildOfNamedTupleMember(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateNamedTupleMember( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.type, visitor, isTypeNode) + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [193 /* ParenthesizedType */]: function visitEachChildOfParenthesizedType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedType( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [195 /* TypeOperator */]: function visitEachChildOfTypeOperatorNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOperatorNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [196 /* IndexedAccessType */]: function visitEachChildOfIndexedAccessType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexedAccessTypeNode( node, - nodeVisitor(node.objectType, visitor, isTypeNode), - nodeVisitor(node.indexType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.objectType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.indexType, visitor, isTypeNode)) ); }, [197 /* MappedType */]: function visitEachChildOfMappedType(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateMappedTypeNode( node, - nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken), - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration), + tokenVisitor ? nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken) : node.readonlyToken, + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)), nodeVisitor(node.nameType, visitor, isTypeNode), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodesVisitor(node.members, visitor, isTypeElement) ); @@ -84017,21 +85177,21 @@ ${lanes.join("\n")} [198 /* LiteralType */]: function visitEachChildOfLiteralTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLiteralTypeNode( node, - nodeVisitor(node.literal, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.literal, visitor, isLiteralTypeLiteral)) ); }, [200 /* TemplateLiteralType */]: function visitEachChildOfTemplateLiteralType(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralType( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateLiteralTypeSpan) ); }, [201 /* TemplateLiteralTypeSpan */]: function visitEachChildOfTemplateLiteralTypeSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralTypeSpan( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Binding patterns @@ -84050,9 +85210,9 @@ ${lanes.join("\n")} [205 /* BindingElement */]: function visitEachChildOfBindingElement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBindingElement( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, nodeVisitor(node.propertyName, visitor, isPropertyName), - nodeVisitor(node.name, visitor, isBindingName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -84072,37 +85232,37 @@ ${lanes.join("\n")} [208 /* PropertyAccessExpression */]: function visitEachChildOfPropertyAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isPropertyAccessChain(node) ? context.factory.updatePropertyAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ) : context.factory.updatePropertyAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ); }, [209 /* ElementAccessExpression */]: function visitEachChildOfElementAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isElementAccessChain(node) ? context.factory.updateElementAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ) : context.factory.updateElementAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ); }, [210 /* CallExpression */]: function visitEachChildOfCallExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return isCallChain(node) ? context.factory.updateCallChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ) : context.factory.updateCallExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -84110,7 +85270,7 @@ ${lanes.join("\n")} [211 /* NewExpression */]: function visitEachChildOfNewExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNewExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -84118,29 +85278,29 @@ ${lanes.join("\n")} [212 /* TaggedTemplateExpression */]: function visitEachChildOfTaggedTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTaggedTemplateExpression( node, - nodeVisitor(node.tag, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.tag, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.template, visitor, isTemplateLiteral) + Debug.checkDefined(nodeVisitor(node.template, visitor, isTemplateLiteral)) ); }, [213 /* TypeAssertionExpression */]: function visitEachChildOfTypeAssertionExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAssertion( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [214 /* ParenthesizedExpression */]: function visitEachChildOfParenthesizedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [215 /* FunctionExpression */]: function visitEachChildOfFunctionExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateFunctionExpression( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -84155,82 +85315,82 @@ ${lanes.join("\n")} nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken)) : node.equalsGreaterThanToken, visitFunctionBody(node.body, visitor, context, nodeVisitor) ); }, [217 /* DeleteExpression */]: function visitEachChildOfDeleteExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDeleteExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [218 /* TypeOfExpression */]: function visitEachChildOfTypeOfExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOfExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [219 /* VoidExpression */]: function visitEachChildOfVoidExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVoidExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [220 /* AwaitExpression */]: function visitEachChildOfAwaitExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAwaitExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [221 /* PrefixUnaryExpression */]: function visitEachChildOfPrefixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePrefixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [222 /* PostfixUnaryExpression */]: function visitEachChildOfPostfixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePostfixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [223 /* BinaryExpression */]: function visitEachChildOfBinaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBinaryExpression( node, - nodeVisitor(node.left, visitor, isExpression), - nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken), - nodeVisitor(node.right, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.left, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken)) : node.operatorToken, + Debug.checkDefined(nodeVisitor(node.right, visitor, isExpression)) ); }, [224 /* ConditionalExpression */]: function visitEachChildOfConditionalExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateConditionalExpression( node, - nodeVisitor(node.condition, visitor, isExpression), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.whenTrue, visitor, isExpression), - nodeVisitor(node.colonToken, tokenVisitor, isColonToken), - nodeVisitor(node.whenFalse, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.condition, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken)) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.whenTrue, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.colonToken, tokenVisitor, isColonToken)) : node.colonToken, + Debug.checkDefined(nodeVisitor(node.whenFalse, visitor, isExpression)) ); }, [225 /* TemplateExpression */]: function visitEachChildOfTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateExpression( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateSpan) ); }, [226 /* YieldExpression */]: function visitEachChildOfYieldExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateYieldExpression( node, - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.expression, visitor, isExpression) ); }, [227 /* SpreadElement */]: function visitEachChildOfSpreadElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadElement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [228 /* ClassExpression */]: function visitEachChildOfClassExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -84246,45 +85406,45 @@ ${lanes.join("\n")} [230 /* ExpressionWithTypeArguments */]: function visitEachChildOfExpressionWithTypeArguments(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionWithTypeArguments( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, [231 /* AsExpression */]: function visitEachChildOfAsExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAsExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [235 /* SatisfiesExpression */]: function visitEachChildOfSatisfiesExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSatisfiesExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [232 /* NonNullExpression */]: function visitEachChildOfNonNullExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return isOptionalChain(node) ? context.factory.updateNonNullChain( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ) : context.factory.updateNonNullExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [233 /* MetaProperty */]: function visitEachChildOfMetaProperty(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateMetaProperty( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Misc [236 /* TemplateSpan */]: function visitEachChildOfTemplateSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateSpan( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Element @@ -84297,21 +85457,21 @@ ${lanes.join("\n")} [240 /* VariableStatement */]: function visitEachChildOfVariableStatement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVariableStatement( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.declarationList, visitor, isVariableDeclarationList) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.declarationList, visitor, isVariableDeclarationList)) ); }, [241 /* ExpressionStatement */]: function visitEachChildOfExpressionStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [242 /* IfStatement */]: function visitEachChildOfIfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIfStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock)), nodeVisitor(node.elseStatement, visitor, isStatement, context.factory.liftToBlock) ); }, @@ -84319,13 +85479,13 @@ ${lanes.join("\n")} return context.factory.updateDoStatement( node, visitIterationBody(node.statement, visitor, context, nodeVisitor), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [244 /* WhileStatement */]: function visitEachChildOfWhileStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWhileStatement( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -84341,17 +85501,17 @@ ${lanes.join("\n")} [246 /* ForInStatement */]: function visitEachChildOfForInStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateForInStatement( node, - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, [247 /* ForOfStatement */]: function visitEachChildOfForOfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateForOfStatement( node, - nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword), - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + tokenVisitor ? nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword) : node.awaitModifier, + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -84376,34 +85536,34 @@ ${lanes.join("\n")} [251 /* WithStatement */]: function visitEachChildOfWithStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWithStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [252 /* SwitchStatement */]: function visitEachChildOfSwitchStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSwitchStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.caseBlock, visitor, isCaseBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.caseBlock, visitor, isCaseBlock)) ); }, [253 /* LabeledStatement */]: function visitEachChildOfLabeledStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLabeledStatement( node, - nodeVisitor(node.label, visitor, isIdentifier), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.label, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [254 /* ThrowStatement */]: function visitEachChildOfThrowStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateThrowStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [255 /* TryStatement */]: function visitEachChildOfTryStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTryStatement( node, - nodeVisitor(node.tryBlock, visitor, isBlock), + Debug.checkDefined(nodeVisitor(node.tryBlock, visitor, isBlock)), nodeVisitor(node.catchClause, visitor, isCatchClause), nodeVisitor(node.finallyBlock, visitor, isBlock) ); @@ -84411,8 +85571,8 @@ ${lanes.join("\n")} [257 /* VariableDeclaration */]: function visitEachChildOfVariableDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateVariableDeclaration( node, - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken) : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -84427,7 +85587,7 @@ ${lanes.join("\n")} return context.factory.updateFunctionDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -84448,8 +85608,8 @@ ${lanes.join("\n")} [261 /* InterfaceDeclaration */]: function visitEachChildOfInterfaceDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInterfaceDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), nodesVisitor(node.heritageClauses, visitor, isHeritageClause), nodesVisitor(node.members, visitor, isTypeElement) @@ -84458,25 +85618,25 @@ ${lanes.join("\n")} [262 /* TypeAliasDeclaration */]: function visitEachChildOfTypeAliasDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAliasDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [263 /* EnumDeclaration */]: function visitEachChildOfEnumDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.members, visitor, isEnumMember) ); }, [264 /* ModuleDeclaration */]: function visitEachChildOfModuleDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateModuleDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isModuleName), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isModuleName)), nodeVisitor(node.body, visitor, isModuleBody) ); }, @@ -84495,24 +85655,24 @@ ${lanes.join("\n")} [267 /* NamespaceExportDeclaration */]: function visitEachChildOfNamespaceExportDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExportDeclaration( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [268 /* ImportEqualsDeclaration */]: function visitEachChildOfImportEqualsDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportEqualsDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.moduleReference, visitor, isModuleReference) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.moduleReference, visitor, isModuleReference)) ); }, [269 /* ImportDeclaration */]: function visitEachChildOfImportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), nodeVisitor(node.importClause, visitor, isImportClause), - nodeVisitor(node.moduleSpecifier, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.moduleSpecifier, visitor, isExpression)), nodeVisitor(node.assertClause, visitor, isAssertClause) ); }, @@ -84526,8 +85686,8 @@ ${lanes.join("\n")} [297 /* AssertEntry */]: function visitEachChildOfAssertEntry(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAssertEntry( node, - nodeVisitor(node.name, visitor, isAssertionKey), - nodeVisitor(node.value, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isAssertionKey)), + Debug.checkDefined(nodeVisitor(node.value, visitor, isExpression)) ); }, [270 /* ImportClause */]: function visitEachChildOfImportClause(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -84541,13 +85701,13 @@ ${lanes.join("\n")} [271 /* NamespaceImport */]: function visitEachChildOfNamespaceImport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceImport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [277 /* NamespaceExport */]: function visitEachChildOfNamespaceExport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [272 /* NamedImports */]: function visitEachChildOfNamedImports(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -84561,20 +85721,20 @@ ${lanes.join("\n")} node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [274 /* ExportAssignment */]: function visitEachChildOfExportAssignment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportAssignment( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.expression, visitor, isExpression) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [275 /* ExportDeclaration */]: function visitEachChildOfExportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, nodeVisitor(node.exportClause, visitor, isNamedExportBindings), nodeVisitor(node.moduleSpecifier, visitor, isExpression), @@ -84592,59 +85752,59 @@ ${lanes.join("\n")} node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Module references [280 /* ExternalModuleReference */]: function visitEachChildOfExternalModuleReference(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExternalModuleReference( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // JSX [281 /* JsxElement */]: function visitEachChildOfJsxElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxElement( node, - nodeVisitor(node.openingElement, visitor, isJsxOpeningElement), + Debug.checkDefined(nodeVisitor(node.openingElement, visitor, isJsxOpeningElement)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingElement, visitor, isJsxClosingElement) + Debug.checkDefined(nodeVisitor(node.closingElement, visitor, isJsxClosingElement)) ); }, [282 /* JsxSelfClosingElement */]: function visitEachChildOfJsxSelfClosingElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSelfClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [283 /* JsxOpeningElement */]: function visitEachChildOfJsxOpeningElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxOpeningElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [284 /* JsxClosingElement */]: function visitEachChildOfJsxClosingElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression) + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)) ); }, [285 /* JsxFragment */]: function visitEachChildOfJsxFragment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxFragment( node, - nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment), + Debug.checkDefined(nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment) + Debug.checkDefined(nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment)) ); }, [288 /* JsxAttribute */]: function visitEachChildOfJsxAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxAttribute( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.initializer, visitor, isStringLiteralOrJsxExpression) ); }, @@ -84657,20 +85817,20 @@ ${lanes.join("\n")} [290 /* JsxSpreadAttribute */]: function visitEachChildOfJsxSpreadAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSpreadAttribute( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [291 /* JsxExpression */]: function visitEachChildOfJsxExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Clauses [292 /* CaseClause */]: function visitEachChildOfCaseClause(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateCaseClause( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.statements, visitor, isStatement) ); }, @@ -84690,35 +85850,35 @@ ${lanes.join("\n")} return context.factory.updateCatchClause( node, nodeVisitor(node.variableDeclaration, visitor, isVariableDeclaration), - nodeVisitor(node.block, visitor, isBlock) + Debug.checkDefined(nodeVisitor(node.block, visitor, isBlock)) ); }, // Property assignments [299 /* PropertyAssignment */]: function visitEachChildOfPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePropertyAssignment( node, - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.initializer, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isExpression)) ); }, [300 /* ShorthandPropertyAssignment */]: function visitEachChildOfShorthandPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateShorthandPropertyAssignment( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.objectAssignmentInitializer, visitor, isExpression) ); }, [301 /* SpreadAssignment */]: function visitEachChildOfSpreadAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadAssignment( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Enum [302 /* EnumMember */]: function visitEachChildOfEnumMember(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumMember( node, - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -84730,13 +85890,13 @@ ${lanes.join("\n")} ); }, // Transformation nodes - [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [356 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [357 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -85622,10 +86782,13 @@ ${lanes.join("\n")} parameters }; } - function getAllDecoratorsOfClassElement(member, parent2) { + function getAllDecoratorsOfClassElement(member, parent2, useLegacyDecorators) { switch (member.kind) { case 174 /* GetAccessor */: case 175 /* SetAccessor */: + if (!useLegacyDecorators) { + return getAllDecoratorsOfMethod(member); + } return getAllDecoratorsOfAccessors(member, parent2); case 171 /* MethodDeclaration */: return getAllDecoratorsOfMethod(member); @@ -85674,6 +86837,34 @@ ${lanes.join("\n")} } return { decorators }; } + function walkUpLexicalEnvironments(env, cb) { + while (env) { + const result = cb(env); + if (result !== void 0) + return result; + env = env.previous; + } + } + function newPrivateEnvironment(data) { + return { data }; + } + function getPrivateIdentifier(privateEnv, name) { + var _a2, _b; + return isGeneratedPrivateIdentifier(name) ? (_a2 = privateEnv == null ? void 0 : privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(getNodeForGeneratedName(name)) : (_b = privateEnv == null ? void 0 : privateEnv.identifiers) == null ? void 0 : _b.get(name.escapedText); + } + function setPrivateIdentifier(privateEnv, name, entry) { + var _a2, _b; + if (isGeneratedPrivateIdentifier(name)) { + (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); + privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), entry); + } else { + (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); + privateEnv.identifiers.set(name.escapedText, entry); + } + } + function accessPrivateIdentifier(env, name) { + return walkUpLexicalEnvironments(env, (env2) => getPrivateIdentifier(env2.privateEnv, name)); + } var init_utilities3 = __esm({ "src/compiler/transformers/utilities.ts"() { "use strict"; @@ -85692,7 +86883,7 @@ ${lanes.join("\n")} location = node = value; value = node.right; } else { - return visitNode(value, visitor, isExpression); + return Debug.checkDefined(visitNode(value, visitor, isExpression)); } } } @@ -85711,6 +86902,7 @@ ${lanes.join("\n")} }; if (value) { value = visitNode(value, visitor, isExpression); + Debug.assert(value); if (isIdentifier(value) && bindingOrAssignmentElementAssignsToName(node, value.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node)) { value = ensureIdentifier( flattenContext, @@ -85752,7 +86944,7 @@ ${lanes.join("\n")} function emitBindingOrAssignment(target, value2, location2, original) { Debug.assertNode(target, createAssignmentCallback ? isIdentifier : isExpression); const expression = createAssignmentCallback ? createAssignmentCallback(target, value2, location2) : setTextRange( - context.factory.createAssignment(visitNode(target, visitor, isExpression), value2), + context.factory.createAssignment(Debug.checkDefined(visitNode(target, visitor, isExpression)), value2), location2 ); expression.original = original; @@ -85809,7 +87001,7 @@ ${lanes.join("\n")} if (initializer && (isIdentifier(initializer) && bindingOrAssignmentElementAssignsToName(node, initializer.escapedText) || bindingOrAssignmentElementContainsNonLiteralComputedName(node))) { initializer = ensureIdentifier( flattenContext, - visitNode(initializer, flattenContext.visitor), + Debug.checkDefined(visitNode(initializer, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, initializer @@ -85930,7 +87122,7 @@ ${lanes.join("\n")} if (!getRestIndicatorOfBindingOrAssignmentElement(element)) { const propertyName = getPropertyNameOfBindingOrAssignmentElement(element); if (flattenContext.level >= 1 /* ObjectRest */ && !(element.transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !(getTargetOfBindingOrAssignmentElement(element).transformFlags & (32768 /* ContainsRestOrSpread */ | 65536 /* ContainsObjectRestOrSpread */)) && !isComputedPropertyName(propertyName)) { - bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor)); + bindingElements = append(bindingElements, visitNode(element, flattenContext.visitor, isBindingOrAssignmentElement)); } else { if (bindingElements) { flattenContext.emitBindingOrAssignment(flattenContext.createObjectBindingOrAssignmentPattern(bindingElements), value, location, pattern); @@ -86068,7 +87260,7 @@ ${lanes.join("\n")} if (isComputedPropertyName(propertyName)) { const argumentExpression = ensureIdentifier( flattenContext, - visitNode(propertyName.expression, flattenContext.visitor), + Debug.checkDefined(visitNode(propertyName.expression, flattenContext.visitor, isExpression)), /*reuseIdentifierExpressions*/ false, /*location*/ @@ -86111,6 +87303,7 @@ ${lanes.join("\n")} return factory2.createArrayBindingPattern(elements); } function makeArrayAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isArrayBindingOrAssignmentElement); return factory2.createArrayLiteralExpression(map(elements, factory2.converters.convertToArrayAssignmentElement)); } function makeObjectBindingPattern(factory2, elements) { @@ -86118,6 +87311,7 @@ ${lanes.join("\n")} return factory2.createObjectBindingPattern(elements); } function makeObjectAssignmentPattern(factory2, elements) { + Debug.assertEachNode(elements, isObjectBindingOrAssignmentElement); return factory2.createObjectLiteralExpression(map(elements, factory2.converters.convertToObjectAssignmentElement)); } function makeBindingElement(factory2, name) { @@ -86148,6 +87342,7 @@ ${lanes.join("\n")} // src/compiler/transformers/taggedTemplate.ts function processTaggedTemplateExpression(context, node, visitor, currentSourceFile, recordTaggedTemplateString, level) { const tag = visitNode(node.tag, visitor, isExpression); + Debug.assert(tag); const templateArguments = [void 0]; const cookedStrings = []; const rawStrings = []; @@ -86164,7 +87359,7 @@ ${lanes.join("\n")} for (const templateSpan of template.templateSpans) { cookedStrings.push(createTemplateCooked(templateSpan.literal)); rawStrings.push(getRawLiteral(templateSpan.literal, currentSourceFile)); - templateArguments.push(visitNode(templateSpan.expression, visitor, isExpression)); + templateArguments.push(Debug.checkDefined(visitNode(templateSpan.expression, visitor, isExpression))); } } const helperCall = context.getEmitHelperFactory().createTemplateObjectHelper( @@ -86235,6 +87430,7 @@ ${lanes.join("\n")} const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const typeSerializer = compilerOptions.emitDecoratorMetadata ? createRuntimeTypeSerializer(context) : void 0; const previousOnEmitNode = context.onEmitNode; const previousOnSubstituteNode = context.onSubstituteNode; @@ -86409,6 +87605,12 @@ ${lanes.join("\n")} return Debug.failBadSyntaxKind(node); } } + function decoratorElidingVisitor(node) { + return isDecorator(node) ? void 0 : visitor(node); + } + function modifierElidingVisitor(node) { + return isModifier(node) ? void 0 : visitor(node); + } function modifierVisitor(node) { if (isDecorator(node)) return void 0; @@ -86548,19 +87750,25 @@ ${lanes.join("\n")} function visitObjectLiteralExpression(node) { return factory2.updateObjectLiteralExpression( node, - visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElement) + visitNodes2(node.properties, getObjectLiteralElementVisitor(node), isObjectLiteralElementLike) ); } - function getClassFacts(node, staticProperties) { + function getClassFacts(node) { let facts = 0 /* None */; - if (some(staticProperties)) + if (some(getProperties( + node, + /*requireInitialized*/ + true, + /*isStatic*/ + true + ))) facts |= 1 /* HasStaticInitializedProperties */; const extendsClauseElement = getEffectiveBaseTypeNode(node); if (extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */) facts |= 64 /* IsDerivedClass */; - if (classOrConstructorParameterIsDecorated(node)) - facts |= 2 /* HasConstructorDecorators */; - if (childIsDecorated(node)) + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) + facts |= 2 /* HasClassOrConstructorParameterDecorators */; + if (childIsDecorated(legacyDecorators, node)) facts |= 4 /* HasMemberDecorators */; if (isExportOfNamespace(node)) facts |= 8 /* IsExportOfNamespace */; @@ -86568,8 +87776,6 @@ ${lanes.join("\n")} facts |= 32 /* IsDefaultExternalExport */; else if (isNamedExternalModuleExport(node)) facts |= 16 /* IsNamedExternalExport */; - if (languageVersion <= 1 /* ES5 */ && facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */) - facts |= 128 /* UseImmediatelyInvokedFunctionExpression */; return facts; } function hasTypeScriptClassSyntax(node) { @@ -86579,7 +87785,10 @@ ${lanes.join("\n")} return hasDecorators(node) || some(node.typeParameters) || some(node.heritageClauses, hasTypeScriptClassSyntax) || some(node.members, hasTypeScriptClassSyntax); } function visitClassDeclaration(node) { - if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !(currentNamespace && hasSyntacticModifier(node, 1 /* Export */))) { + var _a2; + const facts = getClassFacts(node); + const promoteToIIFE = languageVersion <= 1 /* ES5 */ && !!(facts & 7 /* MayNeedImmediatelyInvokedFunctionExpression */); + if (!isClassLikeDeclarationWithTypeScriptSyntax(node) && !classOrConstructorParameterIsDecorated(legacyDecorators, node) && !isExportOfNamespace(node)) { return factory2.updateClassDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), @@ -86590,24 +87799,19 @@ ${lanes.join("\n")} visitNodes2(node.members, getClassElementVisitor(node), isClassElement) ); } - const staticProperties = getProperties( - node, - /*requireInitializer*/ - true, - /*isStatic*/ - true - ); - const facts = getClassFacts(node, staticProperties); - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + if (promoteToIIFE) { context.startLexicalEnvironment(); } - const name = node.name || (facts & 5 /* NeedsName */ ? factory2.getGeneratedNameForNode(node) : void 0); - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); - const modifiers = !(facts & 128 /* UseImmediatelyInvokedFunctionExpression */) ? visitNodes2(node.modifiers, modifierVisitor, isModifier) : elideNodes(factory2, node.modifiers); - const classStatement = factory2.updateClassDeclaration( + const moveModifiers = promoteToIIFE || facts & 8 /* IsExportOfNamespace */ || facts & 2 /* HasClassOrConstructorParameterDecorators */ && legacyDecorators || facts & 1 /* HasStaticInitializedProperties */; + let modifiers = moveModifiers ? visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, visitor, isModifierLike); + if (facts & 2 /* HasClassOrConstructorParameterDecorators */) { + modifiers = injectClassTypeMetadata(modifiers, node); + } + const needsName = moveModifiers && !node.name || facts & 4 /* HasMemberDecorators */ || facts & 1 /* HasStaticInitializedProperties */; + const name = needsName ? (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node) : node.name; + const classDeclaration = factory2.updateClassDeclaration( node, - concatenate(decorators, modifiers), + modifiers, name, /*typeParameters*/ void 0, @@ -86618,24 +87822,25 @@ ${lanes.join("\n")} if (facts & 1 /* HasStaticInitializedProperties */) { emitFlags |= 64 /* NoTrailingSourceMap */; } - setEmitFlags(classStatement, emitFlags); - let statements = [classStatement]; - if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */) { + setEmitFlags(classDeclaration, emitFlags); + let statement; + if (promoteToIIFE) { + const statements = [classDeclaration]; const closingBraceLocation = createTokenRange(skipTrivia(currentSourceFile.text, node.members.end), 19 /* CloseBraceToken */); const localName = factory2.getInternalName(node); const outer = factory2.createPartiallyEmittedExpression(localName); setTextRangeEnd(outer, closingBraceLocation.end); setEmitFlags(outer, 3072 /* NoComments */); - const statement = factory2.createReturnStatement(outer); - setTextRangePos(statement, closingBraceLocation.pos); - setEmitFlags(statement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); - statements.push(statement); + const returnStatement = factory2.createReturnStatement(outer); + setTextRangePos(returnStatement, closingBraceLocation.pos); + setEmitFlags(returnStatement, 3072 /* NoComments */ | 768 /* NoTokenSourceMaps */); + statements.push(returnStatement); insertStatementsAfterStandardPrologue(statements, context.endLexicalEnvironment()); const iife = factory2.createImmediatelyInvokedArrowFunction(statements); - setEmitFlags(iife, 67108864 /* TypeScriptClassWrapper */); + setInternalEmitFlags(iife, 1 /* TypeScriptClassWrapper */); + const modifiers2 = facts & 16 /* IsNamedExternalExport */ ? factory2.createModifiersFromModifierFlags(1 /* Export */) : void 0; const varStatement = factory2.createVariableStatement( - /*modifiers*/ - void 0, + modifiers2, factory2.createVariableDeclarationList([ factory2.createVariableDeclaration( factory2.getLocalName( @@ -86651,114 +87856,133 @@ ${lanes.join("\n")} void 0, iife ) - ]) + ], 1 /* Let */) ); setOriginalNode(varStatement, node); setCommentRange(varStatement, node); setSourceMapRange(varStatement, moveRangePastDecorators(node)); startOnNewLine(varStatement); - statements = [varStatement]; + statement = varStatement; + } else { + statement = classDeclaration; } - if (facts & 8 /* IsExportOfNamespace */) { - addExportMemberAssignment(statements, node); - } else if (facts & 128 /* UseImmediatelyInvokedFunctionExpression */ || facts & 2 /* HasConstructorDecorators */) { + if (moveModifiers) { + if (facts & 8 /* IsExportOfNamespace */) { + return demarcateMultiStatementExport( + statement, + createExportMemberAssignmentStatement(node) + ); + } if (facts & 32 /* IsDefaultExternalExport */) { - statements.push(factory2.createExportDefault(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); - } else if (facts & 16 /* IsNamedExternalExport */) { - statements.push(factory2.createExternalModuleExport(factory2.getLocalName( - node, - /*allowComments*/ - false, - /*allowSourceMaps*/ - true - ))); + return demarcateMultiStatementExport( + statement, + factory2.createExportDefault(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); + } + if (facts & 16 /* IsNamedExternalExport */ && !promoteToIIFE) { + return demarcateMultiStatementExport( + statement, + factory2.createExternalModuleExport(factory2.getLocalName( + node, + /*allowComments*/ + false, + /*allowSourceMaps*/ + true + )) + ); } } - if (statements.length > 1) { - statements.push(factory2.createEndOfDeclarationMarker(node)); - setEmitFlags(classStatement, getEmitFlags(classStatement) | 8388608 /* HasEndOfDeclarationMarker */); - } - return singleOrMany(statements); + return statement; + } + function demarcateMultiStatementExport(declarationStatement, exportStatement) { + addEmitFlags(declarationStatement, 8388608 /* HasEndOfDeclarationMarker */); + return [ + declarationStatement, + exportStatement, + factory2.createEndOfDeclarationMarker(declarationStatement) + ]; } function visitClassExpression(node) { - const allDecorators = getAllDecoratorsOfClass(node); - const decorators = transformAllDecoratorsOfDeclaration(node, node, allDecorators); + let modifiers = visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike); + if (classOrConstructorParameterIsDecorated(legacyDecorators, node)) { + modifiers = injectClassTypeMetadata(modifiers, node); + } return factory2.updateClassExpression( node, - decorators, + modifiers, node.name, /*typeParameters*/ void 0, visitNodes2(node.heritageClauses, visitor, isHeritageClause), - isClassLikeDeclarationWithTypeScriptSyntax(node) ? transformClassMembers(node) : visitNodes2(node.members, getClassElementVisitor(node), isClassElement) + transformClassMembers(node) ); } function transformClassMembers(node) { - const members = []; + const members = visitNodes2(node.members, getClassElementVisitor(node), isClassElement); + let newMembers; const constructor = getFirstConstructorWithBody(node); const parametersWithPropertyAssignments = constructor && filter(constructor.parameters, (p) => isParameterPropertyDeclaration(p, constructor)); if (parametersWithPropertyAssignments) { for (const parameter of parametersWithPropertyAssignments) { - if (isIdentifier(parameter.name)) { - members.push(setOriginalNode(factory2.createPropertyDeclaration( - /*modifiers*/ - void 0, - parameter.name, - /*questionOrExclamationToken*/ - void 0, - /*type*/ - void 0, - /*initializer*/ - void 0 - ), parameter)); - } + const parameterProperty = factory2.createPropertyDeclaration( + /*modifiers*/ + void 0, + parameter.name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + /*initializer*/ + void 0 + ); + setOriginalNode(parameterProperty, parameter); + newMembers = append(newMembers, parameterProperty); } } - addRange(members, visitNodes2(node.members, getClassElementVisitor(node), isClassElement)); - return setTextRange( - factory2.createNodeArray(members), - /*location*/ - node.members - ); - } - function transformAllDecoratorsOfDeclaration(node, container, allDecorators) { - var _a2, _b, _c, _d; - if (!allDecorators) { - return void 0; + if (newMembers) { + newMembers = addRange(newMembers, members); + return setTextRange( + factory2.createNodeArray(newMembers), + /*location*/ + node.members + ); } - const decorators = visitArray(allDecorators.decorators, visitor, isDecorator); - const parameterDecorators = flatMap(allDecorators.parameters, transformDecoratorsOfParameter); - const metadataDecorators = some(decorators) || some(parameterDecorators) ? getTypeMetadata(node, container) : void 0; - const result = factory2.createNodeArray(concatenate(concatenate(decorators, parameterDecorators), metadataDecorators)); - const pos = (_b = (_a2 = firstOrUndefined(allDecorators.decorators)) == null ? void 0 : _a2.pos) != null ? _b : -1; - const end = (_d = (_c = lastOrUndefined(allDecorators.decorators)) == null ? void 0 : _c.end) != null ? _d : -1; - setTextRangePosEnd(result, pos, end); - return result; + return members; } - function transformDecoratorsOfParameter(parameterDecorators, parameterOffset) { - if (parameterDecorators) { - const decorators = []; - for (const parameterDecorator of parameterDecorators) { - const expression = visitNode(parameterDecorator.expression, visitor, isExpression); - const helper = emitHelpers().createParamHelper(expression, parameterOffset); - setTextRange(helper, parameterDecorator.expression); - setEmitFlags(helper, 3072 /* NoComments */); - const decorator = factory2.createDecorator(helper); - setSourceMapRange(decorator, parameterDecorator.expression); - setCommentRange(decorator, parameterDecorator.expression); - setEmitFlags(decorator, 3072 /* NoComments */); - decorators.push(decorator); + function injectClassTypeMetadata(modifiers, node) { + const metadata = getTypeMetadata(node, node); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, takeWhile(modifiers, isExportOrDefaultModifier)); + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(skipWhile(modifiers, isExportOrDefaultModifier), isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); + } + return modifiers; + } + function injectClassElementTypeMetadata(modifiers, node, container) { + if (isClassLike(container) && classElementOrClassElementParameterIsDecorated(legacyDecorators, node, container)) { + const metadata = getTypeMetadata(node, container); + if (some(metadata)) { + const modifiersArray = []; + addRange(modifiersArray, filter(modifiers, isDecorator)); + addRange(modifiersArray, metadata); + addRange(modifiersArray, filter(modifiers, isModifier)); + modifiers = setTextRange(factory2.createNodeArray(modifiersArray), modifiers); } - return decorators; } + return modifiers; } function getTypeMetadata(node, container) { + if (!legacyDecorators) + return void 0; return USE_NEW_TYPE_METADATA_FORMAT ? getNewTypeMetadata(node, container) : getOldTypeMetadata(node, container); } function getOldTypeMetadata(node, container) { @@ -86867,8 +88091,9 @@ ${lanes.join("\n")} } function visitPropertyNameOfClassElement(member) { const name = member.name; - if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member))) { + if (isComputedPropertyName(name) && (!hasStaticModifier(member) && currentClassHasParameterProperties || hasDecorators(member) && legacyDecorators)) { const expression = visitNode(name.expression, visitor, isExpression); + Debug.assert(expression); const innerExpression = skipPartiallyEmittedExpressions(expression); if (!isSimpleInlineableExpression(innerExpression)) { const generatedName = factory2.getGeneratedNameForNode(name); @@ -86876,7 +88101,7 @@ ${lanes.join("\n")} return factory2.updateComputedPropertyName(name, factory2.createAssignment(generatedName, expression)); } } - return visitNode(name, visitor, isPropertyName); + return Debug.checkDefined(visitNode(name, visitor, isPropertyName)); } function visitHeritageClause(node) { if (node.token === 117 /* ImplementsKeyword */) { @@ -86887,7 +88112,7 @@ ${lanes.join("\n")} function visitExpressionWithTypeArguments(node) { return factory2.updateExpressionWithTypeArguments( node, - visitNode(node.expression, visitor, isLeftHandSideExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression)), /*typeArguments*/ void 0 ); @@ -86897,16 +88122,16 @@ ${lanes.join("\n")} } function visitPropertyDeclaration(node, parent2) { const isAmbient = node.flags & 16777216 /* Ambient */ || hasSyntacticModifier(node, 256 /* Abstract */); - if (isAmbient && !hasDecorators(node)) { + if (isAmbient && !(legacyDecorators && hasDecorators(node))) { return void 0; } - const allDecorators = getAllDecoratorsOfClassElement(node, parent2); - const decorators = transformAllDecoratorsOfDeclaration(node, parent2, allDecorators); + let modifiers = isClassLike(parent2) ? !isAmbient ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, modifierElidingVisitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); if (isAmbient) { return factory2.updatePropertyDeclaration( node, - concatenate(decorators, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), - visitNode(node.name, visitor, isPropertyName), + concatenate(modifiers, factory2.createModifiersFromModifierFlags(2 /* Ambient */)), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -86917,13 +88142,13 @@ ${lanes.join("\n")} } return factory2.updatePropertyDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), /*questionOrExclamationToken*/ void 0, /*type*/ void 0, - visitNode(node.initializer, visitor) + visitNode(node.initializer, visitor, isExpression) ); } function visitConstructor(node) { @@ -87024,11 +88249,11 @@ ${lanes.join("\n")} if (!shouldEmitFunctionLikeDeclaration(node)) { return void 0; } - const allDecorators = isClassLike(parent2) ? getAllDecoratorsOfClassElement(node, parent2) : void 0; - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, allDecorators) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateMethodDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, node.asteriskToken, visitPropertyNameOfClassElement(node), /*questionToken*/ @@ -87051,10 +88276,11 @@ ${lanes.join("\n")} if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateGetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), /*type*/ @@ -87069,10 +88295,11 @@ ${lanes.join("\n")} if (!shouldEmitAccessorDeclaration(node)) { return void 0; } - const decorators = isClassLike(parent2) ? transformAllDecoratorsOfDeclaration(node, parent2, getAllDecoratorsOfClassElement(node, parent2)) : void 0; + let modifiers = isClassLike(parent2) ? visitNodes2(node.modifiers, visitor, isModifierLike) : visitNodes2(node.modifiers, decoratorElidingVisitor, isModifierLike); + modifiers = injectClassElementTypeMetadata(modifiers, node, parent2); return factory2.updateSetAccessorDeclaration( node, - concatenate(decorators, visitNodes2(node.modifiers, modifierVisitor, isModifierLike)), + modifiers, visitPropertyNameOfClassElement(node), visitParameterList(node.parameters, visitor, context), visitFunctionBody(node.body, visitor, context) || factory2.createBlock([]) @@ -87139,10 +88366,9 @@ ${lanes.join("\n")} } const updated = factory2.updateParameterDeclaration( node, - elideNodes(factory2, node.modifiers), - // preserve positions, if available + visitNodes2(node.modifiers, (node2) => isDecorator(node2) ? visitor(node2) : void 0, isModifierLike), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -87191,7 +88417,7 @@ ${lanes.join("\n")} return setTextRange( factory2.createAssignment( getNamespaceMemberNameWithSourceMapsAndWithoutComments(name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), /*location*/ node @@ -87201,7 +88427,7 @@ ${lanes.join("\n")} function visitVariableDeclaration(node) { const updated = factory2.updateVariableDeclaration( node, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*exclamationToken*/ void 0, /*type*/ @@ -87217,26 +88443,30 @@ ${lanes.join("\n")} const innerExpression = skipOuterExpressions(node.expression, ~6 /* Assertions */); if (isAssertionExpression(innerExpression)) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } return visitEachChild(node, visitor, context); } function visitAssertionExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitNonNullExpression(node) { const expression = visitNode(node.expression, visitor, isLeftHandSideExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitSatisfiesExpression(node) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); return factory2.createPartiallyEmittedExpression(expression, node); } function visitCallExpression(node) { return factory2.updateCallExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -87245,7 +88475,7 @@ ${lanes.join("\n")} function visitNewExpression(node) { return factory2.updateNewExpression( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -87254,28 +88484,28 @@ ${lanes.join("\n")} function visitTaggedTemplateExpression(node) { return factory2.updateTaggedTemplateExpression( node, - visitNode(node.tag, visitor, isExpression), + Debug.checkDefined(visitNode(node.tag, visitor, isExpression)), /*typeArguments*/ void 0, - visitNode(node.template, visitor, isExpression) + Debug.checkDefined(visitNode(node.template, visitor, isTemplateLiteral)) ); } function visitJsxSelfClosingElement(node) { return factory2.updateJsxSelfClosingElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function visitJsxJsxOpeningElement(node) { return factory2.updateJsxOpeningElement( node, - visitNode(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(visitNode(node.tagName, visitor, isJsxTagNameExpression)), /*typeArguments*/ void 0, - visitNode(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(visitNode(node.attributes, visitor, isJsxAttributes)) ); } function shouldEmitEnumDeclaration(node) { @@ -87421,7 +88651,7 @@ ${lanes.join("\n")} } else { enableSubstitutionForNonQualifiedEnumMembers(); if (member.initializer) { - return visitNode(member.initializer, visitor, isExpression); + return Debug.checkDefined(visitNode(member.initializer, visitor, isExpression)); } else { return factory2.createVoidZero(); } @@ -87663,7 +88893,7 @@ ${lanes.join("\n")} if (node.kind === 271 /* NamespaceImport */) { return shouldEmitAliasDeclaration(node) ? node : void 0; } else { - const allowEmpty = compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || compilerOptions.preserveValueImports && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const elements = visitNodes2(node.elements, visitImportSpecifier, isImportSpecifier); return allowEmpty || some(elements) ? factory2.updateNamedImports(node, elements) : void 0; } @@ -87672,7 +88902,7 @@ ${lanes.join("\n")} return !node.isTypeOnly && shouldEmitAliasDeclaration(node) ? node : void 0; } function visitExportAssignment(node) { - return resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; + return compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node) ? visitEachChild(node, visitor, context) : void 0; } function visitExportDeclaration(node) { if (node.isTypeOnly) { @@ -87681,7 +88911,7 @@ ${lanes.join("\n")} if (!node.exportClause || isNamespaceExport(node.exportClause)) { return node; } - const allowEmpty = !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); + const allowEmpty = compilerOptions.verbatimModuleSyntax || !!node.moduleSpecifier && (compilerOptions.importsNotUsedAsValues === 1 /* Preserve */ || compilerOptions.importsNotUsedAsValues === 2 /* Error */); const exportClause = visitNode( node.exportClause, (bindings) => visitNamedExportBindings(bindings, allowEmpty), @@ -87702,13 +88932,13 @@ ${lanes.join("\n")} return allowEmpty || some(elements) ? factory2.updateNamedExports(node, elements) : void 0; } function visitNamespaceExports(node) { - return factory2.updateNamespaceExport(node, visitNode(node.name, visitor, isIdentifier)); + return factory2.updateNamespaceExport(node, Debug.checkDefined(visitNode(node.name, visitor, isIdentifier))); } function visitNamedExportBindings(node, allowEmpty) { return isNamespaceExport(node) ? visitNamespaceExports(node) : visitNamedExports(node, allowEmpty); } function visitExportSpecifier(node) { - return !node.isTypeOnly && resolver.isValueAliasDeclaration(node) ? node : void 0; + return !node.isTypeOnly && (compilerOptions.verbatimModuleSyntax || resolver.isValueAliasDeclaration(node)) ? node : void 0; } function shouldEmitImportEqualsDeclaration(node) { return shouldEmitAliasDeclaration(node) || !isExternalModule(currentSourceFile) && resolver.isTopLevelValueImportEqualsWithEntityName(node); @@ -87768,7 +88998,7 @@ ${lanes.join("\n")} ); } else { return setOriginalNode( - createNamespaceExport2( + createNamespaceExport( node.name, moduleReference, node @@ -87789,7 +89019,7 @@ ${lanes.join("\n")} function isDefaultExternalModuleExport(node) { return isExternalModuleExport(node) && hasSyntacticModifier(node, 1024 /* Default */); } - function addExportMemberAssignment(statements, node) { + function createExportMemberAssignmentStatement(node) { const expression = factory2.createAssignment( factory2.getExternalModuleOrNamespaceExportName( currentNamespaceContainerName, @@ -87804,9 +89034,12 @@ ${lanes.join("\n")} setSourceMapRange(expression, createRange(node.name ? node.name.pos : node.pos, node.end)); const statement = factory2.createExpressionStatement(expression); setSourceMapRange(statement, createRange(-1, node.end)); - statements.push(statement); + return statement; } - function createNamespaceExport2(exportName, exportValue, location) { + function addExportMemberAssignment(statements, node) { + statements.push(createExportMemberAssignmentStatement(node)); + } + function createNamespaceExport(exportName, exportValue, location) { return setTextRange( factory2.createExpressionStatement( factory2.createAssignment( @@ -87967,7 +89200,7 @@ ${lanes.join("\n")} return isPropertyAccessExpression(node) || isElementAccessExpression(node) ? resolver.getConstantValue(node) : void 0; } function shouldEmitAliasDeclaration(node) { - return isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); + return compilerOptions.verbatimModuleSyntax || isInJSFile(node) || (compilerOptions.preserveValueImports ? resolver.isValueAliasDeclaration(node) : resolver.isReferencedAliasDeclaration(node)); } } var USE_NEW_TYPE_METADATA_FORMAT; @@ -87983,6 +89216,7 @@ ${lanes.join("\n")} function transformClassFields(context) { const { factory: factory2, + getEmitHelperFactory: emitHelpers, hoistVariableDeclaration, endLexicalEnvironment, startLexicalEnvironment, @@ -87993,6 +89227,7 @@ ${lanes.join("\n")} const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); + const legacyDecorators = !!compilerOptions.experimentalDecorators; const shouldTransformInitializersUsingSet = !useDefineForClassFields; const shouldTransformInitializersUsingDefine = useDefineForClassFields && languageVersion < 9 /* ES2022 */; const shouldTransformInitializers = shouldTransformInitializersUsingSet || shouldTransformInitializersUsingDefine; @@ -88005,42 +89240,69 @@ ${lanes.join("\n")} context.onSubstituteNode = onSubstituteNode; const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; + let shouldTransformPrivateStaticElementsInFile = false; let enabledSubstitutions; let classAliases; let pendingExpressions; let pendingStatements; - const classLexicalEnvironmentStack = []; - const classLexicalEnvironmentMap = /* @__PURE__ */ new Map(); - let currentClassLexicalEnvironment; + let lexicalEnvironment; + const lexicalEnvironmentMap = /* @__PURE__ */ new Map(); let currentClassContainer; - let currentComputedPropertyNameClassLexicalEnvironment; let currentStaticPropertyDeclarationOrStaticBlock; + let shouldSubstituteThisWithClassThis = false; + let previousShouldSubstituteThisWithClassThis = false; return chainBundle(context, transformSourceFile); function transformSourceFile(node) { - if (node.isDeclarationFile || !shouldTransformAnything) { + if (node.isDeclarationFile) { + return node; + } + lexicalEnvironment = void 0; + shouldTransformPrivateStaticElementsInFile = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (!shouldTransformAnything && !shouldTransformPrivateStaticElementsInFile) { return node; } const visited = visitEachChild(node, visitor, context); addEmitHelpers(visited, context.readEmitHelpers()); return visited; } + function modifierVisitor(node) { + switch (node.kind) { + case 127 /* AccessorKeyword */: + return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + default: + return tryCast(node, isModifier); + } + } function visitor(node) { if (!(node.transformFlags & 16777216 /* ContainsClassFields */) && !(node.transformFlags & 134234112 /* ContainsLexicalThisOrSuper */)) { return node; } switch (node.kind) { case 127 /* AccessorKeyword */: - return shouldTransformAutoAccessorsInCurrentClass() ? void 0 : node; + return Debug.fail("Use `modifierVisitor` instead."); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); case 228 /* ClassExpression */: - return visitClassExpression(node); + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); case 172 /* ClassStaticBlockDeclaration */: - return visitClassStaticBlockDeclaration(node); case 169 /* PropertyDeclaration */: - return visitPropertyDeclaration(node); + return Debug.fail("Use `classElementVisitor` instead."); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); case 240 /* VariableStatement */: return visitVariableStatement(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); case 80 /* PrivateIdentifier */: return visitPrivateIdentifier(node); case 208 /* PropertyAccessExpression */: @@ -88051,15 +89313,23 @@ ${lanes.join("\n")} case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ false ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); case 210 /* CallExpression */: return visitCallExpression(node); case 241 /* ExpressionStatement */: @@ -88088,21 +89358,57 @@ ${lanes.join("\n")} function fallbackVisitor(node) { return visitEachChild(node, visitor, context); } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } function discardedValueVisitor(node) { switch (node.kind) { case 221 /* PrefixUnaryExpression */: case 222 /* PostfixUnaryExpression */: return visitPreOrPostfixUnaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); case 223 /* BinaryExpression */: return visitBinaryExpression( node, - /*valueIsDiscarded*/ + /*discarded*/ true ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); default: return visitor(node); } @@ -88146,10 +89452,20 @@ ${lanes.join("\n")} visitPropertyDeclaration, node ); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); case 164 /* ComputedPropertyName */: return visitComputedPropertyName(node); case 237 /* SemicolonClassElement */: return node; + default: + return isModifierLike(node) ? modifierVisitor(node) : visitor(node); + } + } + function propertyNameVisitor(node) { + switch (node.kind) { + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); default: return visitor(node); } @@ -88175,20 +89491,25 @@ ${lanes.join("\n")} } return setOriginalNode(factory2.createIdentifier(""), node); } - function isPrivateIdentifierInExpression(node) { - return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; - } function transformPrivateIdentifierInInExpression(node) { - const info = accessPrivateIdentifier(node.left); + const info = accessPrivateIdentifier2(node.left); if (info) { const receiver = visitNode(node.right, visitor, isExpression); return setOriginalNode( - context.getEmitHelperFactory().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), + emitHelpers().createClassPrivateFieldInHelper(info.brandCheckIdentifier, receiver), node ); } return visitEachChild(node, visitor, context); } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } function visitVariableStatement(node) { const savedPendingStatements = pendingStatements; pendingStatements = []; @@ -88197,17 +89518,90 @@ ${lanes.join("\n")} pendingStatements = savedPendingStatements; return statement; } - function visitComputedPropertyName(node) { - let expression = visitNode(node.expression, visitor, isExpression); + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function injectPendingExpressions(expression) { if (some(pendingExpressions)) { if (isParenthesizedExpression(expression)) { - expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions([...pendingExpressions, expression.expression])); + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); } else { - expression = factory2.inlineExpressions([...pendingExpressions, expression]); + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); } pendingExpressions = void 0; } - return factory2.updateComputedPropertyName(node, expression); + return expression; + } + function visitComputedPropertyName(node) { + const expression = visitNode(node.expression, visitor, isExpression); + return factory2.updateComputedPropertyName(node, injectPendingExpressions(expression)); } function visitConstructorDeclaration(node) { if (currentClassContainer) { @@ -88215,12 +89609,19 @@ ${lanes.join("\n")} } return fallbackVisitor(node); } + function shouldTransformClassElementToWeakMap(node) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) + return true; + if (hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) + return true; + return false; + } function visitMethodOrAccessorDeclaration(node) { Debug.assert(!hasDecorators(node)); - if (!shouldTransformPrivateElementsOrClassStaticBlocks || !isPrivateIdentifier(node.name)) { + if (!isPrivateIdentifierClassElementDeclaration(node) || !shouldTransformClassElementToWeakMap(node)) { return visitEachChild(node, classElementVisitor, context); } - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (!info.isValid) { return node; @@ -88255,7 +89656,7 @@ ${lanes.join("\n")} } function getHoistedFunctionName(node) { Debug.assert(isPrivateIdentifier(node.name)); - const info = accessPrivateIdentifier(node.name); + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); if (info.kind === "m" /* Method */) { return info.methodName; @@ -88270,42 +89671,61 @@ ${lanes.join("\n")} } } function transformAutoAccessor(node) { - Debug.assertEachNode(node.modifiers, isModifier); const commentRange = getCommentRange(node); const sourceMapRange = getSourceMapRange(node); const name = node.name; let getterName = name; let setterName = name; if (isComputedPropertyName(name) && !isSimpleInlineableExpression(name.expression)) { - const temp = factory2.createTempVariable(hoistVariableDeclaration); - setSourceMapRange(temp, name.expression); - const expression = visitNode(name.expression, visitor, isExpression); - const assignment = factory2.createAssignment(temp, expression); - setSourceMapRange(assignment, name.expression); - getterName = factory2.updateComputedPropertyName(name, factory2.inlineExpressions([assignment, temp])); - setterName = factory2.updateComputedPropertyName(name, temp); + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name, visitNode(name.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name.expression); + const expression = visitNode(name.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name.expression); + getterName = factory2.updateComputedPropertyName(name, assignment); + setterName = factory2.updateComputedPropertyName(name, temp); + } } - const backingField = createAccessorPropertyBackingField(factory2, node, node.modifiers, node.initializer); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiers, node.initializer); setOriginalNode(backingField, node); setEmitFlags(backingField, 3072 /* NoComments */); setSourceMapRange(backingField, sourceMapRange); - const getter = createAccessorPropertyGetRedirector(factory2, node, node.modifiers, getterName); + const getter = createAccessorPropertyGetRedirector(factory2, node, modifiers, getterName); setOriginalNode(getter, node); setCommentRange(getter, commentRange); setSourceMapRange(getter, sourceMapRange); - const setter = createAccessorPropertySetRedirector(factory2, node, node.modifiers, setterName); + const setter = createAccessorPropertySetRedirector(factory2, node, modifiers, setterName); setOriginalNode(setter, node); setEmitFlags(setter, 3072 /* NoComments */); setSourceMapRange(setter, sourceMapRange); return visitArray([backingField, getter, setter], accessorFieldResultVisitor, isClassElement); } function transformPrivateFieldInitializer(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { - const info = accessPrivateIdentifier(node.name); + if (shouldTransformClassElementToWeakMap(node)) { + const info = accessPrivateIdentifier2(node.name); Debug.assert(info, "Undeclared private name for property declaration."); - return info.isValid ? void 0 : node; + if (!info.isValid) { + return node; + } + if (info.isStatic && !shouldTransformPrivateElementsOrClassStaticBlocks) { + const statement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); + if (statement) { + return factory2.createClassStaticBlockDeclaration(factory2.createBlock( + [statement], + /*multiLine*/ + true + )); + } + } + return void 0; } - if (shouldTransformInitializersUsingSet && !isStatic(node) && currentClassLexicalEnvironment && currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */) { + if (shouldTransformInitializersUsingSet && !isStatic(node) && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */) { return factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, visitor, isModifierLike), @@ -88318,6 +89738,19 @@ ${lanes.join("\n")} void 0 ); } + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, (child) => namedEvaluationVisitor(child, referencedName), isExpression) + ); + } return visitEachChild(node, visitor, context); } function transformPublicFieldInitializer(node) { @@ -88325,10 +89758,12 @@ ${lanes.join("\n")} const expr = getPropertyNameExpressionIfNeeded( node.name, /*shouldHoist*/ - !!node.initializer || useDefineForClassFields + !!node.initializer || useDefineForClassFields, + /*captureReferencedName*/ + isNamedEvaluation(node, isAnonymousClassNeedingAssignedName) ); if (expr) { - getPendingExpressions().push(expr); + getPendingExpressions().push(...flattenCommaList(expr)); } if (isStatic(node) && !shouldTransformPrivateElementsOrClassStaticBlocks) { const initializerStatement = transformPropertyOrClassStaticBlock(node, factory2.createThis()); @@ -88346,17 +89781,26 @@ ${lanes.join("\n")} } return void 0; } - return visitEachChild(node, classElementVisitor, context); + return factory2.updatePropertyDeclaration( + node, + visitNodes2(node.modifiers, modifierVisitor, isModifier), + visitNode(node.name, propertyNameVisitor, isPropertyName), + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); } function transformFieldInitializer(node) { Debug.assert(!hasDecorators(node), "Decorators should already have been transformed and elided."); return isPrivateIdentifierClassElementDeclaration(node) ? transformPrivateFieldInitializer(node) : transformPublicFieldInitializer(node); } function shouldTransformAutoAccessorsInCurrentClass() { - return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!currentClassLexicalEnvironment && !!(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */); + return shouldTransformAutoAccessors === -1 /* True */ || shouldTransformAutoAccessors === 3 /* Maybe */ && !!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) && !!(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */); } function visitPropertyDeclaration(node) { - if (shouldTransformAutoAccessorsInCurrentClass() && isAutoAccessorPropertyDeclaration(node)) { + if (isAutoAccessorPropertyDeclaration(node) && (shouldTransformAutoAccessorsInCurrentClass() || hasStaticModifier(node) && getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */)) { return transformAutoAccessor(node); } return transformFieldInitializer(node); @@ -88368,33 +89812,35 @@ ${lanes.join("\n")} setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.getterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, info.methodName ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldGetHelper( + return emitHelpers().createClassPrivateFieldGetHelper( receiver, info.brandCheckIdentifier, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } } function visitPropertyAccessExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(node.name)) { - const privateIdentifierInfo = accessPrivateIdentifier(node.name); + if (isPrivateIdentifier(node.name)) { + const privateIdentifierInfo = accessPrivateIdentifier2(node.name); if (privateIdentifierInfo) { return setTextRange( setOriginalNode( @@ -88405,8 +89851,8 @@ ${lanes.join("\n")} ); } } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && isIdentifier(node.name) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -88424,8 +89870,8 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitElementAccessExpression(node) { - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return visitInvalidSuperProperty(node); } @@ -88442,16 +89888,16 @@ ${lanes.join("\n")} } return visitEachChild(node, visitor, context); } - function visitPreOrPostfixUnaryExpression(node, valueIsDiscarded) { + function visitPreOrPostfixUnaryExpression(node, discarded) { if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { const operand = skipParentheses(node.operand); - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(operand)) { + if (isPrivateIdentifierPropertyAccessExpression(operand)) { let info; - if (info = accessPrivateIdentifier(operand.name)) { + if (info = accessPrivateIdentifier2(operand.name)) { const receiver = visitNode(operand.expression, visitor, isExpression); const { readExpression, initializeExpression } = createCopiableReceiverExpr(receiver); let expression = createPrivateIdentifierAccess(info, readExpression); - const temp = isPrefixUnaryExpression(node) || valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = isPrefixUnaryExpression(node) || discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = createPrivateIdentifierAssignment( info, @@ -88467,8 +89913,8 @@ ${lanes.join("\n")} } return expression; } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { const expression = visitInvalidSuperProperty(operand); return isPrefixUnaryExpression(node) ? factory2.updatePrefixUnaryExpression(node, expression) : factory2.updatePostfixUnaryExpression(node, expression); @@ -88491,7 +89937,7 @@ ${lanes.join("\n")} if (setterName && getterName) { let expression = factory2.createReflectGetCall(superClassReference, getterName, classConstructor); setTextRange(expression, operand); - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); expression = factory2.createReflectSetCall(superClassReference, setterName, expression, classConstructor); setOriginalNode(expression, node); @@ -88532,12 +89978,13 @@ ${lanes.join("\n")} return { readExpression, initializeExpression }; } function visitCallExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.expression)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.expression) && accessPrivateIdentifier2(node.expression.name)) { const { thisArg, target } = factory2.createCallBinding(node.expression, hoistVariableDeclaration, languageVersion); if (isCallChain(node)) { return factory2.updateCallChain( node, - factory2.createPropertyAccessChain(visitNode(target, visitor), node.questionDotToken, "call"), + factory2.createPropertyAccessChain(visitNode(target, visitor, isExpression), node.questionDotToken, "call"), /*questionDotToken*/ void 0, /*typeArguments*/ @@ -88547,16 +89994,16 @@ ${lanes.join("\n")} } return factory2.updateCallExpression( node, - factory2.createPropertyAccessExpression(visitNode(target, visitor), "call"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "call"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression), ...visitNodes2(node.arguments, visitor, isExpression)] ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.expression) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionCallCall( visitNode(node.expression, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, visitNodes2(node.arguments, visitor, isExpression) ); setOriginalNode(invocation, node); @@ -88566,12 +90013,13 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitTaggedTemplateExpression(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.tag)) { + var _a2; + if (isPrivateIdentifierPropertyAccessExpression(node.tag) && accessPrivateIdentifier2(node.tag.name)) { const { thisArg, target } = factory2.createCallBinding(node.tag, hoistVariableDeclaration, languageVersion); return factory2.updateTaggedTemplateExpression( node, factory2.createCallExpression( - factory2.createPropertyAccessExpression(visitNode(target, visitor), "bind"), + factory2.createPropertyAccessExpression(visitNode(target, visitor, isExpression), "bind"), /*typeArguments*/ void 0, [visitNode(thisArg, visitor, isExpression)] @@ -88581,10 +90029,10 @@ ${lanes.join("\n")} visitNode(node.template, visitor, isTemplateLiteral) ); } - if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.classConstructor)) { + if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.tag) && currentStaticPropertyDeclarationOrStaticBlock && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.classConstructor)) { const invocation = factory2.createFunctionBindCall( visitNode(node.tag, visitor, isExpression), - currentClassLexicalEnvironment.classConstructor, + lexicalEnvironment.data.classConstructor, [] ); setOriginalNode(invocation, node); @@ -88600,10 +90048,10 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function transformClassStaticBlockDeclaration(node) { + if (lexicalEnvironment) { + lexicalEnvironmentMap.set(getOriginalNode(node), lexicalEnvironment); + } if (shouldTransformPrivateElementsOrClassStaticBlocks) { - if (currentClassLexicalEnvironment) { - classLexicalEnvironmentMap.set(getOriginalNodeId(node), currentClassLexicalEnvironment); - } startLexicalEnvironment(); let statements = setCurrentStaticPropertyDeclarationOrStaticBlockAnd( node, @@ -88618,23 +90066,45 @@ ${lanes.join("\n")} return iife; } } - function visitBinaryExpression(node, valueIsDiscarded) { + function isAnonymousClassNeedingAssignedName(node) { + if (isClassExpression(node) && !node.name) { + const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); + const classStaticBlock = find(staticPropertiesOrClassStaticBlocks, isClassStaticBlockDeclaration); + if (classStaticBlock) { + for (const statement of classStaticBlock.body.statements) { + if (isExpressionStatement(statement) && isCallToHelper(statement.expression, "___setFunctionName")) { + return false; + } + } + } + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || !!(getInternalEmitFlags(node) && 32 /* TransformPrivateStaticElements */)) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + return hasTransformableStatics; + } + return false; + } + function visitBinaryExpression(node, discarded) { if (isDestructuringAssignment(node)) { const savedPendingExpressions = pendingExpressions; pendingExpressions = void 0; node = factory2.updateBinaryExpression( node, - visitNode(node.left, assignmentTargetVisitor), + visitNode(node.left, assignmentTargetVisitor, isExpression), node.operatorToken, - visitNode(node.right, visitor) + visitNode(node.right, visitor, isExpression) ); const expr = some(pendingExpressions) ? factory2.inlineExpressions(compact([...pendingExpressions, node])) : node; pendingExpressions = savedPendingExpressions; return expr; } if (isAssignmentExpression(node)) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.left)) { - const info = accessPrivateIdentifier(node.left.name); + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isPrivateIdentifierPropertyAccessExpression(node.left)) { + const info = accessPrivateIdentifier2(node.left.name); if (info) { return setTextRange( setOriginalNode( @@ -88644,8 +90114,8 @@ ${lanes.join("\n")} node ); } - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node.left) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; if (facts & 1 /* ClassWasDecorated */) { return factory2.updateBinaryExpression( node, @@ -88678,7 +90148,7 @@ ${lanes.join("\n")} ); setTextRange(expression, node); } - const temp = valueIsDiscarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); if (temp) { expression = factory2.createAssignment(temp, expression); setTextRange(temp, node); @@ -88700,11 +90170,42 @@ ${lanes.join("\n")} } } } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierInExpression(node)) { + if (isPrivateIdentifierInExpression(node)) { return transformPrivateIdentifierInInExpression(node); } return visitEachChild(node, visitor, context); } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.createTempVariable(hoistVariableDeclaration); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } function createPrivateIdentifierAssignment(info, receiver, right, operator) { receiver = visitNode(receiver, visitor, isExpression); right = visitNode(right, visitor, isExpression); @@ -88720,7 +90221,7 @@ ${lanes.join("\n")} setCommentRange(receiver, moveRangePos(receiver, -1)); switch (info.kind) { case "a" /* Accessor */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -88728,7 +90229,7 @@ ${lanes.join("\n")} info.setterName ); case "m" /* Method */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, @@ -88737,13 +90238,15 @@ ${lanes.join("\n")} void 0 ); case "f" /* Field */: - return context.getEmitHelperFactory().createClassPrivateFieldSetHelper( + return emitHelpers().createClassPrivateFieldSetHelper( receiver, info.brandCheckIdentifier, right, info.kind, - info.variableName + info.isStatic ? info.variableName : void 0 ); + case "untransformed": + return Debug.fail("Access helpers should not be created for untransformed private elements"); default: Debug.assertNever(info, "Unknown private element type"); } @@ -88754,7 +90257,7 @@ ${lanes.join("\n")} function getClassFacts(node) { let facts = 0 /* None */; const original = getOriginalNode(node); - if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(original)) { + if (isClassDeclaration(original) && classOrConstructorParameterIsDecorated(legacyDecorators, original)) { facts |= 1 /* ClassWasDecorated */; } let containsPublicInstanceFields = false; @@ -88798,7 +90301,8 @@ ${lanes.join("\n")} return facts; } function visitExpressionWithTypeArgumentsInHeritageClause(node) { - const facts = (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts) || 0 /* None */; + var _a2; + const facts = ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts) || 0 /* None */; if (facts & 4 /* NeedsClassSuperReference */) { const temp = factory2.createTempVariable( hoistVariableDeclaration, @@ -88818,20 +90322,24 @@ ${lanes.join("\n")} } return visitEachChild(node, visitor, context); } - function visitInNewClassLexicalEnvironment(node, visitor2) { + function visitInNewClassLexicalEnvironment(node, referencedName, visitor2) { const savedCurrentClassContainer = currentClassContainer; const savedPendingExpressions = pendingExpressions; + const savedLexicalEnvironment = lexicalEnvironment; currentClassContainer = node; pendingExpressions = void 0; startClassLexicalEnvironment(); - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldAlwaysTransformPrivateStaticElements = getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */; + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldAlwaysTransformPrivateStaticElements) { const name = getNameOfDeclaration(node); if (name && isIdentifier(name)) { - getPrivateIdentifierEnvironment().className = name; + getPrivateIdentifierEnvironment().data.className = name; } + } + if (shouldTransformPrivateElementsOrClassStaticBlocks) { const privateInstanceMethodsAndAccessors = getPrivateInstanceMethodsAndAccessors(node); if (some(privateInstanceMethodsAndAccessors)) { - getPrivateIdentifierEnvironment().weakSetName = createHoistedVariableForClass( + getPrivateIdentifierEnvironment().data.weakSetName = createHoistedVariableForClass( "instances", privateInstanceMethodsAndAccessors[0].name ); @@ -88844,27 +90352,42 @@ ${lanes.join("\n")} if (facts & 8 /* NeedsSubstitutionForThisInClassStaticField */) { enableSubstitutionForClassStaticThisOrSuperReference(); } - const result = visitor2(node, facts); + const result = visitor2(node, facts, referencedName); endClassLexicalEnvironment(); + Debug.assert(lexicalEnvironment === savedLexicalEnvironment); currentClassContainer = savedCurrentClassContainer; pendingExpressions = savedPendingExpressions; return result; } function visitClassDeclaration(node) { - return visitInNewClassLexicalEnvironment(node, visitClassDeclarationInNewClassLexicalEnvironment); + return visitInNewClassLexicalEnvironment( + node, + /*referencedName*/ + void 0, + visitClassDeclarationInNewClassLexicalEnvironment + ); } function visitClassDeclarationInNewClassLexicalEnvironment(node, facts) { + var _a2, _b; let pendingClassReferenceAssignment; if (facts & 2 /* NeedsClassConstructorReference */) { - const temp = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); - pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis)) { + getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + pendingClassReferenceAssignment = factory2.createAssignment(node.emitNode.classThis, factory2.getInternalName(node)); + } else { + const temp = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + pendingClassReferenceAssignment = factory2.createAssignment(temp, factory2.getInternalName(node)); + } + if ((_b = node.emitNode) == null ? void 0 : _b.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; + } } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); const classDecl = factory2.updateClassDeclaration( @@ -88887,7 +90410,7 @@ ${lanes.join("\n")} if (some(pendingExpressions)) { statements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); } - if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks) { + if (shouldTransformInitializersUsingSet || shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) { const staticProperties = getStaticPropertiesAndClassStaticBlock(node); if (some(staticProperties)) { addPropertyOrClassStaticBlockStatements(statements, staticProperties, factory2.getInternalName(node)); @@ -88895,28 +90418,37 @@ ${lanes.join("\n")} } return statements; } - function visitClassExpression(node) { - return visitInNewClassLexicalEnvironment(node, visitClassExpressionInNewClassLexicalEnvironment); + function visitClassExpression(node, referencedName) { + return visitInNewClassLexicalEnvironment(node, referencedName, visitClassExpressionInNewClassLexicalEnvironment); } - function visitClassExpressionInNewClassLexicalEnvironment(node, facts) { + function visitClassExpressionInNewClassLexicalEnvironment(node, facts, referencedName) { + var _a2, _b, _c, _d, _e, _f; const isDecoratedClassDeclaration = !!(facts & 1 /* ClassWasDecorated */); const staticPropertiesOrClassStaticBlocks = getStaticPropertiesAndClassStaticBlock(node); const isClassWithConstructorReference = resolver.getNodeCheckFlags(node) & 1048576 /* ClassWithConstructorReference */; let temp; function createClassTempVar() { + var _a3; + if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_a3 = node.emitNode) == null ? void 0 : _a3.classThis)) { + return getClassLexicalEnvironment().classConstructor = node.emitNode.classThis; + } const classCheckFlags = resolver.getNodeCheckFlags(node); const isClassWithConstructorReference2 = classCheckFlags & 1048576 /* ClassWithConstructorReference */; const requiresBlockScopedVar = classCheckFlags & 32768 /* BlockScopedBindingInLoop */; - return factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + const temp2 = factory2.createTempVariable(requiresBlockScopedVar ? addBlockScopedVariable : hoistVariableDeclaration, !!isClassWithConstructorReference2); + getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp2); + return temp2; + } + if ((_a2 = node.emitNode) == null ? void 0 : _a2.classThis) { + getClassLexicalEnvironment().classThis = node.emitNode.classThis; } if (facts & 2 /* NeedsClassConstructorReference */) { - temp = createClassTempVar(); - getClassLexicalEnvironment().classConstructor = factory2.cloneNode(temp); + temp != null ? temp : temp = createClassTempVar(); } - const modifiers = visitNodes2(node.modifiers, visitor, isModifierLike); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); const heritageClauses = visitNodes2(node.heritageClauses, heritageClauseVisitor, isHeritageClause); const { members, prologue } = transformClassMembers(node); - const classExpression = factory2.updateClassExpression( + let classExpression = factory2.updateClassExpression( node, modifiers, node.name, @@ -88929,46 +90461,68 @@ ${lanes.join("\n")} if (prologue) { expressions.push(prologue); } - const hasTransformableStatics = shouldTransformPrivateElementsOrClassStaticBlocks && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); - if (hasTransformableStatics || some(pendingExpressions)) { + const hasTransformableStatics = (shouldTransformPrivateElementsOrClassStaticBlocks || getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */) && some(staticPropertiesOrClassStaticBlocks, (node2) => isClassStaticBlockDeclaration(node2) || isPrivateIdentifierClassElementDeclaration(node2) || shouldTransformInitializers && isInitializedProperty(node2)); + if (hasTransformableStatics || some(pendingExpressions) || referencedName) { if (isDecoratedClassDeclaration) { Debug.assertIsDefined(pendingStatements, "Decorated classes transformed by TypeScript are expected to be within a variable declaration."); - if (pendingStatements && pendingExpressions && some(pendingExpressions)) { - pendingStatements.push(factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))); + if (some(pendingExpressions)) { + addRange(pendingStatements, map(pendingExpressions, factory2.createExpressionStatement)); } - if (pendingStatements && some(staticPropertiesOrClassStaticBlocks)) { - addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, factory2.getInternalName(node)); - } - if (temp) { - expressions.push( - startOnNewLine(factory2.createAssignment(temp, classExpression)), - startOnNewLine(temp) - ); - } else { - expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); + if (referencedName) { + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const setNameExpression = emitHelpers().createSetFunctionNameHelper((_c = temp != null ? temp : (_b = node.emitNode) == null ? void 0 : _b.classThis) != null ? _c : factory2.getInternalName(node), referencedName); + pendingStatements.push(factory2.createExpressionStatement(setNameExpression)); + } else { + const setNameExpression = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), referencedName); + classExpression = factory2.updateClassExpression( + classExpression, + classExpression.modifiers, + classExpression.name, + classExpression.typeParameters, + classExpression.heritageClauses, + [ + factory2.createClassStaticBlockDeclaration( + factory2.createBlock([ + factory2.createExpressionStatement(setNameExpression) + ]) + ), + ...classExpression.members + ] + ); } } + if (some(staticPropertiesOrClassStaticBlocks)) { + addPropertyOrClassStaticBlockStatements(pendingStatements, staticPropertiesOrClassStaticBlocks, (_e = (_d = node.emitNode) == null ? void 0 : _d.classThis) != null ? _e : factory2.getInternalName(node)); + } + if (temp) { + expressions.push(factory2.createAssignment(temp, classExpression)); + } else if (shouldTransformPrivateElementsOrClassStaticBlocks && ((_f = node.emitNode) == null ? void 0 : _f.classThis)) { + expressions.push(factory2.createAssignment(node.emitNode.classThis, classExpression)); + } else { + expressions.push(classExpression); + } } else { - temp || (temp = createClassTempVar()); + temp != null ? temp : temp = createClassTempVar(); if (isClassWithConstructorReference) { enableSubstitutionForClassAliases(); const alias = factory2.cloneNode(temp); - alias.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; + alias.emitNode.autoGenerate.flags &= ~8 /* ReservedInNestedScopes */; classAliases[getOriginalNodeId(node)] = alias; } - setEmitFlags(classExpression, 131072 /* Indented */ | getEmitFlags(classExpression)); - expressions.push(startOnNewLine(factory2.createAssignment(temp, classExpression))); - addRange(expressions, map(pendingExpressions, startOnNewLine)); + expressions.push(factory2.createAssignment(temp, classExpression)); + addRange(expressions, pendingExpressions); + if (referencedName) { + expressions.push(emitHelpers().createSetFunctionNameHelper(temp, referencedName)); + } addRange(expressions, generateInitializedPropertyExpressionsOrClassStaticBlock(staticPropertiesOrClassStaticBlocks, temp)); - expressions.push(startOnNewLine(temp)); + expressions.push(factory2.cloneNode(temp)); } } else { expressions.push(classExpression); - if (prologue) { - startOnNewLine(classExpression); - } + } + if (expressions.length > 1) { + addEmitFlags(classExpression, 131072 /* Indented */); + expressions.forEach(startOnNewLine); } return factory2.inlineExpressions(expressions); } @@ -88979,16 +90533,24 @@ ${lanes.join("\n")} return void 0; } function transformClassMembers(node) { - if (shouldTransformPrivateElementsOrClassStaticBlocks) { + const shouldTransformPrivateStaticElementsInClass = !!(getInternalEmitFlags(node) & 32 /* TransformPrivateStaticElements */); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInFile) { for (const member of node.members) { if (isPrivateIdentifierClassElementDeclaration(member)) { - addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + if (shouldTransformClassElementToWeakMap(member)) { + addPrivateIdentifierToEnvironment(member, member.name, addPrivateIdentifierClassElementToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, member.name, { kind: "untransformed" }); + } } } - if (some(getPrivateInstanceMethodsAndAccessors(node))) { - createBrandCheckWeakSetForPrivateMethods(); + if (shouldTransformPrivateElementsOrClassStaticBlocks) { + if (some(getPrivateInstanceMethodsAndAccessors(node))) { + createBrandCheckWeakSetForPrivateMethods(); + } } - if (shouldTransformAutoAccessors) { + if (shouldTransformAutoAccessorsInCurrentClass()) { for (const member of node.members) { if (isAutoAccessorPropertyDeclaration(member)) { const storageName = factory2.getGeneratedPrivateNameForNode( @@ -88997,7 +90559,12 @@ ${lanes.join("\n")} void 0, "_accessor_storage" ); - addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + if (shouldTransformPrivateElementsOrClassStaticBlocks || shouldTransformPrivateStaticElementsInClass && hasStaticModifier(member)) { + addPrivateIdentifierToEnvironment(member, storageName, addPrivateIdentifierPropertyDeclarationToEnvironment); + } else { + const privateEnv = getPrivateIdentifierEnvironment(); + setPrivateIdentifier(privateEnv, storageName, { kind: "untransformed" }); + } } } } @@ -89056,7 +90623,7 @@ ${lanes.join("\n")} return { members, prologue }; } function createBrandCheckWeakSetForPrivateMethods() { - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); getPendingExpressions().push( factory2.createAssignment( @@ -89072,7 +90639,7 @@ ${lanes.join("\n")} } function transformConstructor(constructor, container) { constructor = visitNode(constructor, visitor, isConstructorDeclaration); - if (!currentClassLexicalEnvironment || !(currentClassLexicalEnvironment.facts & 16 /* WillHoistInitializersToConstructor */)) { + if (!(lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) || !(lexicalEnvironment.data.facts & 16 /* WillHoistInitializersToConstructor */)) { return constructor; } const extendsClauseElement = getEffectiveBaseTypeNode(container); @@ -89109,13 +90676,14 @@ ${lanes.join("\n")} } function transformConstructorBody(node, constructor, isDerivedClass) { var _a2, _b; - let properties = getProperties( + const instanceProperties = getProperties( node, /*requireInitializer*/ false, /*isStatic*/ false ); + let properties = instanceProperties; if (!useDefineForClassFields) { properties = filter(properties, (property) => !!property.initializer || isPrivateIdentifier(property.name) || hasAccessorModifier(property)); } @@ -89169,37 +90737,30 @@ ${lanes.join("\n")} } let parameterPropertyDeclarationCount = 0; if (constructor == null ? void 0 : constructor.body) { - if (useDefineForClassFields) { - statements = statements.filter((statement) => !isParameterPropertyDeclaration(getOriginalNode(statement), constructor)); - } else { - for (const statement of constructor.body.statements) { - if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - parameterPropertyDeclarationCount++; - } - } - if (parameterPropertyDeclarationCount > 0) { - const parameterProperties = visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue, parameterPropertyDeclarationCount); - if (superStatementIndex >= 0) { - addRange(statements, parameterProperties); - } else { - let superAndPrologueStatementCount = prologueStatementCount; - if (needsSyntheticConstructor) - superAndPrologueStatementCount++; - statements = [ - ...statements.slice(0, superAndPrologueStatementCount), - ...parameterProperties, - ...statements.slice(superAndPrologueStatementCount) - ]; - } - indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + for (let i = indexOfFirstStatementAfterSuperAndPrologue; i < constructor.body.statements.length; i++) { + const statement = constructor.body.statements[i]; + if (isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { + parameterPropertyDeclarationCount++; + } else { + break; } } + if (parameterPropertyDeclarationCount > 0) { + indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount; + } } const receiver = factory2.createThis(); - addMethodStatements(statements, privateMethodsAndAccessors, receiver); - addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + addInstanceMethodStatements(statements, privateMethodsAndAccessors, receiver); if (constructor) { - addRange(statements, visitNodes2(constructor.body.statements, visitBodyStatement, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); + const parameterProperties = filter(instanceProperties, (prop) => isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + const nonParameterProperties = filter(properties, (prop) => !isParameterPropertyDeclaration(getOriginalNode(prop), constructor)); + addPropertyOrClassStaticBlockStatements(statements, parameterProperties, receiver); + addPropertyOrClassStaticBlockStatements(statements, nonParameterProperties, receiver); + } else { + addPropertyOrClassStaticBlockStatements(statements, properties, receiver); + } + if (constructor) { + addRange(statements, visitNodes2(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue)); } statements = factory2.mergeLexicalEnvironment(statements, endLexicalEnvironment()); if (statements.length === 0 && !constructor) { @@ -89218,16 +90779,10 @@ ${lanes.join("\n")} /*location*/ constructor ? constructor.body : void 0 ); - function visitBodyStatement(statement) { - if (useDefineForClassFields && isParameterPropertyDeclaration(getOriginalNode(statement), constructor)) { - return void 0; - } - return visitor(statement); - } } function addPropertyOrClassStaticBlockStatements(statements, properties, receiver) { for (const property of properties) { - if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks && !useDefineForClassFields) { + if (isStatic(property) && !shouldTransformPrivateElementsOrClassStaticBlocks) { continue; } const statement = transformPropertyOrClassStaticBlock(property, receiver); @@ -89245,10 +90800,19 @@ ${lanes.join("\n")} const statement = factory2.createExpressionStatement(expression); setOriginalNode(statement, property); addEmitFlags(statement, getEmitFlags(property) & 3072 /* NoComments */); - setSourceMapRange(statement, moveRangePastModifiers(property)); setCommentRange(statement, property); + const propertyOriginalNode = getOriginalNode(property); + if (isParameter(propertyOriginalNode)) { + setSourceMapRange(statement, propertyOriginalNode); + removeAllComments(statement); + } else { + setSourceMapRange(statement, moveRangePastModifiers(property)); + } setSyntheticLeadingComments(expression, void 0); setSyntheticTrailingComments(expression, void 0); + if (hasAccessorModifier(propertyOriginalNode)) { + addEmitFlags(statement, 3072 /* NoComments */); + } return statement; } function generateInitializedPropertyExpressionsOrClassStaticBlock(propertiesOrClassStaticBlocks, receiver) { @@ -89268,37 +90832,49 @@ ${lanes.join("\n")} return expressions; } function transformProperty(property, receiver) { + var _a2; const savedCurrentStaticPropertyDeclarationOrStaticBlock = currentStaticPropertyDeclarationOrStaticBlock; const transformed = transformPropertyWorker(property, receiver); - if (transformed && hasStaticModifier(property) && (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.facts)) { + if (transformed && hasStaticModifier(property) && ((_a2 = lexicalEnvironment == null ? void 0 : lexicalEnvironment.data) == null ? void 0 : _a2.facts)) { setOriginalNode(transformed, property); addEmitFlags(transformed, 4 /* AdviseOnEmitNode */); - classLexicalEnvironmentMap.set(getOriginalNodeId(transformed), currentClassLexicalEnvironment); + setSourceMapRange(transformed, getSourceMapRange(property.name)); + lexicalEnvironmentMap.set(getOriginalNode(property), lexicalEnvironment); } currentStaticPropertyDeclarationOrStaticBlock = savedCurrentStaticPropertyDeclarationOrStaticBlock; return transformed; } function transformPropertyWorker(property, receiver) { - var _a2; const emitAssignment = !useDefineForClassFields; + let referencedName; + if (isNamedEvaluation(property, isAnonymousClassNeedingAssignedName)) { + if (isPropertyNameLiteral(property.name) || isPrivateIdentifier(property.name)) { + referencedName = factory2.createStringLiteralFromNode(property.name); + } else if (isPropertyNameLiteral(property.name.expression) && !isIdentifier(property.name.expression)) { + referencedName = factory2.createStringLiteralFromNode(property.name.expression); + } else { + referencedName = factory2.getGeneratedNameForNode(property.name); + } + } const propertyName = hasAccessorModifier(property) ? factory2.getGeneratedPrivateNameForNode(property.name) : isComputedPropertyName(property.name) && !isSimpleInlineableExpression(property.name.expression) ? factory2.updateComputedPropertyName(property.name, factory2.getGeneratedNameForNode(property.name)) : property.name; if (hasStaticModifier(property)) { currentStaticPropertyDeclarationOrStaticBlock = property; } - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifier(propertyName)) { - const privateIdentifierInfo = accessPrivateIdentifier(propertyName); + const initializerVisitor = referencedName ? (child) => namedEvaluationVisitor(child, referencedName) : visitor; + if (isPrivateIdentifier(propertyName) && shouldTransformClassElementToWeakMap(property)) { + const privateIdentifierInfo = accessPrivateIdentifier2(propertyName); if (privateIdentifierInfo) { if (privateIdentifierInfo.kind === "f" /* Field */) { if (!privateIdentifierInfo.isStatic) { return createPrivateInstanceFieldInitializer( receiver, - visitNode(property.initializer, visitor, isExpression), + visitNode(property.initializer, initializerVisitor, isExpression), privateIdentifierInfo.brandCheckIdentifier ); } else { return createPrivateStaticFieldInitializer( privateIdentifierInfo.variableName, - visitNode(property.initializer, visitor, isExpression) + visitNode(property.initializer, initializerVisitor, isExpression) ); } } else { @@ -89315,7 +90891,23 @@ ${lanes.join("\n")} if (hasSyntacticModifier(propertyOriginalNode, 256 /* Abstract */)) { return void 0; } - const initializer = property.initializer || emitAssignment ? (_a2 = visitNode(property.initializer, visitor, isExpression)) != null ? _a2 : factory2.createVoidZero() : isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName) ? propertyName : factory2.createVoidZero(); + let initializer = visitNode(property.initializer, initializerVisitor, isExpression); + if (isParameterPropertyDeclaration(propertyOriginalNode, propertyOriginalNode.parent) && isIdentifier(propertyName)) { + const localName = factory2.cloneNode(propertyName); + if (initializer) { + if (isParenthesizedExpression(initializer) && isCommaExpression(initializer.expression) && isCallToHelper(initializer.expression.left, "___runInitializers") && isVoidExpression(initializer.expression.right) && isNumericLiteral(initializer.expression.right.expression)) { + initializer = initializer.expression.left; + } + initializer = factory2.inlineExpressions([initializer, localName]); + } else { + initializer = localName; + } + setEmitFlags(propertyName, 3072 /* NoComments */ | 96 /* NoSourceMap */); + setSourceMapRange(localName, propertyOriginalNode.name); + setEmitFlags(localName, 3072 /* NoComments */); + } else { + initializer != null ? initializer : initializer = factory2.createVoidZero(); + } if (emitAssignment || isPrivateIdentifier(propertyName)) { const memberAccess = createMemberAccessForPropertyName( factory2, @@ -89324,7 +90916,9 @@ ${lanes.join("\n")} /*location*/ propertyName ); - return factory2.createAssignment(memberAccess, initializer); + addEmitFlags(memberAccess, 1024 /* NoLeadingComments */); + const expression = factory2.createAssignment(memberAccess, initializer); + return expression; } else { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; const descriptor = factory2.createPropertyDescriptor({ value: initializer, configurable: true, writable: true, enumerable: true }); @@ -89352,11 +90946,11 @@ ${lanes.join("\n")} context.enableEmitNotification(164 /* ComputedPropertyName */); } } - function addMethodStatements(statements, methods, receiver) { + function addInstanceMethodStatements(statements, methods, receiver) { if (!shouldTransformPrivateElementsOrClassStaticBlocks || !some(methods)) { return; } - const { weakSetName } = getPrivateIdentifierEnvironment(); + const { weakSetName } = getPrivateIdentifierEnvironment().data; Debug.assert(weakSetName, "weakSetName should be set in private identifier environment"); statements.push( factory2.createExpressionStatement( @@ -89375,20 +90969,352 @@ ${lanes.join("\n")} visitNode(node.argumentExpression, visitor, isExpression) ); } + function getPropertyNameExpressionIfNeeded(name, shouldHoist, captureReferencedName) { + if (isComputedPropertyName(name)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name); + let expression = visitNode(name.expression, visitor, isExpression); + const innerExpression = skipPartiallyEmittedExpressions(expression); + const inlinable = isSimpleInlineableExpression(innerExpression); + const alreadyTransformed = !!cacheAssignment || isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); + if (!alreadyTransformed && !inlinable && shouldHoist) { + const generatedName = factory2.getGeneratedNameForNode(name); + if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(generatedName); + } else { + hoistVariableDeclaration(generatedName); + } + if (captureReferencedName) { + expression = emitHelpers().createPropKeyHelper(expression); + } + return factory2.createAssignment(generatedName, expression); + } + return inlinable || isIdentifier(innerExpression) ? void 0 : expression; + } + } + function startClassLexicalEnvironment() { + lexicalEnvironment = { previous: lexicalEnvironment, data: void 0 }; + } + function endClassLexicalEnvironment() { + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + } + function getClassLexicalEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.data) != null ? _a2 : lexicalEnvironment.data = { + facts: 0 /* None */, + classConstructor: void 0, + classThis: void 0, + superClassReference: void 0 + // privateIdentifierEnvironment: undefined, + }; + } + function getPrivateIdentifierEnvironment() { + var _a2; + Debug.assert(lexicalEnvironment); + return (_a2 = lexicalEnvironment.privateEnv) != null ? _a2 : lexicalEnvironment.privateEnv = newPrivateEnvironment({ + className: void 0, + weakSetName: void 0 + }); + } + function getPendingExpressions() { + return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + } + function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + if (isAutoAccessorPropertyDeclaration(node)) { + addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isPropertyDeclaration(node)) { + addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isMethodDeclaration(node)) { + addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isGetAccessorDeclaration(node)) { + addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } else if (isSetAccessorDeclaration(node)) { + addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + } + function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + if (isStatic2) { + const brandCheckIdentifier = Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment"); + const variableName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: true, + brandCheckIdentifier, + variableName, + isValid + }); + } else { + const weakMapName = createHoistedVariableForPrivateName(name); + setPrivateIdentifier(privateEnv, name, { + kind: "f" /* Field */, + isStatic: false, + brandCheckIdentifier: weakMapName, + isValid + }); + getPendingExpressions().push(factory2.createAssignment( + weakMapName, + factory2.createNewExpression( + factory2.createIdentifier("WeakMap"), + /*typeArguments*/ + void 0, + [] + ) + )); + } + } + function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const methodName = createHoistedVariableForPrivateName(name); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "m" /* Method */, + methodName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { + previousInfo.getterName = getterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName: void 0, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { + var _a2; + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { + previousInfo.setterName = setterName; + } else { + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName: void 0, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + } + function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { + var _a2; + const getterName = createHoistedVariableForPrivateName(name, "_get"); + const setterName = createHoistedVariableForPrivateName(name, "_set"); + const brandCheckIdentifier = isStatic2 ? Debug.checkDefined((_a2 = lex.classThis) != null ? _a2 : lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.data.weakSetName, "weakSetName should be set in private identifier environment"); + setPrivateIdentifier(privateEnv, name, { + kind: "a" /* Accessor */, + getterName, + setterName, + brandCheckIdentifier, + isStatic: isStatic2, + isValid + }); + } + function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { + const lex = getClassLexicalEnvironment(); + const privateEnv = getPrivateIdentifierEnvironment(); + const previousInfo = getPrivateIdentifier(privateEnv, name); + const isStatic2 = hasStaticModifier(node); + const isValid = !isReservedPrivateName(name) && previousInfo === void 0; + addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); + } + function createHoistedVariableForClass(name, node, suffix) { + const { className } = getPrivateIdentifierEnvironment().data; + const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; + const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( + /*recordTempVariable*/ + void 0, + /*reserveInNestedScopes*/ + true, + prefix, + suffix + ); + if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { + addBlockScopedVariable(identifier); + } else { + hoistVariableDeclaration(identifier); + } + return identifier; + } + function createHoistedVariableForPrivateName(name, suffix) { + var _a2; + const text = tryGetTextOfPropertyName(name); + return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); + } + function accessPrivateIdentifier2(name) { + const info = accessPrivateIdentifier(lexicalEnvironment, name); + return (info == null ? void 0 : info.kind) === "untransformed" ? void 0 : info; + } + function wrapPrivateIdentifierForDestructuringTarget(node) { + const parameter = factory2.getGeneratedNameForNode(node); + const info = accessPrivateIdentifier2(node.name); + if (!info) { + return visitEachChild(node, visitor, context); + } + let receiver = node.expression; + if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { + receiver = factory2.createTempVariable( + hoistVariableDeclaration, + /*reservedInNestedScopes*/ + true + ); + getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); + } + return factory2.createAssignmentTargetWrapper( + parameter, + createPrivateIdentifierAssignment( + info, + receiver, + parameter, + 63 /* EqualsToken */ + ) + ); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isPrivateIdentifierPropertyAccessExpression(node)) { + return wrapPrivateIdentifierForDestructuringTarget(node); + } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(node) && currentStaticPropertyDeclarationOrStaticBlock && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { classConstructor, superClassReference, facts } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */) { + return visitInvalidSuperProperty(node); + } else if (classConstructor && superClassReference) { + const name = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (name) { + const temp = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + return factory2.createAssignmentTargetWrapper( + temp, + factory2.createReflectSetCall( + superClassReference, + name, + temp, + classConstructor + ) + ); + } + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const left = visitDestructuringAssignmentTarget(node.left); + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const left = visitDestructuringAssignmentTarget(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitDestructuringAssignmentTarget(node); + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, node.name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + return factory2.updateArrayLiteralExpression( + node, + visitNodes2(node.elements, visitArrayAssignmentElement, isExpression) + ); + } else { + return factory2.updateObjectLiteralExpression( + node, + visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike) + ); + } + } function onEmitNode(hint, node, emitCallback) { const original = getOriginalNode(node); - if (original.id) { - const classLexicalEnvironment = classLexicalEnvironmentMap.get(original.id); - if (classLexicalEnvironment) { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = classLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = classLexicalEnvironment; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + const lex = lexicalEnvironmentMap.get(original); + if (lex) { + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = lex; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = !isClassStaticBlockDeclaration(original) || !(getInternalEmitFlags(original) & 32 /* TransformPrivateStaticElements */); + previousOnEmitNode(hint, node, emitCallback); + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; + return; } switch (node.kind) { case 215 /* FunctionExpression */: @@ -89396,37 +91322,30 @@ ${lanes.join("\n")} break; } case 259 /* FunctionDeclaration */: - case 173 /* Constructor */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; - currentComputedPropertyNameClassLexicalEnvironment = void 0; - previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; - return; - } + case 173 /* Constructor */: case 174 /* GetAccessor */: case 175 /* SetAccessor */: case 171 /* MethodDeclaration */: case 169 /* PropertyDeclaration */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = currentClassLexicalEnvironment; - currentClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedPreviousShouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + lexicalEnvironment = void 0; + previousShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + shouldSubstituteThisWithClassThis = false; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; + previousShouldSubstituteThisWithClassThis = savedPreviousShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } case 164 /* ComputedPropertyName */: { - const savedClassLexicalEnvironment = currentClassLexicalEnvironment; - const savedCurrentComputedPropertyNameClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentClassLexicalEnvironment = currentComputedPropertyNameClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = void 0; + const savedLexicalEnvironment = lexicalEnvironment; + const savedShouldSubstituteThisWithClassThis = shouldSubstituteThisWithClassThis; + lexicalEnvironment = lexicalEnvironment == null ? void 0 : lexicalEnvironment.previous; + shouldSubstituteThisWithClassThis = previousShouldSubstituteThisWithClassThis; previousOnEmitNode(hint, node, emitCallback); - currentClassLexicalEnvironment = savedClassLexicalEnvironment; - currentComputedPropertyNameClassLexicalEnvironment = savedCurrentComputedPropertyNameClassLexicalEnvironment; + shouldSubstituteThisWithClassThis = savedShouldSubstituteThisWithClassThis; + lexicalEnvironment = savedLexicalEnvironment; return; } } @@ -89449,15 +91368,16 @@ ${lanes.join("\n")} return node; } function substituteThisExpression(node) { - if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && currentClassLexicalEnvironment) { - const { facts, classConstructor } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { + if (enabledSubstitutions & 2 /* ClassStaticThisOrSuperReference */ && (lexicalEnvironment == null ? void 0 : lexicalEnvironment.data)) { + const { facts, classConstructor, classThis } = lexicalEnvironment.data; + if (facts & 1 /* ClassWasDecorated */ && legacyDecorators) { return factory2.createParenthesizedExpression(factory2.createVoidZero()); } - if (classConstructor) { + const substituteThis = shouldSubstituteThisWithClassThis ? classThis != null ? classThis : classConstructor : classConstructor; + if (substituteThis) { return setTextRange( setOriginalNode( - factory2.cloneNode(classConstructor), + factory2.cloneNode(substituteThis), node ), node @@ -89486,350 +91406,6 @@ ${lanes.join("\n")} } return void 0; } - function getPropertyNameExpressionIfNeeded(name, shouldHoist) { - if (isComputedPropertyName(name)) { - const expression = visitNode(name.expression, visitor, isExpression); - const innerExpression = skipPartiallyEmittedExpressions(expression); - const inlinable = isSimpleInlineableExpression(innerExpression); - const alreadyTransformed = isAssignmentExpression(innerExpression) && isGeneratedIdentifier(innerExpression.left); - if (!alreadyTransformed && !inlinable && shouldHoist) { - const generatedName = factory2.getGeneratedNameForNode(name); - if (resolver.getNodeCheckFlags(name) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(generatedName); - } else { - hoistVariableDeclaration(generatedName); - } - return factory2.createAssignment(generatedName, expression); - } - return inlinable || isIdentifier(innerExpression) ? void 0 : expression; - } - } - function startClassLexicalEnvironment() { - classLexicalEnvironmentStack.push(currentClassLexicalEnvironment); - currentClassLexicalEnvironment = void 0; - } - function endClassLexicalEnvironment() { - currentClassLexicalEnvironment = classLexicalEnvironmentStack.pop(); - } - function getClassLexicalEnvironment() { - return currentClassLexicalEnvironment || (currentClassLexicalEnvironment = { - facts: 0 /* None */, - classConstructor: void 0, - superClassReference: void 0, - privateIdentifierEnvironment: void 0 - }); - } - function getPrivateIdentifierEnvironment() { - const lex = getClassLexicalEnvironment(); - lex.privateIdentifierEnvironment || (lex.privateIdentifierEnvironment = { - className: void 0, - weakSetName: void 0, - identifiers: void 0, - generatedIdentifiers: void 0 - }); - return lex.privateIdentifierEnvironment; - } - function getPendingExpressions() { - return pendingExpressions != null ? pendingExpressions : pendingExpressions = []; - } - function addPrivateIdentifierClassElementToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - if (isAutoAccessorPropertyDeclaration(node)) { - addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isPropertyDeclaration(node)) { - addPrivateIdentifierPropertyDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isMethodDeclaration(node)) { - addPrivateIdentifierMethodDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isGetAccessorDeclaration(node)) { - addPrivateIdentifierGetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } else if (isSetAccessorDeclaration(node)) { - addPrivateIdentifierSetAccessorDeclarationToEnvironment(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - } - function addPrivateIdentifierPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - if (isStatic2) { - Debug.assert(lex.classConstructor, "classConstructor should be set in private identifier environment"); - const variableName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: lex.classConstructor, - variableName, - isStatic: true, - isValid - }); - } else { - const weakMapName = createHoistedVariableForPrivateName(name); - setPrivateIdentifier(privateEnv, name, { - kind: "f" /* Field */, - brandCheckIdentifier: weakMapName, - variableName: void 0, - isStatic: false, - isValid - }); - getPendingExpressions().push(factory2.createAssignment( - weakMapName, - factory2.createNewExpression( - factory2.createIdentifier("WeakMap"), - /*typeArguments*/ - void 0, - [] - ) - )); - } - } - function addPrivateIdentifierMethodDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const methodName = createHoistedVariableForPrivateName(name); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "m" /* Method */, - methodName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierGetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.getterName) { - previousInfo.getterName = getterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName: void 0, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierSetAccessorDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, previousInfo) { - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - if ((previousInfo == null ? void 0 : previousInfo.kind) === "a" /* Accessor */ && previousInfo.isStatic === isStatic2 && !previousInfo.setterName) { - previousInfo.setterName = setterName; - } else { - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName: void 0, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - } - function addPrivateIdentifierAutoAccessorPropertyDeclarationToEnvironment(_node, name, lex, privateEnv, isStatic2, isValid, _previousInfo) { - const getterName = createHoistedVariableForPrivateName(name, "_get"); - const setterName = createHoistedVariableForPrivateName(name, "_set"); - const brandCheckIdentifier = isStatic2 ? Debug.checkDefined(lex.classConstructor, "classConstructor should be set in private identifier environment") : Debug.checkDefined(privateEnv.weakSetName, "weakSetName should be set in private identifier environment"); - setPrivateIdentifier(privateEnv, name, { - kind: "a" /* Accessor */, - getterName, - setterName, - brandCheckIdentifier, - isStatic: isStatic2, - isValid - }); - } - function addPrivateIdentifierToEnvironment(node, name, addDeclaration) { - const lex = getClassLexicalEnvironment(); - const privateEnv = getPrivateIdentifierEnvironment(); - const previousInfo = getPrivateIdentifier(privateEnv, name); - const isStatic2 = hasStaticModifier(node); - const isValid = !isReservedPrivateName(name) && previousInfo === void 0; - addDeclaration(node, name, lex, privateEnv, isStatic2, isValid, previousInfo); - } - function createHoistedVariableForClass(name, node, suffix) { - const { className } = getPrivateIdentifierEnvironment(); - const prefix = className ? { prefix: "_", node: className, suffix: "_" } : "_"; - const identifier = typeof name === "object" ? factory2.getGeneratedNameForNode(name, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */, prefix, suffix) : typeof name === "string" ? factory2.createUniqueName(name, 16 /* Optimistic */, prefix, suffix) : factory2.createTempVariable( - /*recordTempVariable*/ - void 0, - /*reserveInNestedScopes*/ - true, - prefix, - suffix - ); - if (resolver.getNodeCheckFlags(node) & 32768 /* BlockScopedBindingInLoop */) { - addBlockScopedVariable(identifier); - } else { - hoistVariableDeclaration(identifier); - } - return identifier; - } - function createHoistedVariableForPrivateName(name, suffix) { - var _a2; - const text = tryGetTextOfPropertyName(name); - return createHoistedVariableForClass((_a2 = text == null ? void 0 : text.substring(1)) != null ? _a2 : name, name, suffix); - } - function accessPrivateIdentifier(name) { - if (isGeneratedPrivateIdentifier(name)) { - return accessGeneratedPrivateIdentifier(name); - } else { - return accessPrivateIdentifierByText(name.escapedText); - } - } - function accessPrivateIdentifierByText(text) { - return accessPrivateIdentifierWorker(getPrivateIdentifierInfo, text); - } - function accessGeneratedPrivateIdentifier(name) { - return accessPrivateIdentifierWorker(getGeneratedPrivateIdentifierInfo, getNodeForGeneratedName(name)); - } - function accessPrivateIdentifierWorker(getPrivateIdentifierInfo2, privateIdentifierKey) { - if (currentClassLexicalEnvironment == null ? void 0 : currentClassLexicalEnvironment.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(currentClassLexicalEnvironment.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - for (let i = classLexicalEnvironmentStack.length - 1; i >= 0; --i) { - const env = classLexicalEnvironmentStack[i]; - if (!env) { - continue; - } - if (env.privateIdentifierEnvironment) { - const info = getPrivateIdentifierInfo2(env.privateIdentifierEnvironment, privateIdentifierKey); - if (info) { - return info; - } - } - } - return void 0; - } - function wrapPrivateIdentifierForDestructuringTarget(node) { - const parameter = factory2.getGeneratedNameForNode(node); - const info = accessPrivateIdentifier(node.name); - if (!info) { - return visitEachChild(node, visitor, context); - } - let receiver = node.expression; - if (isThisProperty(node) || isSuperProperty(node) || !isSimpleCopiableExpression(node.expression)) { - receiver = factory2.createTempVariable( - hoistVariableDeclaration, - /*reservedInNestedScopes*/ - true - ); - getPendingExpressions().push(factory2.createBinaryExpression(receiver, 63 /* EqualsToken */, visitNode(node.expression, visitor, isExpression))); - } - return factory2.createAssignmentTargetWrapper( - parameter, - createPrivateIdentifierAssignment( - info, - receiver, - parameter, - 63 /* EqualsToken */ - ) - ); - } - function visitArrayAssignmentTarget(node) { - const target = getTargetOfBindingOrAssignmentElement(node); - if (target) { - let wrapped; - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - if (wrapped) { - if (isAssignmentExpression(node)) { - return factory2.updateBinaryExpression( - node, - wrapped, - node.operatorToken, - visitNode(node.right, visitor, isExpression) - ); - } else if (isSpreadElement(node)) { - return factory2.updateSpreadElement(node, wrapped); - } else { - return wrapped; - } - } - } - return visitNode(node, assignmentTargetVisitor); - } - function visitObjectAssignmentTarget(node) { - if (isObjectBindingOrAssignmentElement(node) && !isShorthandPropertyAssignment(node)) { - const target = getTargetOfBindingOrAssignmentElement(node); - let wrapped; - if (target) { - if (isPrivateIdentifierPropertyAccessExpression(target)) { - wrapped = wrapPrivateIdentifierForDestructuringTarget(target); - } else if (shouldTransformSuperInStaticInitializers && isSuperProperty(target) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { - const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; - if (facts & 1 /* ClassWasDecorated */) { - wrapped = visitInvalidSuperProperty(target); - } else if (classConstructor && superClassReference) { - const name = isElementAccessExpression(target) ? visitNode(target.argumentExpression, visitor, isExpression) : isIdentifier(target.name) ? factory2.createStringLiteralFromNode(target.name) : void 0; - if (name) { - const temp = factory2.createTempVariable( - /*recordTempVariable*/ - void 0 - ); - wrapped = factory2.createAssignmentTargetWrapper( - temp, - factory2.createReflectSetCall( - superClassReference, - name, - temp, - classConstructor - ) - ); - } - } - } - } - if (isPropertyAssignment(node)) { - const initializer = getInitializerOfBindingOrAssignmentElement(node); - return factory2.updatePropertyAssignment( - node, - visitNode(node.name, visitor, isPropertyName), - wrapped ? initializer ? factory2.createAssignment(wrapped, visitNode(initializer, visitor)) : wrapped : visitNode(node.initializer, assignmentTargetVisitor, isExpression) - ); - } - if (isSpreadAssignment(node)) { - return factory2.updateSpreadAssignment( - node, - wrapped || visitNode(node.expression, assignmentTargetVisitor, isExpression) - ); - } - Debug.assert(wrapped === void 0, "Should not have generated a wrapped target"); - } - return visitNode(node, visitor); - } - function visitAssignmentPattern(node) { - if (isArrayLiteralExpression(node)) { - return factory2.updateArrayLiteralExpression( - node, - visitNodes2(node.elements, visitArrayAssignmentTarget, isExpression) - ); - } else { - return factory2.updateObjectLiteralExpression( - node, - visitNodes2(node.properties, visitObjectAssignmentTarget, isObjectLiteralElementLike) - ); - } - } } function createPrivateStaticFieldInitializer(variableName, initializer) { return factory.createAssignment( @@ -89858,38 +91434,13 @@ ${lanes.join("\n")} function isReservedPrivateName(node) { return !isGeneratedPrivateIdentifier(node) && node.escapedText === "#constructor"; } - function getPrivateIdentifier(privateEnv, name) { - return isGeneratedPrivateIdentifier(name) ? getGeneratedPrivateIdentifierInfo(privateEnv, getNodeForGeneratedName(name)) : getPrivateIdentifierInfo(privateEnv, name.escapedText); + function isPrivateIdentifierInExpression(node) { + return isPrivateIdentifier(node.left) && node.operatorToken.kind === 101 /* InKeyword */; } - function setPrivateIdentifier(privateEnv, name, info) { - var _a2, _b; - if (isGeneratedPrivateIdentifier(name)) { - (_a2 = privateEnv.generatedIdentifiers) != null ? _a2 : privateEnv.generatedIdentifiers = /* @__PURE__ */ new Map(); - privateEnv.generatedIdentifiers.set(getNodeForGeneratedName(name), info); - } else { - (_b = privateEnv.identifiers) != null ? _b : privateEnv.identifiers = /* @__PURE__ */ new Map(); - privateEnv.identifiers.set(name.escapedText, info); - } - } - function getPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.identifiers) == null ? void 0 : _a2.get(key); - } - function getGeneratedPrivateIdentifierInfo(privateEnv, key) { - var _a2; - return (_a2 = privateEnv.generatedIdentifiers) == null ? void 0 : _a2.get(key); - } - var PrivateIdentifierKind2; var init_classFields = __esm({ "src/compiler/transformers/classFields.ts"() { "use strict"; init_ts2(); - PrivateIdentifierKind2 = /* @__PURE__ */ ((PrivateIdentifierKind3) => { - PrivateIdentifierKind3["Field"] = "f"; - PrivateIdentifierKind3["Method"] = "m"; - PrivateIdentifierKind3["Accessor"] = "a"; - return PrivateIdentifierKind3; - })(PrivateIdentifierKind2 || {}); } }); @@ -90302,9 +91853,22 @@ ${lanes.join("\n")} } } function visitClassDeclaration(node) { - if (!(classOrConstructorParameterIsDecorated(node) || childIsDecorated(node))) + if (!(classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + true, + node + ) || childIsDecorated( + /*legacyDecorators*/ + true, + node + ))) { return visitEachChild(node, visitor, context); - const statements = hasDecorators(node) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); + } + const statements = classOrConstructorParameterIsDecorated( + /*useLegacyDecorators*/ + true, + node + ) ? transformClassDeclarationWithClassDecorators(node, node.name) : transformClassDeclarationWithoutClassDecorators(node, node.name); if (statements.length > 1) { statements.push(factory2.createEndOfDeclarationMarker(node)); setEmitFlags(statements[0], getEmitFlags(statements[0]) | 8388608 /* HasEndOfDeclarationMarker */); @@ -90321,7 +91885,12 @@ ${lanes.join("\n")} for (const member of node.members) { if (!canHaveDecorators(member)) continue; - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); if (some(allDecorators == null ? void 0 : allDecorators.decorators, decoratorContainsPrivateIdentifierInExpression)) return true; if (some(allDecorators == null ? void 0 : allDecorators.parameters, parameterDecoratorsContainPrivateIdentifierInExpression)) @@ -90398,7 +91967,7 @@ ${lanes.join("\n")} const classExpression = factory2.createClassExpression( /*modifiers*/ void 0, - name, + name && isGeneratedIdentifier(name) ? void 0 : name, /*typeParameters*/ void 0, heritageClauses, @@ -90443,7 +92012,7 @@ ${lanes.join("\n")} return factory2.updateConstructorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ); } @@ -90459,12 +92028,12 @@ ${lanes.join("\n")} node, visitNodes2(node.modifiers, modifierVisitor, isModifier), node.asteriskToken, - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionToken*/ void 0, /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -90474,8 +92043,8 @@ ${lanes.join("\n")} return finishClassElement(factory2.updateGetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -90485,8 +92054,8 @@ ${lanes.join("\n")} return finishClassElement(factory2.updateSetAccessorDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), - visitNodes2(node.parameters, visitor, isParameterDeclaration), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), + visitNodes2(node.parameters, visitor, isParameter), visitNode(node.body, visitor, isBlock) ), node); } @@ -90497,7 +92066,7 @@ ${lanes.join("\n")} return finishClassElement(factory2.updatePropertyDeclaration( node, visitNodes2(node.modifiers, modifierVisitor, isModifier), - visitNode(node.name, visitor, isPropertyName), + Debug.checkDefined(visitNode(node.name, visitor, isPropertyName)), /*questionOrExclamationToken*/ void 0, /*type*/ @@ -90510,7 +92079,7 @@ ${lanes.join("\n")} node, elideNodes(factory2, node.modifiers), node.dotDotDotToken, - visitNode(node.name, visitor, isBindingName), + Debug.checkDefined(visitNode(node.name, visitor, isBindingName)), /*questionToken*/ void 0, /*type*/ @@ -90525,20 +92094,30 @@ ${lanes.join("\n")} } return updated; } + function isSyntheticMetadataDecorator(node) { + return isCallToHelper(node.expression, "___metadata"); + } function transformAllDecoratorsOfDeclaration(allDecorators) { if (!allDecorators) { return void 0; } + const { false: decorators, true: metadata } = groupBy(allDecorators.decorators, isSyntheticMetadataDecorator); const decoratorExpressions = []; - addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + addRange(decoratorExpressions, map(decorators, transformDecorator)); addRange(decoratorExpressions, flatMap(allDecorators.parameters, transformDecoratorsOfParameter)); + addRange(decoratorExpressions, map(metadata, transformDecorator)); return decoratorExpressions; } function addClassElementDecorationStatements(statements, node, isStatic2) { addRange(statements, map(generateClassElementDecorationExpressions(node, isStatic2), (expr) => factory2.createExpressionStatement(expr))); } function isDecoratedClassElement(member, isStaticElement, parent2) { - return nodeOrChildIsDecorated(member, parent2) && isStaticElement === isStatic(member); + return nodeOrChildIsDecorated( + /*legacyDecorators*/ + true, + member, + parent2 + ) && isStaticElement === isStatic(member); } function getDecoratedClassElements(node, isStatic2) { return filter(node.members, (m) => isDecoratedClassElement(m, isStatic2, node)); @@ -90552,7 +92131,12 @@ ${lanes.join("\n")} return expressions; } function generateClassElementDecorationExpression(node, member) { - const allDecorators = getAllDecoratorsOfClassElement(member, node); + const allDecorators = getAllDecoratorsOfClassElement( + member, + node, + /*useLegacyDecorators*/ + true + ); const decoratorExpressions = transformAllDecoratorsOfDeclaration(allDecorators); if (!decoratorExpressions) { return void 0; @@ -90607,7 +92191,7 @@ ${lanes.join("\n")} return expression; } function transformDecorator(decorator) { - return visitNode(decorator.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(decorator.expression, visitor, isExpression)); } function transformDecoratorsOfParameter(decorators, parameterOffset) { let expressions; @@ -90701,6 +92285,1719 @@ ${lanes.join("\n")} } }); + // src/compiler/transformers/esDecorators.ts + function transformESDecorators(context) { + const { + factory: factory2, + getEmitHelperFactory: emitHelpers, + startLexicalEnvironment, + endLexicalEnvironment, + hoistVariableDeclaration + } = context; + let top; + let classInfo; + let classThis; + let classSuper; + let pendingExpressions; + let shouldTransformPrivateStaticElementsInFile; + return chainBundle(context, transformSourceFile); + function transformSourceFile(node) { + top = void 0; + shouldTransformPrivateStaticElementsInFile = false; + const visited = visitEachChild(node, visitor, context); + addEmitHelpers(visited, context.readEmitHelpers()); + if (shouldTransformPrivateStaticElementsInFile) { + addInternalEmitFlags(visited, 32 /* TransformPrivateStaticElements */); + shouldTransformPrivateStaticElementsInFile = false; + } + return visited; + } + function updateState() { + classInfo = void 0; + classThis = void 0; + classSuper = void 0; + switch (top == null ? void 0 : top.kind) { + case "class": + classInfo = top.classInfo; + break; + case "class-element": + classInfo = top.next.classInfo; + classThis = top.classThis; + classSuper = top.classSuper; + break; + case "name": + const grandparent = top.next.next.next; + if ((grandparent == null ? void 0 : grandparent.kind) === "class-element") { + classInfo = grandparent.next.classInfo; + classThis = grandparent.classThis; + classSuper = grandparent.classSuper; + } + break; + } + } + function enterClass(classInfo2) { + top = { kind: "class", next: top, classInfo: classInfo2, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + function exitClass() { + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + function enterClassElement(node) { + var _a2, _b; + Debug.assert((top == null ? void 0 : top.kind) === "class", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "class-element", next: top }; + if (isClassStaticBlockDeclaration(node) || isPropertyDeclaration(node) && hasStaticModifier(node)) { + top.classThis = (_a2 = top.next.classInfo) == null ? void 0 : _a2.classThis; + top.classSuper = (_b = top.next.classInfo) == null ? void 0 : _b.classSuper; + } + updateState(); + } + function exitClassElement() { + var _a2; + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + Debug.assert(((_a2 = top.next) == null ? void 0 : _a2.kind) === "class", "Incorrect value for top.next.kind.", () => { + var _a3; + return `Expected top.next.kind to be 'class' but got '${(_a3 = top.next) == null ? void 0 : _a3.kind}' instead.`; + }); + top = top.next; + updateState(); + } + function enterName() { + Debug.assert((top == null ? void 0 : top.kind) === "class-element", "Incorrect value for top.kind.", () => `Expected top.kind to be 'class-element' but got '${top == null ? void 0 : top.kind}' instead.`); + top = { kind: "name", next: top }; + updateState(); + } + function exitName() { + Debug.assert((top == null ? void 0 : top.kind) === "name", "Incorrect value for top.kind.", () => `Expected top.kind to be 'name' but got '${top == null ? void 0 : top.kind}' instead.`); + top = top.next; + updateState(); + } + function enterOther() { + if ((top == null ? void 0 : top.kind) === "other") { + Debug.assert(!pendingExpressions); + top.depth++; + } else { + top = { kind: "other", next: top, depth: 0, savedPendingExpressions: pendingExpressions }; + pendingExpressions = void 0; + updateState(); + } + } + function exitOther() { + Debug.assert((top == null ? void 0 : top.kind) === "other", "Incorrect value for top.kind.", () => `Expected top.kind to be 'other' but got '${top == null ? void 0 : top.kind}' instead.`); + if (top.depth > 0) { + Debug.assert(!pendingExpressions); + top.depth--; + } else { + pendingExpressions = top.savedPendingExpressions; + top = top.next; + updateState(); + } + } + function shouldVisitNode(node) { + return !!(node.transformFlags & 33554432 /* ContainsDecorators */) || !!classThis && !!(node.transformFlags & 16384 /* ContainsLexicalThis */) || !!classThis && !!classSuper && !!(node.transformFlags & 134217728 /* ContainsLexicalSuper */); + } + function visitor(node) { + if (!shouldVisitNode(node)) { + return node; + } + switch (node.kind) { + case 167 /* Decorator */: + return Debug.fail("Use `modifierVisitor` instead."); + case 260 /* ClassDeclaration */: + return visitClassDeclaration(node); + case 228 /* ClassExpression */: + return visitClassExpression( + node, + /*referencedName*/ + void 0 + ); + case 173 /* Constructor */: + case 169 /* PropertyDeclaration */: + case 172 /* ClassStaticBlockDeclaration */: + return Debug.fail("Not supported outside of a class. Use 'classElementVisitor' instead."); + case 166 /* Parameter */: + return visitParameterDeclaration(node); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + false + ); + case 299 /* PropertyAssignment */: + return visitPropertyAssignment(node); + case 257 /* VariableDeclaration */: + return visitVariableDeclaration(node); + case 205 /* BindingElement */: + return visitBindingElement(node); + case 274 /* ExportAssignment */: + return visitExportAssignment(node); + case 108 /* ThisKeyword */: + return visitThisExpression(node); + case 245 /* ForStatement */: + return visitForStatement(node); + case 241 /* ExpressionStatement */: + return visitExpressionStatement(node); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + false + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + /*referencedName*/ + void 0 + ); + case 210 /* CallExpression */: + return visitCallExpression(node); + case 212 /* TaggedTemplateExpression */: + return visitTaggedTemplateExpression(node); + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discard*/ + false + ); + case 208 /* PropertyAccessExpression */: + return visitPropertyAccessExpression(node); + case 209 /* ElementAccessExpression */: + return visitElementAccessExpression(node); + case 164 /* ComputedPropertyName */: + return visitComputedPropertyName(node); + case 171 /* MethodDeclaration */: + case 175 /* SetAccessor */: + case 174 /* GetAccessor */: + case 215 /* FunctionExpression */: + case 259 /* FunctionDeclaration */: { + enterOther(); + const result = visitEachChild(node, fallbackVisitor, context); + exitOther(); + return result; + } + default: + return visitEachChild(node, fallbackVisitor, context); + } + } + function fallbackVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return visitor(node); + } + } + function modifierVisitor(node) { + switch (node.kind) { + case 167 /* Decorator */: + return void 0; + default: + return node; + } + } + function classElementVisitor(node) { + switch (node.kind) { + case 173 /* Constructor */: + return visitConstructorDeclaration(node); + case 171 /* MethodDeclaration */: + return visitMethodDeclaration(node); + case 174 /* GetAccessor */: + return visitGetAccessorDeclaration(node); + case 175 /* SetAccessor */: + return visitSetAccessorDeclaration(node); + case 169 /* PropertyDeclaration */: + return visitPropertyDeclaration(node); + case 172 /* ClassStaticBlockDeclaration */: + return visitClassStaticBlockDeclaration(node); + default: + return visitor(node); + } + } + function namedEvaluationVisitor(node, referencedName) { + switch (node.kind) { + case 356 /* PartiallyEmittedExpression */: + return visitPartiallyEmittedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + false, + referencedName + ); + case 228 /* ClassExpression */: + return visitClassExpression(node, referencedName); + default: + return visitor(node); + } + } + function discardedValueVisitor(node) { + switch (node.kind) { + case 221 /* PrefixUnaryExpression */: + case 222 /* PostfixUnaryExpression */: + return visitPreOrPostfixUnaryExpression( + node, + /*discarded*/ + true + ); + case 223 /* BinaryExpression */: + return visitBinaryExpression( + node, + /*discarded*/ + true + ); + case 357 /* CommaListExpression */: + return visitCommaListExpression( + node, + /*discarded*/ + true + ); + case 214 /* ParenthesizedExpression */: + return visitParenthesizedExpression( + node, + /*discarded*/ + true, + /*referencedName*/ + void 0 + ); + default: + return visitor(node); + } + } + function getHelperVariableName(node) { + let declarationName = node.name && isIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name) : node.name && isPrivateIdentifier(node.name) && !isGeneratedIdentifier(node.name) ? idText(node.name).slice(1) : node.name && isStringLiteral(node.name) && isIdentifierText(node.name.text, 99 /* ESNext */) ? node.name.text : isClassLike(node) ? "class" : "member"; + if (isGetAccessor(node)) + declarationName = `get_${declarationName}`; + if (isSetAccessor(node)) + declarationName = `set_${declarationName}`; + if (node.name && isPrivateIdentifier(node.name)) + declarationName = `private_${declarationName}`; + if (isStatic(node)) + declarationName = `static_${declarationName}`; + return "_" + declarationName; + } + function createHelperVariable(node, suffix) { + return factory2.createUniqueName(`${getHelperVariableName(node)}_${suffix}`, 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */); + } + function createLet(name, initializer) { + return factory2.createVariableStatement( + /*modifiers*/ + void 0, + factory2.createVariableDeclarationList([ + factory2.createVariableDeclaration( + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ) + ], 1 /* Let */) + ); + } + function createClassInfo(node) { + let instanceExtraInitializersName; + let staticExtraInitializersName; + let hasStaticInitializers = false; + let hasNonAmbientInstanceFields = false; + let hasStaticPrivateClassElements = false; + for (const member of node.members) { + if (isNamedClassElement(member) && nodeOrChildIsDecorated( + /*legacyDecorators*/ + false, + member, + node + )) { + if (hasStaticModifier(member)) { + staticExtraInitializersName != null ? staticExtraInitializersName : staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */); + } else { + instanceExtraInitializersName != null ? instanceExtraInitializersName : instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + } + } + if (isClassStaticBlockDeclaration(member)) { + hasStaticInitializers = true; + } else if (isPropertyDeclaration(member)) { + if (hasStaticModifier(member)) { + hasStaticInitializers || (hasStaticInitializers = !!member.initializer || hasDecorators(member)); + } else { + hasNonAmbientInstanceFields || (hasNonAmbientInstanceFields = !isAmbientPropertyDeclaration(member)); + } + } + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + hasStaticPrivateClassElements = true; + } + if (staticExtraInitializersName && instanceExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) { + break; + } + } + return { + class: node, + instanceExtraInitializersName, + staticExtraInitializersName, + hasStaticInitializers, + hasNonAmbientInstanceFields, + hasStaticPrivateClassElements + }; + } + function containsLexicalSuperInStaticInitializer(node) { + for (const member of node.members) { + if (isClassStaticBlockDeclaration(member) || isPropertyDeclaration(member) && hasStaticModifier(member)) { + if (member.transformFlags & 134217728 /* ContainsLexicalSuper */) { + return true; + } + } + } + return false; + } + function transformClassLike(node, className) { + var _a2, _b, _c, _d, _e; + startLexicalEnvironment(); + const classReference = (_a2 = node.name) != null ? _a2 : factory2.getGeneratedNameForNode(node); + const classInfo2 = createClassInfo(node); + const classDefinitionStatements = []; + let leadingBlockStatements; + let trailingBlockStatements; + let syntheticConstructor; + let heritageClauses; + let shouldTransformPrivateStaticElementsInClass = false; + const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass(node)); + if (classDecorators) { + classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */); + classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */); + classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */); + classInfo2.classThis = factory2.createUniqueName("_classThis", 16 /* Optimistic */); + classDefinitionStatements.push( + createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)), + createLet(classInfo2.classDescriptorName), + createLet(classInfo2.classExtraInitializersName, factory2.createArrayLiteralExpression()), + createLet(classInfo2.classThis) + ); + if (classInfo2.hasStaticPrivateClassElements) { + shouldTransformPrivateStaticElementsInClass = true; + shouldTransformPrivateStaticElementsInFile = true; + } + } + if (classDecorators && containsLexicalSuperInStaticInitializer(node)) { + const extendsClause = getHeritageClause(node.heritageClauses, 94 /* ExtendsKeyword */); + const extendsElement = extendsClause && firstOrUndefined(extendsClause.types); + const extendsExpression = extendsElement && visitNode(extendsElement.expression, visitor, isExpression); + if (extendsExpression) { + classInfo2.classSuper = factory2.createUniqueName("_classSuper", 16 /* Optimistic */); + const unwrapped = skipOuterExpressions(extendsExpression); + const safeExtendsExpression = isClassExpression(unwrapped) && !unwrapped.name || isFunctionExpression(unwrapped) && !unwrapped.name || isArrowFunction(unwrapped) ? factory2.createComma(factory2.createNumericLiteral(0), extendsExpression) : extendsExpression; + classDefinitionStatements.push(createLet(classInfo2.classSuper, safeExtendsExpression)); + const updatedExtendsElement = factory2.updateExpressionWithTypeArguments( + extendsElement, + classInfo2.classSuper, + /*typeArguments*/ + void 0 + ); + const updatedExtendsClause = factory2.updateHeritageClause(extendsClause, [updatedExtendsElement]); + heritageClauses = factory2.createNodeArray([updatedExtendsClause]); + } + } else { + heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + } + const renamedClassThis = (_b = classInfo2.classThis) != null ? _b : factory2.createThis(); + const needsSetNameHelper = !((_c = getOriginalNode(node, isClassLike)) == null ? void 0 : _c.name) && (classDecorators || !isStringLiteral(className) || !isEmptyStringLiteral(className)); + if (needsSetNameHelper) { + const setNameExpr = emitHelpers().createSetFunctionNameHelper(factory2.createThis(), className); + leadingBlockStatements = append(leadingBlockStatements, factory2.createExpressionStatement(setNameExpr)); + } + enterClass(classInfo2); + let members = visitNodes2(node.members, classElementVisitor, isClassElement); + if (pendingExpressions) { + let outerThis; + for (let expression of pendingExpressions) { + expression = visitNode(expression, function thisVisitor(node2) { + if (!(node2.transformFlags & 16384 /* ContainsLexicalThis */)) { + return node2; + } + switch (node2.kind) { + case 108 /* ThisKeyword */: + if (!outerThis) { + outerThis = factory2.createUniqueName("_outerThis", 16 /* Optimistic */); + classDefinitionStatements.unshift(createLet(outerThis, factory2.createThis())); + } + return outerThis; + default: + return visitEachChild(node2, thisVisitor, context); + } + }, isExpression); + const statement = factory2.createExpressionStatement(expression); + leadingBlockStatements = append(leadingBlockStatements, statement); + } + pendingExpressions = void 0; + } + exitClass(); + if (classInfo2.instanceExtraInitializersName && !getFirstConstructorWithBody(node)) { + const initializerStatements = prepareConstructor(node, classInfo2); + if (initializerStatements) { + const extendsClauseElement = getEffectiveBaseTypeNode(node); + const isDerivedClass = !!(extendsClauseElement && skipOuterExpressions(extendsClauseElement.expression).kind !== 104 /* NullKeyword */); + const constructorStatements = []; + if (isDerivedClass) { + const spreadArguments = factory2.createSpreadElement(factory2.createIdentifier("arguments")); + const superCall = factory2.createCallExpression( + factory2.createSuper(), + /*typeArguments*/ + void 0, + [spreadArguments] + ); + constructorStatements.push(factory2.createExpressionStatement(superCall)); + } + addRange(constructorStatements, initializerStatements); + const constructorBody = factory2.createBlock( + constructorStatements, + /*multiLine*/ + true + ); + syntheticConstructor = factory2.createConstructorDeclaration( + /*modifiers*/ + void 0, + [], + constructorBody + ); + } + } + if (classInfo2.staticExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.staticExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.instanceExtraInitializersName) { + classDefinitionStatements.push( + createLet(classInfo2.instanceExtraInitializersName, factory2.createArrayLiteralExpression()) + ); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + if (classInfo2.memberInfos) { + forEachEntry(classInfo2.memberInfos, (memberInfo, member) => { + if (!isStatic(member)) { + classDefinitionStatements.push(createLet(memberInfo.memberDecoratorsName)); + if (memberInfo.memberInitializersName) { + classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression())); + } + if (memberInfo.memberDescriptorName) { + classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName)); + } + } + }); + } + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticNonFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.staticFieldDecorationStatements); + leadingBlockStatements = addRange(leadingBlockStatements, classInfo2.nonStaticFieldDecorationStatements); + if (classInfo2.classDescriptorName && classInfo2.classDecoratorsName && classInfo2.classExtraInitializersName && classInfo2.classThis) { + leadingBlockStatements != null ? leadingBlockStatements : leadingBlockStatements = []; + const valueProperty = factory2.createPropertyAssignment("value", factory2.createThis()); + const classDescriptor = factory2.createObjectLiteralExpression([valueProperty]); + const classDescriptorAssignment = factory2.createAssignment(classInfo2.classDescriptorName, classDescriptor); + const classNameReference = factory2.createPropertyAccessExpression(factory2.createThis(), "name"); + const esDecorateHelper2 = emitHelpers().createESDecorateHelper( + factory2.createNull(), + classDescriptorAssignment, + classInfo2.classDecoratorsName, + { kind: "class", name: classNameReference }, + factory2.createNull(), + classInfo2.classExtraInitializersName + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateHelper2); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(node)); + leadingBlockStatements.push(esDecorateStatement); + const classDescriptorValueReference = factory2.createPropertyAccessExpression(classInfo2.classDescriptorName, "value"); + const classThisAssignment = factory2.createAssignment(classInfo2.classThis, classDescriptorValueReference); + const classReferenceAssignment = factory2.createAssignment(classReference, classThisAssignment); + leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment)); + } + if (classInfo2.staticExtraInitializersName) { + const runStaticInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.staticExtraInitializersName); + const runStaticInitializersStatement = factory2.createExpressionStatement(runStaticInitializersHelper); + setSourceMapRange(runStaticInitializersStatement, (_d = node.name) != null ? _d : moveRangePastDecorators(node)); + leadingBlockStatements = append(leadingBlockStatements, runStaticInitializersStatement); + } + if (classInfo2.classExtraInitializersName) { + const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName); + const runClassInitializersStatement = factory2.createExpressionStatement(runClassInitializersHelper); + setSourceMapRange(runClassInitializersStatement, (_e = node.name) != null ? _e : moveRangePastDecorators(node)); + trailingBlockStatements = append(trailingBlockStatements, runClassInitializersStatement); + } + if (leadingBlockStatements && trailingBlockStatements && !classInfo2.hasStaticInitializers) { + addRange(leadingBlockStatements, trailingBlockStatements); + trailingBlockStatements = void 0; + } + let newMembers = members; + if (leadingBlockStatements) { + const leadingStaticBlockBody = factory2.createBlock( + leadingBlockStatements, + /*multiline*/ + true + ); + const leadingStaticBlock = factory2.createClassStaticBlockDeclaration(leadingStaticBlockBody); + if (shouldTransformPrivateStaticElementsInClass) { + setInternalEmitFlags(leadingStaticBlock, 32 /* TransformPrivateStaticElements */); + } + newMembers = [leadingStaticBlock, ...newMembers]; + } + if (syntheticConstructor) { + newMembers = [...newMembers, syntheticConstructor]; + } + if (trailingBlockStatements) { + const trailingStaticBlockBody = factory2.createBlock( + trailingBlockStatements, + /*multiline*/ + true + ); + const trailingStaticBlock = factory2.createClassStaticBlockDeclaration(trailingStaticBlockBody); + newMembers = [...newMembers, trailingStaticBlock]; + } + if (newMembers !== members) { + members = setTextRange(factory2.createNodeArray(newMembers), members); + } + const lexicalEnvironment = endLexicalEnvironment(); + let classExpression; + if (classDecorators) { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + const classReferenceDeclaration = factory2.createVariableDeclaration( + classReference, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + classExpression + ); + const classReferenceVarDeclList = factory2.createVariableDeclarationList([classReferenceDeclaration]); + const returnExpr = classInfo2.classThis ? factory2.createAssignment(classReference, classInfo2.classThis) : classReference; + classDefinitionStatements.push( + factory2.createVariableStatement( + /*modifiers*/ + void 0, + classReferenceVarDeclList + ), + factory2.createReturnStatement(returnExpr) + ); + } else { + classExpression = factory2.createClassExpression( + /*modifiers*/ + void 0, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + classDefinitionStatements.push(factory2.createReturnStatement(classExpression)); + } + if (shouldTransformPrivateStaticElementsInClass) { + addInternalEmitFlags(classExpression, 32 /* TransformPrivateStaticElements */); + for (const member of classExpression.members) { + if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) { + addInternalEmitFlags(member, 32 /* TransformPrivateStaticElements */); + } + } + } + setOriginalNode(classExpression, node); + getOrCreateEmitNode(classExpression).classThis = classInfo2.classThis; + return factory2.createImmediatelyInvokedArrowFunction(factory2.mergeLexicalEnvironment(classDefinitionStatements, lexicalEnvironment)); + } + function isDecoratedClassLike(node) { + return classOrConstructorParameterIsDecorated( + /*legacyDecorators*/ + false, + node + ) || childIsDecorated( + /*legacyDecorators*/ + false, + node + ); + } + function visitClassDeclaration(node) { + var _a2; + if (isDecoratedClassLike(node)) { + if (hasSyntacticModifier(node, 1 /* Export */) && hasSyntacticModifier(node, 1024 /* Default */)) { + const originalClass = (_a2 = getOriginalNode(node, isClassLike)) != null ? _a2 : node; + const className = originalClass.name ? factory2.createStringLiteralFromNode(originalClass.name) : factory2.createStringLiteral("default"); + const iife = transformClassLike(node, className); + const statement = factory2.createExportDefault(iife); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + setSourceMapRange(statement, moveRangePastDecorators(node)); + return statement; + } else { + Debug.assertIsDefined(node.name, "A class declaration that is not a default export must have a name."); + const iife = transformClassLike(node, factory2.createStringLiteralFromNode(node.name)); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const varDecl = factory2.createVariableDeclaration( + node.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + iife + ); + const varDecls = factory2.createVariableDeclarationList([varDecl], 1 /* Let */); + const statement = factory2.createVariableStatement(modifiers, varDecls); + setOriginalNode(statement, node); + setCommentRange(statement, getCommentRange(node)); + return statement; + } + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassDeclaration( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function visitClassExpression(node, referencedName) { + if (isDecoratedClassLike(node)) { + const className = node.name ? factory2.createStringLiteralFromNode(node.name) : referencedName != null ? referencedName : factory2.createStringLiteral(""); + const iife = transformClassLike(node, className); + setOriginalNode(iife, node); + return iife; + } else { + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const heritageClauses = visitNodes2(node.heritageClauses, visitor, isHeritageClause); + enterClass( + /*classInfo*/ + void 0 + ); + const members = visitNodes2(node.members, classElementVisitor, isClassElement); + exitClass(); + return factory2.updateClassExpression( + node, + modifiers, + node.name, + /*typeParameters*/ + void 0, + heritageClauses, + members + ); + } + } + function prepareConstructor(_parent, classInfo2) { + if (classInfo2.instanceExtraInitializersName && !classInfo2.hasNonAmbientInstanceFields) { + const statements = []; + statements.push( + factory2.createExpressionStatement( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo2.instanceExtraInitializersName + ) + ) + ); + return statements; + } + } + function visitConstructorDeclaration(node) { + enterClassElement(node); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const parameters = visitNodes2(node.parameters, visitor, isParameter); + let body; + if (node.body && classInfo) { + const initializerStatements = prepareConstructor(classInfo.class, classInfo); + if (initializerStatements) { + const statements = []; + const nonPrologueStart = factory2.copyPrologue( + node.body.statements, + statements, + /*ensureUseStrict*/ + false, + visitor + ); + addRange(statements, initializerStatements); + addRange(statements, visitNodes2(node.body.statements, visitor, isStatement, nonPrologueStart)); + body = factory2.createBlock( + statements, + /*multiLine*/ + true + ); + setOriginalNode(body, node.body); + setTextRange(body, node.body); + } + } + body != null ? body : body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return factory2.updateConstructorDeclaration(node, modifiers, parameters, body); + } + function finishClassElement(updated, original) { + if (updated !== original) { + setCommentRange(updated, original); + setSourceMapRange(updated, moveRangePastDecorators(original)); + } + return updated; + } + function partialTransformClassElement(member, useNamedEvaluation, classInfo2, createDescriptor) { + var _a2, _b, _c, _d, _e, _f, _g, _h; + let referencedName; + let name; + let initializersName; + let thisArg; + let descriptorName; + if (!classInfo2) { + const modifiers2 = visitNodes2(member.modifiers, modifierVisitor, isModifier); + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + return { modifiers: modifiers2, referencedName, name, initializersName, descriptorName, thisArg }; + } + const memberDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClassElement( + member, + classInfo2.class, + /*useLegacyDecorators*/ + false + )); + const modifiers = visitNodes2(member.modifiers, modifierVisitor, isModifier); + if (memberDecorators) { + const memberDecoratorsName = createHelperVariable(member, "decorators"); + const memberDecoratorsArray = factory2.createArrayLiteralExpression(memberDecorators); + const memberDecoratorsAssignment = factory2.createAssignment(memberDecoratorsName, memberDecoratorsArray); + const memberInfo = { memberDecoratorsName }; + (_a2 = classInfo2.memberInfos) != null ? _a2 : classInfo2.memberInfos = /* @__PURE__ */ new Map(); + classInfo2.memberInfos.set(member, memberInfo); + pendingExpressions != null ? pendingExpressions : pendingExpressions = []; + pendingExpressions.push(memberDecoratorsAssignment); + const statements = isMethodOrAccessor(member) || isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_b = classInfo2.staticNonFieldDecorationStatements) != null ? _b : classInfo2.staticNonFieldDecorationStatements = [] : (_c = classInfo2.nonStaticNonFieldDecorationStatements) != null ? _c : classInfo2.nonStaticNonFieldDecorationStatements = [] : isPropertyDeclaration(member) && !isAutoAccessorPropertyDeclaration(member) ? isStatic(member) ? (_d = classInfo2.staticFieldDecorationStatements) != null ? _d : classInfo2.staticFieldDecorationStatements = [] : (_e = classInfo2.nonStaticFieldDecorationStatements) != null ? _e : classInfo2.nonStaticFieldDecorationStatements = [] : Debug.fail(); + const kind = isGetAccessorDeclaration(member) ? "getter" : isSetAccessorDeclaration(member) ? "setter" : isMethodDeclaration(member) ? "method" : isAutoAccessorPropertyDeclaration(member) ? "accessor" : isPropertyDeclaration(member) ? "field" : Debug.fail(); + let propertyName; + if (isIdentifier(member.name) || isPrivateIdentifier(member.name)) { + propertyName = { computed: false, name: member.name }; + } else if (isPropertyNameLiteral(member.name)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(member.name) }; + } else { + const expression = member.name.expression; + if (isPropertyNameLiteral(expression) && !isIdentifier(expression)) { + propertyName = { computed: true, name: factory2.createStringLiteralFromNode(expression) }; + } else { + enterName(); + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + propertyName = { computed: true, name: referencedName }; + exitName(); + } + } + const context2 = { + kind, + name: propertyName, + static: isStatic(member), + private: isPrivateIdentifier(member.name), + access: { + // 15.7.3 CreateDecoratorAccessObject (kind, name) + // 2. If _kind_ is ~field~, ~method~, ~accessor~, or ~getter~, then ... + get: isPropertyDeclaration(member) || isGetAccessorDeclaration(member) || isMethodDeclaration(member), + // 3. If _kind_ is ~field~, ~accessor~, or ~setter~, then ... + set: isPropertyDeclaration(member) || isSetAccessorDeclaration(member) + } + }; + const extraInitializers = isStatic(member) ? (_f = classInfo2.staticExtraInitializersName) != null ? _f : classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */) : (_g = classInfo2.instanceExtraInitializersName) != null ? _g : classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */); + if (isMethodOrAccessor(member)) { + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) { + descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier)); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor != null ? descriptor : factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), extraInitializers); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } else if (isPropertyDeclaration(member)) { + initializersName = (_h = memberInfo.memberInitializersName) != null ? _h : memberInfo.memberInitializersName = createHelperVariable(member, "initializers"); + if (isStatic(member)) { + thisArg = classInfo2.classThis; + } + let descriptor; + if (isPrivateIdentifierClassElementDeclaration(member) && hasAccessorModifier(member) && createDescriptor) { + descriptor = createDescriptor( + member, + /*modifiers*/ + void 0 + ); + memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor"); + descriptor = factory2.createAssignment(descriptorName, descriptor); + } + const esDecorateExpression = emitHelpers().createESDecorateHelper( + isAutoAccessorPropertyDeclaration(member) ? factory2.createThis() : factory2.createNull(), + descriptor != null ? descriptor : factory2.createNull(), + memberDecoratorsName, + context2, + initializersName, + extraInitializers + ); + const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression); + setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member)); + statements.push(esDecorateStatement); + } + } + if (name === void 0) { + enterName(); + if (useNamedEvaluation) { + ({ referencedName, name } = visitReferencedPropertyName(member.name)); + } else { + name = visitPropertyName(member.name); + } + exitName(); + } + if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) { + setEmitFlags(name, 1024 /* NoLeadingComments */); + } + return { modifiers, referencedName, name, initializersName, descriptorName, thisArg }; + } + function visitMethodDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createMethodDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createMethodDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateMethodDeclaration( + node, + modifiers, + node.asteriskToken, + name, + /*questionToken*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitGetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createGetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createGetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateGetAccessorDeclaration( + node, + modifiers, + name, + parameters, + /*type*/ + void 0, + body + ), node); + } + } + function visitSetAccessorDeclaration(node) { + enterClassElement(node); + const { modifiers, name, descriptorName } = partialTransformClassElement( + node, + /*useNamedEvaluation*/ + false, + classInfo, + createSetAccessorDescriptorObject + ); + if (descriptorName) { + exitClassElement(); + return finishClassElement(createSetAccessorDescriptorForwarder(modifiers, name, descriptorName), node); + } else { + const parameters = visitNodes2(node.parameters, visitor, isParameter); + const body = visitNode(node.body, visitor, isBlock); + exitClassElement(); + return finishClassElement(factory2.updateSetAccessorDeclaration(node, modifiers, name, parameters, body), node); + } + } + function visitClassStaticBlockDeclaration(node) { + enterClassElement(node); + if (classInfo) + classInfo.hasStaticInitializers = true; + const result = visitEachChild(node, visitor, context); + exitClassElement(); + return result; + } + function visitPropertyDeclaration(node) { + enterClassElement(node); + Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented."); + const useNamedEvaluation = isNamedEvaluation(node, isAnonymousClassNeedingAssignedName); + const { modifiers, name, referencedName, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, useNamedEvaluation, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0); + startLexicalEnvironment(); + let initializer = referencedName ? visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression) : visitNode(node.initializer, visitor, isExpression); + if (initializersName) { + initializer = emitHelpers().createRunInitializersHelper( + thisArg != null ? thisArg : factory2.createThis(), + initializersName, + initializer != null ? initializer : factory2.createVoidZero() + ); + } + if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) { + classInfo.hasInjectedInstanceInitializers = true; + initializer != null ? initializer : initializer = factory2.createVoidZero(); + initializer = factory2.createParenthesizedExpression(factory2.createComma( + emitHelpers().createRunInitializersHelper( + factory2.createThis(), + classInfo.instanceExtraInitializersName + ), + initializer + )); + } + if (isStatic(node) && classInfo && initializer) { + classInfo.hasStaticInitializers = true; + } + const declarations = endLexicalEnvironment(); + if (some(declarations)) { + initializer = factory2.createImmediatelyInvokedArrowFunction([ + ...declarations, + factory2.createReturnStatement(initializer) + ]); + } + exitClassElement(); + if (hasAccessorModifier(node) && descriptorName) { + const commentRange = getCommentRange(node); + const sourceMapRange = getSourceMapRange(node); + const name2 = node.name; + let getterName = name2; + let setterName = name2; + if (isComputedPropertyName(name2) && !isSimpleInlineableExpression(name2.expression)) { + const cacheAssignment = findComputedPropertyNameCacheAssignment(name2); + if (cacheAssignment) { + getterName = factory2.updateComputedPropertyName(name2, visitNode(name2.expression, visitor, isExpression)); + setterName = factory2.updateComputedPropertyName(name2, cacheAssignment.left); + } else { + const temp = factory2.createTempVariable(hoistVariableDeclaration); + setSourceMapRange(temp, name2.expression); + const expression = visitNode(name2.expression, visitor, isExpression); + const assignment = factory2.createAssignment(temp, expression); + setSourceMapRange(assignment, name2.expression); + getterName = factory2.updateComputedPropertyName(name2, assignment); + setterName = factory2.updateComputedPropertyName(name2, temp); + } + } + const modifiersWithoutAccessor = visitNodes2(modifiers, (node2) => node2.kind !== 127 /* AccessorKeyword */ ? node2 : void 0, isModifier); + const backingField = createAccessorPropertyBackingField(factory2, node, modifiersWithoutAccessor, initializer); + setOriginalNode(backingField, node); + setEmitFlags(backingField, 3072 /* NoComments */); + setSourceMapRange(backingField, sourceMapRange); + setSourceMapRange(backingField.name, node.name); + const getter = createGetAccessorDescriptorForwarder(modifiersWithoutAccessor, getterName, descriptorName); + setOriginalNode(getter, node); + setCommentRange(getter, commentRange); + setSourceMapRange(getter, sourceMapRange); + const setter = createSetAccessorDescriptorForwarder(modifiersWithoutAccessor, setterName, descriptorName); + setOriginalNode(setter, node); + setEmitFlags(setter, 3072 /* NoComments */); + setSourceMapRange(setter, sourceMapRange); + return [backingField, getter, setter]; + } + return finishClassElement(factory2.updatePropertyDeclaration( + node, + modifiers, + name, + /*questionOrExclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ), node); + } + function visitThisExpression(node) { + return classThis != null ? classThis : node; + } + function visitCallExpression(node) { + if (isSuperProperty(node.expression) && classThis) { + const expression = visitNode(node.expression, visitor, isExpression); + const argumentsList = visitNodes2(node.arguments, visitor, isExpression); + const invocation = factory2.createFunctionCallCall(expression, classThis, argumentsList); + setOriginalNode(invocation, node); + setTextRange(invocation, node); + return invocation; + } + return visitEachChild(node, visitor, context); + } + function visitTaggedTemplateExpression(node) { + if (isSuperProperty(node.tag) && classThis) { + const tag = visitNode(node.tag, visitor, isExpression); + const boundTag = factory2.createFunctionBindCall(tag, classThis, []); + setOriginalNode(boundTag, node); + setTextRange(boundTag, node); + const template = visitNode(node.template, visitor, isTemplateLiteral); + return factory2.updateTaggedTemplateExpression( + node, + boundTag, + /*typeArguments*/ + void 0, + template + ); + } + return visitEachChild(node, visitor, context); + } + function visitPropertyAccessExpression(node) { + if (isSuperProperty(node) && isIdentifier(node.name) && classThis && classSuper) { + const propertyName = factory2.createStringLiteralFromNode(node.name); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitElementAccessExpression(node) { + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = visitNode(node.argumentExpression, visitor, isExpression); + const superProperty = factory2.createReflectGetCall(classSuper, propertyName, classThis); + setOriginalNode(superProperty, node.expression); + setTextRange(superProperty, node.expression); + return superProperty; + } + return visitEachChild(node, visitor, context); + } + function visitParameterDeclaration(node) { + let updated; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + name, + /*questionToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } else { + updated = factory2.updateParameterDeclaration( + node, + /*modifiers*/ + void 0, + node.dotDotDotToken, + visitNode(node.name, visitor, isBindingName), + /*questionToken*/ + void 0, + /*type*/ + void 0, + visitNode(node.initializer, visitor, isExpression) + ); + } + if (updated !== node) { + setCommentRange(updated, node); + setTextRange(updated, moveRangePastModifiers(node)); + setSourceMapRange(updated, moveRangePastModifiers(node)); + setEmitFlags(updated.name, 64 /* NoTrailingSourceMap */); + } + return updated; + } + function isAnonymousClassNeedingAssignedName(node) { + return isClassExpression(node) && !node.name && isDecoratedClassLike(node); + } + function visitForStatement(node) { + return factory2.updateForStatement( + node, + visitNode(node.initializer, discardedValueVisitor, isForInitializer), + visitNode(node.condition, visitor, isExpression), + visitNode(node.incrementor, discardedValueVisitor, isExpression), + visitIterationBody(node.statement, visitor, context) + ); + } + function visitExpressionStatement(node) { + return visitEachChild(node, discardedValueVisitor, context); + } + function visitBinaryExpression(node, discarded) { + if (isDestructuringAssignment(node)) { + const left = visitAssignmentPattern(node.left); + const right = visitNode(node.right, visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isAssignmentExpression(node)) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + const left = visitNode(node.left, visitor, isExpression); + const right = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + if (isSuperProperty(node.left) && classThis && classSuper) { + let setterName = isElementAccessExpression(node.left) ? visitNode(node.left.argumentExpression, visitor, isExpression) : isIdentifier(node.left.name) ? factory2.createStringLiteralFromNode(node.left.name) : void 0; + if (setterName) { + let expression = visitNode(node.right, visitor, isExpression); + if (isCompoundAssignment(node.operatorToken.kind)) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + const superPropertyGet = factory2.createReflectGetCall( + classSuper, + getterName, + classThis + ); + setOriginalNode(superPropertyGet, node.left); + setTextRange(superPropertyGet, node.left); + expression = factory2.createBinaryExpression( + superPropertyGet, + getNonAssignmentOperatorForCompoundAssignment(node.operatorToken.kind), + expression + ); + setTextRange(expression, node); + } + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + if (temp) { + expression = factory2.createAssignment(temp, expression); + setTextRange(temp, node); + } + expression = factory2.createReflectSetCall( + classSuper, + setterName, + expression, + classThis + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + if (node.operatorToken.kind === 27 /* CommaToken */) { + const left = visitNode(node.left, discardedValueVisitor, isExpression); + const right = visitNode(node.right, discarded ? discardedValueVisitor : visitor, isExpression); + return factory2.updateBinaryExpression(node, left, node.operatorToken, right); + } + return visitEachChild(node, visitor, context); + } + function visitPreOrPostfixUnaryExpression(node, discarded) { + if (node.operator === 45 /* PlusPlusToken */ || node.operator === 46 /* MinusMinusToken */) { + const operand = skipParentheses(node.operand); + if (isSuperProperty(operand) && classThis && classSuper) { + let setterName = isElementAccessExpression(operand) ? visitNode(operand.argumentExpression, visitor, isExpression) : isIdentifier(operand.name) ? factory2.createStringLiteralFromNode(operand.name) : void 0; + if (setterName) { + let getterName = setterName; + if (!isSimpleInlineableExpression(setterName)) { + getterName = factory2.createTempVariable(hoistVariableDeclaration); + setterName = factory2.createAssignment(getterName, setterName); + } + let expression = factory2.createReflectGetCall(classSuper, getterName, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + const temp = discarded ? void 0 : factory2.createTempVariable(hoistVariableDeclaration); + expression = expandPreOrPostfixIncrementOrDecrementExpression(factory2, node, expression, hoistVariableDeclaration, temp); + expression = factory2.createReflectSetCall(classSuper, setterName, expression, classThis); + setOriginalNode(expression, node); + setTextRange(expression, node); + if (temp) { + expression = factory2.createComma(expression, temp); + setTextRange(expression, node); + } + return expression; + } + } + } + return visitEachChild(node, visitor, context); + } + function visitCommaListExpression(node, discarded) { + const elements = discarded ? visitCommaListElements(node.elements, discardedValueVisitor) : visitCommaListElements(node.elements, visitor, discardedValueVisitor); + return factory2.updateCommaListExpression(node, elements); + } + function visitReferencedPropertyName(node) { + if (isPropertyNameLiteral(node) || isPrivateIdentifier(node)) { + const referencedName2 = factory2.createStringLiteralFromNode(node); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + if (isPropertyNameLiteral(node.expression) && !isIdentifier(node.expression)) { + const referencedName2 = factory2.createStringLiteralFromNode(node.expression); + const name2 = visitNode(node, visitor, isPropertyName); + return { referencedName: referencedName2, name: name2 }; + } + const referencedName = factory2.getGeneratedNameForNode(node); + hoistVariableDeclaration(referencedName); + const key = emitHelpers().createPropKeyHelper(visitNode(node.expression, visitor, isExpression)); + const assignment = factory2.createAssignment(referencedName, key); + const name = factory2.updateComputedPropertyName(node, injectPendingExpressions(assignment)); + return { referencedName, name }; + } + function visitPropertyName(node) { + if (isComputedPropertyName(node)) { + return visitComputedPropertyName(node); + } + return visitNode(node, visitor, isPropertyName); + } + function visitComputedPropertyName(node) { + let expression = visitNode(node.expression, visitor, isExpression); + if (!isSimpleInlineableExpression(expression)) { + expression = injectPendingExpressions(expression); + } + return factory2.updateComputedPropertyName(node, expression); + } + function visitPropertyAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const { referencedName, name } = visitReferencedPropertyName(node.name); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updatePropertyAssignment(node, name, initializer); + } + return visitEachChild(node, visitor, context); + } + function visitVariableDeclaration(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateVariableDeclaration( + node, + name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitBindingElement(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.initializer); + const propertyName = visitNode(node.propertyName, visitor, isPropertyName); + const name = visitNode(node.name, visitor, isBindingName); + const initializer = visitNode(node.initializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateBindingElement( + node, + /*dotDotDotToken*/ + void 0, + propertyName, + name, + initializer + ); + } + return visitEachChild(node, visitor, context); + } + function visitDestructuringAssignmentTarget(node) { + if (isObjectLiteralExpression(node) || isArrayLiteralExpression(node)) { + return visitAssignmentPattern(node); + } + if (isSuperProperty(node) && classThis && classSuper) { + const propertyName = isElementAccessExpression(node) ? visitNode(node.argumentExpression, visitor, isExpression) : isIdentifier(node.name) ? factory2.createStringLiteralFromNode(node.name) : void 0; + if (propertyName) { + const paramName = factory2.createTempVariable( + /*recordTempVariable*/ + void 0 + ); + const expression = factory2.createAssignmentTargetWrapper( + paramName, + factory2.createReflectSetCall( + classSuper, + propertyName, + paramName, + classThis + ) + ); + setOriginalNode(expression, node); + setTextRange(expression, node); + return expression; + } + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentElement(node) { + if (isAssignmentExpression( + node, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentTarget = visitDestructuringAssignmentTarget(node.left); + let initializer; + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.left, node.right); + initializer = visitNode(node.right, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + } else { + initializer = visitNode(node.right, visitor, isExpression); + } + return factory2.updateBinaryExpression(node, assignmentTarget, node.operatorToken, initializer); + } else { + return visitDestructuringAssignmentTarget(node); + } + } + function visitAssignmentRestElement(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadElement(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitArrayAssignmentElement(node) { + Debug.assertNode(node, isArrayBindingOrAssignmentElement); + if (isSpreadElement(node)) + return visitAssignmentRestElement(node); + if (!isOmittedExpression(node)) + return visitAssignmentElement(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentProperty(node) { + const name = visitNode(node.name, visitor, isPropertyName); + if (isAssignmentExpression( + node.initializer, + /*excludeCompoundAssignment*/ + true + )) { + const assignmentElement = visitAssignmentElement(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + if (isLeftHandSideExpression(node.initializer)) { + const assignmentElement = visitDestructuringAssignmentTarget(node.initializer); + return factory2.updatePropertyAssignment(node, name, assignmentElement); + } + return visitEachChild(node, visitor, context); + } + function visitShorthandAssignmentProperty(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const assignedName = getAssignedNameOfIdentifier(node.name, node.objectAssignmentInitializer); + const name = visitNode(node.name, visitor, isIdentifier); + const objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, (node2) => namedEvaluationVisitor(node2, assignedName), isExpression); + return factory2.updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer); + } + return visitEachChild(node, visitor, context); + } + function visitAssignmentRestProperty(node) { + if (isLeftHandSideExpression(node.expression)) { + const expression = visitDestructuringAssignmentTarget(node.expression); + return factory2.updateSpreadAssignment(node, expression); + } + return visitEachChild(node, visitor, context); + } + function visitObjectAssignmentElement(node) { + Debug.assertNode(node, isObjectBindingOrAssignmentElement); + if (isSpreadAssignment(node)) + return visitAssignmentRestProperty(node); + if (isShorthandPropertyAssignment(node)) + return visitShorthandAssignmentProperty(node); + if (isPropertyAssignment(node)) + return visitAssignmentProperty(node); + return visitEachChild(node, visitor, context); + } + function visitAssignmentPattern(node) { + if (isArrayLiteralExpression(node)) { + const elements = visitNodes2(node.elements, visitArrayAssignmentElement, isExpression); + return factory2.updateArrayLiteralExpression(node, elements); + } else { + const properties = visitNodes2(node.properties, visitObjectAssignmentElement, isObjectLiteralElementLike); + return factory2.updateObjectLiteralExpression(node, properties); + } + } + function visitExportAssignment(node) { + if (isNamedEvaluation(node, isAnonymousClassNeedingAssignedName)) { + const referencedName = factory2.createStringLiteral(node.isExportEquals ? "" : "default"); + const modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); + const expression = visitNode(node.expression, (node2) => namedEvaluationVisitor(node2, referencedName), isExpression); + return factory2.updateExportAssignment(node, modifiers, expression); + } + return visitEachChild(node, visitor, context); + } + function visitParenthesizedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updateParenthesizedExpression(node, expression); + } + function visitPartiallyEmittedExpression(node, discarded, referencedName) { + const visitorFunc = discarded ? discardedValueVisitor : referencedName ? (node2) => namedEvaluationVisitor(node2, referencedName) : visitor; + const expression = visitNode(node.expression, visitorFunc, isExpression); + return factory2.updatePartiallyEmittedExpression(node, expression); + } + function injectPendingExpressions(expression) { + if (some(pendingExpressions)) { + if (isParenthesizedExpression(expression)) { + pendingExpressions.push(expression.expression); + expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions)); + } else { + pendingExpressions.push(expression); + expression = factory2.inlineExpressions(pendingExpressions); + } + pendingExpressions = void 0; + } + return expression; + } + function transformAllDecoratorsOfDeclaration(allDecorators) { + if (!allDecorators) { + return void 0; + } + const decoratorExpressions = []; + addRange(decoratorExpressions, map(allDecorators.decorators, transformDecorator)); + return decoratorExpressions; + } + function transformDecorator(decorator) { + const expression = visitNode(decorator.expression, visitor, isExpression); + setEmitFlags(expression, 3072 /* NoComments */); + return expression; + } + function createDescriptorMethod(original, name, modifiers, asteriskToken, kind, parameters, body) { + const func = factory2.createFunctionExpression( + modifiers, + asteriskToken, + /*name*/ + void 0, + /*typeParameters*/ + void 0, + parameters, + /*type*/ + void 0, + body != null ? body : factory2.createBlock([]) + ); + setOriginalNode(func, original); + setSourceMapRange(func, moveRangePastDecorators(original)); + setEmitFlags(func, 3072 /* NoComments */); + const prefix = kind === "get" || kind === "set" ? kind : void 0; + const functionName = factory2.createStringLiteralFromNode( + name, + /*isSingleQuote*/ + void 0 + ); + const namedFunction = emitHelpers().createSetFunctionNameHelper(func, functionName, prefix); + const method = factory2.createPropertyAssignment(factory2.createIdentifier(kind), namedFunction); + setOriginalNode(method, original); + setSourceMapRange(method, moveRangePastDecorators(original)); + setEmitFlags(method, 3072 /* NoComments */); + return method; + } + function createMethodDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + node.asteriskToken, + "value", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createGetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createSetAccessorDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + visitNodes2(node.parameters, visitor, isParameter), + visitNode(node.body, visitor, isBlock) + ) + ]); + } + function createAccessorPropertyDescriptorObject(node, modifiers) { + return factory2.createObjectLiteralExpression([ + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "get", + [], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ) + ) + ]) + ), + createDescriptorMethod( + node, + node.name, + modifiers, + /*asteriskToken*/ + void 0, + "set", + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createExpressionStatement( + factory2.createAssignment( + factory2.createPropertyAccessExpression( + factory2.createThis(), + factory2.getGeneratedPrivateNameForNode(node.name) + ), + factory2.createIdentifier("value") + ) + ) + ]) + ) + ]); + } + function createMethodDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("value") + ) + ) + ]) + ); + } + function createGetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createGetAccessorDeclaration( + modifiers, + name, + [], + /*type*/ + void 0, + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("get") + ), + factory2.createThis(), + [] + ) + ) + ]) + ); + } + function createSetAccessorDescriptorForwarder(modifiers, name, descriptorName) { + modifiers = visitNodes2(modifiers, (node) => isStaticModifier(node) ? node : void 0, isModifier); + return factory2.createSetAccessorDeclaration( + modifiers, + name, + [factory2.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "value" + )], + factory2.createBlock([ + factory2.createReturnStatement( + factory2.createFunctionCallCall( + factory2.createPropertyAccessExpression( + descriptorName, + factory2.createIdentifier("set") + ), + factory2.createThis(), + [factory2.createIdentifier("value")] + ) + ) + ]) + ); + } + function getAssignedNameOfIdentifier(name, initializer) { + const originalClass = getOriginalNode(initializer, isClassLike); + return originalClass && !originalClass.name && hasSyntacticModifier(originalClass, 1024 /* Default */) ? factory2.createStringLiteral("default") : factory2.createStringLiteralFromNode(name); + } + } + var init_esDecorators = __esm({ + "src/compiler/transformers/esDecorators.ts"() { + "use strict"; + init_ts2(); + } + }); + // src/compiler/transformers/es2017.ts function transformES2017(context) { const { @@ -90879,21 +94176,21 @@ ${lanes.join("\n")} node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } function visitForOfStatementInAsyncBody(node) { return factory2.updateForOfStatement( node, - visitNode(node.awaitModifier, visitor, isToken), + visitNode(node.awaitModifier, visitor, isAwaitKeyword), isVariableDeclarationListWithCollidingName(node.initializer) ? visitVariableDeclarationListWithCollidingNames( node.initializer, /*hasReceiver*/ true - ) : visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + ) : Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), visitIterationBody(node.statement, asyncBodyVisitor, context) ); } @@ -90930,7 +94227,7 @@ ${lanes.join("\n")} function visitConstructorDeclaration(node) { return factory2.updateConstructorDeclaration( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), visitParameterList(node.parameters, visitor, context), transformMethodBody(node) ); @@ -90988,7 +94285,7 @@ ${lanes.join("\n")} function visitFunctionExpression(node) { return factory2.updateFunctionExpression( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), node.asteriskToken, node.name, /*typeParameters*/ @@ -91002,7 +94299,7 @@ ${lanes.join("\n")} function visitArrowFunction(node) { return factory2.updateArrowFunction( node, - visitNodes2(node.modifiers, visitor, isModifierLike), + visitNodes2(node.modifiers, visitor, isModifier), /*typeParameters*/ void 0, visitParameterList(node.parameters, visitor, context), @@ -91059,7 +94356,7 @@ ${lanes.join("\n")} ), node ); - return visitNode(converted, visitor, isExpression); + return Debug.checkDefined(visitNode(converted, visitor, isExpression)); } function collidesWithParameterName({ name }) { if (isIdentifier(name)) { @@ -91191,7 +94488,7 @@ ${lanes.join("\n")} if (isBlock(body)) { return factory2.updateBlock(body, visitNodes2(body.statements, asyncBodyVisitor, isStatement, start)); } else { - return factory2.converters.convertToFunctionBlock(visitNode(body, asyncBodyVisitor, isConciseBody)); + return factory2.converters.convertToFunctionBlock(Debug.checkDefined(visitNode(body, asyncBodyVisitor, isConciseBody))); } } function getPromiseConstructor(type) { @@ -91552,7 +94849,7 @@ ${lanes.join("\n")} return visitObjectLiteralExpression(node); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 295 /* CatchClause */: return visitCatchClause(node); @@ -92310,7 +95607,7 @@ ${lanes.join("\n")} /*questionToken*/ void 0, visitor, - isToken + isQuestionToken ), /*typeParameters*/ void 0, @@ -93002,15 +96299,10 @@ ${lanes.join("\n")} if ((node.transformFlags & 16 /* ContainsES2021 */) === 0) { return node; } - switch (node.kind) { - case 223 /* BinaryExpression */: - const binaryExpression = node; - if (isLogicalOrCoalescingAssignmentExpression(binaryExpression)) { - return transformLogicalAssignment(binaryExpression); - } - default: - return visitEachChild(node, visitor, context); + if (isLogicalOrCoalescingAssignmentExpression(node)) { + return transformLogicalAssignment(node); } + return visitEachChild(node, visitor, context); } function transformLogicalAssignment(binaryExpression) { const operator = binaryExpression.operatorToken; @@ -93152,7 +96444,7 @@ ${lanes.join("\n")} factory2.createIdentifier(name), generatedName ); - generatedName.generatedImportReference = specifier; + setIdentifierGeneratedImportReference(generatedName, specifier); specifierSourceImports.set(name, specifier); return generatedName; } @@ -93468,7 +96760,7 @@ ${lanes.join("\n")} return element; } function transformJsxSpreadAttributeToSpreadAssignment(node) { - return factory2.createSpreadAssignment(visitNode(node.expression, visitor, isExpression)); + return factory2.createSpreadAssignment(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); } function transformJsxAttributesToObjectProps(attrs, children) { const target = getEmitScriptTarget(compilerOptions); @@ -93498,7 +96790,7 @@ ${lanes.join("\n")} return singleOrUndefined(expressions) || emitHelpers().createAssignHelper(expressions); } function transformJsxSpreadAttributeToExpression(node) { - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } function transformJsxAttributeToObjectLiteralElement(node) { const name = getAttributeName(node); @@ -93518,7 +96810,7 @@ ${lanes.join("\n")} if (node.expression === void 0) { return factory2.createTrue(); } - return visitNode(node.expression, visitor, isExpression); + return Debug.checkDefined(visitNode(node.expression, visitor, isExpression)); } if (isJsxElement(node)) { return visitJsxElement( @@ -94042,7 +97334,7 @@ ${lanes.join("\n")} node, /*lookInLabeledStatements*/ false - ) && shouldConvertIterationStatement(node) || (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) !== 0; + ) && shouldConvertIterationStatement(node) || (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) !== 0; } function visitor(node) { return shouldVisitNode(node) ? visitorWorker( @@ -94173,7 +97465,7 @@ ${lanes.join("\n")} return visitParenthesizedExpression(node, expressionResultIsUnused2); case 223 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 14 /* NoSubstitutionTemplateLiteral */: case 15 /* TemplateHead */: @@ -94276,7 +97568,7 @@ ${lanes.join("\n")} [ factory2.createPropertyAssignment( factory2.createIdentifier("value"), - node.expression ? visitNode(node.expression, visitor, isExpression) : factory2.createVoidZero() + node.expression ? Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) : factory2.createVoidZero() ) ] ) @@ -94308,7 +97600,7 @@ ${lanes.join("\n")} return convertedLoopState.argumentsName || (convertedLoopState.argumentsName = factory2.createUniqueName("arguments")); } } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { return setOriginalNode(setTextRange( factory2.createIdentifier(unescapeLeadingUnderscores(node.escapedText)), node @@ -94447,7 +97739,7 @@ ${lanes.join("\n")} outer, /*typeArguments*/ void 0, - extendsClauseElement ? [visitNode(extendsClauseElement.expression, visitor, isExpression)] : [] + extendsClauseElement ? [Debug.checkDefined(visitNode(extendsClauseElement.expression, visitor, isExpression))] : [] ) ); addSyntheticLeadingComment(result, 3 /* MultiLineCommentTrivia */, "* @class "); @@ -94789,7 +98081,7 @@ ${lanes.join("\n")} factory2.createExpressionStatement( factory2.createAssignment( factory2.getGeneratedNameForNode(parameter), - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ) ), 2097152 /* CustomPrologue */ @@ -94800,7 +98092,7 @@ ${lanes.join("\n")} return false; } function insertDefaultValueAssignmentForInitializer(statements, parameter, name, initializer) { - initializer = visitNode(initializer, visitor, isExpression); + initializer = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); const statement = factory2.createIfStatement( factory2.createTypeCheck(factory2.cloneNode(name), "undefined"), setEmitFlags( @@ -95076,6 +98368,7 @@ ${lanes.join("\n")} container ); const propertyName = visitNode(member.name, visitor, isPropertyName); + Debug.assert(propertyName); let e; if (!isPrivateIdentifier(propertyName) && getUseDefineForClassFields(context.getCompilerOptions())) { const name = isComputedPropertyName(propertyName) ? propertyName.expression : isIdentifier(propertyName) ? factory2.createStringLiteral(unescapeLeadingUnderscores(propertyName.escapedText)) : propertyName; @@ -95119,6 +98412,7 @@ ${lanes.join("\n")} setEmitFlags(target, 3072 /* NoComments */ | 64 /* NoTrailingSourceMap */); setSourceMapRange(target, firstAccessor.name); const visitedAccessorName = visitNode(firstAccessor.name, visitor, isPropertyName); + Debug.assert(visitedAccessorName); if (isPrivateIdentifier(visitedAccessorName)) { return Debug.failBadSyntaxKind(visitedAccessorName, "Encountered unhandled private identifier while transforming ES2015."); } @@ -95391,9 +98685,9 @@ ${lanes.join("\n")} if (node.operatorToken.kind === 27 /* CommaToken */) { return factory2.updateBinaryExpression( node, - visitNode(node.left, visitorWithUnusedExpressionResult, isExpression), + Debug.checkDefined(visitNode(node.left, visitorWithUnusedExpressionResult, isExpression)), node.operatorToken, - visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression) + Debug.checkDefined(visitNode(node.right, expressionResultIsUnused2 ? visitorWithUnusedExpressionResult : visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -95408,6 +98702,7 @@ ${lanes.join("\n")} const visited = visitNode(element, i < node.elements.length - 1 ? visitorWithUnusedExpressionResult : visitor, isExpression); if (result || visited !== element) { result || (result = node.elements.slice(0, i)); + Debug.assert(visited); result.push(visited); } } @@ -95415,7 +98710,7 @@ ${lanes.join("\n")} return factory2.updateCommaListExpression(node, elements); } function isVariableStatementOfTypeScriptClassWrapper(node) { - return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getEmitFlags(node.declarationList.declarations[0].initializer) & 67108864 /* TypeScriptClassWrapper */); + return node.declarationList.declarations.length === 1 && !!node.declarationList.declarations[0].initializer && !!(getInternalEmitFlags(node.declarationList.declarations[0].initializer) & 1 /* TypeScriptClassWrapper */); } function visitVariableStatement(node) { const ancestorFacts = enterSubtree(0 /* None */, hasSyntacticModifier(node, 1 /* Export */) ? 32 /* ExportedVariableStatement */ : 0 /* None */); @@ -95434,7 +98729,7 @@ ${lanes.join("\n")} 0 /* All */ ); } else { - assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, visitNode(decl.initializer, visitor, isExpression)); + assignment = factory2.createBinaryExpression(decl.name, 63 /* EqualsToken */, Debug.checkDefined(visitNode(decl.initializer, visitor, isExpression))); setTextRange(assignment, decl); } assignments = append(assignments, assignment); @@ -95456,7 +98751,7 @@ ${lanes.join("\n")} if (node.flags & 3 /* BlockScoped */) { enableSubstitutionsForBlockScopedBindings(); } - const declarations = flatMap(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration); + const declarations = visitNodes2(node.declarations, node.flags & 1 /* Let */ ? visitVariableDeclarationInLetDeclarationList : visitVariableDeclaration, isVariableDeclaration); const declarationList = factory2.createVariableDeclarationList(declarations); setOriginalNode(declarationList, node); setTextRange(declarationList, node); @@ -95540,7 +98835,7 @@ ${lanes.join("\n")} statement, /*outermostLabeledStatement*/ node - ) : factory2.restoreEnclosingLabel(visitNode(statement, visitor, isStatement, factory2.liftToBlock), node, convertedLoopState && resetLabel); + ) : factory2.restoreEnclosingLabel(Debug.checkDefined(visitNode(statement, visitor, isStatement, factory2.liftToBlock)), node, convertedLoopState && resetLabel); } function visitIterationStatement(node, outermostLabeledStatement) { switch (node.kind) { @@ -95583,7 +98878,7 @@ ${lanes.join("\n")} visitNode(node.initializer, visitorWithUnusedExpressionResult, isForInitializer), visitNode(node.condition, visitor, isExpression), visitNode(node.incrementor, visitorWithUnusedExpressionResult, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } function visitForInStatement(node, outermostLabeledStatement) { @@ -95669,13 +98964,14 @@ ${lanes.join("\n")} ))); } else { setTextRangeEnd(assignment, initializer.end); - statements.push(setTextRange(factory2.createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1))); + statements.push(setTextRange(factory2.createExpressionStatement(Debug.checkDefined(visitNode(assignment, visitor, isExpression))), moveRangeEnd(initializer, -1))); } } if (convertedLoopBodyStatements) { return createSyntheticBlockForConvertedStatements(addRange(statements, convertedLoopBodyStatements)); } else { const statement = visitNode(node.statement, visitor, isStatement, factory2.liftToBlock); + Debug.assert(statement); if (isBlock(statement)) { return factory2.updateBlock(statement, setTextRange(factory2.createNodeArray(concatenate(statements, statement.statements)), statement.statements)); } else { @@ -95696,6 +98992,7 @@ ${lanes.join("\n")} } function convertForOfStatementForArray(node, outermostLabeledStatement, convertedLoopBodyStatements) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const counter = factory2.createLoopVariable(); const rhsReference = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ @@ -95755,6 +99052,7 @@ ${lanes.join("\n")} } function convertForOfStatementForIterable(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts) { const expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const iterator = isIdentifier(expression) ? factory2.getGeneratedNameForNode(expression) : factory2.createTempVariable( /*recordTempVariable*/ void 0 @@ -96012,7 +99310,7 @@ ${lanes.join("\n")} loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } } else { - const clone2 = convertIterationStatementCore(node, initializerFunction, visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)); + const clone2 = convertIterationStatementCore(node, initializerFunction, Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock))); loop = factory2.restoreEnclosingLabel(clone2, outermostLabeledStatement, convertedLoopState && resetLabel); } statements.push(loop); @@ -96050,16 +99348,16 @@ ${lanes.join("\n")} node, /*awaitModifier*/ void 0, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } function convertForInStatement(node, convertedLoopBody) { return factory2.updateForInStatement( node, - visitNode(node.initializer, visitor, isForInitializer), - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -96067,13 +99365,13 @@ ${lanes.join("\n")} return factory2.updateDoStatement( node, convertedLoopBody, - visitNode(node.expression, visitor, isExpression) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)) ); } function convertWhileStatement(node, convertedLoopBody) { return factory2.updateWhileStatement( node, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), convertedLoopBody ); } @@ -96235,7 +99533,7 @@ ${lanes.join("\n")} void 0, /*type*/ void 0, - visitNode( + Debug.checkDefined(visitNode( factory2.createBlock( statements, /*multiLine*/ @@ -96243,7 +99541,7 @@ ${lanes.join("\n")} ), visitor, isBlock - ) + )) ), emitFlags ) @@ -96266,7 +99564,7 @@ ${lanes.join("\n")} if (node.incrementor) { statements.push(factory2.createIfStatement( currentState.conditionVariable, - factory2.createExpressionStatement(visitNode(node.incrementor, visitor, isExpression)), + factory2.createExpressionStatement(Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression))), factory2.createExpressionStatement(factory2.createAssignment(currentState.conditionVariable, factory2.createTrue())) )); } else { @@ -96277,11 +99575,12 @@ ${lanes.join("\n")} } if (shouldConvertConditionOfForStatement(node)) { statements.push(factory2.createIfStatement( - factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, visitNode(node.condition, visitor, isExpression)), - visitNode(factory2.createBreakStatement(), visitor, isStatement) + factory2.createPrefixUnaryExpression(53 /* ExclamationToken */, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))), + Debug.checkDefined(visitNode(factory2.createBreakStatement(), visitor, isStatement)) )); } } + Debug.assert(statement); if (isBlock(statement)) { addRange(statements, statement.statements); } else { @@ -96549,9 +99848,9 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), - visitNode(property.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(property.initializer, visitor, isExpression)) ); setTextRange(expression, property); if (startsOnNewLine) { @@ -96564,7 +99863,7 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(property.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(property.name, visitor, isPropertyName)) ), factory2.cloneNode(property.name) ); @@ -96579,7 +99878,7 @@ ${lanes.join("\n")} createMemberAccessForPropertyName( factory2, receiver, - visitNode(method.name, visitor, isPropertyName) + Debug.checkDefined(visitNode(method.name, visitor, isPropertyName)) ), transformFunctionLikeToExpression( method, @@ -96700,7 +99999,7 @@ ${lanes.join("\n")} return visitEachChild(node, visitor, context); } function visitCallExpression(node) { - if (getEmitFlags(node) & 67108864 /* TypeScriptClassWrapper */) { + if (getInternalEmitFlags(node) & 1 /* TypeScriptClassWrapper */) { return visitTypeScriptClassWrapper(node); } const expression = skipOuterExpressions(node.expression); @@ -96713,7 +100012,7 @@ ${lanes.join("\n")} } return factory2.updateCallExpression( node, - visitNode(node.expression, callExpressionVisitor, isExpression), + Debug.checkDefined(visitNode(node.expression, callExpressionVisitor, isExpression)), /*typeArguments*/ void 0, visitNodes2(node.arguments, visitor, isExpression) @@ -96765,7 +100064,14 @@ ${lanes.join("\n")} if (classBodyEnd < -1) { addRange(statements, funcStatements, classBodyEnd + 1); } - addRange(statements, remainingStatements); + const returnStatement = tryCast(elementAt(funcStatements, classBodyEnd), isReturnStatement); + for (const statement of remainingStatements) { + if (isReturnStatement(statement) && (returnStatement == null ? void 0 : returnStatement.expression) && !isIdentifier(returnStatement.expression)) { + statements.push(returnStatement); + } else { + statements.push(statement); + } + } addRange( statements, classStatements, @@ -96825,8 +100131,8 @@ ${lanes.join("\n")} let resultingCall; if (node.transformFlags & 32768 /* ContainsRestOrSpread */) { resultingCall = factory2.createFunctionApplyCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), transformAndSpreadElements( node.arguments, /*isArgumentList*/ @@ -96840,8 +100146,8 @@ ${lanes.join("\n")} } else { resultingCall = setTextRange( factory2.createFunctionCallCall( - visitNode(target, callExpressionVisitor, isExpression), - node.expression.kind === 106 /* SuperKeyword */ ? thisArg : visitNode(thisArg, visitor, isExpression), + Debug.checkDefined(visitNode(target, callExpressionVisitor, isExpression)), + node.expression.kind === 106 /* SuperKeyword */ ? thisArg : Debug.checkDefined(visitNode(thisArg, visitor, isExpression)), visitNodes2(node.arguments, visitor, isExpression) ), node @@ -96863,7 +100169,7 @@ ${lanes.join("\n")} const { target, thisArg } = factory2.createCallBinding(factory2.createPropertyAccessExpression(node.expression, "bind"), hoistVariableDeclaration); return factory2.createNewExpression( factory2.createFunctionApplyCall( - visitNode(target, visitor, isExpression), + Debug.checkDefined(visitNode(target, visitor, isExpression)), thisArg, transformAndSpreadElements( factory2.createNodeArray([factory2.createVoidZero(), ...node.arguments]), @@ -96920,7 +100226,9 @@ ${lanes.join("\n")} return map(chunk, visitExpressionOfSpread); } function visitExpressionOfSpread(node) { + Debug.assertNode(node, isSpreadElement); let expression = visitNode(node.expression, visitor, isExpression); + Debug.assert(expression); const isCallToReadHelper = isCallToHelper(expression, "___read"); let kind = isCallToReadHelper || isPackedArrayLiteral(expression) ? 2 /* PackedSpread */ : 1 /* UnpackedSpread */; if (compilerOptions.downlevelIteration && kind === 1 /* UnpackedSpread */ && !isArrayLiteralExpression(expression) && !isCallToReadHelper) { @@ -96971,7 +100279,7 @@ ${lanes.join("\n")} function visitTemplateExpression(node) { let expression = factory2.createStringLiteral(node.head.text); for (const span of node.templateSpans) { - const args = [visitNode(span.expression, visitor, isExpression)]; + const args = [Debug.checkDefined(visitNode(span.expression, visitor, isExpression))]; if (span.literal.text.length > 0) { args.push(factory2.createStringLiteral(span.literal.text)); } @@ -97195,7 +100503,7 @@ ${lanes.join("\n")} return node; } function trySubstituteReservedName(name) { - const token = name.originalKeywordKind || (nodeIsSynthesized(name) ? stringToToken(idText(name)) : void 0); + const token = identifierToKeywordKind(name); if (token !== void 0 && token >= 81 /* FirstReservedWord */ && token <= 116 /* LastReservedWord */) { return setTextRange(factory2.createStringLiteralFromNode(name), name); } @@ -97337,7 +100645,7 @@ ${lanes.join("\n")} switch (node.kind) { case 223 /* BinaryExpression */: return visitBinaryExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return visitCommaListExpression(node); case 224 /* ConditionalExpression */: return visitConditionalExpression(node); @@ -97549,19 +100857,19 @@ ${lanes.join("\n")} case 208 /* PropertyAccessExpression */: target = factory2.updatePropertyAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), left.name ); break; case 209 /* ElementAccessExpression */: target = factory2.updateElementAccessExpression( left, - cacheExpression(visitNode(left.expression, visitor, isLeftHandSideExpression)), - cacheExpression(visitNode(left.argumentExpression, visitor, isExpression)) + cacheExpression(Debug.checkDefined(visitNode(left.expression, visitor, isLeftHandSideExpression))), + cacheExpression(Debug.checkDefined(visitNode(left.argumentExpression, visitor, isExpression))) ); break; default: - target = visitNode(left, visitor, isExpression); + target = Debug.checkDefined(visitNode(left, visitor, isExpression)); break; } const operator = node.operatorToken.kind; @@ -97573,7 +100881,7 @@ ${lanes.join("\n")} factory2.createBinaryExpression( cacheExpression(target), getNonAssignmentOperatorForCompoundAssignment(operator), - visitNode(right, visitor, isExpression) + Debug.checkDefined(visitNode(right, visitor, isExpression)) ), node ) @@ -97581,7 +100889,7 @@ ${lanes.join("\n")} node ); } else { - return factory2.updateBinaryExpression(node, target, node.operatorToken, visitNode(right, visitor, isExpression)); + return factory2.updateBinaryExpression(node, target, node.operatorToken, Debug.checkDefined(visitNode(right, visitor, isExpression))); } } return visitEachChild(node, visitor, context); @@ -97595,9 +100903,9 @@ ${lanes.join("\n")} } return factory2.updateBinaryExpression( node, - cacheExpression(visitNode(node.left, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(node.left, visitor, isExpression))), node.operatorToken, - visitNode(node.right, visitor, isExpression) + Debug.checkDefined(visitNode(node.right, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -97616,7 +100924,7 @@ ${lanes.join("\n")} emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(node2, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(node2, visitor, isExpression))); } } } @@ -97630,7 +100938,7 @@ ${lanes.join("\n")} emitWorker(1 /* Statement */, [factory2.createExpressionStatement(factory2.inlineExpressions(pendingExpressions))]); pendingExpressions = []; } - pendingExpressions.push(visitNode(elem, visitor, isExpression)); + pendingExpressions.push(Debug.checkDefined(visitNode(elem, visitor, isExpression))); } } return factory2.inlineExpressions(pendingExpressions); @@ -97640,7 +100948,7 @@ ${lanes.join("\n")} const resultLocal = declareLocal(); emitAssignment( resultLocal, - visitNode(node.left, visitor, isExpression), + Debug.checkDefined(visitNode(node.left, visitor, isExpression)), /*location*/ node.left ); @@ -97661,7 +100969,7 @@ ${lanes.join("\n")} } emitAssignment( resultLocal, - visitNode(node.right, visitor, isExpression), + Debug.checkDefined(visitNode(node.right, visitor, isExpression)), /*location*/ node.right ); @@ -97675,13 +100983,13 @@ ${lanes.join("\n")} const resultLocal = declareLocal(); emitBreakWhenFalse( whenFalseLabel, - visitNode(node.condition, visitor, isExpression), + Debug.checkDefined(visitNode(node.condition, visitor, isExpression)), /*location*/ node.condition ); emitAssignment( resultLocal, - visitNode(node.whenTrue, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenTrue, visitor, isExpression)), /*location*/ node.whenTrue ); @@ -97689,7 +100997,7 @@ ${lanes.join("\n")} markLabel(whenFalseLabel); emitAssignment( resultLocal, - visitNode(node.whenFalse, visitor, isExpression), + Debug.checkDefined(visitNode(node.whenFalse, visitor, isExpression)), /*location*/ node.whenFalse ); @@ -97769,7 +101077,7 @@ ${lanes.join("\n")} leadingElement = void 0; expressions2 = []; } - expressions2.push(visitNode(element, visitor, isExpression)); + expressions2.push(Debug.checkDefined(visitNode(element, visitor, isExpression))); return expressions2; } } @@ -97808,8 +101116,8 @@ ${lanes.join("\n")} if (containsYield(node.argumentExpression)) { return factory2.updateElementAccessExpression( node, - cacheExpression(visitNode(node.expression, visitor, isLeftHandSideExpression)), - visitNode(node.argumentExpression, visitor, isExpression) + cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isLeftHandSideExpression))), + Debug.checkDefined(visitNode(node.argumentExpression, visitor, isExpression)) ); } return visitEachChild(node, visitor, context); @@ -97826,7 +101134,7 @@ ${lanes.join("\n")} return setOriginalNode( setTextRange( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isLeftHandSideExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isLeftHandSideExpression))), thisArg, visitElements(node.arguments) ), @@ -97844,7 +101152,7 @@ ${lanes.join("\n")} setTextRange( factory2.createNewExpression( factory2.createFunctionApplyCall( - cacheExpression(visitNode(target, visitor, isExpression)), + cacheExpression(Debug.checkDefined(visitNode(target, visitor, isExpression))), thisArg, visitElements( node.arguments, @@ -97960,7 +101268,7 @@ ${lanes.join("\n")} return setSourceMapRange( factory2.createAssignment( setSourceMapRange(factory2.cloneNode(node.name), node.name), - visitNode(node.initializer, visitor, isExpression) + Debug.checkDefined(visitNode(node.initializer, visitor, isExpression)) ), node ); @@ -97972,7 +101280,7 @@ ${lanes.join("\n")} const elseLabel = node.elseStatement ? defineLabel() : void 0; emitBreakWhenFalse( node.elseStatement ? elseLabel : endLabel, - visitNode(node.expression, visitor, isExpression), + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), /*location*/ node.expression ); @@ -98001,7 +101309,7 @@ ${lanes.join("\n")} markLabel(loopLabel); transformAndEmitEmbeddedStatement(node.statement); markLabel(conditionLabel); - emitBreakWhenTrue(loopLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenTrue(loopLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); endLoopBlock(); } else { emitStatement(visitNode(node, visitor, isStatement)); @@ -98022,7 +101330,7 @@ ${lanes.join("\n")} const loopLabel = defineLabel(); const endLabel = beginLoopBlock(loopLabel); markLabel(loopLabel); - emitBreakWhenFalse(endLabel, visitNode(node.expression, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); transformAndEmitEmbeddedStatement(node.statement); emitBreak(loopLabel); endLoopBlock(); @@ -98053,7 +101361,7 @@ ${lanes.join("\n")} emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(initializer, visitor, isExpression) + Debug.checkDefined(visitNode(initializer, visitor, isExpression)) ), initializer ) @@ -98062,7 +101370,7 @@ ${lanes.join("\n")} } markLabel(conditionLabel); if (node.condition) { - emitBreakWhenFalse(endLabel, visitNode(node.condition, visitor, isExpression)); + emitBreakWhenFalse(endLabel, Debug.checkDefined(visitNode(node.condition, visitor, isExpression))); } transformAndEmitEmbeddedStatement(node.statement); markLabel(incrementLabel); @@ -98070,7 +101378,7 @@ ${lanes.join("\n")} emitStatement( setTextRange( factory2.createExpressionStatement( - visitNode(node.incrementor, visitor, isExpression) + Debug.checkDefined(visitNode(node.incrementor, visitor, isExpression)) ), node.incrementor ) @@ -98115,7 +101423,7 @@ ${lanes.join("\n")} const keysIndex = factory2.createLoopVariable(); const initializer = node.initializer; hoistVariableDeclaration(keysIndex); - emitAssignment(obj, visitNode(node.expression, visitor, isExpression)); + emitAssignment(obj, Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); emitAssignment(keysArray, factory2.createArrayLiteralExpression()); emitStatement( factory2.createForInStatement( @@ -98146,7 +101454,7 @@ ${lanes.join("\n")} } variable = factory2.cloneNode(initializer.declarations[0].name); } else { - variable = visitNode(initializer, visitor, isExpression); + variable = Debug.checkDefined(visitNode(initializer, visitor, isExpression)); Debug.assert(isLeftHandSideExpression(variable)); } emitAssignment(variable, key); @@ -98171,8 +101479,8 @@ ${lanes.join("\n")} node = factory2.updateForInStatement( node, initializer.declarations[0].name, - visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, visitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.expression, visitor, isExpression)), + Debug.checkDefined(visitNode(node.statement, visitor, isStatement, factory2.liftToBlock)) ); } else { node = visitEachChild(node, visitor, context); @@ -98248,7 +101556,7 @@ ${lanes.join("\n")} } function transformAndEmitWithStatement(node) { if (containsYield(node)) { - beginWithBlock(cacheExpression(visitNode(node.expression, visitor, isExpression))); + beginWithBlock(cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression)))); transformAndEmitEmbeddedStatement(node.statement); endWithBlock(); } else { @@ -98260,7 +101568,7 @@ ${lanes.join("\n")} const caseBlock = node.caseBlock; const numClauses = caseBlock.clauses.length; const endLabel = beginSwitchBlock(); - const expression = cacheExpression(visitNode(node.expression, visitor, isExpression)); + const expression = cacheExpression(Debug.checkDefined(visitNode(node.expression, visitor, isExpression))); const clauseLabels = []; let defaultClauseIndex = -1; for (let i = 0; i < numClauses; i++) { @@ -98282,7 +101590,7 @@ ${lanes.join("\n")} } pendingClauses.push( factory2.createCaseClause( - visitNode(clause.expression, visitor, isExpression), + Debug.checkDefined(visitNode(clause.expression, visitor, isExpression)), [ createInlineBreak( clauseLabels[i], @@ -98352,7 +101660,7 @@ ${lanes.join("\n")} function transformAndEmitThrowStatement(node) { var _a2; emitThrow( - visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression), + Debug.checkDefined(visitNode((_a2 = node.expression) != null ? _a2 : factory2.createVoidZero(), visitor, isExpression)), /*location*/ node ); @@ -98708,7 +102016,7 @@ ${lanes.join("\n")} } return 0; } - function createLabel2(label) { + function createLabel(label) { if (label !== void 0 && label > 0) { if (labelExpressions === void 0) { labelExpressions = []; @@ -98734,7 +102042,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), location @@ -98939,10 +102247,10 @@ ${lanes.join("\n")} void 0, [ factory2.createArrayLiteralExpression([ - createLabel2(startLabel), - createLabel2(catchLabel), - createLabel2(finallyLabel), - createLabel2(endLabel) + createLabel(startLabel), + createLabel(catchLabel), + createLabel(finallyLabel), + createLabel(endLabel) ]) ] ) @@ -99118,7 +102426,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99137,7 +102445,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99159,7 +102467,7 @@ ${lanes.join("\n")} factory2.createReturnStatement( factory2.createArrayLiteralExpression([ createInstruction(3 /* Break */), - createLabel2(label) + createLabel(label) ]) ), operationLocation @@ -99642,7 +102950,7 @@ ${lanes.join("\n")} } function addExportEqualsIfNeeded(statements, emitAsReturn) { if (currentModuleInfo.exportEquals) { - const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor); + const expressionResult = visitNode(currentModuleInfo.exportEquals.expression, visitor, isExpression); if (expressionResult) { if (emitAsReturn) { const statement = factory2.createReturnStatement(expressionResult); @@ -99682,9 +102990,9 @@ ${lanes.join("\n")} return visitFunctionDeclaration(node); case 260 /* ClassDeclaration */: return visitClassDeclaration(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -99701,7 +103009,7 @@ ${lanes.join("\n")} return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 210 /* CallExpression */: if (isImportCall(node) && currentSourceFile.impliedNodeFormat === void 0) { @@ -99837,7 +103145,7 @@ ${lanes.join("\n")} } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; const containsLexicalThis = !!(node.transformFlags & 16384 /* ContainsLexicalThis */); switch (compilerOptions.module) { @@ -100046,7 +103354,7 @@ ${lanes.join("\n")} return downleveledImport; } function getHelperExpressionForExport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getExportNeedsImportStarHelper(node)) { @@ -100055,7 +103363,7 @@ ${lanes.join("\n")} return innerExpr; } function getHelperExpressionForImport(node, innerExpr) { - if (!getESModuleInterop(compilerOptions) || getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) { + if (!getESModuleInterop(compilerOptions) || getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) { return innerExpr; } if (getImportNeedsImportStarHelper(node)) { @@ -100300,7 +103608,7 @@ ${lanes.join("\n")} ) ); } else { - const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getEmitFlags(node) & 134217728 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; + const exportNeedsImportDefault = !!getESModuleInterop(compilerOptions) && !(getInternalEmitFlags(node) & 2 /* NeverApplyImportHelper */) && idText(specifier.propertyName || specifier.name) === "default"; const exportedValue = factory2.createPropertyAccessExpression( exportNeedsImportDefault ? emitHelpers().createImportDefaultHelper(generatedName) : generatedName, specifier.propertyName || specifier.name @@ -100366,7 +103674,7 @@ ${lanes.join("\n")} deferredExports[id] = appendExportStatement( deferredExports[id], factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -100376,7 +103684,7 @@ ${lanes.join("\n")} statements = appendExportStatement( statements, factory2.createIdentifier("default"), - visitNode(node.expression, visitor), + visitNode(node.expression, visitor, isExpression), /*location*/ node, /*allowComments*/ @@ -100404,7 +103712,7 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitEachChild(node.body, visitor, context) @@ -100445,8 +103753,8 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.heritageClauses, visitor), - visitNodes2(node.members, visitor) + visitNodes2(node.heritageClauses, visitor, isHeritageClause), + visitNodes2(node.members, visitor, isClassElement) ), node ), @@ -100476,7 +103784,23 @@ ${lanes.join("\n")} if (!modifiers) { modifiers = visitNodes2(node.modifiers, modifierVisitor, isModifier); } - variables = append(variables, variable); + if (variable.initializer) { + const updatedVariable = factory2.updateVariableDeclaration( + variable, + variable.name, + /*exclamationToken*/ + void 0, + /*type*/ + void 0, + createExportExpression( + variable.name, + visitNode(variable.initializer, visitor, isExpression) + ) + ); + variables = append(variables, updatedVariable); + } else { + variables = append(variables, variable); + } } else if (variable.initializer) { if (!isBindingPattern(variable.name) && (isArrowFunction(variable.initializer) || isFunctionExpression(variable.initializer) || isClassExpression(variable.initializer))) { const expression = factory2.createAssignment( @@ -100494,7 +103818,7 @@ ${lanes.join("\n")} variable.name, variable.exclamationToken, variable.type, - visitNode(variable.initializer, visitor) + visitNode(variable.initializer, visitor, isExpression) ); variables = append(variables, updatedVariable); expressions = append(expressions, expression); @@ -100545,9 +103869,8 @@ ${lanes.join("\n")} function transformInitializedVariable(node) { if (isBindingPattern(node.name)) { return flattenDestructuringAssignment( - visitNode(node, visitor), - /*visitor*/ - void 0, + visitNode(node, visitor, isInitializedVariable), + visitor, context, 0 /* All */, /*needsValue*/ @@ -100564,7 +103887,7 @@ ${lanes.join("\n")} /*location*/ node.name ), - node.initializer ? visitNode(node.initializer, visitor) : factory2.createVoidZero() + node.initializer ? visitNode(node.initializer, visitor, isExpression) : factory2.createVoidZero() ); } } @@ -100834,7 +104157,7 @@ ${lanes.join("\n")} const expression = substituteExpressionIdentifier(node.expression); noSubstitution[getNodeId(expression)] = true; if (!isIdentifier(expression) && !(getEmitFlags(node.expression) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateCallExpression( node, expression, @@ -100842,7 +104165,7 @@ ${lanes.join("\n")} void 0, node.arguments ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -100853,7 +104176,7 @@ ${lanes.join("\n")} const tag = substituteExpressionIdentifier(node.tag); noSubstitution[getNodeId(tag)] = true; if (!isIdentifier(tag) && !(getEmitFlags(node.tag) & 8192 /* HelperName */)) { - return addEmitFlags( + return addInternalEmitFlags( factory2.updateTaggedTemplateExpression( node, tag, @@ -100861,7 +104184,7 @@ ${lanes.join("\n")} void 0, node.template ), - 1073741824 /* IndirectCall */ + 16 /* IndirectCall */ ); } } @@ -100875,7 +104198,7 @@ ${lanes.join("\n")} return factory2.createPropertyAccessExpression(externalHelpersModuleName, node); } return node; - } else if (!(isGeneratedIdentifier(node) && !(node.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { + } else if (!(isGeneratedIdentifier(node) && !(node.emitNode.autoGenerate.flags & 64 /* AllowNameSubstitution */)) && !isLocalName(node)) { const exportContainer = resolver.getReferencedExportContainer(node, isExportName(node)); if (exportContainer && exportContainer.kind === 308 /* SourceFile */) { return setTextRange( @@ -101514,7 +104837,7 @@ ${lanes.join("\n")} ), /*typeParameters*/ void 0, - visitNodes2(node.parameters, visitor, isParameterDeclaration), + visitNodes2(node.parameters, visitor, isParameter), /*type*/ void 0, visitNode(node.body, visitor, isBlock) @@ -101611,7 +104934,7 @@ ${lanes.join("\n")} return (getEmitFlags(node) & 4194304 /* NoHoisting */) === 0 && (enclosingBlockScopedContainer.kind === 308 /* SourceFile */ || (getOriginalNode(node).flags & 3 /* BlockScoped */) === 0); } function transformInitializedVariable(node, isExportedDeclaration) { - const createAssignment3 = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; + const createAssignment = isExportedDeclaration ? createExportedVariableAssignment : createNonExportedVariableAssignment; return isBindingPattern(node.name) ? flattenDestructuringAssignment( node, visitor, @@ -101619,8 +104942,8 @@ ${lanes.join("\n")} 0 /* All */, /*needsValue*/ false, - createAssignment3 - ) : node.initializer ? createAssignment3(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; + createAssignment + ) : node.initializer ? createAssignment(node.name, visitNode(node.initializer, visitor, isExpression)) : node.name; } function createExportedVariableAssignment(name, value, location) { return createVariableAssignment( @@ -101824,9 +105147,9 @@ ${lanes.join("\n")} return visitCatchClause(node); case 238 /* Block */: return visitBlock(node); - case 357 /* MergeDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return visitMergeDeclarationMarker(node); - case 358 /* EndOfDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return visitEndOfDeclarationMarker(node); default: return visitor(node); @@ -101888,7 +105211,7 @@ ${lanes.join("\n")} } return expressions ? factory2.inlineExpressions(expressions) : factory2.createOmittedExpression(); } else { - return visitNode(node, discardedValueVisitor, isExpression); + return visitNode(node, discardedValueVisitor, isForInitializer); } } function visitDoStatement(node) { @@ -101909,21 +105232,21 @@ ${lanes.join("\n")} return factory2.updateLabeledStatement( node, node.label, - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitWithStatement(node) { return factory2.updateWithStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock) + Debug.checkDefined(visitNode(node.statement, topLevelNestedVisitor, isStatement, factory2.liftToBlock)) ); } function visitSwitchStatement(node) { return factory2.updateSwitchStatement( node, visitNode(node.expression, visitor, isExpression), - visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock) + Debug.checkDefined(visitNode(node.caseBlock, topLevelNestedVisitor, isCaseBlock)) ); } function visitCaseBlock(node) { @@ -101955,7 +105278,7 @@ ${lanes.join("\n")} node = factory2.updateCatchClause( node, node.variableDeclaration, - visitNode(node.block, topLevelNestedVisitor, isBlock) + Debug.checkDefined(visitNode(node.block, topLevelNestedVisitor, isBlock)) ); enclosingBlockScopedContainer = savedEnclosingBlockScopedContainer; return node; @@ -101982,7 +105305,7 @@ ${lanes.join("\n")} return visitExpressionStatement(node); case 214 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 223 /* BinaryExpression */: if (isDestructuringAssignment(node)) { @@ -102025,7 +105348,7 @@ ${lanes.join("\n")} } function visitImportCallExpression(node) { const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); - const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor); + const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; return factory2.createCallExpression( factory2.createPropertyAccessExpression( @@ -103169,7 +106492,7 @@ ${lanes.join("\n")} sourceFile, /*bundled*/ true - )) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + )) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); const newFile = factory2.updateSourceFile( sourceFile, [factory2.createModuleDeclaration( @@ -103191,7 +106514,7 @@ ${lanes.join("\n")} return newFile; } needsDeclare = true; - const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements); + const updated2 = isSourceFileJS(sourceFile) ? factory2.createNodeArray(transformDeclarationsForJS(sourceFile)) : visitNodes2(sourceFile.statements, visitDeclarationStatements, isStatement); return factory2.updateSourceFile( sourceFile, transformAndReplaceLatePaintedStatements(updated2), @@ -103260,7 +106583,7 @@ ${lanes.join("\n")} refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); } else { - const statements = visitNodes2(node.statements, visitDeclarationStatements); + const statements = visitNodes2(node.statements, visitDeclarationStatements, isStatement); combinedStatements = setTextRange(factory2.createNodeArray(transformAndReplaceLatePaintedStatements(statements)), node.statements); refs.forEach(referenceVisitor); emittedImports = filter(combinedStatements, isAnyImportSyntax); @@ -103377,9 +106700,9 @@ ${lanes.join("\n")} return name; } else { if (name.kind === 204 /* ArrayBindingPattern */) { - return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateArrayBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isArrayBindingElement)); } else { - return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement)); + return factory2.updateObjectBindingPattern(name, visitNodes2(name.elements, visitBindingElement, isBindingElement)); } } function visitBindingElement(elem) { @@ -103449,10 +106772,10 @@ ${lanes.join("\n")} } const shouldUseResolverType = node.kind === 166 /* Parameter */ && (resolver.isRequiredInitializedParameter(node) || resolver.isOptionalUninitializedParameterProperty(node)); if (type && !shouldUseResolverType) { - return visitNode(type, visitDeclarationSubtree); + return visitNode(type, visitDeclarationSubtree, isTypeNode); } if (!getParseTreeNode(node)) { - return type ? visitNode(type, visitDeclarationSubtree) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); + return type ? visitNode(type, visitDeclarationSubtree, isTypeNode) : factory2.createKeywordTypeNode(131 /* AnyKeyword */); } if (node.kind === 175 /* SetAccessor */) { return factory2.createKeywordTypeNode(131 /* AnyKeyword */); @@ -103522,11 +106845,11 @@ ${lanes.join("\n")} } function updateParamsList(node, params, modifierMask) { if (hasEffectiveModifier(node, 8 /* Private */)) { - return void 0; + return factory2.createNodeArray(); } const newParams = map(params, (p) => ensureParameter(p, modifierMask)); if (!newParams) { - return void 0; + return factory2.createNodeArray(); } return factory2.createNodeArray(newParams, params.hasTrailingComma); } @@ -103566,7 +106889,7 @@ ${lanes.join("\n")} return factory2.createNodeArray(newParams || emptyArray); } function ensureTypeParams(node, params) { - return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree); + return hasEffectiveModifier(node, 8 /* Private */) ? void 0 : visitNodes2(params, visitDeclarationSubtree, isTypeParameterDeclaration); } function isEnclosingDeclaration(node) { return isSourceFile(node) || isTypeAliasDeclaration(node) || isModuleDeclaration(node) || isClassDeclaration(node) || isInterfaceDeclaration(node) || isFunctionLike(node) || isIndexSignatureDeclaration(node) || isMappedTypeNode(node); @@ -103701,7 +107024,7 @@ ${lanes.join("\n")} needsDeclare = priorNeedsDeclare; lateStatementReplacementMap.set(getOriginalNodeId(i), result); } - return visitNodes2(statements, visitLateVisibilityMarkedStatements); + return visitNodes2(statements, visitLateVisibilityMarkedStatements, isStatement); function visitLateVisibilityMarkedStatements(statement) { if (isLateVisibilityPaintedStatement(statement)) { const key = getOriginalNodeId(statement); @@ -103915,7 +107238,7 @@ ${lanes.join("\n")} input, ensureModifiers(input), updateParamsList(input, input.parameters), - visitNode(input.type, visitDeclarationSubtree) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) + visitNode(input.type, visitDeclarationSubtree, isTypeNode) || factory2.createKeywordTypeNode(131 /* AnyKeyword */) )); } case 257 /* VariableDeclaration */: { @@ -103948,20 +107271,24 @@ ${lanes.join("\n")} return cleanup(visitEachChild(input, visitDeclarationSubtree, context)); } case 191 /* ConditionalType */: { - const checkType = visitNode(input.checkType, visitDeclarationSubtree); - const extendsType = visitNode(input.extendsType, visitDeclarationSubtree); + const checkType = visitNode(input.checkType, visitDeclarationSubtree, isTypeNode); + const extendsType = visitNode(input.extendsType, visitDeclarationSubtree, isTypeNode); const oldEnclosingDecl = enclosingDeclaration; enclosingDeclaration = input.trueType; - const trueType = visitNode(input.trueType, visitDeclarationSubtree); + const trueType = visitNode(input.trueType, visitDeclarationSubtree, isTypeNode); enclosingDeclaration = oldEnclosingDecl; - const falseType = visitNode(input.falseType, visitDeclarationSubtree); + const falseType = visitNode(input.falseType, visitDeclarationSubtree, isTypeNode); + Debug.assert(checkType); + Debug.assert(extendsType); + Debug.assert(trueType); + Debug.assert(falseType); return cleanup(factory2.updateConditionalTypeNode(input, checkType, extendsType, trueType, falseType)); } case 181 /* FunctionType */: { - return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateFunctionTypeNode(input, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 182 /* ConstructorType */: { - return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree), updateParamsList(input, input.parameters), visitNode(input.type, visitDeclarationSubtree))); + return cleanup(factory2.updateConstructorTypeNode(input, ensureModifiers(input), visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), updateParamsList(input, input.parameters), Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)))); } case 202 /* ImportType */: { if (!isLiteralImportTypeNode(input)) @@ -104105,7 +107432,7 @@ ${lanes.join("\n")} ensureModifiers(input), input.name, visitNodes2(input.typeParameters, visitDeclarationSubtree, isTypeParameterDeclaration), - visitNode(input.type, visitDeclarationSubtree, isTypeNode) + Debug.checkDefined(visitNode(input.type, visitDeclarationSubtree, isTypeNode)) )); needsDeclare = previousNeedsDeclare; return clean2; @@ -104117,7 +107444,7 @@ ${lanes.join("\n")} input.name, ensureTypeParams(input, input.typeParameters), transformHeritageClauses(input.heritageClauses), - visitNodes2(input.members, visitDeclarationSubtree) + visitNodes2(input.members, visitDeclarationSubtree, isTypeElement) )); } case 259 /* FunctionDeclaration */: { @@ -104234,7 +107561,7 @@ ${lanes.join("\n")} const oldHasScopeFix = resultHasScopeMarker; resultHasScopeMarker = false; needsScopeFixMarker = false; - const statements = visitNodes2(inner.statements, visitDeclarationStatements); + const statements = visitNodes2(inner.statements, visitDeclarationStatements, isStatement); let lateStatements = transformAndReplaceLatePaintedStatements(statements); if (input.flags & 16777216 /* Ambient */) { needsScopeFixMarker = false; @@ -104243,7 +107570,7 @@ ${lanes.join("\n")} if (needsScopeFixMarker) { lateStatements = factory2.createNodeArray([...lateStatements, createEmptyExports(factory2)]); } else { - lateStatements = visitNodes2(lateStatements, stripExportModifiers); + lateStatements = visitNodes2(lateStatements, stripExportModifiers, isStatement); } } const body = factory2.updateModuleBlock(inner, lateStatements); @@ -104339,7 +107666,7 @@ ${lanes.join("\n")} void 0 ) ] : void 0; - const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree)); + const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); const members = factory2.createNodeArray(memberNodes); const extendsClause = getEffectiveBaseTypeNode(input); if (extendsClause && !isEntityNameExpression(extendsClause.expression) && extendsClause.expression.kind !== 104 /* NullKeyword */) { @@ -104363,11 +107690,11 @@ ${lanes.join("\n")} if (clause.token === 94 /* ExtendsKeyword */) { const oldDiag2 = getSymbolAccessibilityDiagnostic; getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(clause.types[0]); - const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree)))); + const newClause = factory2.updateHeritageClause(clause, map(clause.types, (t) => factory2.updateExpressionWithTypeArguments(t, newId, visitNodes2(t.typeArguments, visitDeclarationSubtree, isTypeNode)))); getSymbolAccessibilityDiagnostic = oldDiag2; return newClause; } - return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree)); + return factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => isEntityNameExpression(t.expression) || t.expression.kind === 104 /* NullKeyword */)), visitDeclarationSubtree, isExpressionWithTypeArguments)); })); return [statement, cleanup(factory2.updateClassDeclaration( input, @@ -104423,7 +107750,7 @@ ${lanes.join("\n")} function transformVariableStatement(input) { if (!forEach(input.declarationList.declarations, getBindingNameVisible)) return; - const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree); + const nodes = visitNodes2(input.declarationList.declarations, visitDeclarationSubtree, isVariableDeclaration); if (!length(nodes)) return; return factory2.updateVariableStatement(input, factory2.createNodeArray(ensureModifiers(input)), factory2.updateVariableDeclarationList(input.declarationList, nodes)); @@ -104514,7 +107841,7 @@ ${lanes.join("\n")} function transformHeritageClauses(nodes) { return factory2.createNodeArray(filter(map(nodes, (clause) => factory2.updateHeritageClause(clause, visitNodes2(factory2.createNodeArray(filter(clause.types, (t) => { return isEntityNameExpression(t.expression) || clause.token === 94 /* ExtendsKeyword */ && t.expression.kind === 104 /* NullKeyword */; - })), visitDeclarationSubtree))), (clause) => clause.types && !!clause.types.length)); + })), visitDeclarationSubtree, isExpressionWithTypeArguments))), (clause) => clause.types && !!clause.types.length)); } } function isAlwaysType(node) { @@ -104631,10 +107958,15 @@ ${lanes.join("\n")} return emptyArray; const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); + const useDefineForClassFields = getUseDefineForClassFields(compilerOptions); const transformers = []; addRange(transformers, customTransformers && map(customTransformers.before, wrapScriptTransformerFactory)); transformers.push(transformTypeScript); - transformers.push(transformLegacyDecorators); + if (compilerOptions.experimentalDecorators) { + transformers.push(transformLegacyDecorators); + } else if (languageVersion < 99 /* ESNext */ || !useDefineForClassFields) { + transformers.push(transformESDecorators); + } transformers.push(transformClassFields); if (getJSXTransformEnabled(compilerOptions)) { transformers.push(transformJsx); @@ -104700,7 +108032,7 @@ ${lanes.join("\n")} } function transformNodes(resolver, host, factory2, options, nodes, transformers, allowDtsFiles) { var _a2, _b; - const enabledSyntaxKindFeatures = new Array(360 /* Count */); + const enabledSyntaxKindFeatures = new Array(361 /* Count */); let lexicalEnvironmentVariableDeclarations; let lexicalEnvironmentFunctionDeclarations; let lexicalEnvironmentStatements; @@ -105270,7 +108602,7 @@ ${lanes.join("\n")} const sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap || getAreDeclarationMapsEnabled(compilerOptions) ? [] : void 0; const emittedFilesList = compilerOptions.listEmittedFiles ? [] : void 0; const emitterDiagnostics = createDiagnosticCollection(); - const newLine = getNewLineCharacter(compilerOptions, () => host.getNewLine()); + const newLine = getNewLineCharacter(compilerOptions); const writer = createTextWriter(newLine); const { enter, exit } = createTimer("printTime", "beforePrint", "afterPrint"); let bundleBuildInfo; @@ -105727,7 +109059,6 @@ ${lanes.join("\n")} getCommonSourceDirectory: () => getNormalizedAbsolutePath(buildInfo.bundle.commonSourceDirectory, buildInfoDirectory), getCompilerOptions: () => config.options, getCurrentDirectory: () => host.getCurrentDirectory(), - getNewLine: () => host.getNewLine(), getSourceFile: returnUndefined, getSourceFileByPath: returnUndefined, getSourceFiles: () => sourceFilesForJsEmit, @@ -105813,6 +109144,7 @@ ${lanes.join("\n")} const bundledHelpers = /* @__PURE__ */ new Map(); let currentSourceFile; let nodeIdToGeneratedName; + let nodeIdToGeneratedPrivateName; let autoGeneratedIdToGeneratedName; let generatedNames; let formattedNameTempFlagsStack; @@ -106109,6 +109441,7 @@ ${lanes.join("\n")} } function reset2() { nodeIdToGeneratedName = []; + nodeIdToGeneratedPrivateName = []; autoGeneratedIdToGeneratedName = []; generatedNames = /* @__PURE__ */ new Set(); formattedNameTempFlagsStack = []; @@ -106160,7 +109493,7 @@ ${lanes.join("\n")} pipelineEmit(isStringLiteral(node) ? 6 /* JsxAttributeValue */ : 4 /* Unspecified */, node); } function beforeEmitNode(node) { - if (preserveSourceNewlines && getEmitFlags(node) & 268435456 /* IgnoreSourceNewlines */) { + if (preserveSourceNewlines && getInternalEmitFlags(node) & 4 /* IgnoreSourceNewlines */) { preserveSourceNewlines = false; } } @@ -106550,6 +109883,7 @@ ${lanes.join("\n")} case 346 /* JSDocThisTag */: case 347 /* JSDocTypeTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return emitJSDocSimpleTypedTag(node); case 348 /* JSDocTemplateTag */: return emitJSDocTemplateTag(node); @@ -106557,9 +109891,9 @@ ${lanes.join("\n")} return emitJSDocTypedefTag(node); case 350 /* JSDocSeeTag */: return emitJSDocSeeTag(node); - case 354 /* NotEmittedStatement */: - case 358 /* EndOfDeclarationMarker */: - case 357 /* MergeDeclarationMarker */: + case 355 /* NotEmittedStatement */: + case 359 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: return; } if (isExpression(node)) { @@ -106652,24 +109986,26 @@ ${lanes.join("\n")} return emitMetaProperty(node); case 234 /* SyntheticExpression */: return Debug.fail("SyntheticExpression should never be printed."); + case 279 /* MissingDeclaration */: + return; case 281 /* JsxElement */: return emitJsxElement(node); case 282 /* JsxSelfClosingElement */: return emitJsxSelfClosingElement(node); case 285 /* JsxFragment */: return emitJsxFragment(node); - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return Debug.fail("SyntaxList should not be printed"); - case 354 /* NotEmittedStatement */: + case 355 /* NotEmittedStatement */: return; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return emitPartiallyEmittedExpression(node); - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return emitCommaList(node); - case 357 /* MergeDeclarationMarker */: - case 358 /* EndOfDeclarationMarker */: + case 358 /* MergeDeclarationMarker */: + case 359 /* EndOfDeclarationMarker */: return; - case 359 /* SyntheticReferenceExpression */: + case 360 /* SyntheticReferenceExpression */: return Debug.fail("SyntheticReferenceExpression should not be printed"); } } @@ -106842,7 +110178,7 @@ ${lanes.join("\n")} /*includeTrivia*/ false ), node.symbol); - emitList(node, node.typeArguments, 53776 /* TypeParameters */); + emitList(node, getIdentifierTypeArguments(node), 53776 /* TypeParameters */); } function emitPrivateIdentifier(node) { write(getTextOfNode2( @@ -106873,7 +110209,7 @@ ${lanes.join("\n")} pushPrivateNameGenerationScope(savedPrivateNameTempFlags, savedReservedMemberNames); } function emitTypeParameter(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); if (node.constraint) { writeSpace(); @@ -106889,7 +110225,12 @@ ${lanes.join("\n")} } } function emitParameter(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.dotDotDotToken); emitNodeWithWriter(node.name, writeParameter); emit(node.questionToken); @@ -106905,14 +110246,19 @@ ${lanes.join("\n")} emitExpression(decorator.expression, parenthesizer.parenthesizeLeftSideOfAccess); } function emitPropertySignature(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitNodeWithWriter(node.name, writeProperty); emit(node.questionToken); emitTypeAnnotation(node.type); writeTrailingSemicolon(); } function emitPropertyDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.name); emit(node.questionToken); emit(node.exclamationToken); @@ -106922,7 +110268,7 @@ ${lanes.join("\n")} } function emitMethodSignature(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emit(node.name); emit(node.questionToken); emitTypeParameters(node, node.typeParameters); @@ -106932,7 +110278,12 @@ ${lanes.join("\n")} popNameGenerationScope(node); } function emitMethodDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); emit(node.asteriskToken); emit(node.name); emit(node.questionToken); @@ -106943,13 +110294,24 @@ ${lanes.join("\n")} emitBlockFunctionBody(node.body); } function emitConstructor(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("constructor"); emitSignatureAndBody(node, emitSignatureHead); } function emitAccessorDeclaration(node) { - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword(node.kind === 174 /* GetAccessor */ ? "get" : "set"); + const pos = emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + const token = node.kind === 174 /* GetAccessor */ ? 137 /* GetKeyword */ : 151 /* SetKeyword */; + emitTokenWithComment(token, pos, writeKeyword, node); writeSpace(); emit(node.name); emitSignatureAndBody(node, emitSignatureHead); @@ -106973,7 +110335,12 @@ ${lanes.join("\n")} popNameGenerationScope(node); } function emitIndexSignature(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitParametersForIndexSignature(node, node.parameters); emitTypeAnnotation(node.type); writeTrailingSemicolon(); @@ -107032,7 +110399,7 @@ ${lanes.join("\n")} } function emitConstructorType(node) { pushNameGenerationScope(node); - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); writeKeyword("new"); writeSpace(); emitTypeParameters(node, node.typeParameters); @@ -107308,7 +110675,7 @@ ${lanes.join("\n")} emitTokenWithComment(23 /* CloseBracketToken */, node.argumentExpression.end, writePunctuation, node); } function emitCallExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -107331,7 +110698,7 @@ ${lanes.join("\n")} emitExpressionList(node, node.arguments, 18960 /* NewExpressionArguments */, parenthesizer.parenthesizeExpressionForDisallowedComma); } function emitTaggedTemplateExpression(node) { - const indirectCall = getEmitFlags(node) & 1073741824 /* IndirectCall */; + const indirectCall = getInternalEmitFlags(node) & 16 /* IndirectCall */; if (indirectCall) { writePunctuation("("); writeLiteral("0"); @@ -107369,7 +110736,7 @@ ${lanes.join("\n")} emitFunctionDeclarationOrExpression(node); } function emitArrowFunction(node) { - emitModifiers(node, node.modifiers); + emitModifierList(node, node.modifiers); emitSignatureAndBody(node, emitArrowFunctionHead); } function emitArrowFunctionHead(node) { @@ -107635,7 +111002,12 @@ ${lanes.join("\n")} ); } function emitVariableStatement(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emit(node.declarationList); writeTrailingSemicolon(); } @@ -107893,7 +111265,12 @@ ${lanes.join("\n")} emitFunctionDeclarationOrExpression(node); } function emitFunctionDeclarationOrExpression(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("function"); emit(node.asteriskToken); writeSpace(); @@ -108001,8 +111378,13 @@ ${lanes.join("\n")} void 0 ); forEach(node.members, generateMemberNames); - emitDecoratorsAndModifiers(node, node.modifiers); - writeKeyword("class"); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + true + ); + emitTokenWithComment(84 /* ClassKeyword */, moveRangePastModifiers(node).pos, writeKeyword, node); if (node.name) { writeSpace(); emitIdentifierName(node.name); @@ -108028,7 +111410,12 @@ ${lanes.join("\n")} /*newReservedMemberNames*/ void 0 ); - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("interface"); writeSpace(); emit(node.name); @@ -108041,7 +111428,12 @@ ${lanes.join("\n")} popPrivateNameGenerationScope(); } function emitTypeAliasDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("type"); writeSpace(); emit(node.name); @@ -108053,7 +111445,12 @@ ${lanes.join("\n")} writeTrailingSemicolon(); } function emitEnumDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); writeKeyword("enum"); writeSpace(); emit(node.name); @@ -108063,7 +111460,12 @@ ${lanes.join("\n")} writePunctuation("}"); } function emitModuleDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); if (~node.flags & 1024 /* GlobalAugmentation */) { writeKeyword(node.flags & 16 /* Namespace */ ? "namespace" : "module"); writeSpace(); @@ -108103,7 +111505,12 @@ ${lanes.join("\n")} ); } function emitImportEqualsDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -108125,7 +111532,12 @@ ${lanes.join("\n")} } } function emitImportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); emitTokenWithComment(100 /* ImportKeyword */, node.modifiers ? node.modifiers.end : node.pos, writeKeyword, node); writeSpace(); if (node.importClause) { @@ -108178,7 +111590,12 @@ ${lanes.join("\n")} writeTrailingSemicolon(); } function emitExportDeclaration(node) { - emitModifiers(node, node.modifiers); + emitDecoratorsAndModifiers( + node, + node.modifiers, + /*allowDecorators*/ + false + ); let nextPos = emitTokenWithComment(93 /* ExportKeyword */, node.pos, writeKeyword, node); writeSpace(); if (node.isTypeOnly) { @@ -108801,23 +112218,27 @@ ${lanes.join("\n")} emit(node); write = savedWrite; } - function emitDecoratorsAndModifiers(node, modifiers) { + function emitDecoratorsAndModifiers(node, modifiers, allowDecorators) { if (modifiers == null ? void 0 : modifiers.length) { if (every(modifiers, isModifier)) { - return emitModifiers(node, modifiers); + return emitModifierList(node, modifiers); } if (every(modifiers, isDecorator)) { - return emitDecorators(node, modifiers); + if (allowDecorators) { + return emitDecoratorList(node, modifiers); + } + return node.pos; } onBeforeEmitNodeArray == null ? void 0 : onBeforeEmitNodeArray(modifiers); let lastMode; let mode; let start = 0; let pos = 0; + let lastModifier; while (start < modifiers.length) { while (pos < modifiers.length) { - const modifier = modifiers[pos]; - mode = isDecorator(modifier) ? "decorators" : "modifiers"; + lastModifier = modifiers[pos]; + mode = isDecorator(lastModifier) ? "decorators" : "modifiers"; if (lastMode === void 0) { lastMode = mode; } else if (mode !== lastMode) { @@ -108830,28 +112251,36 @@ ${lanes.join("\n")} textRange.pos = modifiers.pos; if (pos === modifiers.length - 1) textRange.end = modifiers.end; - emitNodeListItems( - emit, - node, - modifiers, - lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, - /*parenthesizerRule*/ - void 0, - start, - pos - start, - /*hasTrailingComma*/ - false, - textRange - ); + if (lastMode === "modifiers" || allowDecorators) { + emitNodeListItems( + emit, + node, + modifiers, + lastMode === "modifiers" ? 2359808 /* Modifiers */ : 2146305 /* Decorators */, + /*parenthesizerRule*/ + void 0, + start, + pos - start, + /*hasTrailingComma*/ + false, + textRange + ); + } start = pos; lastMode = mode; pos++; } onAfterEmitNodeArray == null ? void 0 : onAfterEmitNodeArray(modifiers); + if (lastModifier && !positionIsSynthesized(lastModifier.end)) { + return lastModifier.end; + } } + return node.pos; } - function emitModifiers(node, modifiers) { + function emitModifierList(node, modifiers) { emitList(node, modifiers, 2359808 /* Modifiers */); + const lastModifier = lastOrUndefined(modifiers); + return lastModifier && !positionIsSynthesized(lastModifier.end) ? lastModifier.end : node.pos; } function emitTypeAnnotation(node) { if (node) { @@ -108907,8 +112336,10 @@ ${lanes.join("\n")} decreaseIndent(); } } - function emitDecorators(parentNode, decorators) { + function emitDecoratorList(parentNode, decorators) { emitList(parentNode, decorators, 2146305 /* Decorators */); + const lastDecorator = lastOrUndefined(decorators); + return lastDecorator && !positionIsSynthesized(lastDecorator.end) ? lastDecorator.end : parentNode.pos; } function emitTypeArguments(parentNode, typeArguments) { emitList(parentNode, typeArguments, 53776 /* TypeArguments */, typeArgumentParenthesizerRuleSelector); @@ -109035,7 +112466,10 @@ ${lanes.join("\n")} writeDelimiter(format); } else if (previousSibling) { if (format & 60 /* DelimitersMask */ && previousSibling.end !== (parentNode ? parentNode.end : -1)) { - emitLeadingCommentsOfPosition(previousSibling.end); + const previousSiblingEmitFlags = getEmitFlags(previousSibling); + if (!(previousSiblingEmitFlags & 2048 /* NoTrailingComments */)) { + emitLeadingCommentsOfPosition(previousSibling.end); + } } writeDelimiter(format); recordBundleFileInternalSectionEnd(previousSourceFileTextKind); @@ -109560,16 +112994,18 @@ ${lanes.join("\n")} } } function generateName(name) { - if ((name.autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { - return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), name.autoGenerate.flags, name.autoGenerate.prefix, name.autoGenerate.suffix); + const autoGenerate = name.emitNode.autoGenerate; + if ((autoGenerate.flags & 7 /* KindMask */) === 4 /* Node */) { + return generateNameCached(getNodeForGeneratedName(name), isPrivateIdentifier(name), autoGenerate.flags, autoGenerate.prefix, autoGenerate.suffix); } else { - const autoGenerateId = name.autoGenerate.id; + const autoGenerateId = autoGenerate.id; return autoGeneratedIdToGeneratedName[autoGenerateId] || (autoGeneratedIdToGeneratedName[autoGenerateId] = makeName(name)); } } function generateNameCached(node, privateName, flags, prefix, suffix) { const nodeId = getNodeId(node); - return nodeIdToGeneratedName[nodeId] || (nodeIdToGeneratedName[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); + const cache = privateName ? nodeIdToGeneratedPrivateName : nodeIdToGeneratedName; + return cache[nodeId] || (cache[nodeId] = generateNameForNode(node, privateName, flags != null ? flags : 0 /* None */, formatGeneratedNamePart(prefix, generateName), formatGeneratedNamePart(suffix))); } function isUniqueName(name, privateName) { return isFileLevelUniqueName2(name, privateName) && !isReservedName(name, privateName) && !generatedNames.has(name); @@ -109811,7 +113247,21 @@ ${lanes.join("\n")} Debug.assert(!prefix && !suffix && !privateName); return generateNameForImportOrExportDeclaration(node); case 259 /* FunctionDeclaration */: - case 260 /* ClassDeclaration */: + case 260 /* ClassDeclaration */: { + Debug.assert(!prefix && !suffix && !privateName); + const name = node.name; + if (name && !isGeneratedIdentifier(name)) { + return generateNameForNode( + name, + /*privateName*/ + false, + flags, + prefix, + suffix + ); + } + return generateNameForExportDefault(); + } case 274 /* ExportAssignment */: Debug.assert(!prefix && !suffix && !privateName); return generateNameForExportDefault(); @@ -109843,16 +113293,17 @@ ${lanes.join("\n")} } } function makeName(name) { - const prefix = formatGeneratedNamePart(name.autoGenerate.prefix, generateName); - const suffix = formatGeneratedNamePart(name.autoGenerate.suffix); - switch (name.autoGenerate.flags & 7 /* KindMask */) { + const autoGenerate = name.emitNode.autoGenerate; + const prefix = formatGeneratedNamePart(autoGenerate.prefix, generateName); + const suffix = formatGeneratedNamePart(autoGenerate.suffix); + switch (autoGenerate.flags & 7 /* KindMask */) { case 1 /* Auto */: - return makeTempVariableName(TempFlags.Auto, !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); + return makeTempVariableName(TempFlags.Auto, !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix); case 2 /* Loop */: Debug.assertNode(name, isIdentifier); return makeTempVariableName( TempFlags._i, - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), /*privateName*/ false, prefix, @@ -109861,16 +113312,16 @@ ${lanes.join("\n")} case 3 /* Unique */: return makeUniqueName2( idText(name), - name.autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, - !!(name.autoGenerate.flags & 16 /* Optimistic */), - !!(name.autoGenerate.flags & 8 /* ReservedInNestedScopes */), + autoGenerate.flags & 32 /* FileLevel */ ? isFileLevelUniqueName2 : isUniqueName, + !!(autoGenerate.flags & 16 /* Optimistic */), + !!(autoGenerate.flags & 8 /* ReservedInNestedScopes */), isPrivateIdentifier(name), prefix, suffix ); } return Debug.fail(`Unsupported GeneratedIdentifierKind: ${Debug.formatEnum( - name.autoGenerate.flags & 7 /* KindMask */, + autoGenerate.flags & 7 /* KindMask */, GeneratedIdentifierFlags, /*isFlags*/ true @@ -109915,7 +113366,7 @@ ${lanes.join("\n")} emitLeadingComments( pos, /*isEmittedNode*/ - node.kind !== 354 /* NotEmittedStatement */ + node.kind !== 355 /* NotEmittedStatement */ ); } if (!skipLeadingComments || pos >= 0 && (emitFlags & 1024 /* NoLeadingComments */) !== 0) { @@ -109939,7 +113390,7 @@ ${lanes.join("\n")} containerPos = savedContainerPos; containerEnd = savedContainerEnd; declarationListContainerEnd = savedDeclarationListContainerEnd; - if (!skipTrailingComments && node.kind !== 354 /* NotEmittedStatement */) { + if (!skipTrailingComments && node.kind !== 355 /* NotEmittedStatement */) { emitTrailingComments(end); } } @@ -110211,7 +113662,7 @@ ${lanes.join("\n")} } } else { const source = sourceMapRange.source || sourceMapSource; - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 32 /* NoLeadingSourceMap */) === 0 && sourceMapRange.pos >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, skipSourceTrivia(source, sourceMapRange.pos)); } if (emitFlags & 128 /* NoNestedSourceMaps */) { @@ -110226,7 +113677,7 @@ ${lanes.join("\n")} if (emitFlags & 128 /* NoNestedSourceMaps */) { sourceMapsDisabled = false; } - if (node.kind !== 354 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { + if (node.kind !== 355 /* NotEmittedStatement */ && (emitFlags & 64 /* NoTrailingSourceMap */) === 0 && sourceMapRange.end >= 0) { emitSourcePos(sourceMapRange.source || sourceMapSource, sourceMapRange.end); } } @@ -110997,7 +114448,7 @@ ${lanes.join("\n")} function getDefaultLibLocation() { return getDirectoryPath(normalizePath(system.getExecutingFilePath())); } - const newLine = getNewLineCharacter(options, () => system.newLine); + const newLine = getNewLineCharacter(options); const realpath = system.realpath && ((path) => system.realpath(path)); const compilerHost = { getSourceFile: createGetSourceFile((fileName) => compilerHost.readFile(fileName), () => options, setParentNodes), @@ -112399,7 +115850,6 @@ ${lanes.join("\n")} getCommonSourceDirectory: program.getCommonSourceDirectory, getCompilerOptions: program.getCompilerOptions, getCurrentDirectory: () => currentDirectory, - getNewLine: () => host.getNewLine(), getSourceFile: program.getSourceFile, getSourceFileByPath: program.getSourceFileByPath, getSourceFiles: program.getSourceFiles, @@ -112778,8 +116228,26 @@ ${lanes.join("\n")} } } function walkArray(nodes, parent2) { - if (canHaveModifiers(parent2) && parent2.modifiers === nodes && some(nodes, isDecorator) && !options.experimentalDecorators) { - diagnostics.push(createDiagnosticForNode2(parent2, Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)); + if (canHaveIllegalDecorators(parent2)) { + const decorator = find(parent2.modifiers, isDecorator); + if (decorator) { + diagnostics.push(createDiagnosticForNode2(decorator, Diagnostics.Decorators_are_not_valid_here)); + } + } else if (canHaveDecorators(parent2) && parent2.modifiers) { + const decoratorIndex = findIndex(parent2.modifiers, isDecorator); + if (decoratorIndex >= 0) { + if (isParameter(parent2) && !options.experimentalDecorators) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } else if (isClassDeclaration(parent2)) { + const exportIndex = findIndex(parent2.modifiers, isExportModifier); + const defaultIndex = findIndex(parent2.modifiers, isDefaultModifier); + if (exportIndex >= 0 && decoratorIndex < exportIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_must_come_after_export_or_export_default_in_JavaScript_files)); + } else if (defaultIndex >= 0 && decoratorIndex < defaultIndex) { + diagnostics.push(createDiagnosticForNode2(parent2.modifiers[decoratorIndex], Diagnostics.Decorators_are_not_valid_here)); + } + } + } } switch (parent2.kind) { case 260 /* ClassDeclaration */: @@ -112938,7 +116406,7 @@ ${lanes.join("\n")} /*assertClause*/ void 0 ); - addEmitFlags(importDecl, 134217728 /* NeverApplyImportHelper */); + addInternalEmitFlags(importDecl, 2 /* NeverApplyImportHelper */); setParent(externalHelpersModuleReference, importDecl); setParent(importDecl, file); externalHelpersModuleReference.flags &= ~8 /* Synthesized */; @@ -113205,7 +116673,7 @@ ${lanes.join("\n")} if (filesByName.has(path)) { const file2 = filesByName.get(path); addFileIncludeReason(file2 || void 0, reason); - if (file2 && options.forceConsistentCasingInFileNames) { + if (file2 && !(options.forceConsistentCasingInFileNames === false)) { const checkedName = file2.fileName; const isRedirect = toPath3(checkedName) !== toPath3(fileName); if (isRedirect) { @@ -113804,24 +117272,12 @@ ${lanes.join("\n")} } const languageVersion = getEmitScriptTarget(options); const firstNonAmbientExternalModuleSourceFile = find(files, (f) => isExternalModule(f) && !f.isDeclarationFile); - if (options.isolatedModules) { - if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */) { + if (options.isolatedModules || options.verbatimModuleSyntax) { + if (options.module === 0 /* None */ && languageVersion < 2 /* ES2015 */ && options.isolatedModules) { createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); } if (options.preserveConstEnums === false) { - createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); - } - for (const file of files) { - if (!isExternalModule(file) && !isSourceFileJS(file) && !file.isDeclarationFile && file.scriptKind !== 6 /* JSON */) { - const span = getErrorSpanForNode(file, file); - programDiagnostics.add(createFileDiagnostic( - file, - span.start, - span.length, - Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, - getBaseFileName(file.fileName) - )); - } + createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled, options.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules", "preserveConstEnums"); } } else if (firstNonAmbientExternalModuleSourceFile && languageVersion < 2 /* ES2015 */ && options.module === 0 /* None */) { const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, typeof firstNonAmbientExternalModuleSourceFile.externalModuleIndicator === "boolean" ? firstNonAmbientExternalModuleSourceFile : firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); @@ -113903,10 +117359,25 @@ ${lanes.join("\n")} } } if (options.preserveValueImports && getEmitModuleKind(options) < 5 /* ES2015 */) { - createOptionValueDiagnostic("importsNotUsedAsValues", Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later); + createDiagnosticForOptionName(Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later, "preserveValueImports"); + } + if (options.verbatimModuleSyntax) { + const moduleKind = getEmitModuleKind(options); + if (moduleKind === 2 /* AMD */ || moduleKind === 3 /* UMD */ || moduleKind === 4 /* System */) { + createDiagnosticForOptionName(Diagnostics.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System, "verbatimModuleSyntax"); + } + if (options.isolatedModules) { + createRedundantOptionDiagnostic("isolatedModules", "verbatimModuleSyntax"); + } + if (options.preserveValueImports) { + createRedundantOptionDiagnostic("preserveValueImports", "verbatimModuleSyntax"); + } + if (options.importsNotUsedAsValues) { + createRedundantOptionDiagnostic("importsNotUsedAsValues", "verbatimModuleSyntax"); + } } if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly)) { - createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set); + createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set); } const moduleResolution = getEmitModuleResolutionKind(options); if (options.resolvePackageJsonExports && !moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { @@ -113952,16 +117423,25 @@ ${lanes.join("\n")} } } } - function verifyDeprecatedCompilerOptions() { + function getVersionForDeprecationDiagnostics(reportInvalidIgnoreDeprecations) { const version2 = typeScriptVersion3 || versionMajorMinor; const ignoreDeprecations = options.ignoreDeprecations; if (ignoreDeprecations) { if (ignoreDeprecations === "5.0" /* v5_0 */ && (version2 === "5.0" /* v5_0 */ || version2 === "5.5" /* v5_5 */)) { return; - } else { + } else if (reportInvalidIgnoreDeprecations) { createOptionValueDiagnostic("ignoreDeprecations", Diagnostics.Invalid_value_for_ignoreDeprecations); } } + return version2; + } + function verifyDeprecatedCompilerOptions() { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + true + ); + if (!version2) + return; if (options.target === 0 /* ES3 */) { createDeprecatedDiagnosticForOption(version2, "target", "ES3"); } @@ -113986,30 +117466,83 @@ ${lanes.join("\n")} if (options.out) { createDeprecatedDiagnosticForOption(version2, "out"); } + if (options.importsNotUsedAsValues) { + createDeprecatedDiagnosticForOption( + version2, + "importsNotUsedAsValues", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } + if (options.preserveValueImports) { + createDeprecatedDiagnosticForOption( + version2, + "preserveValueImports", + /*value*/ + void 0, + "verbatimModuleSyntax" + ); + } } - function createDeprecatedDiagnosticForOption(version2, name, value) { + function verifyDeprecatedProjectReference(ref, parentFile, index) { + if (ref.prepend) { + const version2 = getVersionForDeprecationDiagnostics( + /*reportInvalidIgnoreDeprecations*/ + false + ); + if (version2) { + createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => createDiagnosticForReference(parentFile, index, message, arg0, arg1, arg2), + "prepend" + ); + } + } + } + function createDeprecatedDiagnosticForOption(version2, name, value, useInstead) { + return createDeprecatedOptionForVersionDiagnostic( + version2, + (message, arg0, arg1, arg2) => { + if (useInstead) { + const details = chainDiagnosticMessages( + /*details*/ + void 0, + Diagnostics.Use_0_instead, + useInstead + ); + const chain = chainDiagnosticMessages(details, message, arg0, arg1, arg2); + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + chain + ); + } else { + createDiagnosticForOption( + /*onKey*/ + !value, + name, + /*option2*/ + void 0, + message, + arg0, + arg1, + arg2 + ); + } + }, + name, + value + ); + } + function createDeprecatedOptionForVersionDiagnostic(version2, createDiagnostic, name, value) { if (version2 === "6.0" /* v6_0 */) { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, - value || name - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_Please_remove_it_from_your_configuration, value || name); } else { - createDiagnosticForOption( - /*onKey*/ - !value, - name, - /*option2*/ - void 0, - Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, - value || name, - "5.5" /* v5_5 */, - "5.0" /* v5_0 */ - ); + createDiagnostic(Diagnostics.Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error, value || name, "5.5" /* v5_5 */, "5.0" /* v5_0 */); } } function createDiagnosticExplainingFile(file, fileProcessingReason, diagnostic, args) { @@ -114155,6 +117688,7 @@ ${lanes.join("\n")} forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent2, index) => { const ref = (parent2 ? parent2.commandLine.projectReferences : projectReferences)[index]; const parentFile = parent2 && parent2.sourceFile; + verifyDeprecatedProjectReference(ref, parentFile, index); if (!resolvedRef) { createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); return; @@ -114262,22 +117796,26 @@ ${lanes.join("\n")} arg1 ); } - function createDiagnosticForReference(sourceFile, index, message, arg0, arg1) { + function createDiagnosticForReference(sourceFile, index, message, arg0, arg1, arg2) { const referencesSyntax = firstDefined( getTsConfigPropArray(sourceFile || options.configFile, "references"), (property) => isArrayLiteralExpression(property.initializer) ? property.initializer : void 0 ); if (referencesSyntax && referencesSyntax.elements.length > index) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1)); + programDiagnostics.add(createDiagnosticForNodeInSourceFile(sourceFile || options.configFile, referencesSyntax.elements[index], message, arg0, arg1, arg2)); } else { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1)); + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); } } function createDiagnosticForOption(onKey, option1, option2, message, arg0, arg1, arg2) { const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); const needCompilerDiagnostic = !compilerOptionsObjectLiteralSyntax || !createOptionDiagnosticInObjectLiteralSyntax(compilerOptionsObjectLiteralSyntax, onKey, option1, option2, message, arg0, arg1, arg2); if (needCompilerDiagnostic) { - programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createCompilerDiagnosticFromMessageChain(message)); + } else { + programDiagnostics.add(createCompilerDiagnostic(message, arg0, arg1, arg2)); + } } } function getCompilerOptionsObjectLiteralSyntax() { @@ -114298,10 +117836,32 @@ ${lanes.join("\n")} function createOptionDiagnosticInObjectLiteralSyntax(objectLiteral, onKey, key1, key2, message, arg0, arg1, arg2) { const props = getPropertyAssignment(objectLiteral, key1, key2); for (const prop of props) { - programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + if ("messageText" in message) { + programDiagnostics.add(createDiagnosticForNodeFromMessageChain(options.configFile, onKey ? prop.name : prop.initializer, message)); + } else { + programDiagnostics.add(createDiagnosticForNodeInSourceFile(options.configFile, onKey ? prop.name : prop.initializer, message, arg0, arg1, arg2)); + } } return !!props.length; } + function createRedundantOptionDiagnostic(errorOnOption, redundantWithOption) { + const compilerOptionsObjectLiteralSyntax = getCompilerOptionsObjectLiteralSyntax(); + if (compilerOptionsObjectLiteralSyntax) { + createOptionDiagnosticInObjectLiteralSyntax( + compilerOptionsObjectLiteralSyntax, + /*onKey*/ + true, + errorOnOption, + /*key2*/ + void 0, + Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, + errorOnOption, + redundantWithOption + ); + } else { + createDiagnosticForOptionName(Diagnostics.Option_0_is_redundant_and_cannot_be_specified_with_option_1, errorOnOption, redundantWithOption); + } + } function blockEmittingOfFile(emitFileName, diag2) { hasEmitBlockingDiagnostics.set(toPath3(emitFileName), true); programDiagnostics.add(diag2); @@ -114552,9 +118112,8 @@ ${lanes.join("\n")} } return nodes || emptyArray; } - function resolveProjectReferencePath(hostOrRef, ref) { - const passedInRef = ref ? ref : hostOrRef; - return resolveConfigFileProjectName(passedInRef.path); + function resolveProjectReferencePath(ref) { + return resolveConfigFileProjectName(ref.path); } function getResolutionDiagnostic(options, { extension }, { isDeclarationFile }) { switch (extension) { @@ -117323,6 +120882,9 @@ ${lanes.join("\n")} } ); return filesInError.map((fileName) => { + if (fileName === void 0) { + return void 0; + } const diagnosticForFileName = find( diagnostics, (diagnostic) => diagnostic.file !== void 0 && diagnostic.file.fileName === fileName @@ -117693,7 +121255,6 @@ ${lanes.join("\n")} } function createCompilerHostFromProgramHost(host, getCompilerOptions, directoryStructureHost = host) { const useCaseSensitiveFileNames = host.useCaseSensitiveFileNames(); - const hostGetNewLine = memoize(() => host.getNewLine()); const compilerHost = { getSourceFile: createGetSourceFile( (fileName, encoding) => !encoding ? compilerHost.readFile(fileName) : host.readFile(fileName, encoding), @@ -117711,7 +121272,7 @@ ${lanes.join("\n")} getCurrentDirectory: memoize(() => host.getCurrentDirectory()), useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, getCanonicalFileName: createGetCanonicalFileName(useCaseSensitiveFileNames), - getNewLine: () => getNewLineCharacter(getCompilerOptions(), hostGetNewLine), + getNewLine: () => getNewLineCharacter(getCompilerOptions()), fileExists: (f) => host.fileExists(f), readFile: (f) => host.readFile(f), trace: maybeBind(host, host.trace), @@ -117797,7 +121358,7 @@ ${lanes.join("\n")} copyProperties(result, createWatchHost(system, reportWatchStatus2)); result.afterProgramCreate = (builderProgram) => { const compilerOptions = builderProgram.getCompilerOptions(); - const newLine = getNewLineCharacter(compilerOptions, () => system.newLine); + const newLine = getNewLineCharacter(compilerOptions); emitFilesAndReportErrors( builderProgram, reportDiagnostic, @@ -118007,11 +121568,13 @@ ${lanes.join("\n")} } reportWatchDiagnostic(Diagnostics.Starting_compilation_in_watch_mode); if (configFileName && !host.configFileParsingResult) { - newLine = getNewLineCharacter(optionsToExtendForConfigFile, () => host.getNewLine()); + newLine = getNewLineCharacter(optionsToExtendForConfigFile); Debug.assert(!rootFileNames); parseConfigFile2(); newLine = updateNewLine(); } + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); const { watchFile: watchFile2, watchDirectory, writeLog } = createWatchFactory(host, compilerOptions); const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames); writeLog(`Current directory: ${currentDirectory} CaseSensitiveFileNames: ${useCaseSensitiveFileNames}`); @@ -118114,6 +121677,8 @@ ${lanes.join("\n")} } function synchronizeProgram() { writeLog(`Synchronizing program`); + Debug.assert(compilerOptions); + Debug.assert(rootFileNames); clearInvalidateResolutionsOfFailedLookupLocations(); const program = getCurrentBuilderProgram(); if (hasChangedCompilerOptions) { @@ -118199,7 +121764,7 @@ ${lanes.join("\n")} scheduleProgramUpdate(); } function updateNewLine() { - return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile, () => host.getNewLine()); + return getNewLineCharacter(compilerOptions || optionsToExtendForConfigFile); } function toPath3(fileName) { return toPath(fileName, currentDirectory, getCanonicalFileName); @@ -118353,6 +121918,8 @@ ${lanes.join("\n")} } function reloadFileNamesFromConfigFile() { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); + Debug.assert(configFileName); reloadLevel = 0 /* None */; rootFileNames = getFileNamesFromConfigSpecs(compilerOptions.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName), currentDirectory), compilerOptions, parseConfigFileHost, extraFileExtensions); if (updateErrorForNoInputFiles(rootFileNames, getNormalizedAbsolutePath(configFileName, currentDirectory), compilerOptions.configFile.configFileSpecs, configFileParsingDiagnostics, canConfigFileJsonReportNoInputFiles)) { @@ -118361,6 +121928,7 @@ ${lanes.join("\n")} synchronizeProgram(); } function reloadConfigFile() { + Debug.assert(configFileName); writeLog(`Reloading config file: ${configFileName}`); reloadLevel = 0 /* None */; if (cachedDirectoryStructureHost) { @@ -118373,6 +121941,7 @@ ${lanes.join("\n")} updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); } function parseConfigFile2() { + Debug.assert(configFileName); setConfigFileParsingResult(getParsedCommandLineOfConfigFile( configFileName, optionsToExtendForConfigFile, @@ -118400,6 +121969,7 @@ ${lanes.join("\n")} return config.parsedCommandLine; if (config.parsedCommandLine && config.reloadLevel === 1 /* Partial */ && !host.getParsedCommandLine) { writeLog("Reloading new file names and options"); + Debug.assert(compilerOptions); const fileNames = getFileNamesFromConfigSpecs( config.parsedCommandLine.options.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName2), currentDirectory), @@ -118491,7 +122061,8 @@ ${lanes.join("\n")} return watchDirectory( directory, (fileOrDirectory) => { - Debug.assert(!!configFileName); + Debug.assert(configFileName); + Debug.assert(compilerOptions); const fileOrDirectoryPath = toPath3(fileOrDirectory); if (cachedDirectoryStructureHost) { cachedDirectoryStructureHost.addOrDeleteFileOrDirectory(fileOrDirectory, fileOrDirectoryPath); @@ -118522,6 +122093,7 @@ ${lanes.join("\n")} ); } function updateExtendedConfigFilesWatches(forProjectPath, options, watchOptions2, watchType) { + Debug.assert(configFileName); updateSharedExtendedConfigFileWatcher( forProjectPath, options, @@ -120678,6 +124250,7 @@ ${lanes.join("\n")} init_classFields(); init_typeSerializer(); init_legacyDecorators(); + init_esDecorators(); init_es2017(); init_es2018(); init_es2019(); @@ -122001,7 +125574,7 @@ ${lanes.join("\n")} Debug.assert(!syntaxList || contains(syntaxList.getChildren(), node)); return syntaxList; } - function isDefaultModifier(node) { + function isDefaultModifier2(node) { return node.kind === 88 /* DefaultKeyword */; } function isClassKeyword(node) { @@ -122015,7 +125588,7 @@ ${lanes.join("\n")} return node.name; } if (isClassDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -122030,7 +125603,7 @@ ${lanes.join("\n")} return node.name; } if (isFunctionDeclaration(node)) { - const defaultModifier = find(node.modifiers, isDefaultModifier); + const defaultModifier = find(node.modifiers, isDefaultModifier2); if (defaultModifier) return defaultModifier; } @@ -122948,16 +126521,19 @@ ${lanes.join("\n")} function findModifier(node, kind) { return canHaveModifiers(node) ? find(node.modifiers, (m) => m.kind === kind) : void 0; } - function insertImports(changes, sourceFile, imports, blankLineBetween) { + function insertImports(changes, sourceFile, imports, blankLineBetween, preferences) { const decl = isArray(imports) ? imports[0] : imports; const importKindPredicate = decl.kind === 240 /* VariableStatement */ ? isRequireVariableStatement : isAnyImportSyntax; const existingImportStatements = filter(sourceFile.statements, importKindPredicate); - const sortedNewImports = isArray(imports) ? stableSort(imports, ts_OrganizeImports_exports.compareImportsOrRequireStatements) : [imports]; + let sortKind = isArray(imports) ? ts_OrganizeImports_exports.detectImportDeclarationSorting(imports, preferences) : 3 /* Both */; + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const sortedNewImports = isArray(imports) ? stableSort(imports, (a, b) => ts_OrganizeImports_exports.compareImportsOrRequireStatements(a, b, comparer)) : [imports]; if (!existingImportStatements.length) { changes.insertNodesAtTopOfFile(sourceFile, sortedNewImports, blankLineBetween); - } else if (existingImportStatements && ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements)) { + } else if (existingImportStatements && (sortKind = ts_OrganizeImports_exports.detectImportDeclarationSorting(existingImportStatements, preferences))) { + const comparer2 = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); for (const newImport of sortedNewImports) { - const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport); + const insertionIndex = ts_OrganizeImports_exports.getImportDeclarationInsertionIndex(existingImportStatements, newImport, comparer2); if (insertionIndex === 0) { const options = existingImportStatements[0] === sourceFile.statements[0] ? { leadingTriviaOption: ts_textChanges_exports.LeadingTriviaOption.Exclude } : {}; changes.insertNodeBefore( @@ -123288,7 +126864,7 @@ ${lanes.join("\n")} } function getNewLineOrDefaultFromHost(host, formatSettings) { var _a2; - return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || carriageReturnLineFeed2; + return (formatSettings == null ? void 0 : formatSettings.newLineCharacter) || ((_a2 = host.getNewLine) == null ? void 0 : _a2.call(host)) || lineFeed2; } function lineBreakPart() { return displayPart("\n", 6 /* lineBreak */); @@ -124001,7 +127577,7 @@ ${lanes.join("\n")} if (!sourceFile.externalModuleIndicator && !sourceFile.commonJsModuleIndicator) { return false; } - return isInJSFile(declaration) || !findAncestor(declaration, isGlobalScopeAugmentation); + return isInJSFile(declaration) || !findAncestor(declaration, (d) => isModuleDeclaration(d) && isGlobalScopeAugmentation(d)); } function isDeprecatedDeclaration(decl) { return !!(getCombinedNodeFlagsAlwaysIncludeJSDoc(decl) & 8192 /* Deprecated */); @@ -124034,7 +127610,7 @@ ${lanes.join("\n")} function isSourceFileFromLibrary(program, node) { return program.isSourceFileFromExternalLibrary(node) || program.isSourceFileDefaultLibrary(node); } - var scanner, SemanticMeaning, tripleSlashDirectivePrefixRegex, typeKeywords, QuotePreference, displayPartWriter, carriageReturnLineFeed2, ANONYMOUS, syntaxMayBeASICandidate; + var scanner, SemanticMeaning, tripleSlashDirectivePrefixRegex, typeKeywords, QuotePreference, displayPartWriter, lineFeed2, ANONYMOUS, syntaxMayBeASICandidate; var init_utilities4 = __esm({ "src/services/utilities.ts"() { "use strict"; @@ -124080,7 +127656,7 @@ ${lanes.join("\n")} return QuotePreference5; })(QuotePreference || {}); displayPartWriter = getDisplayPartWriter(); - carriageReturnLineFeed2 = "\r\n"; + lineFeed2 = "\n"; ANONYMOUS = "anonymous function"; syntaxMayBeASICandidate = or( syntaxRequiresTrailingCommaOrSemicolonOrASI, @@ -124342,7 +127918,7 @@ ${lanes.join("\n")} } function forEachExternalModule(checker, allSourceFiles, excludePatterns, cb) { var _a2; - const isExcluded = (fileName) => excludePatterns == null ? void 0 : excludePatterns.some((p) => p.test(fileName)); + const isExcluded = excludePatterns && ((fileName) => excludePatterns.some((p) => p.test(fileName))); for (const ambient of checker.getAmbientModules()) { if (!stringContains(ambient.name, "*") && !(excludePatterns && ((_a2 = ambient.declarations) == null ? void 0 : _a2.every((d) => isExcluded(d.getSourceFile().fileName))))) { cb( @@ -124353,7 +127929,7 @@ ${lanes.join("\n")} } } for (const sourceFile of allSourceFiles) { - if (isExternalOrCommonJsModule(sourceFile) && !isExcluded(sourceFile.fileName)) { + if (isExternalOrCommonJsModule(sourceFile) && !(isExcluded == null ? void 0 : isExcluded(sourceFile.fileName))) { cb(checker.getMergedSymbol(sourceFile.symbol), sourceFile); } } @@ -124450,10 +128026,10 @@ ${lanes.join("\n")} function getDefaultExportInfoWorker(defaultExport, checker, compilerOptions) { const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) - return { symbolForMeaning: localSymbol, name: localSymbol.name }; + return { resolvedSymbol: localSymbol, name: localSymbol.name }; const name = getNameForExportDefault(defaultExport); if (name !== void 0) - return { symbolForMeaning: defaultExport, name }; + return { resolvedSymbol: defaultExport, name }; if (defaultExport.flags & 2097152 /* Alias */) { const aliased = checker.getImmediateAliasedSymbol(defaultExport); if (aliased && aliased.parent) { @@ -124461,9 +128037,9 @@ ${lanes.join("\n")} } } if (defaultExport.escapedName !== "default" /* Default */ && defaultExport.escapedName !== "export=" /* ExportEquals */) { - return { symbolForMeaning: defaultExport, name: defaultExport.getName() }; + return { resolvedSymbol: defaultExport, name: defaultExport.getName() }; } - return { symbolForMeaning: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; + return { resolvedSymbol: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; } function getNameForExportDefault(symbol) { return symbol.declarations && firstDefined(symbol.declarations, (declaration) => { @@ -128352,7 +131928,7 @@ ${lanes.join("\n")} } } function createSyntaxList(nodes, parent2) { - const list = createNode(353 /* SyntaxList */, nodes.pos, nodes.end, parent2); + const list = createNode(354 /* SyntaxList */, nodes.pos, nodes.end, parent2); list._children = []; let pos = nodes.pos; for (const node of nodes) { @@ -128597,7 +132173,7 @@ ${lanes.join("\n")} getCancellationToken: () => cancellationToken, getCanonicalFileName, useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, - getNewLine: () => getNewLineCharacter(newSettings, () => getNewLineOrDefaultFromHost(host)), + getNewLine: () => getNewLineCharacter(newSettings), getDefaultLibFileName: (options2) => host.getDefaultLibFileName(options2), writeFile: noop, getCurrentDirectory: () => currentDirectory, @@ -129143,22 +132719,22 @@ ${lanes.join("\n")} } return []; } - function getCodeFixesAtPosition(fileName, start, end, errorCodes64, formatOptions, preferences = emptyOptions) { + function getCodeFixesAtPosition(fileName, start, end, errorCodes63, formatOptions, preferences = emptyOptions) { synchronizeHostData(); const sourceFile = getValidSourceFile(fileName); const span = createTextSpanFromBounds(start, end); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return flatMap(deduplicate(errorCodes64, equateValues, compareValues), (errorCode) => { + return flatMap(deduplicate(errorCodes63, equateValues, compareValues), (errorCode) => { cancellationToken.throwIfCancellationRequested(); return ts_codefix_exports.getFixes({ errorCode, sourceFile, span, program, host, cancellationToken, formatContext, preferences }); }); } - function getCombinedCodeFix(scope, fixId52, formatOptions, preferences = emptyOptions) { + function getCombinedCodeFix(scope, fixId51, formatOptions, preferences = emptyOptions) { synchronizeHostData(); Debug.assert(scope.type === "file"); const sourceFile = getValidSourceFile(scope.fileName); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return ts_codefix_exports.getAllFixes({ fixId: fixId52, sourceFile, program, host, cancellationToken, formatContext, preferences }); + return ts_codefix_exports.getAllFixes({ fixId: fixId51, sourceFile, program, host, cancellationToken, formatContext, preferences }); } function organizeImports2(args, formatOptions, preferences = emptyOptions) { var _a3; @@ -129182,7 +132758,11 @@ ${lanes.join("\n")} return host.installPackage ? host.installPackage({ fileName: getPath(action.file), packageName: action.packageName }) : Promise.reject("Host does not implement `installPackage`"); } function getDocCommentTemplateAtPosition2(fileName, position, options) { - return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); + return ts_JsDoc_exports.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost( + host, + /*formatSettings*/ + void 0 + ), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); } function isValidBraceCompletionAtPosition(fileName, position, openingBrace) { if (openingBrace === 60 /* lessThan */) { @@ -129813,7 +133393,7 @@ ${lanes.join("\n")} if (!children.length) { return void 0; } - const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 352 /* LastJSDocNode */); + const child = find(children, (kid) => kid.kind < 312 /* FirstJSDocNode */ || kid.kind > 353 /* LastJSDocNode */); return child.kind < 163 /* FirstNode */ ? child : child.getFirstToken(sourceFile); } getLastToken(sourceFile) { @@ -130776,7 +134356,11 @@ ${lanes.join("\n")} ); } realizeDiagnostics(diagnostics) { - const newLine = getNewLineOrDefaultFromHost(this.host); + const newLine = getNewLineOrDefaultFromHost( + this.host, + /*formatSettings*/ + void 0 + ); return realizeDiagnostics(diagnostics, newLine); } getSyntacticClassifications(fileName, start, length2) { @@ -131909,9 +135493,9 @@ ${lanes.join("\n")} return node.name; if (isConstNamedExpression(node)) return node.parent.name; - return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier2)); + return Debug.checkDefined(node.modifiers && find(node.modifiers, isDefaultModifier3)); } - function isDefaultModifier2(node) { + function isDefaultModifier3(node) { return node.kind === 88 /* DefaultKeyword */; } function getSymbolOfCallHierarchyDeclaration(typeChecker, node) { @@ -131923,7 +135507,7 @@ ${lanes.join("\n")} return { text: node.fileName, pos: 0, end: 0 }; } if ((isFunctionDeclaration(node) || isClassDeclaration(node)) && !isNamedDeclaration(node)) { - const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier2); + const defaultModifier = node.modifiers && find(node.modifiers, isDefaultModifier3); if (defaultModifier) { return { text: "default", pos: defaultModifier.getStart(), end: defaultModifier.getEnd() }; } @@ -132624,23 +136208,23 @@ ${lanes.join("\n")} void 0 ); } - function createCodeFixAction(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, diagnosticToString(fixAllDescription), command); + function createCodeFixAction(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, diagnosticToString(fixAllDescription), command); } - function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId52, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId52, fixAllDescription && diagnosticToString(fixAllDescription), command); + function createCodeFixActionMaybeFixAll(fixName8, changes, description2, fixId51, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description2), changes, fixId51, fixAllDescription && diagnosticToString(fixAllDescription), command); } - function createCodeFixActionWorker(fixName8, description2, changes, fixId52, fixAllDescription, command) { - return { fixName: fixName8, description: description2, changes, fixId: fixId52, fixAllDescription, commands: command ? [command] : void 0 }; + function createCodeFixActionWorker(fixName8, description2, changes, fixId51, fixAllDescription, command) { + return { fixName: fixName8, description: description2, changes, fixId: fixId51, fixAllDescription, commands: command ? [command] : void 0 }; } function registerCodeFix(reg) { for (const error of reg.errorCodes) { errorCodeToFixes.add(String(error), reg); } if (reg.fixIds) { - for (const fixId52 of reg.fixIds) { - Debug.assert(!fixIdToRegistration.has(fixId52)); - fixIdToRegistration.set(fixId52, reg); + for (const fixId51 of reg.fixIds) { + Debug.assert(!fixIdToRegistration.has(fixId51)); + fixIdToRegistration.set(fixId51, reg); } } } @@ -132648,17 +136232,17 @@ ${lanes.join("\n")} return arrayFrom(errorCodeToFixes.keys()); } function removeFixIdIfFixAllUnavailable(registration, diagnostics) { - const { errorCodes: errorCodes64 } = registration; + const { errorCodes: errorCodes63 } = registration; let maybeFixableDiagnostics = 0; for (const diag2 of diagnostics) { - if (contains(errorCodes64, diag2.code)) + if (contains(errorCodes63, diag2.code)) maybeFixableDiagnostics++; if (maybeFixableDiagnostics > 1) break; } const fixAllUnavailable = maybeFixableDiagnostics < 2; - return ({ fixId: fixId52, fixAllDescription, ...action }) => { - return fixAllUnavailable ? action : { ...action, fixId: fixId52, fixAllDescription }; + return ({ fixId: fixId51, fixAllDescription, ...action }) => { + return fixAllUnavailable ? action : { ...action, fixId: fixId51, fixAllDescription }; }; } function getFixes(context) { @@ -132675,14 +136259,14 @@ ${lanes.join("\n")} function createFileTextChanges(fileName, textChanges2) { return { fileName, textChanges: textChanges2 }; } - function codeFixAll(context, errorCodes64, use) { + function codeFixAll(context, errorCodes63, use) { const commands = []; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes64, (diag2) => use(t, diag2, commands))); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes63, (diag2) => use(t, diag2, commands))); return createCombinedCodeActions(changes, commands.length === 0 ? void 0 : commands); } - function eachDiagnostic(context, errorCodes64, cb) { + function eachDiagnostic(context, errorCodes63, cb) { for (const diag2 of getDiagnostics(context)) { - if (contains(errorCodes64, diag2.code)) { + if (contains(errorCodes63, diag2.code)) { cb(diag2); } } @@ -133425,7 +137009,7 @@ ${lanes.join("\n")} if (!param.type) { const paramType = getJSDocType(param); if (paramType) - changes.tryInsertTypeAnnotation(sourceFile, param, transformJSDocType(paramType)); + changes.tryInsertTypeAnnotation(sourceFile, param, visitNode(paramType, transformJSDocType, isTypeNode)); } } if (needParens) @@ -133433,12 +137017,12 @@ ${lanes.join("\n")} if (!decl.type) { const returnType = getJSDocReturnType(decl); if (returnType) - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(returnType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(returnType, transformJSDocType, isTypeNode)); } } else { const jsdocType = Debug.checkDefined(getJSDocType(decl), "A JSDocType for this declaration should exist"); Debug.assert(!decl.type, "The JSDocType decl should have a type"); - changes.tryInsertTypeAnnotation(sourceFile, decl, transformJSDocType(jsdocType)); + changes.tryInsertTypeAnnotation(sourceFile, decl, visitNode(jsdocType, transformJSDocType, isTypeNode)); } } function isDeclarationWithType(node) { @@ -133475,19 +137059,19 @@ ${lanes.join("\n")} void 0, isIdentifier(tag.name) ? tag.name : tag.name.right, isOptionalJSDocPropertyLikeTag(tag) ? factory.createToken(57 /* QuestionToken */) : void 0, - tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType) || factory.createKeywordTypeNode(131 /* AnyKeyword */) + tag.typeExpression && visitNode(tag.typeExpression.type, transformJSDocType, isTypeNode) || factory.createKeywordTypeNode(131 /* AnyKeyword */) ))); setEmitFlags(typeNode, 1 /* SingleLine */); return typeNode; } function transformJSDocOptionalType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("undefined", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("undefined", emptyArray)]); } function transformJSDocNullableType(node) { - return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType), factory.createTypeReferenceNode("null", emptyArray)]); + return factory.createUnionTypeNode([visitNode(node.type, transformJSDocType, isTypeNode), factory.createTypeReferenceNode("null", emptyArray)]); } function transformJSDocVariadicType(node) { - return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType)); + return factory.createArrayTypeNode(visitNode(node.type, transformJSDocType, isTypeNode)); } function transformJSDocFunctionType(node) { var _a2; @@ -133498,7 +137082,7 @@ ${lanes.join("\n")} const isRest = node.type.kind === 321 /* JSDocVariadicType */ && index === node.parent.parameters.length - 1; const name = node.name || (isRest ? "rest" : "arg" + index); const dotdotdot = isRest ? factory.createToken(25 /* DotDotDotToken */) : node.dotDotDotToken; - return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType), node.initializer); + return factory.createParameterDeclaration(node.modifiers, dotdotdot, name, node.questionToken, visitNode(node.type, transformJSDocType, isTypeNode), node.initializer); } function transformJSDocTypeReference(node) { let name = node.typeName; @@ -133525,7 +137109,7 @@ ${lanes.join("\n")} if ((text === "Array" || text === "Promise") && !node.typeArguments) { args = factory.createNodeArray([factory.createTypeReferenceNode("any", emptyArray)]); } else { - args = visitNodes2(node.typeArguments, transformJSDocType); + args = visitNodes2(node.typeArguments, transformJSDocType, isTypeNode); } } return factory.createTypeReferenceNode(name, args); @@ -134638,8 +138222,8 @@ ${lanes.join("\n")} function collectExportRenames(sourceFile, checker, identifiers) { const res = /* @__PURE__ */ new Map(); forEachExportReference(sourceFile, (node) => { - const { text, originalKeywordKind } = node.name; - if (!res.has(text) && (originalKeywordKind !== void 0 && isNonContextualKeyword(originalKeywordKind) || checker.resolveName( + const { text } = node.name; + if (!res.has(text) && (isIdentifierANonContextualKeyword(node.name) || checker.resolveName( text, node, 111551 /* Value */, @@ -135239,7 +138823,7 @@ ${lanes.join("\n")} "use strict"; init_ts4(); init_ts_codefix(); - errorCodes13 = [Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code]; + errorCodes13 = [Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code]; fixId12 = "convertToTypeOnlyExport"; registerCodeFix({ errorCodes: errorCodes13, @@ -135523,7 +139107,7 @@ ${lanes.join("\n")} Debug.checkDefined(exportInfo), moduleSymbol, program, - /*useNamespaceInfo*/ + /*position*/ void 0, !!isValidTypeOnlyUseSite, useRequire, @@ -135668,7 +139252,8 @@ ${lanes.join("\n")} sourceFile, newDeclarations, /*blankLineBetween*/ - true + true, + preferences ); } } @@ -135680,10 +139265,10 @@ ${lanes.join("\n")} const packageJsonImportFilter = createPackageJsonImportFilter(importingFile, preferences, host); const importMap = createExistingImportMap(program.getTypeChecker(), importingFile, program.getCompilerOptions()); return { getModuleSpecifierForBestExportInfo }; - function getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, fromCacheOnly) { + function getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, fromCacheOnly) { const { fixes, computedWithoutCacheCount } = getImportFixes( exportInfo, - { symbolName: symbolName2, position }, + position, isValidTypeOnlyUseSite, /*useRequire*/ false, @@ -135704,7 +139289,7 @@ ${lanes.join("\n")} Debug.assertIsDefined(exportInfos); const useRequire = shouldUseRequire(sourceFile, program); const isValidTypeOnlyUseSite = isValidTypeOnlyAliasUseSite(getTokenAtPosition(sourceFile, position)); - const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, { symbolName: symbolName2, position }, isValidTypeOnlyUseSite, useRequire, host, preferences)); + const fix = Debug.checkDefined(getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences)); return { moduleSpecifier: fix.moduleSpecifier, codeAction: codeFixActionToCodeAction(codeActionForFix( @@ -135726,10 +139311,10 @@ ${lanes.join("\n")} const includeSymbolNameInDescription = symbolName2 !== symbolToken.text; return fix && codeFixActionToCodeAction(codeActionForFix({ host, formatContext, preferences }, sourceFile, symbolName2, fix, includeSymbolNameInDescription, compilerOptions, preferences)); } - function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, host, preferences) { + function getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, program, position, isValidTypeOnlyUseSite, useRequire, host, preferences) { Debug.assert(exportInfos.some((info) => info.moduleSymbol === moduleSymbol || info.symbol.parent === moduleSymbol), "Some exportInfo should match the specified moduleSymbol"); const packageJsonImportFilter = createPackageJsonImportFilter(sourceFile, preferences, host); - return getBestFix(getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); + return getBestFix(getImportFixes(exportInfos, position, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes, sourceFile, program, packageJsonImportFilter, host); } function codeFixActionToCodeAction({ description: description2, changes, commands }) { return { description: description2, changes, commands }; @@ -135770,10 +139355,10 @@ ${lanes.join("\n")} } } } - function getImportFixes(exportInfos, useNamespaceInfo, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { + function getImportFixes(exportInfos, usagePosition, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences, importMap = createExistingImportMap(program.getTypeChecker(), sourceFile, program.getCompilerOptions()), fromCacheOnly) { const checker = program.getTypeChecker(); const existingImports = flatMap(exportInfos, importMap.getImportsForExportInfo); - const useNamespace = useNamespaceInfo && tryUseExistingNamespaceImport(existingImports, useNamespaceInfo.symbolName, useNamespaceInfo.position, checker); + const useNamespace = usagePosition !== void 0 && tryUseExistingNamespaceImport(existingImports, usagePosition); const addToExisting = tryAddToExistingImport(existingImports, isValidTypeOnlyUseSite, checker, program.getCompilerOptions()); if (addToExisting) { return { @@ -135786,7 +139371,7 @@ ${lanes.join("\n")} existingImports, program, sourceFile, - useNamespaceInfo == null ? void 0 : useNamespaceInfo.position, + usagePosition, isValidTypeOnlyUseSite, useRequire, host, @@ -135798,33 +139383,18 @@ ${lanes.join("\n")} fixes: [...useNamespace ? [useNamespace] : emptyArray, ...fixes] }; } - function tryUseExistingNamespaceImport(existingImports, symbolName2, position, checker) { - return firstDefined(existingImports, ({ declaration }) => { + function tryUseExistingNamespaceImport(existingImports, position) { + return firstDefined(existingImports, ({ declaration, importKind }) => { var _a2; + if (importKind !== 0 /* Named */) + return void 0; const namespacePrefix = getNamespaceLikeImportText(declaration); - const moduleSpecifier = (_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text; - if (namespacePrefix && moduleSpecifier) { - const moduleSymbol = getTargetModuleFromNamespaceLikeImport(declaration, checker); - if (moduleSymbol && moduleSymbol.exports.has(escapeLeadingUnderscores(symbolName2))) { - return { kind: 0 /* UseNamespace */, namespacePrefix, position, moduleSpecifier }; - } + const moduleSpecifier = namespacePrefix && ((_a2 = tryGetModuleSpecifierFromDeclaration(declaration)) == null ? void 0 : _a2.text); + if (moduleSpecifier) { + return { kind: 0 /* UseNamespace */, namespacePrefix, usagePosition: position, moduleSpecifier }; } }); } - function getTargetModuleFromNamespaceLikeImport(declaration, checker) { - var _a2; - switch (declaration.kind) { - case 257 /* VariableDeclaration */: - return checker.resolveExternalModuleName(declaration.initializer.arguments[0]); - case 268 /* ImportEqualsDeclaration */: - return checker.getAliasedSymbol(declaration.symbol); - case 269 /* ImportDeclaration */: - const namespaceImport = tryCast((_a2 = declaration.importClause) == null ? void 0 : _a2.namedBindings, isNamespaceImport); - return namespaceImport && checker.getAliasedSymbol(namespaceImport.symbol); - default: - return Debug.assertNever(declaration); - } - } function getNamespaceLikeImportText(declaration) { var _a2, _b, _c; switch (declaration.kind) { @@ -135845,7 +139415,7 @@ ${lanes.join("\n")} if (isForNewImportDeclaration && compilerOptions.importsNotUsedAsValues === 2 /* Error */) { return 2 /* Required */; } - if (compilerOptions.isolatedModules && compilerOptions.preserveValueImports && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { + if ((compilerOptions.isolatedModules && compilerOptions.preserveValueImports || compilerOptions.verbatimModuleSyntax) && (!(targetFlags & 111551 /* Value */) || !!checker.getTypeOnlyAliasDeclaration(symbol))) { return 2 /* Required */; } return 1 /* Allowed */; @@ -135940,7 +139510,7 @@ ${lanes.join("\n")} function createGetChecker(program, host) { return memoizeOne((isFromPackageJson) => isFromPackageJson ? host.getPackageJsonAutoImportProvider().getTypeChecker() : program.getTypeChecker()); } - function getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { + function getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfo, host, preferences, fromCacheOnly) { const isJs = isSourceFileJS(sourceFile); const compilerOptions = program.getCompilerOptions(); const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); @@ -135963,27 +139533,47 @@ ${lanes.join("\n")} compilerOptions ); computedWithoutCacheCount += computedWithoutCache ? 1 : 0; - return mapDefined( - moduleSpecifiers, - (moduleSpecifier) => rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier) ? void 0 : ( - // `position` should only be undefined at a missing jsx namespace, in which case we shouldn't be looking for pure types. - !importedSymbolHasValueMeaning && isJs && position !== void 0 ? { kind: 1 /* JsdocTypeImport */, moduleSpecifier, position, exportInfo: exportInfo2, isReExport: i > 0 } : { - kind: 3 /* AddNew */, - moduleSpecifier, - importKind: getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions), - useRequire, - addAsTypeOnly, - exportInfo: exportInfo2, - isReExport: i > 0 + return mapDefined(moduleSpecifiers, (moduleSpecifier) => { + var _a2; + if (rejectNodeModulesRelativePaths && pathContainsNodeModules(moduleSpecifier)) { + return void 0; + } + if (!importedSymbolHasValueMeaning && isJs && usagePosition !== void 0) { + return { kind: 1 /* JsdocTypeImport */, moduleSpecifier, usagePosition, exportInfo: exportInfo2, isReExport: i > 0 }; + } + const importKind = getImportKind(sourceFile, exportInfo2.exportKind, compilerOptions); + let qualification; + if (usagePosition !== void 0 && importKind === 3 /* CommonJS */ && exportInfo2.exportKind === 0 /* Named */) { + const exportEquals = checker.resolveExternalModuleSymbol(exportInfo2.moduleSymbol); + let namespacePrefix; + if (exportEquals !== exportInfo2.moduleSymbol) { + namespacePrefix = (_a2 = getDefaultExportInfoWorker(exportEquals, checker, compilerOptions)) == null ? void 0 : _a2.name; } - ) - ); + namespacePrefix || (namespacePrefix = moduleSymbolToValidIdentifier( + exportInfo2.moduleSymbol, + getEmitScriptTarget(compilerOptions), + /*forceCapitalize*/ + false + )); + qualification = { namespacePrefix, usagePosition }; + } + return { + kind: 3 /* AddNew */, + moduleSpecifier, + importKind, + useRequire, + addAsTypeOnly, + exportInfo: exportInfo2, + isReExport: i > 0, + qualification + }; + }); }); return { computedWithoutCacheCount, fixes }; } - function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { + function getFixesForAddImport(exportInfos, existingImports, program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, host, preferences, fromCacheOnly) { const existingDeclaration = firstDefined(existingImports, (info) => newImportInfoFromExistingSpecifier(info, isValidTypeOnlyUseSite, useRequire, program.getTypeChecker(), program.getCompilerOptions())); - return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, position, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); + return existingDeclaration ? { fixes: [existingDeclaration] } : getNewImportFixes(program, sourceFile, usagePosition, isValidTypeOnlyUseSite, useRequire, exportInfos, host, preferences, fromCacheOnly); } function newImportInfoFromExistingSpecifier({ declaration, importKind, symbol, targetFlags }, isValidTypeOnlyUseSite, useRequire, checker, compilerOptions) { var _a2; @@ -136083,10 +139673,10 @@ ${lanes.join("\n")} const symbolName2 = umdSymbol.name; const exportInfo = [{ symbol: umdSymbol, moduleSymbol: symbol, moduleFileName: void 0, exportKind: 3 /* UMD */, targetFlags: symbol.flags, isFromPackageJson: false }]; const useRequire = shouldUseRequire(sourceFile, program); - const position = isIdentifier(token) ? token.getStart(sourceFile) : void 0; const fixes = getImportFixes( exportInfo, - position ? { position, symbolName: symbolName2 } : void 0, + /*usagePosition*/ + void 0, /*isValidTypeOnlyUseSite*/ false, useRequire, @@ -136105,15 +139695,24 @@ ${lanes.join("\n")} if (isUMDExportSymbol(umdSymbol)) return umdSymbol; const { parent: parent2 } = token; - return isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2) ? tryCast(checker.resolveName( - checker.getJsxNamespace(parent2), - isJsxOpeningLikeElement(parent2) ? token : parent2, - 111551 /* Value */, - /*excludeGlobals*/ - false - ), isUMDExportSymbol) : void 0; + if (isJsxOpeningLikeElement(parent2) && parent2.tagName === token || isJsxOpeningFragment(parent2)) { + const parentSymbol = checker.resolveName( + checker.getJsxNamespace(parent2), + isJsxOpeningLikeElement(parent2) ? token : parent2, + 111551 /* Value */, + /*excludeGlobals*/ + false + ); + if (isUMDExportSymbol(parentSymbol)) { + return parentSymbol; + } + } + return void 0; } function getImportKind(importingFile, exportKind, compilerOptions, forceImportKeyword) { + if (compilerOptions.verbatimModuleSyntax && (getEmitModuleKind(compilerOptions) === 1 /* CommonJS */ || importingFile.impliedNodeFormat === 1 /* CommonJS */)) { + return 3 /* CommonJS */; + } switch (exportKind) { case 0 /* Named */: return 0 /* Named */; @@ -136165,7 +139764,7 @@ ${lanes.join("\n")} const useRequire = shouldUseRequire(sourceFile, program); const exportInfo = getExportInfos(symbolName2, isJSXTagName(symbolToken), getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, program, useAutoImportProvider, host, preferences); return arrayFrom( - flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, { symbolName: symbolName2, position: symbolToken.getStart(sourceFile) }, isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), + flatMapIterator(exportInfo.values(), (exportInfos) => getImportFixes(exportInfos, symbolToken.getStart(sourceFile), isValidTypeOnlyUseSite, useRequire, program, sourceFile, host, preferences).fixes), (fix) => ({ fix, symbolName: symbolName2, errorIdentifierText: symbolToken.text, isJsxNamespaceFix: symbolName2 !== symbolToken.text }) ); }); @@ -136235,7 +139834,7 @@ ${lanes.join("\n")} cancellationToken.throwIfCancellationRequested(); const compilerOptions = program2.getCompilerOptions(); const defaultInfo = getDefaultLikeExportInfo(moduleSymbol, checker, compilerOptions); - if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.symbolForMeaning, currentTokenMeaning)) { + if (defaultInfo && (defaultInfo.name === symbolName2 || moduleSymbolToValidIdentifier(moduleSymbol, getEmitScriptTarget(compilerOptions), isJsxTagName) === symbolName2) && symbolHasMeaning(defaultInfo.resolvedSymbol, currentTokenMeaning)) { addSymbol(moduleSymbol, sourceFile, defaultInfo.symbol, defaultInfo.exportKind, program2, isFromPackageJson); } const exportSymbolWithIdenticalName = checker.tryGetMemberInModuleExportsAndProperties(symbolName2, moduleSymbol); @@ -136292,23 +139891,27 @@ ${lanes.join("\n")} return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifierWithoutQuotes] : [Diagnostics.Update_import_from_0, moduleSpecifierWithoutQuotes]; } case 3 /* AddNew */: { - const { importKind, moduleSpecifier, addAsTypeOnly, useRequire } = fix; + const { importKind, moduleSpecifier, addAsTypeOnly, useRequire, qualification } = fix; const getDeclarations = useRequire ? getNewRequires : getNewImports; const defaultImport = importKind === 1 /* Default */ ? { name: symbolName2, addAsTypeOnly } : void 0; const namedImports = importKind === 0 /* Named */ ? [{ name: symbolName2, addAsTypeOnly }] : void 0; - const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: symbolName2, addAsTypeOnly } : void 0; + const namespaceLikeImport = importKind === 2 /* Namespace */ || importKind === 3 /* CommonJS */ ? { importKind, name: (qualification == null ? void 0 : qualification.namespacePrefix) || symbolName2, addAsTypeOnly } : void 0; insertImports( changes, sourceFile, getDeclarations(moduleSpecifier, quotePreference, defaultImport, namedImports, namespaceLikeImport), /*blankLineBetween*/ - true + true, + preferences ); + if (qualification) { + addNamespaceQualifier(changes, sourceFile, qualification); + } return includeSymbolNameInDescription ? [Diagnostics.Import_0_from_1, symbolName2, moduleSpecifier] : [Diagnostics.Add_import_from_0, moduleSpecifier]; } case 4 /* PromoteTypeOnly */: { const { typeOnlyAliasDeclaration } = fix; - const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile); + const promotedDeclaration = promoteFromTypeOnly(changes, typeOnlyAliasDeclaration, compilerOptions, sourceFile, preferences); return promotedDeclaration.kind === 273 /* ImportSpecifier */ ? [Diagnostics.Remove_type_from_import_of_0_from_1, symbolName2, getModuleSpecifierText(promotedDeclaration.parent.parent)] : [Diagnostics.Remove_type_from_import_declaration_from_0, getModuleSpecifierText(promotedDeclaration)]; } default: @@ -136319,12 +139922,12 @@ ${lanes.join("\n")} var _a2, _b; return promotedDeclaration.kind === 268 /* ImportEqualsDeclaration */ ? ((_b = tryCast((_a2 = tryCast(promotedDeclaration.moduleReference, isExternalModuleReference)) == null ? void 0 : _a2.expression, isStringLiteralLike)) == null ? void 0 : _b.text) || promotedDeclaration.moduleReference.getText() : cast(promotedDeclaration.parent.moduleSpecifier, isStringLiteral).text; } - function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile) { - const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules; + function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceFile, preferences) { + const convertExistingToTypeOnly = compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax; switch (aliasDeclaration.kind) { case 273 /* ImportSpecifier */: if (aliasDeclaration.isTypeOnly) { - const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements); + const sortKind = ts_OrganizeImports_exports.detectImportSpecifierSorting(aliasDeclaration.parent.elements, preferences); if (aliasDeclaration.parent.elements.length > 1 && sortKind) { changes.delete(sourceFile, aliasDeclaration); const newSpecifier = factory.updateImportSpecifier( @@ -136334,7 +139937,8 @@ ${lanes.join("\n")} aliasDeclaration.propertyName, aliasDeclaration.name ); - const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, sortKind === 2 /* CaseInsensitive */); + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, sortKind === 2 /* CaseInsensitive */); + const insertionIndex = ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(aliasDeclaration.parent.elements, newSpecifier, comparer); changes.insertImportSpecifierAtIndex(sourceFile, newSpecifier, aliasDeclaration.parent, insertionIndex); } else { changes.deleteRange(sourceFile, aliasDeclaration.getFirstToken()); @@ -136362,7 +139966,7 @@ ${lanes.join("\n")} if (convertExistingToTypeOnly) { const namedImports = tryCast(importClause.namedBindings, isNamedImports); if (namedImports && namedImports.elements.length > 1) { - if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { + if (ts_OrganizeImports_exports.detectImportSpecifierSorting(namedImports.elements, preferences) && aliasDeclaration.kind === 273 /* ImportSpecifier */ && namedImports.elements.indexOf(aliasDeclaration) !== 0) { changes.delete(sourceFile, aliasDeclaration); changes.insertImportSpecifierAtIndex(sourceFile, aliasDeclaration, namedImports, 0); } @@ -136393,7 +139997,7 @@ ${lanes.join("\n")} } const promoteFromTypeOnly2 = clause.isTypeOnly && some([defaultImport, ...namedImports], (i) => (i == null ? void 0 : i.addAsTypeOnly) === 4 /* NotAllowed */); const existingSpecifiers = clause.namedBindings && ((_a2 = tryCast(clause.namedBindings, isNamedImports)) == null ? void 0 : _a2.elements); - const convertExistingToTypeOnly = promoteFromTypeOnly2 && compilerOptions.preserveValueImports && compilerOptions.isolatedModules; + const convertExistingToTypeOnly = promoteFromTypeOnly2 && (compilerOptions.preserveValueImports && compilerOptions.isolatedModules || compilerOptions.verbatimModuleSyntax); if (defaultImport) { Debug.assert(!clause.name, "Cannot add a default import to an import clause that already has one"); changes.insertNodeAt(sourceFile, clause.getStart(sourceFile), factory.createIdentifier(defaultImport.name), { suffix: ", " }); @@ -136403,14 +140007,15 @@ ${lanes.join("\n")} if (typeof preferences.organizeImportsIgnoreCase === "boolean") { ignoreCaseForSorting = preferences.organizeImportsIgnoreCase; } else if (existingSpecifiers) { - const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const targetImportSorting = ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (targetImportSorting !== 3 /* Both */) { ignoreCaseForSorting = targetImportSorting === 2 /* CaseInsensitive */; } } if (ignoreCaseForSorting === void 0) { - ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile) === 2 /* CaseInsensitive */; + ignoreCaseForSorting = ts_OrganizeImports_exports.detectSorting(sourceFile, preferences) === 2 /* CaseInsensitive */; } + const comparer = ts_OrganizeImports_exports.getOrganizeImportsComparer(preferences, ignoreCaseForSorting); const newSpecifiers = stableSort( namedImports.map((namedImport) => factory.createImportSpecifier( (!clause.isTypeOnly || promoteFromTypeOnly2) && needsTypeOnly(namedImport), @@ -136418,12 +140023,12 @@ ${lanes.join("\n")} void 0, factory.createIdentifier(namedImport.name) )), - (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, ignoreCaseForSorting) + (s1, s2) => ts_OrganizeImports_exports.compareImportOrExportSpecifiers(s1, s2, comparer) ); - const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers); + const specifierSort = (existingSpecifiers == null ? void 0 : existingSpecifiers.length) && ts_OrganizeImports_exports.detectImportSpecifierSorting(existingSpecifiers, preferences); if (specifierSort && !(ignoreCaseForSorting && specifierSort === 1 /* CaseSensitive */)) { for (const spec of newSpecifiers) { - const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, ignoreCaseForSorting); + const insertionIndex = convertExistingToTypeOnly && !spec.isTypeOnly ? 0 : ts_OrganizeImports_exports.getImportSpecifierInsertionIndex(existingSpecifiers, spec, comparer); changes.insertImportSpecifierAtIndex(sourceFile, spec, clause.namedBindings, insertionIndex); } } else if (existingSpecifiers == null ? void 0 : existingSpecifiers.length) { @@ -136463,10 +140068,10 @@ ${lanes.join("\n")} } } } - function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, position }) { - changes.insertText(sourceFile, position, namespacePrefix + "."); + function addNamespaceQualifier(changes, sourceFile, { namespacePrefix, usagePosition }) { + changes.insertText(sourceFile, usagePosition, namespacePrefix + "."); } - function addImportType(changes, sourceFile, { moduleSpecifier, position }, quotePreference) { + function addImportType(changes, sourceFile, { moduleSpecifier, usagePosition: position }, quotePreference) { changes.insertText(sourceFile, position, getImportTypePrefix(moduleSpecifier, quotePreference)); } function getImportTypePrefix(moduleSpecifier, quotePreference) { @@ -136942,10 +140547,10 @@ ${lanes.join("\n")} const info = errorCodeFixIdMap[errorCode]; if (!info) return emptyArray; - const { descriptions, fixId: fixId52, fixAllDescriptions } = info; + const { descriptions, fixId: fixId51, fixAllDescriptions } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => dispatchChanges(changes2, context, errorCode, span.start)); return [ - createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId52, fixAllDescriptions) + createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId51, fixAllDescriptions) ]; }, fixIds: [fixName, fixAddOverrideId, fixRemoveOverrideId], @@ -138277,7 +141882,7 @@ ${lanes.join("\n")} }, fixIds: [fixMissingMember, fixMissingFunctionDeclaration, fixMissingProperties, fixMissingAttributes], getAllCodeActions: (context) => { - const { program, fixId: fixId52 } = context; + const { program, fixId: fixId51 } = context; const checker = program.getTypeChecker(); const seen = /* @__PURE__ */ new Map(); const typeDeclToMembers = /* @__PURE__ */ new Map(); @@ -138287,11 +141892,11 @@ ${lanes.join("\n")} if (!info || !addToSeen(seen, getNodeId(info.parentDeclaration) + "#" + info.token.text)) { return; } - if (fixId52 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { + if (fixId51 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { addFunctionDeclaration(changes, context, info); - } else if (fixId52 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { + } else if (fixId51 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { addObjectLiteralProperties(changes, context, info); - } else if (fixId52 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { + } else if (fixId51 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { addJsxAttributes(changes, context, info); } else { if (info.kind === 1 /* Enum */) { @@ -138579,56 +142184,20 @@ ${lanes.join("\n")} } }); - // src/services/codefixes/fixEnableExperimentalDecorators.ts - function doChange12(changeTracker, configFile) { - setJsonCompilerOptionValue(changeTracker, configFile, "experimentalDecorators", factory.createTrue()); - } - var fixId27, errorCodes32; - var init_fixEnableExperimentalDecorators = __esm({ - "src/services/codefixes/fixEnableExperimentalDecorators.ts"() { - "use strict"; - init_ts4(); - init_ts_codefix(); - fixId27 = "enableExperimentalDecorators"; - errorCodes32 = [ - Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning.code - ]; - registerCodeFix({ - errorCodes: errorCodes32, - getCodeActions: function getCodeActionsToEnableExperimentalDecorators(context) { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => doChange12(changeTracker, configFile)); - return [createCodeFixActionWithoutFixAll(fixId27, changes, Diagnostics.Enable_the_experimentalDecorators_option_in_your_configuration_file)]; - }, - fixIds: [fixId27], - getAllCodeActions: (context) => codeFixAll(context, errorCodes32, (changes) => { - const { configFile } = context.program.getCompilerOptions(); - if (configFile === void 0) { - return void 0; - } - doChange12(changes, configFile); - }) - }); - } - }); - // src/services/codefixes/fixEnableJsxFlag.ts - function doChange13(changeTracker, configFile) { + function doChange12(changeTracker, configFile) { setJsonCompilerOptionValue(changeTracker, configFile, "jsx", factory.createStringLiteral("react")); } - var fixID, errorCodes33; + var fixID, errorCodes32; var init_fixEnableJsxFlag = __esm({ "src/services/codefixes/fixEnableJsxFlag.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixID = "fixEnableJsxFlag"; - errorCodes33 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; + errorCodes32 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; registerCodeFix({ - errorCodes: errorCodes33, + errorCodes: errorCodes32, getCodeActions: function getCodeActionsToFixEnableJsxFlag(context) { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { @@ -138636,19 +142205,19 @@ ${lanes.join("\n")} } const changes = ts_textChanges_exports.ChangeTracker.with( context, - (changeTracker) => doChange13(changeTracker, configFile) + (changeTracker) => doChange12(changeTracker, configFile) ); return [ createCodeFixActionWithoutFixAll(fixID, changes, Diagnostics.Enable_the_jsx_flag_in_your_configuration_file) ]; }, fixIds: [fixID], - getAllCodeActions: (context) => codeFixAll(context, errorCodes33, (changes) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes32, (changes) => { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { return void 0; } - doChange13(changes, configFile); + doChange12(changes, configFile); }) }); } @@ -138670,7 +142239,7 @@ ${lanes.join("\n")} } return void 0; } - function doChange14(changes, sourceFile, arg, expression) { + function doChange13(changes, sourceFile, arg, expression) { const callExpression = factory.createCallExpression( factory.createPropertyAccessExpression(factory.createIdentifier("Number"), factory.createIdentifier("isNaN")), /*typeArguments*/ @@ -138688,33 +142257,33 @@ ${lanes.join("\n")} const [_, suggestion] = flattenDiagnosticMessageText(messageText, "\n", 0).match(/\'(.*)\'/) || []; return suggestion; } - var fixId28, errorCodes34; + var fixId27, errorCodes33; var init_fixNaNEquality = __esm({ "src/services/codefixes/fixNaNEquality.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId28 = "fixNaNEquality"; - errorCodes34 = [ + fixId27 = "fixNaNEquality"; + errorCodes33 = [ Diagnostics.This_condition_will_always_return_0.code ]; registerCodeFix({ - errorCodes: errorCodes34, + errorCodes: errorCodes33, getCodeActions(context) { const { sourceFile, span, program } = context; const info = getInfo8(program, sourceFile, span); if (info === void 0) return; const { suggestion, expression, arg } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, sourceFile, arg, expression)); - return [createCodeFixAction(fixId28, changes, [Diagnostics.Use_0, suggestion], fixId28, Diagnostics.Use_Number_isNaN_in_all_conditions)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange13(t, sourceFile, arg, expression)); + return [createCodeFixAction(fixId27, changes, [Diagnostics.Use_0, suggestion], fixId27, Diagnostics.Use_Number_isNaN_in_all_conditions)]; }, - fixIds: [fixId28], + fixIds: [fixId27], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes34, (changes, diag2) => { + return codeFixAll(context, errorCodes33, (changes, diag2) => { const info = getInfo8(context.program, diag2.file, createTextSpan(diag2.start, diag2.length)); if (info) { - doChange14(changes, diag2.file, info.arg, info.expression); + doChange13(changes, diag2.file, info.arg, info.expression); } }); } @@ -138770,32 +142339,32 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixPropertyAssignment.ts - function doChange15(changes, sourceFile, node) { + function doChange14(changes, sourceFile, node) { changes.replaceNode(sourceFile, node, factory.createPropertyAssignment(node.name, node.objectAssignmentInitializer)); } function getProperty2(sourceFile, pos) { return cast(getTokenAtPosition(sourceFile, pos).parent, isShorthandPropertyAssignment); } - var fixId29, errorCodes35; + var fixId28, errorCodes34; var init_fixPropertyAssignment = __esm({ "src/services/codefixes/fixPropertyAssignment.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId29 = "fixPropertyAssignment"; - errorCodes35 = [ + fixId28 = "fixPropertyAssignment"; + errorCodes34 = [ Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code ]; registerCodeFix({ - errorCodes: errorCodes35, - fixIds: [fixId29], + errorCodes: errorCodes34, + fixIds: [fixId28], getCodeActions(context) { const { sourceFile, span } = context; const property = getProperty2(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, context.sourceFile, property)); - return [createCodeFixAction(fixId29, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId29, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, context.sourceFile, property)); + return [createCodeFixAction(fixId28, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId28, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => doChange15(changes, diag2.file, getProperty2(diag2.file, diag2.start))) + getAllCodeActions: (context) => codeFixAll(context, errorCodes34, (changes, diag2) => doChange14(changes, diag2.file, getProperty2(diag2.file, diag2.start))) }); } }); @@ -138821,16 +142390,16 @@ ${lanes.join("\n")} changes.deleteRange(sourceFile, { pos: implementsToken.getStart(), end }); } } - var fixId30, errorCodes36; + var fixId29, errorCodes35; var init_fixExtendsInterfaceBecomesImplements = __esm({ "src/services/codefixes/fixExtendsInterfaceBecomesImplements.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId30 = "extendsInterfaceBecomesImplements"; - errorCodes36 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; + fixId29 = "extendsInterfaceBecomesImplements"; + errorCodes35 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; registerCodeFix({ - errorCodes: errorCodes36, + errorCodes: errorCodes35, getCodeActions(context) { const { sourceFile } = context; const nodes = getNodes2(sourceFile, context.span.start); @@ -138838,10 +142407,10 @@ ${lanes.join("\n")} return void 0; const { extendsToken, heritageClauses } = nodes; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChanges2(t, sourceFile, extendsToken, heritageClauses)); - return [createCodeFixAction(fixId30, changes, Diagnostics.Change_extends_to_implements, fixId30, Diagnostics.Change_all_extended_interfaces_to_implements)]; + return [createCodeFixAction(fixId29, changes, Diagnostics.Change_extends_to_implements, fixId29, Diagnostics.Change_all_extended_interfaces_to_implements)]; }, - fixIds: [fixId30], - getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { + fixIds: [fixId29], + getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes, diag2) => { const nodes = getNodes2(diag2.file, diag2.start); if (nodes) doChanges2(changes, diag2.file, nodes.extendsToken, nodes.heritageClauses); @@ -138857,39 +142426,39 @@ ${lanes.join("\n")} return { node, className: diagCode === didYouMeanStaticMemberCode ? getContainingClass(node).name.text : void 0 }; } } - function doChange16(changes, sourceFile, { node, className }) { + function doChange15(changes, sourceFile, { node, className }) { suppressLeadingAndTrailingTrivia(node); changes.replaceNode(sourceFile, node, factory.createPropertyAccessExpression(className ? factory.createIdentifier(className) : factory.createThis(), node)); } - var fixId31, didYouMeanStaticMemberCode, errorCodes37; + var fixId30, didYouMeanStaticMemberCode, errorCodes36; var init_fixForgottenThisPropertyAccess = __esm({ "src/services/codefixes/fixForgottenThisPropertyAccess.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId31 = "forgottenThisPropertyAccess"; + fixId30 = "forgottenThisPropertyAccess"; didYouMeanStaticMemberCode = Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code; - errorCodes37 = [ + errorCodes36 = [ Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, didYouMeanStaticMemberCode ]; registerCodeFix({ - errorCodes: errorCodes37, + errorCodes: errorCodes36, getCodeActions(context) { const { sourceFile } = context; const info = getInfo9(sourceFile, context.span.start, context.errorCode); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16(t, sourceFile, info)); - return [createCodeFixAction(fixId31, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId31, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange15(t, sourceFile, info)); + return [createCodeFixAction(fixId30, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId30, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; }, - fixIds: [fixId31], - getAllCodeActions: (context) => codeFixAll(context, errorCodes37, (changes, diag2) => { + fixIds: [fixId30], + getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => { const info = getInfo9(diag2.file, diag2.start, diag2.code); if (info) - doChange16(changes, context.sourceFile, info); + doChange15(changes, context.sourceFile, info); }) }); } @@ -138899,7 +142468,7 @@ ${lanes.join("\n")} function isValidCharacter(character) { return hasProperty(htmlEntity, character); } - function doChange17(changes, preferences, sourceFile, start, useHtmlEntity) { + function doChange16(changes, preferences, sourceFile, start, useHtmlEntity) { const character = sourceFile.getText()[start]; if (!isValidCharacter(character)) { return; @@ -138907,7 +142476,7 @@ ${lanes.join("\n")} const replacement = useHtmlEntity ? htmlEntity[character] : `{${quote(sourceFile, preferences, character)}}`; changes.replaceRangeWithText(sourceFile, { pos: start, end: start + 1 }, replacement); } - var fixIdExpression, fixIdHtmlEntity, errorCodes38, htmlEntity; + var fixIdExpression, fixIdHtmlEntity, errorCodes37, htmlEntity; var init_fixInvalidJsxCharacters = __esm({ "src/services/codefixes/fixInvalidJsxCharacters.ts"() { "use strict"; @@ -138915,16 +142484,16 @@ ${lanes.join("\n")} init_ts_codefix(); fixIdExpression = "fixInvalidJsxCharacters_expression"; fixIdHtmlEntity = "fixInvalidJsxCharacters_htmlEntity"; - errorCodes38 = [ + errorCodes37 = [ Diagnostics.Unexpected_token_Did_you_mean_or_gt.code, Diagnostics.Unexpected_token_Did_you_mean_or_rbrace.code ]; registerCodeFix({ - errorCodes: errorCodes38, + errorCodes: errorCodes37, fixIds: [fixIdExpression, fixIdHtmlEntity], getCodeActions(context) { const { sourceFile, preferences, span } = context; - const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToExpression = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -138932,7 +142501,7 @@ ${lanes.join("\n")} /* useHtmlEntity */ false )); - const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17( + const changeToHtmlEntity = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16( t, preferences, sourceFile, @@ -138946,7 +142515,7 @@ ${lanes.join("\n")} ]; }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes38, (changes, diagnostic) => doChange17(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); + return codeFixAll(context, errorCodes37, (changes, diagnostic) => doChange16(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); } }); htmlEntity = { @@ -138957,8 +142526,8 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixUnmatchedParameter.ts - function getDeleteAction(context, { name, signature, jsDocParameterTag }) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, signature, (t) => t !== jsDocParameterTag)); + function getDeleteAction(context, { name, jsDocHost, jsDocParameterTag }) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (changeTracker) => changeTracker.filterJSDocTags(context.sourceFile, jsDocHost, (t) => t !== jsDocParameterTag)); return createCodeFixAction( deleteUnmatchedParameter, changes, @@ -138997,14 +142566,15 @@ ${lanes.join("\n")} const token = getTokenAtPosition(sourceFile, pos); if (token.parent && isJSDocParameterTag(token.parent) && isIdentifier(token.parent.name)) { const jsDocParameterTag = token.parent; + const jsDocHost = getJSDocHost(jsDocParameterTag); const signature = getHostSignatureFromJSDoc(jsDocParameterTag); - if (signature) { - return { signature, name: token.parent.name, jsDocParameterTag }; + if (jsDocHost && signature) { + return { jsDocHost, signature, name: token.parent.name, jsDocParameterTag }; } } return void 0; } - var deleteUnmatchedParameter, renameUnmatchedParameter, errorCodes39; + var deleteUnmatchedParameter, renameUnmatchedParameter, errorCodes38; var init_fixUnmatchedParameter = __esm({ "src/services/codefixes/fixUnmatchedParameter.ts"() { "use strict"; @@ -139012,12 +142582,12 @@ ${lanes.join("\n")} init_ts_codefix(); deleteUnmatchedParameter = "deleteUnmatchedParameter"; renameUnmatchedParameter = "renameUnmatchedParameter"; - errorCodes39 = [ + errorCodes38 = [ Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code ]; registerCodeFix({ fixIds: [deleteUnmatchedParameter, renameUnmatchedParameter], - errorCodes: errorCodes39, + errorCodes: errorCodes38, getCodeActions: function getCodeActionsToFixUnmatchedParameter(context) { const { sourceFile, span } = context; const actions2 = []; @@ -139032,7 +142602,7 @@ ${lanes.join("\n")} getAllCodeActions: function getAllCodeActionsToFixUnmatchedParameter(context) { const tagsToSignature = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes39, ({ file, start }) => { + eachDiagnostic(context, errorCodes38, ({ file, start }) => { const info = getInfo10(file, start); if (info) { tagsToSignature.set(info.signature, append(tagsToSignature.get(info.signature), info.jsDocParameterTag)); @@ -139081,16 +142651,16 @@ ${lanes.join("\n")} function doNamespaceImportChange(changes, sourceFile, importDeclaration, program) { ts_refactor_exports.doChangeNamedToNamespaceOrDefault(sourceFile, program, changes, importDeclaration.parent); } - var fixId32, errorCodes40; + var fixId31, errorCodes39; var init_fixUnreferenceableDecoratorMetadata = __esm({ "src/services/codefixes/fixUnreferenceableDecoratorMetadata.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId32 = "fixUnreferenceableDecoratorMetadata"; - errorCodes40 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; + fixId31 = "fixUnreferenceableDecoratorMetadata"; + errorCodes39 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; registerCodeFix({ - errorCodes: errorCodes40, + errorCodes: errorCodes39, getCodeActions: (context) => { const importDeclaration = getImportDeclaration(context.sourceFile, context.program, context.span.start); if (!importDeclaration) @@ -139099,14 +142669,14 @@ ${lanes.join("\n")} const typeOnlyChanges = ts_textChanges_exports.ChangeTracker.with(context, (t) => doTypeOnlyImportChange(t, context.sourceFile, importDeclaration, context.program)); let actions2; if (namespaceChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); } if (typeOnlyChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId31, typeOnlyChanges, Diagnostics.Convert_to_type_only_import)); } return actions2; }, - fixIds: [fixId32] + fixIds: [fixId31] }); } }); @@ -139259,7 +142829,7 @@ ${lanes.join("\n")} function mayDeleteExpression(node) { return (isBinaryExpression(node.parent) && node.parent.left === node || (isPostfixUnaryExpression(node.parent) || isPrefixUnaryExpression(node.parent)) && node.parent.operand === node) && isExpressionStatement(node.parent.parent); } - var fixName3, fixIdPrefix, fixIdDelete, fixIdDeleteImports, fixIdInfer, errorCodes41; + var fixName3, fixIdPrefix, fixIdDelete, fixIdDeleteImports, fixIdInfer, errorCodes40; var init_fixUnusedIdentifier = __esm({ "src/services/codefixes/fixUnusedIdentifier.ts"() { "use strict"; @@ -139270,7 +142840,7 @@ ${lanes.join("\n")} fixIdDelete = "unusedIdentifier_delete"; fixIdDeleteImports = "unusedIdentifier_deleteImports"; fixIdInfer = "unusedIdentifier_infer"; - errorCodes41 = [ + errorCodes40 = [ Diagnostics._0_is_declared_but_its_value_is_never_read.code, Diagnostics._0_is_declared_but_never_used.code, Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code, @@ -139280,7 +142850,7 @@ ${lanes.join("\n")} Diagnostics.All_type_parameters_are_unused.code ]; registerCodeFix({ - errorCodes: errorCodes41, + errorCodes: errorCodes40, getCodeActions(context) { const { errorCode, sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); @@ -139366,7 +142936,7 @@ ${lanes.join("\n")} const { sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles(); - return codeFixAll(context, errorCodes41, (changes, diag2) => { + return codeFixAll(context, errorCodes40, (changes, diag2) => { const token = getTokenAtPosition(sourceFile, diag2.start); switch (context.fixId) { case fixIdPrefix: @@ -139438,7 +143008,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixUnreachableCode.ts - function doChange18(changes, sourceFile, start, length2, errorCode) { + function doChange17(changes, sourceFile, start, length2, errorCode) { const token = getTokenAtPosition(sourceFile, start); const statement = findAncestor(token, isStatement); if (statement.getStart(sourceFile) !== token.getStart(sourceFile)) { @@ -139486,31 +143056,31 @@ ${lanes.join("\n")} } return last2; } - var fixId33, errorCodes42; + var fixId32, errorCodes41; var init_fixUnreachableCode = __esm({ "src/services/codefixes/fixUnreachableCode.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId33 = "fixUnreachableCode"; - errorCodes42 = [Diagnostics.Unreachable_code_detected.code]; + fixId32 = "fixUnreachableCode"; + errorCodes41 = [Diagnostics.Unreachable_code_detected.code]; registerCodeFix({ - errorCodes: errorCodes42, + errorCodes: errorCodes41, getCodeActions(context) { const syntacticDiagnostics = context.program.getSyntacticDiagnostics(context.sourceFile, context.cancellationToken); if (syntacticDiagnostics.length) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); - return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unreachable_code, fixId33, Diagnostics.Remove_all_unreachable_code)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); + return [createCodeFixAction(fixId32, changes, Diagnostics.Remove_unreachable_code, fixId32, Diagnostics.Remove_all_unreachable_code)]; }, - fixIds: [fixId33], - getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start, diag2.length, diag2.code)) + fixIds: [fixId32], + getAllCodeActions: (context) => codeFixAll(context, errorCodes41, (changes, diag2) => doChange17(changes, diag2.file, diag2.start, diag2.length, diag2.code)) }); } }); // src/services/codefixes/fixUnusedLabel.ts - function doChange19(changes, sourceFile, start) { + function doChange18(changes, sourceFile, start) { const token = getTokenAtPosition(sourceFile, start); const labeledStatement = cast(token.parent, isLabeledStatement); const pos = token.getStart(sourceFile); @@ -139523,28 +143093,28 @@ ${lanes.join("\n")} ); changes.deleteRange(sourceFile, { pos, end }); } - var fixId34, errorCodes43; + var fixId33, errorCodes42; var init_fixUnusedLabel = __esm({ "src/services/codefixes/fixUnusedLabel.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId34 = "fixUnusedLabel"; - errorCodes43 = [Diagnostics.Unused_label.code]; + fixId33 = "fixUnusedLabel"; + errorCodes42 = [Diagnostics.Unused_label.code]; registerCodeFix({ - errorCodes: errorCodes43, + errorCodes: errorCodes42, getCodeActions(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId34, changes, Diagnostics.Remove_unused_label, fixId34, Diagnostics.Remove_all_unused_labels)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unused_label, fixId33, Diagnostics.Remove_all_unused_labels)]; }, - fixIds: [fixId34], - getAllCodeActions: (context) => codeFixAll(context, errorCodes43, (changes, diag2) => doChange19(changes, diag2.file, diag2.start)) + fixIds: [fixId33], + getAllCodeActions: (context) => codeFixAll(context, errorCodes42, (changes, diag2) => doChange18(changes, diag2.file, diag2.start)) }); } }); // src/services/codefixes/fixJSDocTypes.ts - function doChange20(changes, sourceFile, oldTypeNode, newType, checker) { + function doChange19(changes, sourceFile, oldTypeNode, newType, checker) { changes.replaceNode(sourceFile, oldTypeNode, checker.typeToTypeNode( newType, /*enclosingDeclaration*/ @@ -139593,7 +143163,7 @@ ${lanes.join("\n")} } return checker.getTypeFromTypeNode(node); } - var fixIdPlain, fixIdNullable, errorCodes44; + var fixIdPlain, fixIdNullable, errorCodes43; var init_fixJSDocTypes = __esm({ "src/services/codefixes/fixJSDocTypes.ts"() { "use strict"; @@ -139601,13 +143171,13 @@ ${lanes.join("\n")} init_ts_codefix(); fixIdPlain = "fixJSDocTypes_plain"; fixIdNullable = "fixJSDocTypes_nullable"; - errorCodes44 = [ + errorCodes43 = [ Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code, Diagnostics._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code, Diagnostics._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code ]; registerCodeFix({ - errorCodes: errorCodes44, + errorCodes: errorCodes43, getCodeActions(context) { const { sourceFile } = context; const checker = context.program.getTypeChecker(); @@ -139621,22 +143191,22 @@ ${lanes.join("\n")} actions2.push(fix(type, fixIdNullable, Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)); } return actions2; - function fix(type2, fixId52, fixAllDescription) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, sourceFile, typeNode, type2, checker)); - return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId52, fixAllDescription); + function fix(type2, fixId51, fixAllDescription) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange19(t, sourceFile, typeNode, type2, checker)); + return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId51, fixAllDescription); } }, fixIds: [fixIdPlain, fixIdNullable], getAllCodeActions(context) { - const { fixId: fixId52, program, sourceFile } = context; + const { fixId: fixId51, program, sourceFile } = context; const checker = program.getTypeChecker(); - return codeFixAll(context, errorCodes44, (changes, err) => { + return codeFixAll(context, errorCodes43, (changes, err) => { const info = getInfo11(err.file, err.start, checker); if (!info) return; const { typeNode, type } = info; - const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId52 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; - doChange20(changes, sourceFile, typeNode, fixedType, checker); + const fixedType = typeNode.kind === 317 /* JSDocNullableType */ && fixId51 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; + doChange19(changes, sourceFile, typeNode, fixedType, checker); }); } }); @@ -139644,7 +143214,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixMissingCallParentheses.ts - function doChange21(changes, sourceFile, name) { + function doChange20(changes, sourceFile, name) { changes.replaceNodeWithText(sourceFile, name, `${name.text}()`); } function getCallName(sourceFile, start) { @@ -139661,31 +143231,31 @@ ${lanes.join("\n")} } return void 0; } - var fixId35, errorCodes45; + var fixId34, errorCodes44; var init_fixMissingCallParentheses = __esm({ "src/services/codefixes/fixMissingCallParentheses.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId35 = "fixMissingCallParentheses"; - errorCodes45 = [ + fixId34 = "fixMissingCallParentheses"; + errorCodes44 = [ Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code ]; registerCodeFix({ - errorCodes: errorCodes45, - fixIds: [fixId35], + errorCodes: errorCodes44, + fixIds: [fixId34], getCodeActions(context) { const { sourceFile, span } = context; const callName = getCallName(sourceFile, span.start); if (!callName) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, context.sourceFile, callName)); - return [createCodeFixAction(fixId35, changes, Diagnostics.Add_missing_call_parentheses, fixId35, Diagnostics.Add_all_missing_call_parentheses)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, context.sourceFile, callName)); + return [createCodeFixAction(fixId34, changes, Diagnostics.Add_missing_call_parentheses, fixId34, Diagnostics.Add_all_missing_call_parentheses)]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes45, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes44, (changes, diag2) => { const callName = getCallName(diag2.file, diag2.start); if (callName) - doChange21(changes, diag2.file, callName); + doChange20(changes, diag2.file, callName); }) }); } @@ -139727,7 +143297,7 @@ ${lanes.join("\n")} returnType: getReturnType(containingFunction) }; } - function doChange22(changes, sourceFile, { insertBefore, returnType }) { + function doChange21(changes, sourceFile, { insertBefore, returnType }) { if (returnType) { const entityName = getEntityNameFromTypeNode(returnType); if (!entityName || entityName.kind !== 79 /* Identifier */ || entityName.text !== "Promise") { @@ -139736,36 +143306,36 @@ ${lanes.join("\n")} } changes.insertModifierBefore(sourceFile, 132 /* AsyncKeyword */, insertBefore); } - var fixId36, errorCodes46; + var fixId35, errorCodes45; var init_fixAwaitInSyncFunction = __esm({ "src/services/codefixes/fixAwaitInSyncFunction.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId36 = "fixAwaitInSyncFunction"; - errorCodes46 = [ + fixId35 = "fixAwaitInSyncFunction"; + errorCodes45 = [ Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code ]; registerCodeFix({ - errorCodes: errorCodes46, + errorCodes: errorCodes45, getCodeActions(context) { const { sourceFile, span } = context; const nodes = getNodes3(sourceFile, span.start); if (!nodes) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange22(t, sourceFile, nodes)); - return [createCodeFixAction(fixId36, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId36, Diagnostics.Add_all_missing_async_modifiers)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, sourceFile, nodes)); + return [createCodeFixAction(fixId35, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId35, Diagnostics.Add_all_missing_async_modifiers)]; }, - fixIds: [fixId36], + fixIds: [fixId35], getAllCodeActions: function getAllCodeActionsToFixAwaitInSyncFunction(context) { const seen = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes46, (changes, diag2) => { + return codeFixAll(context, errorCodes45, (changes, diag2) => { const nodes = getNodes3(diag2.file, diag2.start); if (!nodes || !addToSeen(seen, getNodeId(nodes.insertBefore))) return; - doChange22(changes, context.sourceFile, nodes); + doChange21(changes, context.sourceFile, nodes); }); } }); @@ -139773,7 +143343,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/fixPropertyOverrideAccessor.ts - function doChange23(file, start, length2, code, context) { + function doChange22(file, start, length2, code, context) { let startPosition; let endPosition; if (code === Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code) { @@ -139800,28 +143370,28 @@ ${lanes.join("\n")} } return generateAccessorFromProperty(file, context.program, startPosition, endPosition, context, Diagnostics.Generate_get_and_set_accessors.message); } - var errorCodes47, fixId37; + var errorCodes46, fixId36; var init_fixPropertyOverrideAccessor = __esm({ "src/services/codefixes/fixPropertyOverrideAccessor.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - errorCodes47 = [ + errorCodes46 = [ Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code, Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code ]; - fixId37 = "fixPropertyOverrideAccessor"; + fixId36 = "fixPropertyOverrideAccessor"; registerCodeFix({ - errorCodes: errorCodes47, + errorCodes: errorCodes46, getCodeActions(context) { - const edits = doChange23(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); + const edits = doChange22(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); if (edits) { - return [createCodeFixAction(fixId37, edits, Diagnostics.Generate_get_and_set_accessors, fixId37, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; + return [createCodeFixAction(fixId36, edits, Diagnostics.Generate_get_and_set_accessors, fixId36, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; } }, - fixIds: [fixId37], - getAllCodeActions: (context) => codeFixAll(context, errorCodes47, (changes, diag2) => { - const edits = doChange23(diag2.file, diag2.start, diag2.length, diag2.code, context); + fixIds: [fixId36], + getAllCodeActions: (context) => codeFixAll(context, errorCodes46, (changes, diag2) => { + const edits = doChange22(diag2.file, diag2.start, diag2.length, diag2.code, context); if (edits) { for (const edit of edits) { changes.pushRaw(context.sourceFile, edit); @@ -139868,7 +143438,7 @@ ${lanes.join("\n")} } return errorCode; } - function doChange24(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { + function doChange23(changes, sourceFile, token, errorCode, program, cancellationToken, markSeen, host, preferences) { if (!isParameterPropertyModifier(token.kind) && token.kind !== 79 /* Identifier */ && token.kind !== 25 /* DotDotDotToken */ && token.kind !== 108 /* ThisKeyword */) { return void 0; } @@ -140762,14 +144332,14 @@ ${lanes.join("\n")} } } } - var fixId38, errorCodes48; + var fixId37, errorCodes47; var init_inferFromUsage = __esm({ "src/services/codefixes/inferFromUsage.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId38 = "inferFromUsage"; - errorCodes48 = [ + fixId37 = "inferFromUsage"; + errorCodes47 = [ // Variable declarations Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code, // Variable uses @@ -140803,13 +144373,13 @@ ${lanes.join("\n")} Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code ]; registerCodeFix({ - errorCodes: errorCodes48, + errorCodes: errorCodes47, getCodeActions(context) { const { sourceFile, program, span: { start }, errorCode, cancellationToken, host, preferences } = context; const token = getTokenAtPosition(sourceFile, start); let declaration; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => { - declaration = doChange24( + declaration = doChange23( changes2, sourceFile, token, @@ -140823,14 +144393,14 @@ ${lanes.join("\n")} ); }); const name = declaration && getNameOfDeclaration(declaration); - return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId38, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId38, Diagnostics.Infer_all_types_from_usage)]; + return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId37, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId37, Diagnostics.Infer_all_types_from_usage)]; }, - fixIds: [fixId38], + fixIds: [fixId37], getAllCodeActions(context) { const { sourceFile, program, cancellationToken, host, preferences } = context; const markSeen = nodeSeenTracker(); - return codeFixAll(context, errorCodes48, (changes, err) => { - doChange24(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); + return codeFixAll(context, errorCodes47, (changes, err) => { + doChange23(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); }); } }); @@ -140861,22 +144431,22 @@ ${lanes.join("\n")} return { returnTypeNode, returnType, promisedTypeNode, promisedType }; } } - function doChange25(changes, sourceFile, returnTypeNode, promisedTypeNode) { + function doChange24(changes, sourceFile, returnTypeNode, promisedTypeNode) { changes.replaceNode(sourceFile, returnTypeNode, factory.createTypeReferenceNode("Promise", [promisedTypeNode])); } - var fixId39, errorCodes49; + var fixId38, errorCodes48; var init_fixReturnTypeInAsyncFunction = __esm({ "src/services/codefixes/fixReturnTypeInAsyncFunction.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId39 = "fixReturnTypeInAsyncFunction"; - errorCodes49 = [ + fixId38 = "fixReturnTypeInAsyncFunction"; + errorCodes48 = [ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code ]; registerCodeFix({ - errorCodes: errorCodes49, - fixIds: [fixId39], + errorCodes: errorCodes48, + fixIds: [fixId38], getCodeActions: function getCodeActionsToFixReturnTypeInAsyncFunction(context) { const { sourceFile, program, span } = context; const checker = program.getTypeChecker(); @@ -140885,23 +144455,23 @@ ${lanes.join("\n")} return void 0; } const { returnTypeNode, returnType, promisedTypeNode, promisedType } = info; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, sourceFile, returnTypeNode, promisedTypeNode)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange24(t, sourceFile, returnTypeNode, promisedTypeNode)); return [createCodeFixAction( - fixId39, + fixId38, changes, [ Diagnostics.Replace_0_with_Promise_1, checker.typeToString(returnType), checker.typeToString(promisedType) ], - fixId39, + fixId38, Diagnostics.Fix_all_incorrect_return_type_of_an_async_functions )]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes49, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes48, (changes, diag2) => { const info = getInfo12(diag2.file, context.program.getTypeChecker(), diag2.start); if (info) { - doChange25(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); + doChange24(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); } }) }); @@ -140915,20 +144485,20 @@ ${lanes.join("\n")} changes.insertCommentBeforeLine(sourceFile, lineNumber, position, " @ts-ignore"); } } - var fixName4, fixId40, errorCodes50; + var fixName4, fixId39, errorCodes49; var init_disableJsDiagnostics = __esm({ "src/services/codefixes/disableJsDiagnostics.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixName4 = "disableJsDiagnostics"; - fixId40 = "disableJsDiagnostics"; - errorCodes50 = mapDefined(Object.keys(Diagnostics), (key) => { + fixId39 = "disableJsDiagnostics"; + errorCodes49 = mapDefined(Object.keys(Diagnostics), (key) => { const diag2 = Diagnostics[key]; return diag2.category === 1 /* Error */ ? diag2.code : void 0; }); registerCodeFix({ - errorCodes: errorCodes50, + errorCodes: errorCodes49, getCodeActions: function getCodeActionsToDisableJsDiagnostics(context) { const { sourceFile, program, span, host, formatContext } = context; if (!isInJSFile(sourceFile) || !isCheckJsEnabledForFile(sourceFile, program.getCompilerOptions())) { @@ -140946,14 +144516,14 @@ ${lanes.join("\n")} ) ]; if (ts_textChanges_exports.isValidLocationToAddComment(sourceFile, span.start)) { - fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId40, Diagnostics.Add_ts_ignore_to_all_error_messages)); + fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId39, Diagnostics.Add_ts_ignore_to_all_error_messages)); } return fixes; }, - fixIds: [fixId40], + fixIds: [fixId39], getAllCodeActions: (context) => { const seenLines = /* @__PURE__ */ new Set(); - return codeFixAll(context, errorCodes50, (changes, diag2) => { + return codeFixAll(context, errorCodes49, (changes, diag2) => { if (ts_textChanges_exports.isValidLocationToAddComment(diag2.file, diag2.start)) { makeChange8(changes, diag2.file, diag2.start, seenLines); } @@ -141563,18 +145133,17 @@ ${lanes.join("\n")} } function tryGetAutoImportableReferenceFromTypeNode(importTypeNode, scriptTarget) { let symbols; - const typeNode = visitNode(importTypeNode, visit); + const typeNode = visitNode(importTypeNode, visit, isTypeNode); if (symbols && typeNode) { return { typeNode, symbols }; } function visit(node) { - var _a2; if (isLiteralImportTypeNode(node) && node.qualifier) { const firstIdentifier = getFirstIdentifier(node.qualifier); const name = getNameForExportedSymbol(firstIdentifier.symbol, scriptTarget); const qualifier = name !== firstIdentifier.text ? replaceFirstIdentifierOfEntityName(node.qualifier, factory.createIdentifier(name)) : node.qualifier; symbols = append(symbols, firstIdentifier.symbol); - const typeArguments = (_a2 = node.typeArguments) == null ? void 0 : _a2.map(visit); + const typeArguments = visitNodes2(node.typeArguments, visit, isTypeNode); return factory.createTypeReferenceNode(qualifier, typeArguments); } return visitEachChild(node, visit, nullTransformationContext); @@ -141725,9 +145294,7 @@ ${lanes.join("\n")} return factory.createGetAccessorDeclaration( modifiers, accessorName, - /*parameters*/ - void 0, - // TODO: GH#18217 + [], type, factory.createBlock( [ @@ -142052,7 +145619,7 @@ ${lanes.join("\n")} } return void 0; } - var fixName6, fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer, errorCodes51; + var fixName6, fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer, errorCodes50; var init_fixStrictClassInitialization = __esm({ "src/services/codefixes/fixStrictClassInitialization.ts"() { "use strict"; @@ -142062,9 +145629,9 @@ ${lanes.join("\n")} fixIdAddDefiniteAssignmentAssertions = "addMissingPropertyDefiniteAssignmentAssertions"; fixIdAddUndefinedType = "addMissingPropertyUndefinedType"; fixIdAddInitializer = "addMissingPropertyInitializer"; - errorCodes51 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; + errorCodes50 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; registerCodeFix({ - errorCodes: errorCodes51, + errorCodes: errorCodes50, getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) { const info = getInfo13(context.sourceFile, context.span.start); if (!info) @@ -142077,7 +145644,7 @@ ${lanes.join("\n")} }, fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes51, (changes, diag2) => { + return codeFixAll(context, errorCodes50, (changes, diag2) => { const info = getInfo13(diag2.file, diag2.start); if (!info) return; @@ -142105,7 +145672,7 @@ ${lanes.join("\n")} }); // src/services/codefixes/requireInTs.ts - function doChange26(changes, sourceFile, info) { + function doChange25(changes, sourceFile, info) { const { allowSyntheticDefaults, defaultImportName, namedImports, statement, required } = info; changes.replaceNode(sourceFile, statement, defaultImportName && !allowSyntheticDefaults ? factory.createImportEqualsDeclaration( /*modifiers*/ @@ -142167,29 +145734,29 @@ ${lanes.join("\n")} return factory.createNamedImports(importSpecifiers); } } - var fixId41, errorCodes52; + var fixId40, errorCodes51; var init_requireInTs = __esm({ "src/services/codefixes/requireInTs.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId41 = "requireInTs"; - errorCodes52 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; + fixId40 = "requireInTs"; + errorCodes51 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; registerCodeFix({ - errorCodes: errorCodes52, + errorCodes: errorCodes51, getCodeActions(context) { const info = getInfo14(context.sourceFile, context.program, context.span.start); if (!info) { return void 0; } - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, context.sourceFile, info)); - return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_require_to_import, fixId41, Diagnostics.Convert_all_require_to_import)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, context.sourceFile, info)); + return [createCodeFixAction(fixId40, changes, Diagnostics.Convert_require_to_import, fixId40, Diagnostics.Convert_all_require_to_import)]; }, - fixIds: [fixId41], - getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { + fixIds: [fixId40], + getAllCodeActions: (context) => codeFixAll(context, errorCodes51, (changes, diag2) => { const info = getInfo14(diag2.file, context.program, diag2.start); if (info) { - doChange26(changes, context.sourceFile, info); + doChange25(changes, context.sourceFile, info); } }) }); @@ -142209,7 +145776,7 @@ ${lanes.join("\n")} return { importNode, name, moduleSpecifier: importNode.moduleSpecifier }; } } - function doChange27(changes, sourceFile, info, preferences) { + function doChange26(changes, sourceFile, info, preferences) { changes.replaceNode(sourceFile, info.importNode, makeImport( info.name, /*namedImports*/ @@ -142218,29 +145785,29 @@ ${lanes.join("\n")} getQuotePreference(sourceFile, preferences) )); } - var fixId42, errorCodes53; + var fixId41, errorCodes52; var init_useDefaultImport = __esm({ "src/services/codefixes/useDefaultImport.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId42 = "useDefaultImport"; - errorCodes53 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; + fixId41 = "useDefaultImport"; + errorCodes52 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; registerCodeFix({ - errorCodes: errorCodes53, + errorCodes: errorCodes52, getCodeActions(context) { const { sourceFile, span: { start } } = context; const info = getInfo15(sourceFile, start); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, info, context.preferences)); - return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_default_import, fixId42, Diagnostics.Convert_all_to_default_imports)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange26(t, sourceFile, info, context.preferences)); + return [createCodeFixAction(fixId41, changes, Diagnostics.Convert_to_default_import, fixId41, Diagnostics.Convert_all_to_default_imports)]; }, - fixIds: [fixId42], - getAllCodeActions: (context) => codeFixAll(context, errorCodes53, (changes, diag2) => { + fixIds: [fixId41], + getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { const info = getInfo15(diag2.file, diag2.start); if (info) - doChange27(changes, diag2.file, info, context.preferences); + doChange26(changes, diag2.file, info, context.preferences); }) }); } @@ -142255,27 +145822,27 @@ ${lanes.join("\n")} const newText = numericLiteral.getText(sourceFile) + "n"; changeTracker.replaceNode(sourceFile, numericLiteral, factory.createBigIntLiteral(newText)); } - var fixId43, errorCodes54; + var fixId42, errorCodes53; var init_useBigintLiteral = __esm({ "src/services/codefixes/useBigintLiteral.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId43 = "useBigintLiteral"; - errorCodes54 = [ + fixId42 = "useBigintLiteral"; + errorCodes53 = [ Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code ]; registerCodeFix({ - errorCodes: errorCodes54, + errorCodes: errorCodes53, getCodeActions: function getCodeActionsToUseBigintLiteral(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange9(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId43, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId43, Diagnostics.Convert_all_to_bigint_numeric_literals)]; + return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId42, Diagnostics.Convert_all_to_bigint_numeric_literals)]; } }, - fixIds: [fixId43], + fixIds: [fixId42], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes54, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes53, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); } }); } @@ -142288,7 +145855,7 @@ ${lanes.join("\n")} Debug.assert(token.parent.kind === 202 /* ImportType */, "Token parent should be an ImportType"); return token.parent; } - function doChange28(changes, sourceFile, importType) { + function doChange27(changes, sourceFile, importType) { const newTypeNode = factory.updateImportTypeNode( importType, importType.argument, @@ -142300,25 +145867,25 @@ ${lanes.join("\n")} ); changes.replaceNode(sourceFile, importType, newTypeNode); } - var fixIdAddMissingTypeof, fixId44, errorCodes55; + var fixIdAddMissingTypeof, fixId43, errorCodes54; var init_fixAddModuleReferTypeMissingTypeof = __esm({ "src/services/codefixes/fixAddModuleReferTypeMissingTypeof.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixIdAddMissingTypeof = "fixAddModuleReferTypeMissingTypeof"; - fixId44 = fixIdAddMissingTypeof; - errorCodes55 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; + fixId43 = fixIdAddMissingTypeof; + errorCodes54 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; registerCodeFix({ - errorCodes: errorCodes55, + errorCodes: errorCodes54, getCodeActions: function getCodeActionsToAddMissingTypeof(context) { const { sourceFile, span } = context; const importType = getImportTypeNode(sourceFile, span.start); - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, importType)); - return [createCodeFixAction(fixId44, changes, Diagnostics.Add_missing_typeof, fixId44, Diagnostics.Add_missing_typeof)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, sourceFile, importType)); + return [createCodeFixAction(fixId43, changes, Diagnostics.Add_missing_typeof, fixId43, Diagnostics.Add_missing_typeof)]; }, - fixIds: [fixId44], - getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => doChange28(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) + fixIds: [fixId43], + getAllCodeActions: (context) => codeFixAll(context, errorCodes54, (changes, diag2) => doChange27(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) }); } }); @@ -142337,7 +145904,7 @@ ${lanes.join("\n")} return void 0; return binaryExpr; } - function doChange29(changeTracker, sf, node) { + function doChange28(changeTracker, sf, node) { const jsx = flattenInvalidBinaryExpr(node); if (jsx) changeTracker.replaceNode(sf, node, factory.createJsxFragment(factory.createJsxOpeningFragment(), jsx, factory.createJsxJsxClosingFragment())); @@ -142360,30 +145927,30 @@ ${lanes.join("\n")} return void 0; } } - var fixID2, errorCodes56; + var fixID2, errorCodes55; var init_wrapJsxInFragment = __esm({ "src/services/codefixes/wrapJsxInFragment.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixID2 = "wrapJsxInFragment"; - errorCodes56 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; + errorCodes55 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; registerCodeFix({ - errorCodes: errorCodes56, + errorCodes: errorCodes55, getCodeActions: function getCodeActionsToWrapJsxInFragment(context) { const { sourceFile, span } = context; const node = findNodeToFix(sourceFile, span.start); if (!node) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, node)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, sourceFile, node)); return [createCodeFixAction(fixID2, changes, Diagnostics.Wrap_in_JSX_fragment, fixID2, Diagnostics.Wrap_all_unparented_JSX_in_JSX_fragment)]; }, fixIds: [fixID2], - getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => { const node = findNodeToFix(context.sourceFile, diag2.start); if (!node) return void 0; - doChange29(changes, context.sourceFile, node); + doChange28(changes, context.sourceFile, node); }) }); } @@ -142403,7 +145970,7 @@ ${lanes.join("\n")} function createTypeAliasFromInterface(declaration, type) { return factory.createTypeAliasDeclaration(declaration.modifiers, declaration.name, declaration.typeParameters, type); } - function doChange30(changes, sourceFile, { indexSignature, container }) { + function doChange29(changes, sourceFile, { indexSignature, container }) { const members = isInterfaceDeclaration(container) ? container.members : container.type.members; const otherMembers = members.filter((member) => !isIndexSignatureDeclaration(member)); const parameter = first(indexSignature.parameters); @@ -142430,48 +145997,48 @@ ${lanes.join("\n")} ]); changes.replaceNode(sourceFile, container, createTypeAliasFromInterface(container, intersectionType)); } - var fixId45, errorCodes57; + var fixId44, errorCodes56; var init_convertToMappedObjectType = __esm({ "src/services/codefixes/convertToMappedObjectType.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId45 = "fixConvertToMappedObjectType"; - errorCodes57 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; + fixId44 = "fixConvertToMappedObjectType"; + errorCodes56 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; registerCodeFix({ - errorCodes: errorCodes57, + errorCodes: errorCodes56, getCodeActions: function getCodeActionsToConvertToMappedTypeObject(context) { const { sourceFile, span } = context; const info = getInfo16(sourceFile, span.start); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, info)); const name = idText(info.container.name); - return [createCodeFixAction(fixId45, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId45, [Diagnostics.Convert_0_to_mapped_object_type, name])]; + return [createCodeFixAction(fixId44, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId44, [Diagnostics.Convert_0_to_mapped_object_type, name])]; }, - fixIds: [fixId45], - getAllCodeActions: (context) => codeFixAll(context, errorCodes57, (changes, diag2) => { + fixIds: [fixId44], + getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { const info = getInfo16(diag2.file, diag2.start); if (info) - doChange30(changes, diag2.file, info); + doChange29(changes, diag2.file, info); }) }); } }); // src/services/codefixes/removeAccidentalCallParentheses.ts - var fixId46, errorCodes58; + var fixId45, errorCodes57; var init_removeAccidentalCallParentheses = __esm({ "src/services/codefixes/removeAccidentalCallParentheses.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId46 = "removeAccidentalCallParentheses"; - errorCodes58 = [ + fixId45 = "removeAccidentalCallParentheses"; + errorCodes57 = [ Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code ]; registerCodeFix({ - errorCodes: errorCodes58, + errorCodes: errorCodes57, getCodeActions(context) { const callExpression = findAncestor(getTokenAtPosition(context.sourceFile, context.span.start), isCallExpression); if (!callExpression) { @@ -142480,9 +146047,9 @@ ${lanes.join("\n")} const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { t.deleteRange(context.sourceFile, { pos: callExpression.expression.end, end: callExpression.end }); }); - return [createCodeFixActionWithoutFixAll(fixId46, changes, Diagnostics.Remove_parentheses)]; + return [createCodeFixActionWithoutFixAll(fixId45, changes, Diagnostics.Remove_parentheses)]; }, - fixIds: [fixId46] + fixIds: [fixId45] }); } }); @@ -142511,27 +146078,27 @@ ${lanes.join("\n")} } changeTracker.replaceNode(sourceFile, expressionToReplace, awaitExpression.expression); } - var fixId47, errorCodes59; + var fixId46, errorCodes58; var init_removeUnnecessaryAwait = __esm({ "src/services/codefixes/removeUnnecessaryAwait.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId47 = "removeUnnecessaryAwait"; - errorCodes59 = [ + fixId46 = "removeUnnecessaryAwait"; + errorCodes58 = [ Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code ]; registerCodeFix({ - errorCodes: errorCodes59, + errorCodes: errorCodes58, getCodeActions: function getCodeActionsToRemoveUnnecessaryAwait(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange10(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId47, changes, Diagnostics.Remove_unnecessary_await, fixId47, Diagnostics.Remove_all_unnecessary_uses_of_await)]; + return [createCodeFixAction(fixId46, changes, Diagnostics.Remove_unnecessary_await, fixId46, Diagnostics.Remove_all_unnecessary_uses_of_await)]; } }, - fixIds: [fixId47], + fixIds: [fixId46], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes59, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes58, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); } }); } @@ -142573,26 +146140,26 @@ ${lanes.join("\n")} importDeclaration.assertClause )); } - var errorCodes60, fixId48; + var errorCodes59, fixId47; var init_splitTypeOnlyImport = __esm({ "src/services/codefixes/splitTypeOnlyImport.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - errorCodes60 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; - fixId48 = "splitTypeOnlyImport"; + errorCodes59 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; + fixId47 = "splitTypeOnlyImport"; registerCodeFix({ - errorCodes: errorCodes60, - fixIds: [fixId48], + errorCodes: errorCodes59, + fixIds: [fixId47], getCodeActions: function getCodeActionsToSplitTypeOnlyImport(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { return splitTypeOnlyImport(t, getImportDeclaration2(context.sourceFile, context.span), context); }); if (changes.length) { - return [createCodeFixAction(fixId48, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId48, Diagnostics.Split_all_invalid_type_only_imports)]; + return [createCodeFixAction(fixId47, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId47, Diagnostics.Split_all_invalid_type_only_imports)]; } }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes60, (changes, error) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes59, (changes, error) => { splitTypeOnlyImport(changes, getImportDeclaration2(context.sourceFile, error), context); }) }); @@ -142614,43 +146181,43 @@ ${lanes.join("\n")} return; return { symbol, token: constToken }; } - function doChange31(changes, sourceFile, token) { + function doChange30(changes, sourceFile, token) { changes.replaceNode(sourceFile, token, factory.createToken(119 /* LetKeyword */)); } - var fixId49, errorCodes61; + var fixId48, errorCodes60; var init_convertConstToLet = __esm({ "src/services/codefixes/convertConstToLet.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId49 = "fixConvertConstToLet"; - errorCodes61 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; + fixId48 = "fixConvertConstToLet"; + errorCodes60 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; registerCodeFix({ - errorCodes: errorCodes61, + errorCodes: errorCodes60, getCodeActions: function getCodeActionsToConvertConstToLet(context) { const { sourceFile, span, program } = context; const info = getInfo17(sourceFile, span.start, program); if (info === void 0) return; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info.token)); - return [createCodeFixActionMaybeFixAll(fixId49, changes, Diagnostics.Convert_const_to_let, fixId49, Diagnostics.Convert_all_const_to_let)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, sourceFile, info.token)); + return [createCodeFixActionMaybeFixAll(fixId48, changes, Diagnostics.Convert_const_to_let, fixId48, Diagnostics.Convert_all_const_to_let)]; }, getAllCodeActions: (context) => { const { program } = context; const seen = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes61, (diag2) => { + eachDiagnostic(context, errorCodes60, (diag2) => { const info = getInfo17(diag2.file, diag2.start, program); if (info) { if (addToSeen(seen, getSymbolId(info.symbol))) { - return doChange31(changes, diag2.file, info.token); + return doChange30(changes, diag2.file, info.token); } } return void 0; }); })); }, - fixIds: [fixId49] + fixIds: [fixId48] }); } }); @@ -142660,40 +146227,40 @@ ${lanes.join("\n")} const node = getTokenAtPosition(sourceFile, pos); return node.kind === 26 /* SemicolonToken */ && node.parent && (isObjectLiteralExpression(node.parent) || isArrayLiteralExpression(node.parent)) ? { node } : void 0; } - function doChange32(changes, sourceFile, { node }) { + function doChange31(changes, sourceFile, { node }) { const newNode = factory.createToken(27 /* CommaToken */); changes.replaceNode(sourceFile, node, newNode); } - var fixId50, expectedErrorCode, errorCodes62; + var fixId49, expectedErrorCode, errorCodes61; var init_fixExpectedComma = __esm({ "src/services/codefixes/fixExpectedComma.ts"() { "use strict"; init_ts4(); init_ts_codefix(); - fixId50 = "fixExpectedComma"; + fixId49 = "fixExpectedComma"; expectedErrorCode = Diagnostics._0_expected.code; - errorCodes62 = [expectedErrorCode]; + errorCodes61 = [expectedErrorCode]; registerCodeFix({ - errorCodes: errorCodes62, + errorCodes: errorCodes61, getCodeActions(context) { const { sourceFile } = context; const info = getInfo18(sourceFile, context.span.start, context.errorCode); if (!info) return void 0; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(t, sourceFile, info)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, info)); return [createCodeFixAction( - fixId50, + fixId49, changes, [Diagnostics.Change_0_to_1, ";", ","], - fixId50, + fixId49, [Diagnostics.Change_0_to_1, ";", ","] )]; }, - fixIds: [fixId50], - getAllCodeActions: (context) => codeFixAll(context, errorCodes62, (changes, diag2) => { + fixIds: [fixId49], + getAllCodeActions: (context) => codeFixAll(context, errorCodes61, (changes, diag2) => { const info = getInfo18(diag2.file, diag2.start, diag2.code); if (info) - doChange32(changes, context.sourceFile, info); + doChange31(changes, context.sourceFile, info); }) }); } @@ -142749,29 +146316,29 @@ ${lanes.join("\n")} return node.typeArguments; } } - var fixName7, fixId51, errorCodes63; + var fixName7, fixId50, errorCodes62; var init_fixAddVoidToPromise = __esm({ "src/services/codefixes/fixAddVoidToPromise.ts"() { "use strict"; init_ts4(); init_ts_codefix(); fixName7 = "addVoidToPromise"; - fixId51 = "addVoidToPromise"; - errorCodes63 = [ + fixId50 = "addVoidToPromise"; + errorCodes62 = [ Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code, Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code ]; registerCodeFix({ - errorCodes: errorCodes63, - fixIds: [fixId51], + errorCodes: errorCodes62, + fixIds: [fixId50], getCodeActions(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange11(t, context.sourceFile, context.span, context.program)); if (changes.length > 0) { - return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId51, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; + return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId50, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; } }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes63, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); + return codeFixAll(context, errorCodes62, (changes, diag2) => makeChange11(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); } }); } @@ -142857,7 +146424,6 @@ ${lanes.join("\n")} init_fixClassDoesntImplementInheritedAbstractMember(); init_fixClassSuperMustPrecedeThisAccess(); init_fixConstructorForDerivedNeedSuperCall(); - init_fixEnableExperimentalDecorators(); init_fixEnableJsxFlag(); init_fixNaNEquality(); init_fixModuleAndTargetOptions(); @@ -142950,9 +146516,9 @@ ${lanes.join("\n")} (_b = host.log) == null ? void 0 : _b.call(host, `${logPrefix}: response is ${skippedAny ? "incomplete" : "complete"}`); (_c = host.log) == null ? void 0 : _c.call(host, `${logPrefix}: ${timestamp() - start}`); return result; - function tryResolve(exportInfo, symbolName2, isFromAmbientModule) { + function tryResolve(exportInfo, isFromAmbientModule) { if (isFromAmbientModule) { - const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite); + const result3 = resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite); if (result3) { ambientCount++; } @@ -142960,7 +146526,7 @@ ${lanes.join("\n")} } const shouldResolveModuleSpecifier = needsFullResolution || preferences.allowIncompleteCompletions && resolvedCount < moduleSpecifierResolutionLimit; const shouldGetModuleSpecifierFromCache = !shouldResolveModuleSpecifier && preferences.allowIncompleteCompletions && cacheAttemptCount < moduleSpecifierResolutionCacheAttemptLimit; - const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, symbolName2, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; + const result2 = shouldResolveModuleSpecifier || shouldGetModuleSpecifierFromCache ? resolver.getModuleSpecifierForBestExportInfo(exportInfo, position, isValidTypeOnlyUseSite, shouldGetModuleSpecifierFromCache) : void 0; if (!shouldResolveModuleSpecifier && !shouldGetModuleSpecifierFromCache || shouldGetModuleSpecifierFromCache && !result2) { skippedAny = true; } @@ -142987,7 +146553,7 @@ ${lanes.join("\n")} const compilerOptions = program.getCompilerOptions(); const incompleteCompletionsCache = preferences.allowIncompleteCompletions ? (_a2 = host.getIncompleteCompletionsCache) == null ? void 0 : _a2.call(host) : void 0; if (incompleteCompletionsCache && completionKind === 3 /* TriggerForIncompleteCompletions */ && previousToken && isIdentifier(previousToken)) { - const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken); + const incompleteContinuation = continuePreviousIncompleteResponse(incompleteCompletionsCache, sourceFile, previousToken, program, host, preferences, cancellationToken, position); if (incompleteContinuation) { return incompleteContinuation; } @@ -143056,10 +146622,11 @@ ${lanes.join("\n")} function completionEntryDataIsResolved(data) { return !!(data == null ? void 0 : data.moduleSpecifier); } - function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken) { + function continuePreviousIncompleteResponse(cache, file, location, program, host, preferences, cancellationToken, position) { const previousResponse = cache.get(); if (!previousResponse) return void 0; + const touchNode = getTouchingPropertyName(file, position); const lowerCaseTokenText = location.text.toLowerCase(); const exportMap = getExportInfoMap(file, host, program, preferences, cancellationToken); const newEntries = resolvingModuleSpecifiers( @@ -143083,7 +146650,7 @@ ${lanes.join("\n")} } const { origin } = Debug.checkDefined(getAutoImportSymbolFromCompletionEntryData(entry.name, entry.data, program, host)); const info = exportMap.get(file.path, entry.data.exportMapKey); - const result = info && context.tryResolve(info, entry.name, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); + const result = info && context.tryResolve(info, !isExternalModuleNameRelative(stripQuotes(origin.moduleSymbol.name))); if (result === "skipped") return entry; if (!result || result === "failed") { @@ -143108,6 +146675,7 @@ ${lanes.join("\n")} ); previousResponse.entries = newEntries; previousResponse.flags = (previousResponse.flags || 0) | 4 /* IsContinuation */; + previousResponse.optionalReplacementSpan = getOptionalReplacementSpan(touchNode); return previousResponse; } function jsdocCompletionInfo(entries) { @@ -143202,6 +146770,7 @@ ${lanes.join("\n")} void 0, contextToken, location, + position, sourceFile, host, program, @@ -143315,10 +146884,10 @@ ${lanes.join("\n")} } else if (!tracker.hasValue(type.value)) { switch (typeof type.value) { case "object": - elements.push(factory.createBigIntLiteral(type.value)); + elements.push(type.value.negative ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createBigIntLiteral({ negative: false, base10Value: type.value.base10Value })) : factory.createBigIntLiteral(type.value)); break; case "number": - elements.push(factory.createNumericLiteral(type.value)); + elements.push(type.value < 0 ? factory.createPrefixUnaryExpression(40 /* MinusToken */, factory.createNumericLiteral(-type.value)) : factory.createNumericLiteral(type.value)); break; case "string": elements.push(factory.createStringLiteral(type.value, quotePreference === 0 /* Single */)); @@ -143330,7 +146899,7 @@ ${lanes.join("\n")} return void 0; } const newClauses = map(elements, (element) => factory.createCaseClause(element, [])); - const newLineChar = getNewLineCharacter(options, maybeBind(host, host.getNewLine)); + const newLineChar = getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options); const printer = createSnippetPrinter({ removeComments: true, module: options.module, @@ -143527,7 +147096,7 @@ ${lanes.join("\n")} function createCompletionEntryForLiteral(sourceFile, preferences, literal) { return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority }; } - function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { + function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, position, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importStatementCompletion, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) { let insertText; let replacementSpan = getReplacementSpanForContextToken(replacementToken); let data; @@ -143585,7 +147154,7 @@ ${lanes.join("\n")} } if (preferences.includeCompletionsWithClassMemberSnippets && preferences.includeCompletionsWithInsertText && completionKind === CompletionKind.MemberLike && isClassLikeMemberCompletion(symbol, location, sourceFile)) { let importAdder; - ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext)); + ({ insertText, isSnippet, importAdder, replacementSpan } = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext)); sortText = SortText.ClassMemberSnippets; if (importAdder == null ? void 0 : importAdder.hasFixes()) { hasAction = true; @@ -143649,7 +147218,7 @@ ${lanes.join("\n")} const memberFlags = 106500 /* ClassMember */ & 900095 /* EnumMemberExcludes */; return !!(symbol.flags & memberFlags) && (isClassLike(location) || location.parent && location.parent.parent && isClassElement(location.parent) && location === location.parent.name && location.parent.getLastToken(sourceFile) === location.parent.name && isClassLike(location.parent.parent) || location.parent && isSyntaxList(location) && isClassLike(location.parent)); } - function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext) { + function getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, position, contextToken, formatContext) { const classLikeDeclaration = findAncestor(location, isClassLike); if (!classLikeDeclaration) { return { insertText: name }; @@ -143664,7 +147233,7 @@ ${lanes.join("\n")} module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); const importAdder = ts_codefix_exports.createImportAdder(sourceFile, program, preferences, host); let body; @@ -143685,7 +147254,7 @@ ${lanes.join("\n")} ); } let modifiers = 0 /* None */; - const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken); + const { modifiers: presentModifiers, span: modifiersSpan } = getPresentModifiers(contextToken, sourceFile, position); const isAbstract = !!(presentModifiers & 256 /* Abstract */); const completionNodes = []; ts_codefix_exports.addNewNodeForMemberSymbol( @@ -143740,8 +147309,8 @@ ${lanes.join("\n")} } return { insertText, isSnippet, importAdder, replacementSpan }; } - function getPresentModifiers(contextToken) { - if (!contextToken) { + function getPresentModifiers(contextToken, sourceFile, position) { + if (!contextToken || getLineAndCharacterOfPosition(sourceFile, position).line > getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line) { return { modifiers: 0 /* None */ }; } let modifiers = 0 /* None */; @@ -143761,8 +147330,11 @@ ${lanes.join("\n")} if (isModifier(node)) { return node.kind; } - if (isIdentifier(node) && node.originalKeywordKind && isModifierKind(node.originalKeywordKind)) { - return node.originalKeywordKind; + if (isIdentifier(node)) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind && isModifierKind(originalKeywordKind)) { + return originalKeywordKind; + } } return void 0; } @@ -143779,7 +147351,7 @@ ${lanes.join("\n")} module: options.module, target: options.target, omitTrailingSemicolon: false, - newLine: getNewLineKind(getNewLineCharacter(options, maybeBind(host, host.getNewLine))) + newLine: getNewLineKind(getNewLineOrDefaultFromHost(host, formatContext == null ? void 0 : formatContext.options)) }); if (formatContext) { insertText = printer.printAndFormatSnippetList(16 /* CommaDelimited */ | 64 /* AllowTrailingComma */, factory.createNodeArray( @@ -144104,7 +147676,7 @@ ${lanes.join("\n")} return "TypeOnlyAlias/" /* TypeOnlyAlias */; } } - function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { + function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, position, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag) { var _a2; const start = timestamp(); const variableDeclaration = getVariableDeclaration(location); @@ -144127,6 +147699,7 @@ ${lanes.join("\n")} replacementToken, contextToken, location, + position, sourceFile, host, program, @@ -144370,6 +147943,7 @@ ${lanes.join("\n")} name, symbol, location, + position, contextToken, formatContext ); @@ -144410,7 +147984,7 @@ ${lanes.join("\n")} targetSymbol, moduleSymbol, sourceFile, - getNameForExportedSymbol(symbol, getEmitScriptTarget(compilerOptions), isJsxOpeningTagName), + name, isJsxOpeningTagName, host, program, @@ -144733,6 +148307,7 @@ ${lanes.join("\n")} case 347 /* JSDocTypeTag */: case 349 /* JSDocTypedefTag */: case 352 /* JSDocThrowsTag */: + case 353 /* JSDocSatisfiesTag */: return true; case 348 /* JSDocTemplateTag */: return !!tag.constraint; @@ -144875,7 +148450,7 @@ ${lanes.join("\n")} moduleSymbol, symbol: firstAccessibleSymbol, targetFlags: skipAlias(firstAccessibleSymbol, typeChecker).flags - }], firstAccessibleSymbol.name, position, isValidTypeOnlyAliasUseSite(location)) || {}; + }], position, isValidTypeOnlyAliasUseSite(location)) || {}; if (moduleSpecifier) { const origin = { kind: getNullableSymbolOriginInfoKind(6 /* SymbolMemberExport */), @@ -144971,7 +148546,7 @@ ${lanes.join("\n")} symbolToSortTextMap[getSymbolId(symbol)] = SortText.GlobalsOrKeywords; } if (typeOnlyAliasNeedsPromotion && !(symbol.flags & 111551 /* Value */)) { - const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportOrExportDeclaration); + const typeOnlyAliasDeclaration = symbol.declarations && find(symbol.declarations, isTypeOnlyImportDeclaration); if (typeOnlyAliasDeclaration) { const origin = { kind: 64 /* TypeOnlyAlias */, declaration: typeOnlyAliasDeclaration }; symbolToOriginInfoMap[i] = origin; @@ -145101,7 +148676,7 @@ ${lanes.join("\n")} if (!firstImportableExportInfo) { return; } - const result = context.tryResolve(info, symbolName2, isFromAmbientModule) || {}; + const result = context.tryResolve(info, isFromAmbientModule) || {}; if (result === "failed") return; let exportInfo2 = firstImportableExportInfo, moduleSpecifier; @@ -145931,7 +149506,8 @@ ${lanes.join("\n")} return kind === 132 /* AsyncKeyword */ || kind === 133 /* AwaitKeyword */ || kind === 128 /* AsKeyword */ || kind === 150 /* SatisfiesKeyword */ || kind === 154 /* TypeKeyword */ || !isContextualKeyword(kind) && !isClassMemberCompletionKeyword(kind); } function keywordForNode(node) { - return isIdentifier(node) ? node.originalKeywordKind || 0 /* Unknown */ : node.kind; + var _a2; + return isIdentifier(node) ? (_a2 = identifierToKeywordKind(node)) != null ? _a2 : 0 /* Unknown */ : node.kind; } function getContextualKeywords(contextToken, position) { const entries = []; @@ -145977,8 +149553,9 @@ ${lanes.join("\n")} return type.isUnion() ? Debug.checkEachDefined(checker.getAllPossiblePropertiesOfTypes(type.types), "getAllPossiblePropertiesOfTypes() should all be defined") : Debug.checkEachDefined(type.getApparentProperties(), "getApparentProperties() should all be defined"); } function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken, location, position) { + var _a2; switch (location.kind) { - case 353 /* SyntaxList */: + case 354 /* SyntaxList */: return tryCast(location.parent, isObjectTypeDeclaration); case 1 /* EndOfFileToken */: const cls = tryCast(lastOrUndefined(cast(location.parent, isSourceFile).statements), isObjectTypeDeclaration); @@ -145987,8 +149564,8 @@ ${lanes.join("\n")} } break; case 79 /* Identifier */: { - const originalKeywordKind = location.originalKeywordKind; - if (originalKeywordKind && isKeyword(originalKeywordKind)) { + const originalKeywordKind = identifierToKeywordKind(location); + if (originalKeywordKind) { return void 0; } if (isPropertyDeclaration(location.parent) && location.parent.initializer === location) { @@ -146014,14 +149591,14 @@ ${lanes.join("\n")} case 27 /* CommaToken */: return tryCast(contextToken.parent, isObjectTypeDeclaration); default: - if (!isFromObjectTypeDeclaration(contextToken)) { - if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line && isObjectTypeDeclaration(location)) { + if (isObjectTypeDeclaration(location)) { + if (getLineAndCharacterOfPosition(sourceFile, contextToken.getEnd()).line !== getLineAndCharacterOfPosition(sourceFile, position).line) { return location; } - return void 0; + const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; + return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword((_a2 = identifierToKeywordKind(contextToken)) != null ? _a2 : 0 /* Unknown */) ? contextToken.parent.parent : void 0; } - const isValidKeyword = isClassLike(contextToken.parent.parent) ? isClassMemberCompletionKeyword : isInterfaceOrTypeLiteralCompletionKeyword; - return isValidKeyword(contextToken.kind) || contextToken.kind === 41 /* AsteriskToken */ || isIdentifier(contextToken) && isValidKeyword(stringToToken(contextToken.text)) ? contextToken.parent.parent : void 0; + return void 0; } } function tryGetTypeLiteralNode(node) { @@ -146396,10 +149973,10 @@ ${lanes.join("\n")} if (!contextToken || !isStringLiteralLike(contextToken)) return void 0; const entries = getStringLiteralCompletionEntries(sourceFile, contextToken, position, program.getTypeChecker(), options, host, preferences); - return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences); + return convertStringLiteralCompletions(entries, contextToken, sourceFile, host, program, log, options, preferences, position); } } - function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences) { + function convertStringLiteralCompletions(completion, contextToken, sourceFile, host, program, log, options, preferences, position) { if (completion === void 0) { return void 0; } @@ -146415,6 +149992,7 @@ ${lanes.join("\n")} contextToken, contextToken, sourceFile, + position, sourceFile, host, program, @@ -147044,7 +150622,7 @@ ${lanes.join("\n")} } function getAmbientModuleCompletions(fragment, fragmentDirectory, checker) { const ambientModules = checker.getAmbientModules().map((sym) => stripQuotes(sym.name)); - const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment)); + const nonRelativeModuleNames = ambientModules.filter((moduleName) => startsWith(moduleName, fragment) && moduleName.indexOf("*") < 0); if (fragmentDirectory !== void 0) { const moduleNameWithSeparator = ensureTrailingDirectorySeparator(fragmentDirectory); return nonRelativeModuleNames.map((nonRelativeModuleName) => removePrefix(nonRelativeModuleName, moduleNameWithSeparator)); @@ -149066,7 +152644,7 @@ ${lanes.join("\n")} } } if (!isForRenameWithPrefixAndSuffixText(state.options) || alwaysGetReferences) { - const isDefaultExport = referenceLocation.originalKeywordKind === 88 /* DefaultKeyword */ || exportSpecifier.name.originalKeywordKind === 88 /* DefaultKeyword */; + const isDefaultExport = referenceLocation.escapedText === "default" || exportSpecifier.name.escapedText === "default"; const exportKind = isDefaultExport ? 1 /* Default */ : 0 /* Named */; const exportSymbol = Debug.checkDefined(exportSpecifier.symbol); const exportInfo = getExportInfo(exportSymbol, exportKind, state.checker); @@ -150579,6 +154157,7 @@ ${lanes.join("\n")} } return displayParts; case 347 /* JSDocTypeTag */: + case 353 /* JSDocSatisfiesTag */: return withNode(tag.typeExpression); case 349 /* JSDocTypedefTag */: case 341 /* JSDocCallbackTag */: @@ -150868,6 +154447,7 @@ ${lanes.join("\n")} "readonly", "requires", "returns", + "satisfies", "see", "since", "static", @@ -150915,18 +154495,21 @@ ${lanes.join("\n")} const shouldSort = mode === "SortAndCombine" /* SortAndCombine */ || mode === "All" /* All */; const shouldCombine = shouldSort; const shouldRemove = mode === "RemoveUnused" /* RemoveUnused */ || mode === "All" /* All */; - const maybeRemove = shouldRemove ? removeUnusedImports : identity; - const maybeCoalesce = shouldCombine ? coalesceImports : identity; const topLevelImportGroupDecls = groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)); - const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : shouldSort && detectSortingWorker(topLevelImportGroupDecls) === 2 /* CaseInsensitive */; + const comparer = getOrganizeImportsComparerWithDetection(preferences, shouldSort ? () => detectSortingWorker(topLevelImportGroupDecls, preferences) === 2 /* CaseInsensitive */ : void 0); const processImportsOfSameModuleSpecifier = (importGroup) => { - const processedDeclarations = maybeCoalesce(maybeRemove(importGroup, sourceFile, program), ignoreCase, sourceFile); - return shouldSort ? stableSort(processedDeclarations, (s1, s2) => compareImportsOrRequireStatements(s1, s2)) : processedDeclarations; + if (shouldRemove) + importGroup = removeUnusedImports(importGroup, sourceFile, program); + if (shouldCombine) + importGroup = coalesceImportsWorker(importGroup, comparer, sourceFile); + if (shouldSort) + importGroup = stableSort(importGroup, (s1, s2) => compareImportsOrRequireStatements(s1, s2, comparer)); + return importGroup; }; topLevelImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const topLevelExportDecls = sourceFile.statements.filter(isExportDeclaration); - organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(topLevelExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } for (const ambientModule of sourceFile.statements.filter(isAmbientModule)) { if (!ambientModule.body) @@ -150935,7 +154518,7 @@ ${lanes.join("\n")} ambientModuleImportGroupDecls.forEach((importGroupDecl) => organizeImportsWorker(importGroupDecl, processImportsOfSameModuleSpecifier)); if (mode !== "RemoveUnused" /* RemoveUnused */) { const ambientModuleExportDecls = ambientModule.body.statements.filter(isExportDeclaration); - organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExports(group2, ignoreCase)); + organizeImportsWorker(ambientModuleExportDecls, (group2) => coalesceExportsWorker(group2, comparer)); } } return changeTracker.getChanges(); @@ -150945,7 +154528,7 @@ ${lanes.join("\n")} } suppressLeadingTrivia(oldImportDecls[0]); const oldImportGroups = shouldCombine ? group(oldImportDecls, (importDecl) => getExternalModuleName2(importDecl.moduleSpecifier)) : [oldImportDecls]; - const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiers2(group1[0].moduleSpecifier, group2[0].moduleSpecifier)) : oldImportGroups; + const sortedImportGroups = shouldSort ? stableSort(oldImportGroups, (group1, group2) => compareModuleSpecifiersWorker(group1[0].moduleSpecifier, group2[0].moduleSpecifier, comparer)) : oldImportGroups; const newImportDecls = flatMap(sortedImportGroups, (importGroup) => getExternalModuleName2(importGroup[0].moduleSpecifier) ? coalesce(importGroup) : importGroup); if (newImportDecls.length === 0) { changeTracker.deleteNodes( @@ -151068,12 +154651,14 @@ ${lanes.join("\n")} return specifier !== void 0 && isStringLiteralLike(specifier) ? specifier.text : void 0; } function coalesceImports(importGroup, ignoreCase, sourceFile) { - var _a2, _b, _c, _d; + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceImportsWorker(importGroup, comparer, sourceFile); + } + function coalesceImportsWorker(importGroup, comparer, sourceFile) { if (importGroup.length === 0) { return importGroup; } const { importWithoutClause, typeOnlyImports, regularImports } = getCategorizedImports(importGroup); - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; const coalescedImports = []; if (importWithoutClause) { coalescedImports.push(importWithoutClause); @@ -151088,7 +154673,7 @@ ${lanes.join("\n")} ); continue; } - const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => compareIdentifiers(i1.importClause.namedBindings.name, i2.importClause.namedBindings.name)); + const sortedNamespaceImports = stableSort(namespaceImports, (i1, i2) => comparer(i1.importClause.namedBindings.name.text, i2.importClause.namedBindings.name.text)); for (const namespaceImport of sortedNamespaceImports) { coalescedImports.push( updateImportDeclarationAndClause( @@ -151099,7 +154684,10 @@ ${lanes.join("\n")} ) ); } - if (defaultImports.length === 0 && namedImports.length === 0) { + const firstDefaultImport = firstOrUndefined(defaultImports); + const firstNamedImport = firstOrUndefined(namedImports); + const importDecl = firstDefaultImport != null ? firstDefaultImport : firstNamedImport; + if (!importDecl) { continue; } let newDefaultImport; @@ -151120,12 +154708,11 @@ ${lanes.join("\n")} } newImportSpecifiers.push(...getNewImportSpecifiers(namedImports)); const sortedImportSpecifiers = factory.createNodeArray( - sortSpecifiers(newImportSpecifiers, ignoreCase), - (_b = (_a2 = namedImports[0]) == null ? void 0 : _a2.importClause.namedBindings) == null ? void 0 : _b.elements.hasTrailingComma + sortSpecifiers(newImportSpecifiers, comparer), + firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings.elements.hasTrailingComma ); - const importDecl = defaultImports.length > 0 ? defaultImports[0] : namedImports[0]; - const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : namedImports.length === 0 ? factory.createNamedImports(sortedImportSpecifiers) : factory.updateNamedImports(namedImports[0].importClause.namedBindings, sortedImportSpecifiers); - if (sourceFile && newNamedImports && ((_c = namedImports[0]) == null ? void 0 : _c.importClause.namedBindings) && !rangeIsOnSingleLine(namedImports[0].importClause.namedBindings, sourceFile)) { + const newNamedImports = sortedImportSpecifiers.length === 0 ? newDefaultImport ? void 0 : factory.createNamedImports(emptyArray) : firstNamedImport ? factory.updateNamedImports(firstNamedImport.importClause.namedBindings, sortedImportSpecifiers) : factory.createNamedImports(sortedImportSpecifiers); + if (sourceFile && newNamedImports && (firstNamedImport == null ? void 0 : firstNamedImport.importClause.namedBindings) && !rangeIsOnSingleLine(firstNamedImport.importClause.namedBindings, sourceFile)) { setEmitFlags(newNamedImports, 2 /* MultiLine */); } if (isTypeOnly && newDefaultImport && newNamedImports) { @@ -151139,7 +154726,7 @@ ${lanes.join("\n")} ); coalescedImports.push( updateImportDeclarationAndClause( - (_d = namedImports[0]) != null ? _d : importDecl, + firstNamedImport != null ? firstNamedImport : importDecl, /*name*/ void 0, newNamedImports @@ -151182,6 +154769,10 @@ ${lanes.join("\n")} }; } function coalesceExports(exportGroup, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(ignoreCase); + return coalesceExportsWorker(exportGroup, comparer); + } + function coalesceExportsWorker(exportGroup, comparer) { if (exportGroup.length === 0) { return exportGroup; } @@ -151196,7 +154787,7 @@ ${lanes.join("\n")} } const newExportSpecifiers = []; newExportSpecifiers.push(...flatMap(exportGroup2, (i) => i.exportClause && isNamedExports(i.exportClause) ? i.exportClause.elements : emptyArray)); - const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, ignoreCase); + const sortedExportSpecifiers = sortSpecifiers(newExportSpecifiers, comparer); const exportDecl = exportGroup2[0]; coalescedExports.push( factory.updateExportDeclaration( @@ -151240,25 +154831,21 @@ ${lanes.join("\n")} importDeclaration.assertClause ); } - function sortSpecifiers(specifiers, ignoreCase) { - return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); + function sortSpecifiers(specifiers, comparer) { + return stableSort(specifiers, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); } - function compareImportOrExportSpecifiers(s1, s2, ignoreCase) { - const compareIdentifiers = ignoreCase ? compareIdentifiersCaseInsensitive : compareIdentifiersCaseSensitive; - return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || compareIdentifiers(s1.name, s2.name); - } - function compareIdentifiersCaseSensitive(s1, s2) { - return compareStringsCaseSensitive(s1.text, s2.text); - } - function compareIdentifiersCaseInsensitive(s1, s2) { - return compareStringsCaseInsensitiveEslintCompatible(s1.text, s2.text); + function compareImportOrExportSpecifiers(s1, s2, comparer) { + return compareBooleans(s1.isTypeOnly, s2.isTypeOnly) || comparer(s1.name.text, s2.name.text); } function compareModuleSpecifiers2(m1, m2, ignoreCase) { + const comparer = getOrganizeImportsOrdinalStringComparer(!!ignoreCase); + return compareModuleSpecifiersWorker(m1, m2, comparer); + } + function compareModuleSpecifiersWorker(m1, m2, comparer) { const name1 = m1 === void 0 ? void 0 : getExternalModuleName2(m1); const name2 = m2 === void 0 ? void 0 : getExternalModuleName2(m2); - const compareStrings = ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; return compareBooleans(name1 === void 0, name2 === void 0) || compareBooleans(isExternalModuleNameRelative(name1), isExternalModuleNameRelative(name2)) || // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion - compareStrings(name1, name2); + comparer(name1, name2); } function getModuleSpecifierExpression(declaration) { var _a2; @@ -151271,24 +154858,40 @@ ${lanes.join("\n")} return declaration.declarationList.declarations[0].initializer.arguments[0]; } } - function detectSorting(sourceFile) { + function detectSorting(sourceFile, preferences) { return detectSortingWorker( - groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)) + groupImportsByNewlineContiguous(sourceFile, sourceFile.statements.filter(isImportDeclaration)), + preferences ); } - function detectSortingWorker(importGroups) { + function detectSortingWorker(importGroups, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); let sortState = 3 /* Both */; + let seenUnsortedGroup = false; for (const importGroup of importGroups) { if (importGroup.length > 1) { - sortState &= detectSortCaseSensitivity( + const moduleSpecifierSort = detectSortCaseSensitivity( importGroup, - /*useEslintOrdering*/ - true, (i) => { var _a2, _b; return (_b = (_a2 = tryCast(i.moduleSpecifier, isStringLiteral)) == null ? void 0 : _a2.text) != null ? _b : ""; - } + }, + collateCaseSensitive, + collateCaseInsensitive ); + if (moduleSpecifierSort) { + sortState &= moduleSpecifierSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -151301,7 +154904,11 @@ ${lanes.join("\n")} } ); if (declarationWithNamedImports) { - sortState &= detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements); + const namedImportSort = detectImportSpecifierSorting(declarationWithNamedImports.importClause.namedBindings.elements, preferences); + if (namedImportSort) { + sortState &= namedImportSort; + seenUnsortedGroup = true; + } if (!sortState) { return sortState; } @@ -151310,26 +154917,36 @@ ${lanes.join("\n")} return sortState; } } - return sortState; + return seenUnsortedGroup ? 0 /* None */ : sortState; } - function detectImportDeclarationSorting(imports) { + function detectImportDeclarationSorting(imports, preferences) { + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false + ); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); return detectSortCaseSensitivity( imports, - /*useEslintOrdering*/ - true, - (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "" + (s) => getExternalModuleName2(getModuleSpecifierExpression(s)) || "", + collateCaseSensitive, + collateCaseInsensitive ); } - function getImportDeclarationInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, ignoreCase)); + function getImportDeclarationInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (a, b) => compareImportsOrRequireStatements(a, b, comparer)); return index < 0 ? ~index : index; } - function getImportSpecifierInsertionIndex(sortedImports, newImport, ignoreCase) { - const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, ignoreCase)); + function getImportSpecifierInsertionIndex(sortedImports, newImport, comparer) { + const index = binarySearch(sortedImports, newImport, identity, (s1, s2) => compareImportOrExportSpecifiers(s1, s2, comparer)); return index < 0 ? ~index : index; } - function compareImportsOrRequireStatements(s1, s2, ignoreCase) { - return compareModuleSpecifiers2(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), ignoreCase) || compareImportKind(s1, s2); + function compareImportsOrRequireStatements(s1, s2, comparer) { + return compareModuleSpecifiersWorker(getModuleSpecifierExpression(s1), getModuleSpecifierExpression(s2), comparer) || compareImportKind(s1, s2); } function compareImportKind(s1, s2) { return compareValues(getImportKindOrder(s1), getImportKindOrder(s2)); @@ -151372,22 +154989,86 @@ ${lanes.join("\n")} var _a2; return ((_a2 = namedImport.importClause) == null ? void 0 : _a2.namedBindings) && isNamedImports(namedImport.importClause.namedBindings) ? namedImport.importClause.namedBindings.elements : void 0; } - var detectImportSpecifierSorting; + function getOrganizeImportsOrdinalStringComparer(ignoreCase) { + return ignoreCase ? compareStringsCaseInsensitiveEslintCompatible : compareStringsCaseSensitive; + } + function getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) { + var _a2, _b, _c; + const resolvedLocale = getOrganizeImportsLocale(preferences); + const caseFirst = (_a2 = preferences.organizeImportsCaseFirst) != null ? _a2 : false; + const numeric = (_b = preferences.organizeImportsNumericCollation) != null ? _b : false; + const accents = (_c = preferences.organizeImportsAccentCollation) != null ? _c : true; + const sensitivity = ignoreCase ? accents ? "accent" : "base" : accents ? "variant" : "case"; + const collator = new Intl.Collator(resolvedLocale, { + usage: "sort", + caseFirst: caseFirst || "false", + sensitivity, + numeric + }); + return collator.compare; + } + function getOrganizeImportsLocale(preferences) { + let locale = preferences.organizeImportsLocale; + if (locale === "auto") + locale = getUILocale(); + if (locale === void 0) + locale = "en"; + const supportedLocales = Intl.Collator.supportedLocalesOf(locale); + const resolvedLocale = supportedLocales.length ? supportedLocales[0] : "en"; + return resolvedLocale; + } + function getOrganizeImportsComparer(preferences, ignoreCase) { + var _a2; + const collation = (_a2 = preferences.organizeImportsCollation) != null ? _a2 : "ordinal"; + return collation === "unicode" ? getOrganizeImportsUnicodeStringComparer(ignoreCase, preferences) : getOrganizeImportsOrdinalStringComparer(ignoreCase); + } + function getOrganizeImportsComparerWithDetection(preferences, detectIgnoreCase) { + var _a2; + const ignoreCase = typeof preferences.organizeImportsIgnoreCase === "boolean" ? preferences.organizeImportsIgnoreCase : (_a2 = detectIgnoreCase == null ? void 0 : detectIgnoreCase()) != null ? _a2 : false; + return getOrganizeImportsComparer(preferences, ignoreCase); + } + var ImportSpecifierSortingCache, detectImportSpecifierSorting; var init_organizeImports = __esm({ "src/services/organizeImports.ts"() { "use strict"; init_ts4(); - detectImportSpecifierSorting = memoizeWeak((specifiers) => { + ImportSpecifierSortingCache = class { + has([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return false; + return this._cache.has(specifiers); + } + get([specifiers, preferences]) { + if (this._lastPreferences !== preferences || !this._cache) + return void 0; + return this._cache.get(specifiers); + } + set([specifiers, preferences], value) { + var _a2; + if (this._lastPreferences !== preferences) { + this._lastPreferences = preferences; + this._cache = void 0; + } + (_a2 = this._cache) != null ? _a2 : this._cache = /* @__PURE__ */ new WeakMap(); + this._cache.set(specifiers, value); + } + }; + detectImportSpecifierSorting = memoizeCached((specifiers, preferences) => { if (!arrayIsSorted(specifiers, (s1, s2) => compareBooleans(s1.isTypeOnly, s2.isTypeOnly))) { return 0 /* None */; } - return detectSortCaseSensitivity( - specifiers, - /*useEslintOrdering*/ - true, - (specifier) => specifier.name.text + const collateCaseSensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + false ); - }); + const collateCaseInsensitive = getOrganizeImportsComparer( + preferences, + /*ignoreCase*/ + true + ); + return detectSortCaseSensitivity(specifiers, (specifier) => specifier.name.text, collateCaseSensitive, collateCaseInsensitive); + }, new ImportSpecifierSortingCache()); } }); @@ -151404,6 +155085,7 @@ ${lanes.join("\n")} detectSorting: () => detectSorting, getImportDeclarationInsertionIndex: () => getImportDeclarationInsertionIndex, getImportSpecifierInsertionIndex: () => getImportSpecifierInsertionIndex, + getOrganizeImportsComparer: () => getOrganizeImportsComparer, organizeImports: () => organizeImports }); var init_ts_OrganizeImports = __esm({ @@ -151883,7 +155565,7 @@ ${lanes.join("\n")} return void 0; } } - function doChange33(exportingSourceFile, program, info, changes, cancellationToken) { + function doChange32(exportingSourceFile, program, info, changes, cancellationToken) { changeExport(exportingSourceFile, info, changes, program.getTypeChecker()); changeImports(program, info, changes, cancellationToken); } @@ -152079,7 +155761,7 @@ ${lanes.join("\n")} Debug.assert(actionName2 === defaultToNamedAction.name || actionName2 === namedToDefaultAction.name, "Unexpected action name"); const info = getInfo19(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, info, t, context.cancellationToken)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange32(context.file, context.program, info, t, context.cancellationToken)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -152114,7 +155796,7 @@ ${lanes.join("\n")} function getShouldUseDefault(program, importClause) { return getAllowSyntheticDefaultImports(program.getCompilerOptions()) && isExportEqualsModule(importClause.parent.moduleSpecifier, program.getTypeChecker()); } - function doChange34(sourceFile, program, changes, info) { + function doChange33(sourceFile, program, changes, info) { const checker = program.getTypeChecker(); if (info.convertTo === 0 /* Named */) { doChangeNamespaceToNamed(sourceFile, checker, changes, info.import, getAllowSyntheticDefaultImports(program.getCompilerOptions())); @@ -152306,7 +155988,7 @@ ${lanes.join("\n")} Debug.assert(some(getOwnValues(actions), (action) => action.name === actionName2), "Unexpected action name"); const info = getImportConversionInfo(context); Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, t, info)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange33(context.file, context.program, t, info)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -152648,7 +156330,7 @@ ${lanes.join("\n")} afterLast: afterEndNodeIndex === -1 ? void 0 : statements[afterEndNodeIndex] }; } - function doChange35(oldFile, program, toMove, changes, host, preferences) { + function doChange34(oldFile, program, toMove, changes, host, preferences) { const checker = program.getTypeChecker(); const usage = getUsageInfo(oldFile, toMove.all, checker); const currentDirectory = getDirectoryPath(oldFile.fileName); @@ -152729,7 +156411,8 @@ ${lanes.join("\n")} oldFile, importsFromNewFile, /*blankLineBetween*/ - true + true, + preferences ); } deleteUnusedOldImports(oldFile, toMove.all, changes, usage.unusedImportsFromOldFile, checker); @@ -153422,7 +157105,7 @@ ${lanes.join("\n")} getEditsForAction: function getRefactorEditsToMoveToNewFile(context, actionName2) { Debug.assert(actionName2 === refactorName4, "Wrong refactor invoked"); const statements = Debug.checkDefined(getStatementsToMove(context)); - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(context.file, context.program, statements, t, context.host, context.preferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(context.file, context.program, statements, t, context.host, context.preferences)); return { edits, renameFilename: void 0, renameLocation: void 0 }; } }); @@ -154083,12 +157766,12 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} return void 0; const groupedReferences = getGroupedReferences(functionDeclaration, program, cancellationToken); if (groupedReferences.valid) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange36(file, program, host, t, functionDeclaration, groupedReferences)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(file, program, host, t, functionDeclaration, groupedReferences)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return { edits: [] }; } - function doChange36(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { + function doChange35(sourceFile, program, host, changes, functionDeclaration, groupedReferences) { const signature = groupedReferences.signature; const newFunctionDeclarationParams = map(createNewParameters(functionDeclaration, program, host), (param) => getSynthesizedDeepClone(param)); if (signature) { @@ -154881,7 +158564,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} Debug.assert(info && !isRefactorErrorInfo(info), "Expected applicable refactor info"); const edits = ts_textChanges_exports.ChangeTracker.with( context, - (t) => doChange37(context.file, context.program.getTypeChecker(), t, info, actionName2) + (t) => doChange36(context.file, context.program.getTypeChecker(), t, info, actionName2) ); return { edits, renameFilename: void 0, renameLocation: void 0 }; } @@ -155037,7 +158720,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } return toConvert; } - function doChange37(sourceFile, checker, changes, info, _actionName) { + function doChange36(sourceFile, checker, changes, info, _actionName) { const { finalExpression, occurrences, expression } = info; const firstOccurrence = occurrences[occurrences.length - 1]; const convertedChain = convertOccurrences(checker, finalExpression, occurrences); @@ -155945,7 +159628,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} 111551 /* Value */, /*excludeGlobals*/ false - ) && !isPrivateIdentifier(node.name) && !isKeyword(node.name.originalKeywordKind) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); + ) && !isPrivateIdentifier(node.name) && !identifierToKeywordKind(node.name) ? node.name.text : getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file); const isJS = isInJSFile(scope); let variableType = isJS || !checker.isContextSensitive(node) ? void 0 : checker.typeToTypeNode(checker.getContextualType(node), scope, 1 /* NoTruncation */); let initializer = transformConstantInitializer(skipParentheses(node), substitutions); @@ -156182,7 +159865,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} let ignoreReturns = false; const statements = factory.createNodeArray(isBlock(body) ? body.statements.slice(0) : [isStatement(body) ? body : factory.createReturnStatement(skipParentheses(body))]); if (hasWritesOrVariableDeclarations || substitutions.size) { - const rewrittenStatements = visitNodes2(statements, visitor).slice(); + const rewrittenStatements = visitNodes2(statements, visitor, isStatement).slice(); if (hasWritesOrVariableDeclarations && !hasReturn2 && isStatement(body)) { const assignments = getPropertyAssignmentsForWritesAndVariableDeclarations(exposedVariableDeclarations, writes); if (assignments.length === 1) { @@ -156210,7 +159893,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (!returnValueProperty) { returnValueProperty = "__return"; } - assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor))); + assignments.unshift(factory.createPropertyAssignment(returnValueProperty, visitNode(node.expression, visitor, isExpression))); } if (assignments.length === 1) { return factory.createReturnStatement(assignments[0].name); @@ -156783,7 +160466,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} function getRefactorEditsToInferReturnType(context) { const info = getInfo21(context); if (info && !isRefactorErrorInfo(info)) { - const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange38(context.file, t, info.declaration, info.returnTypeNode)); + const edits = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange37(context.file, t, info.declaration, info.returnTypeNode)); return { renameFilename: void 0, renameLocation: void 0, edits }; } return void 0; @@ -156808,7 +160491,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } return emptyArray; } - function doChange38(sourceFile, changes, declaration, typeNode) { + function doChange37(sourceFile, changes, declaration, typeNode) { const closeParen = findChildOfKind(declaration, 21 /* CloseParenToken */, sourceFile); const needParens = isArrowFunction(declaration) && closeParen === void 0; const endNode2 = needParens ? first(declaration.parameters) : closeParen; @@ -156960,7 +160643,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (declarations.some((declaration) => isDefinedInLibraryFile(program, declaration))) { return getRenameInfoError(Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library); } - if (isIdentifier(node) && node.originalKeywordKind === 88 /* DefaultKeyword */ && symbol.parent && symbol.parent.flags & 1536 /* Module */) { + if (isIdentifier(node) && node.escapedText === "default" && symbol.parent && symbol.parent.flags & 1536 /* Module */) { return void 0; } if (isStringLiteralLike(node) && tryGetImportFromModuleSpecifier(node)) { @@ -158665,7 +162348,6 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} } const jsDocNode = parent2.parent.kind === 169 /* PropertyDeclaration */ ? parent2.parent : parent2.parent.parent; jsDocNode.jsDoc = parent2.jsDoc; - jsDocNode.jsDocCache = parent2.jsDocCache; return jsDocNode; } function tryMergeJsdocTags(oldTag, newTag) { @@ -158779,6 +162461,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")} if (!visited) { return visited; } + Debug.assert(nodes); const nodeArray = visited === nodes ? factory.createNodeArray(visited.slice(0)) : visited; setTextRangePosEnd(nodeArray, getPos2(nodes), getEnd(nodes)); return nodeArray; @@ -162717,7 +166400,7 @@ ${options.prefix}` : "\n" : options.prefix const errorAfter = typeof options.errorAfter === "string" ? new Version(options.errorAfter) : options.errorAfter; const warnAfter = typeof options.warnAfter === "string" ? new Version(options.warnAfter) : options.warnAfter; const since = typeof options.since === "string" ? new Version(options.since) : (_b = options.since) != null ? _b : warnAfter; - const error = options.error || errorAfter && version2.compareTo(errorAfter) <= 0; + const error = options.error || errorAfter && version2.compareTo(errorAfter) >= 0; const warn = !warnAfter || version2.compareTo(warnAfter) >= 0; return error ? createErrorDeprecation(name, errorAfter, since, options.message) : warn ? createWarningDeprecation(name, errorAfter, since, options.message) : noop; } @@ -162793,1338 +166476,51 @@ ${options.prefix}` : "\n" : options.prefix } }); - // src/deprecatedCompat/4.0/nodeFactoryTopLevelExports.ts - var factoryDeprecation, createNodeArray, createNumericLiteral, createBigIntLiteral, createStringLiteral, createStringLiteralFromNode, createRegularExpressionLiteral, createLoopVariable, createUniqueName, createPrivateIdentifier, createSuper, createThis, createNull, createTrue, createFalse, createModifier, createModifiersFromModifierFlags, createQualifiedName, updateQualifiedName, createComputedPropertyName, updateComputedPropertyName, createTypeParameterDeclaration, updateTypeParameterDeclaration, createParameter, updateParameter, createDecorator, updateDecorator, createProperty, updateProperty, createMethod, updateMethod, createConstructor, updateConstructor, createGetAccessor, updateGetAccessor, createSetAccessor, updateSetAccessor, createCallSignature, updateCallSignature, createConstructSignature, updateConstructSignature, updateIndexSignature, createKeywordTypeNode, createTypePredicateNodeWithModifier, updateTypePredicateNodeWithModifier, createTypeReferenceNode, updateTypeReferenceNode, createFunctionTypeNode, updateFunctionTypeNode, createConstructorTypeNode, updateConstructorTypeNode, createTypeQueryNode, updateTypeQueryNode, createTypeLiteralNode, updateTypeLiteralNode, createArrayTypeNode, updateArrayTypeNode, createTupleTypeNode, updateTupleTypeNode, createOptionalTypeNode, updateOptionalTypeNode, createRestTypeNode, updateRestTypeNode, createUnionTypeNode, updateUnionTypeNode, createIntersectionTypeNode, updateIntersectionTypeNode, createConditionalTypeNode, updateConditionalTypeNode, createInferTypeNode, updateInferTypeNode, createImportTypeNode, updateImportTypeNode, createParenthesizedType, updateParenthesizedType, createThisTypeNode, updateTypeOperatorNode, createIndexedAccessTypeNode, updateIndexedAccessTypeNode, createMappedTypeNode, updateMappedTypeNode, createLiteralTypeNode, updateLiteralTypeNode, createObjectBindingPattern, updateObjectBindingPattern, createArrayBindingPattern, updateArrayBindingPattern, createBindingElement, updateBindingElement, createArrayLiteral, updateArrayLiteral, createObjectLiteral, updateObjectLiteral, createPropertyAccess, updatePropertyAccess, createPropertyAccessChain, updatePropertyAccessChain, createElementAccess, updateElementAccess, createElementAccessChain, updateElementAccessChain, createCall, updateCall, createCallChain, updateCallChain, createNew, updateNew, createTypeAssertion, updateTypeAssertion, createParen, updateParen, createFunctionExpression, updateFunctionExpression, createDelete, updateDelete, createTypeOf, updateTypeOf, createVoid, updateVoid, createAwait, updateAwait, createPrefix, updatePrefix, createPostfix, updatePostfix, createBinary, updateConditional, createTemplateExpression, updateTemplateExpression, createTemplateHead, createTemplateMiddle, createTemplateTail, createNoSubstitutionTemplateLiteral, updateYield, createSpread, updateSpread, createOmittedExpression, createAsExpression, updateAsExpression, createNonNullExpression, updateNonNullExpression, createNonNullChain, updateNonNullChain, createMetaProperty, updateMetaProperty, createTemplateSpan, updateTemplateSpan, createSemicolonClassElement, createBlock, updateBlock, createVariableStatement, updateVariableStatement, createEmptyStatement, createExpressionStatement, updateExpressionStatement, createStatement, updateStatement, createIf, updateIf, createDo, updateDo, createWhile, updateWhile, createFor, updateFor, createForIn, updateForIn, createForOf, updateForOf, createContinue, updateContinue, createBreak, updateBreak, createReturn, updateReturn, createWith, updateWith, createSwitch, updateSwitch, createLabel, updateLabel, createThrow, updateThrow, createTry, updateTry, createDebuggerStatement, createVariableDeclarationList, updateVariableDeclarationList, createFunctionDeclaration, updateFunctionDeclaration, createClassDeclaration, updateClassDeclaration, createInterfaceDeclaration, updateInterfaceDeclaration, createTypeAliasDeclaration, updateTypeAliasDeclaration, createEnumDeclaration, updateEnumDeclaration, createModuleDeclaration, updateModuleDeclaration, createModuleBlock, updateModuleBlock, createCaseBlock, updateCaseBlock, createNamespaceExportDeclaration, updateNamespaceExportDeclaration, createImportEqualsDeclaration, updateImportEqualsDeclaration, createImportDeclaration, updateImportDeclaration, createNamespaceImport, updateNamespaceImport, createNamedImports, updateNamedImports, createImportSpecifier, updateImportSpecifier, createExportAssignment2, updateExportAssignment, createNamedExports, updateNamedExports, createExportSpecifier, updateExportSpecifier, createExternalModuleReference, updateExternalModuleReference, createJSDocTypeExpression, createJSDocTypeTag, createJSDocReturnTag, createJSDocThisTag, createJSDocComment, createJSDocParameterTag, createJSDocClassTag, createJSDocAugmentsTag, createJSDocEnumTag, createJSDocTemplateTag, createJSDocTypedefTag, createJSDocCallbackTag, createJSDocSignature, createJSDocPropertyTag, createJSDocTypeLiteral, createJSDocImplementsTag, createJSDocAuthorTag, createJSDocPublicTag, createJSDocPrivateTag, createJSDocProtectedTag, createJSDocReadonlyTag, createJSDocTag, createJsxElement, updateJsxElement, createJsxSelfClosingElement, updateJsxSelfClosingElement, createJsxOpeningElement, updateJsxOpeningElement, createJsxClosingElement, updateJsxClosingElement, createJsxFragment, createJsxText, updateJsxText, createJsxOpeningFragment, createJsxJsxClosingFragment, updateJsxFragment, createJsxAttribute, updateJsxAttribute, createJsxAttributes, updateJsxAttributes, createJsxSpreadAttribute, updateJsxSpreadAttribute, createJsxExpression, updateJsxExpression, createCaseClause, updateCaseClause, createDefaultClause, updateDefaultClause, createHeritageClause, updateHeritageClause, createCatchClause, updateCatchClause, createPropertyAssignment, updatePropertyAssignment, createShorthandPropertyAssignment, updateShorthandPropertyAssignment, createSpreadAssignment, updateSpreadAssignment, createEnumMember, updateEnumMember, updateSourceFileNode, createNotEmittedStatement, createPartiallyEmittedExpression, updatePartiallyEmittedExpression, createCommaList, updateCommaList, createBundle, updateBundle, createImmediatelyInvokedFunctionExpression, createImmediatelyInvokedArrowFunction, createVoidZero, createExportDefault, createExternalModuleExport, createNamespaceExport, updateNamespaceExport, createToken, createIdentifier, createTempVariable, getGeneratedNameForNode, createOptimisticUniqueName, createFileLevelUniqueName, createIndexSignature, createTypePredicateNode, updateTypePredicateNode, createLiteral, createMethodSignature, updateMethodSignature, createTypeOperatorNode, createTaggedTemplate, updateTaggedTemplate, updateBinary, createConditional, createYield, createClassExpression, updateClassExpression, createPropertySignature, updatePropertySignature, createExpressionWithTypeArguments, updateExpressionWithTypeArguments, createArrowFunction, updateArrowFunction, createVariableDeclaration, updateVariableDeclaration, createImportClause, updateImportClause, createExportDeclaration, updateExportDeclaration, createJSDocParamTag, createComma, createLessThan, createAssignment, createStrictEquality, createStrictInequality, createAdd, createSubtract, createLogicalAnd, createLogicalOr, createPostfixIncrement, createLogicalNot, createNode2, getMutableClone; - var init_nodeFactoryTopLevelExports = __esm({ - "src/deprecatedCompat/4.0/nodeFactoryTopLevelExports.ts"() { + // src/deprecatedCompat/5.0/identifierProperties.ts + var init_identifierProperties = __esm({ + "src/deprecatedCompat/5.0/identifierProperties.ts"() { "use strict"; init_ts5(); init_deprecate(); - factoryDeprecation = { since: "4.0", warnAfter: "4.1", message: "Use the appropriate method on 'ts.factory' or the 'factory' supplied by your transformation context instead." }; - createNodeArray = deprecate(factory.createNodeArray, factoryDeprecation); - createNumericLiteral = deprecate(factory.createNumericLiteral, factoryDeprecation); - createBigIntLiteral = deprecate(factory.createBigIntLiteral, factoryDeprecation); - createStringLiteral = deprecate(factory.createStringLiteral, factoryDeprecation); - createStringLiteralFromNode = deprecate(factory.createStringLiteralFromNode, factoryDeprecation); - createRegularExpressionLiteral = deprecate(factory.createRegularExpressionLiteral, factoryDeprecation); - createLoopVariable = deprecate(factory.createLoopVariable, factoryDeprecation); - createUniqueName = deprecate(factory.createUniqueName, factoryDeprecation); - createPrivateIdentifier = deprecate(factory.createPrivateIdentifier, factoryDeprecation); - createSuper = deprecate(factory.createSuper, factoryDeprecation); - createThis = deprecate(factory.createThis, factoryDeprecation); - createNull = deprecate(factory.createNull, factoryDeprecation); - createTrue = deprecate(factory.createTrue, factoryDeprecation); - createFalse = deprecate(factory.createFalse, factoryDeprecation); - createModifier = deprecate(factory.createModifier, factoryDeprecation); - createModifiersFromModifierFlags = deprecate(factory.createModifiersFromModifierFlags, factoryDeprecation); - createQualifiedName = deprecate(factory.createQualifiedName, factoryDeprecation); - updateQualifiedName = deprecate(factory.updateQualifiedName, factoryDeprecation); - createComputedPropertyName = deprecate(factory.createComputedPropertyName, factoryDeprecation); - updateComputedPropertyName = deprecate(factory.updateComputedPropertyName, factoryDeprecation); - createTypeParameterDeclaration = deprecate(factory.createTypeParameterDeclaration, factoryDeprecation); - updateTypeParameterDeclaration = deprecate(factory.updateTypeParameterDeclaration, factoryDeprecation); - createParameter = deprecate(factory.createParameterDeclaration, factoryDeprecation); - updateParameter = deprecate(factory.updateParameterDeclaration, factoryDeprecation); - createDecorator = deprecate(factory.createDecorator, factoryDeprecation); - updateDecorator = deprecate(factory.updateDecorator, factoryDeprecation); - createProperty = deprecate(factory.createPropertyDeclaration, factoryDeprecation); - updateProperty = deprecate(factory.updatePropertyDeclaration, factoryDeprecation); - createMethod = deprecate(factory.createMethodDeclaration, factoryDeprecation); - updateMethod = deprecate(factory.updateMethodDeclaration, factoryDeprecation); - createConstructor = deprecate(factory.createConstructorDeclaration, factoryDeprecation); - updateConstructor = deprecate(factory.updateConstructorDeclaration, factoryDeprecation); - createGetAccessor = deprecate(factory.createGetAccessorDeclaration, factoryDeprecation); - updateGetAccessor = deprecate(factory.updateGetAccessorDeclaration, factoryDeprecation); - createSetAccessor = deprecate(factory.createSetAccessorDeclaration, factoryDeprecation); - updateSetAccessor = deprecate(factory.updateSetAccessorDeclaration, factoryDeprecation); - createCallSignature = deprecate(factory.createCallSignature, factoryDeprecation); - updateCallSignature = deprecate(factory.updateCallSignature, factoryDeprecation); - createConstructSignature = deprecate(factory.createConstructSignature, factoryDeprecation); - updateConstructSignature = deprecate(factory.updateConstructSignature, factoryDeprecation); - updateIndexSignature = deprecate(factory.updateIndexSignature, factoryDeprecation); - createKeywordTypeNode = deprecate(factory.createKeywordTypeNode, factoryDeprecation); - createTypePredicateNodeWithModifier = deprecate(factory.createTypePredicateNode, factoryDeprecation); - updateTypePredicateNodeWithModifier = deprecate(factory.updateTypePredicateNode, factoryDeprecation); - createTypeReferenceNode = deprecate(factory.createTypeReferenceNode, factoryDeprecation); - updateTypeReferenceNode = deprecate(factory.updateTypeReferenceNode, factoryDeprecation); - createFunctionTypeNode = deprecate(factory.createFunctionTypeNode, factoryDeprecation); - updateFunctionTypeNode = deprecate(factory.updateFunctionTypeNode, factoryDeprecation); - createConstructorTypeNode = deprecate((typeParameters, parameters, type) => { - return factory.createConstructorTypeNode( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); - }, factoryDeprecation); - updateConstructorTypeNode = deprecate((node, typeParameters, parameters, type) => { - return factory.updateConstructorTypeNode(node, node.modifiers, typeParameters, parameters, type); - }, factoryDeprecation); - createTypeQueryNode = deprecate(factory.createTypeQueryNode, factoryDeprecation); - updateTypeQueryNode = deprecate(factory.updateTypeQueryNode, factoryDeprecation); - createTypeLiteralNode = deprecate(factory.createTypeLiteralNode, factoryDeprecation); - updateTypeLiteralNode = deprecate(factory.updateTypeLiteralNode, factoryDeprecation); - createArrayTypeNode = deprecate(factory.createArrayTypeNode, factoryDeprecation); - updateArrayTypeNode = deprecate(factory.updateArrayTypeNode, factoryDeprecation); - createTupleTypeNode = deprecate(factory.createTupleTypeNode, factoryDeprecation); - updateTupleTypeNode = deprecate(factory.updateTupleTypeNode, factoryDeprecation); - createOptionalTypeNode = deprecate(factory.createOptionalTypeNode, factoryDeprecation); - updateOptionalTypeNode = deprecate(factory.updateOptionalTypeNode, factoryDeprecation); - createRestTypeNode = deprecate(factory.createRestTypeNode, factoryDeprecation); - updateRestTypeNode = deprecate(factory.updateRestTypeNode, factoryDeprecation); - createUnionTypeNode = deprecate(factory.createUnionTypeNode, factoryDeprecation); - updateUnionTypeNode = deprecate(factory.updateUnionTypeNode, factoryDeprecation); - createIntersectionTypeNode = deprecate(factory.createIntersectionTypeNode, factoryDeprecation); - updateIntersectionTypeNode = deprecate(factory.updateIntersectionTypeNode, factoryDeprecation); - createConditionalTypeNode = deprecate(factory.createConditionalTypeNode, factoryDeprecation); - updateConditionalTypeNode = deprecate(factory.updateConditionalTypeNode, factoryDeprecation); - createInferTypeNode = deprecate(factory.createInferTypeNode, factoryDeprecation); - updateInferTypeNode = deprecate(factory.updateInferTypeNode, factoryDeprecation); - createImportTypeNode = deprecate(factory.createImportTypeNode, factoryDeprecation); - updateImportTypeNode = deprecate(factory.updateImportTypeNode, factoryDeprecation); - createParenthesizedType = deprecate(factory.createParenthesizedType, factoryDeprecation); - updateParenthesizedType = deprecate(factory.updateParenthesizedType, factoryDeprecation); - createThisTypeNode = deprecate(factory.createThisTypeNode, factoryDeprecation); - updateTypeOperatorNode = deprecate(factory.updateTypeOperatorNode, factoryDeprecation); - createIndexedAccessTypeNode = deprecate(factory.createIndexedAccessTypeNode, factoryDeprecation); - updateIndexedAccessTypeNode = deprecate(factory.updateIndexedAccessTypeNode, factoryDeprecation); - createMappedTypeNode = deprecate(factory.createMappedTypeNode, factoryDeprecation); - updateMappedTypeNode = deprecate(factory.updateMappedTypeNode, factoryDeprecation); - createLiteralTypeNode = deprecate(factory.createLiteralTypeNode, factoryDeprecation); - updateLiteralTypeNode = deprecate(factory.updateLiteralTypeNode, factoryDeprecation); - createObjectBindingPattern = deprecate(factory.createObjectBindingPattern, factoryDeprecation); - updateObjectBindingPattern = deprecate(factory.updateObjectBindingPattern, factoryDeprecation); - createArrayBindingPattern = deprecate(factory.createArrayBindingPattern, factoryDeprecation); - updateArrayBindingPattern = deprecate(factory.updateArrayBindingPattern, factoryDeprecation); - createBindingElement = deprecate(factory.createBindingElement, factoryDeprecation); - updateBindingElement = deprecate(factory.updateBindingElement, factoryDeprecation); - createArrayLiteral = deprecate(factory.createArrayLiteralExpression, factoryDeprecation); - updateArrayLiteral = deprecate(factory.updateArrayLiteralExpression, factoryDeprecation); - createObjectLiteral = deprecate(factory.createObjectLiteralExpression, factoryDeprecation); - updateObjectLiteral = deprecate(factory.updateObjectLiteralExpression, factoryDeprecation); - createPropertyAccess = deprecate(factory.createPropertyAccessExpression, factoryDeprecation); - updatePropertyAccess = deprecate(factory.updatePropertyAccessExpression, factoryDeprecation); - createPropertyAccessChain = deprecate(factory.createPropertyAccessChain, factoryDeprecation); - updatePropertyAccessChain = deprecate(factory.updatePropertyAccessChain, factoryDeprecation); - createElementAccess = deprecate(factory.createElementAccessExpression, factoryDeprecation); - updateElementAccess = deprecate(factory.updateElementAccessExpression, factoryDeprecation); - createElementAccessChain = deprecate(factory.createElementAccessChain, factoryDeprecation); - updateElementAccessChain = deprecate(factory.updateElementAccessChain, factoryDeprecation); - createCall = deprecate(factory.createCallExpression, factoryDeprecation); - updateCall = deprecate(factory.updateCallExpression, factoryDeprecation); - createCallChain = deprecate(factory.createCallChain, factoryDeprecation); - updateCallChain = deprecate(factory.updateCallChain, factoryDeprecation); - createNew = deprecate(factory.createNewExpression, factoryDeprecation); - updateNew = deprecate(factory.updateNewExpression, factoryDeprecation); - createTypeAssertion = deprecate(factory.createTypeAssertion, factoryDeprecation); - updateTypeAssertion = deprecate(factory.updateTypeAssertion, factoryDeprecation); - createParen = deprecate(factory.createParenthesizedExpression, factoryDeprecation); - updateParen = deprecate(factory.updateParenthesizedExpression, factoryDeprecation); - createFunctionExpression = deprecate(factory.createFunctionExpression, factoryDeprecation); - updateFunctionExpression = deprecate(factory.updateFunctionExpression, factoryDeprecation); - createDelete = deprecate(factory.createDeleteExpression, factoryDeprecation); - updateDelete = deprecate(factory.updateDeleteExpression, factoryDeprecation); - createTypeOf = deprecate(factory.createTypeOfExpression, factoryDeprecation); - updateTypeOf = deprecate(factory.updateTypeOfExpression, factoryDeprecation); - createVoid = deprecate(factory.createVoidExpression, factoryDeprecation); - updateVoid = deprecate(factory.updateVoidExpression, factoryDeprecation); - createAwait = deprecate(factory.createAwaitExpression, factoryDeprecation); - updateAwait = deprecate(factory.updateAwaitExpression, factoryDeprecation); - createPrefix = deprecate(factory.createPrefixUnaryExpression, factoryDeprecation); - updatePrefix = deprecate(factory.updatePrefixUnaryExpression, factoryDeprecation); - createPostfix = deprecate(factory.createPostfixUnaryExpression, factoryDeprecation); - updatePostfix = deprecate(factory.updatePostfixUnaryExpression, factoryDeprecation); - createBinary = deprecate(factory.createBinaryExpression, factoryDeprecation); - updateConditional = deprecate(factory.updateConditionalExpression, factoryDeprecation); - createTemplateExpression = deprecate(factory.createTemplateExpression, factoryDeprecation); - updateTemplateExpression = deprecate(factory.updateTemplateExpression, factoryDeprecation); - createTemplateHead = deprecate(factory.createTemplateHead, factoryDeprecation); - createTemplateMiddle = deprecate(factory.createTemplateMiddle, factoryDeprecation); - createTemplateTail = deprecate(factory.createTemplateTail, factoryDeprecation); - createNoSubstitutionTemplateLiteral = deprecate(factory.createNoSubstitutionTemplateLiteral, factoryDeprecation); - updateYield = deprecate(factory.updateYieldExpression, factoryDeprecation); - createSpread = deprecate(factory.createSpreadElement, factoryDeprecation); - updateSpread = deprecate(factory.updateSpreadElement, factoryDeprecation); - createOmittedExpression = deprecate(factory.createOmittedExpression, factoryDeprecation); - createAsExpression = deprecate(factory.createAsExpression, factoryDeprecation); - updateAsExpression = deprecate(factory.updateAsExpression, factoryDeprecation); - createNonNullExpression = deprecate(factory.createNonNullExpression, factoryDeprecation); - updateNonNullExpression = deprecate(factory.updateNonNullExpression, factoryDeprecation); - createNonNullChain = deprecate(factory.createNonNullChain, factoryDeprecation); - updateNonNullChain = deprecate(factory.updateNonNullChain, factoryDeprecation); - createMetaProperty = deprecate(factory.createMetaProperty, factoryDeprecation); - updateMetaProperty = deprecate(factory.updateMetaProperty, factoryDeprecation); - createTemplateSpan = deprecate(factory.createTemplateSpan, factoryDeprecation); - updateTemplateSpan = deprecate(factory.updateTemplateSpan, factoryDeprecation); - createSemicolonClassElement = deprecate(factory.createSemicolonClassElement, factoryDeprecation); - createBlock = deprecate(factory.createBlock, factoryDeprecation); - updateBlock = deprecate(factory.updateBlock, factoryDeprecation); - createVariableStatement = deprecate(factory.createVariableStatement, factoryDeprecation); - updateVariableStatement = deprecate(factory.updateVariableStatement, factoryDeprecation); - createEmptyStatement = deprecate(factory.createEmptyStatement, factoryDeprecation); - createExpressionStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); - updateExpressionStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); - createStatement = deprecate(factory.createExpressionStatement, factoryDeprecation); - updateStatement = deprecate(factory.updateExpressionStatement, factoryDeprecation); - createIf = deprecate(factory.createIfStatement, factoryDeprecation); - updateIf = deprecate(factory.updateIfStatement, factoryDeprecation); - createDo = deprecate(factory.createDoStatement, factoryDeprecation); - updateDo = deprecate(factory.updateDoStatement, factoryDeprecation); - createWhile = deprecate(factory.createWhileStatement, factoryDeprecation); - updateWhile = deprecate(factory.updateWhileStatement, factoryDeprecation); - createFor = deprecate(factory.createForStatement, factoryDeprecation); - updateFor = deprecate(factory.updateForStatement, factoryDeprecation); - createForIn = deprecate(factory.createForInStatement, factoryDeprecation); - updateForIn = deprecate(factory.updateForInStatement, factoryDeprecation); - createForOf = deprecate(factory.createForOfStatement, factoryDeprecation); - updateForOf = deprecate(factory.updateForOfStatement, factoryDeprecation); - createContinue = deprecate(factory.createContinueStatement, factoryDeprecation); - updateContinue = deprecate(factory.updateContinueStatement, factoryDeprecation); - createBreak = deprecate(factory.createBreakStatement, factoryDeprecation); - updateBreak = deprecate(factory.updateBreakStatement, factoryDeprecation); - createReturn = deprecate(factory.createReturnStatement, factoryDeprecation); - updateReturn = deprecate(factory.updateReturnStatement, factoryDeprecation); - createWith = deprecate(factory.createWithStatement, factoryDeprecation); - updateWith = deprecate(factory.updateWithStatement, factoryDeprecation); - createSwitch = deprecate(factory.createSwitchStatement, factoryDeprecation); - updateSwitch = deprecate(factory.updateSwitchStatement, factoryDeprecation); - createLabel = deprecate(factory.createLabeledStatement, factoryDeprecation); - updateLabel = deprecate(factory.updateLabeledStatement, factoryDeprecation); - createThrow = deprecate(factory.createThrowStatement, factoryDeprecation); - updateThrow = deprecate(factory.updateThrowStatement, factoryDeprecation); - createTry = deprecate(factory.createTryStatement, factoryDeprecation); - updateTry = deprecate(factory.updateTryStatement, factoryDeprecation); - createDebuggerStatement = deprecate(factory.createDebuggerStatement, factoryDeprecation); - createVariableDeclarationList = deprecate(factory.createVariableDeclarationList, factoryDeprecation); - updateVariableDeclarationList = deprecate(factory.updateVariableDeclarationList, factoryDeprecation); - createFunctionDeclaration = deprecate(factory.createFunctionDeclaration, factoryDeprecation); - updateFunctionDeclaration = deprecate(factory.updateFunctionDeclaration, factoryDeprecation); - createClassDeclaration = deprecate(factory.createClassDeclaration, factoryDeprecation); - updateClassDeclaration = deprecate(factory.updateClassDeclaration, factoryDeprecation); - createInterfaceDeclaration = deprecate(factory.createInterfaceDeclaration, factoryDeprecation); - updateInterfaceDeclaration = deprecate(factory.updateInterfaceDeclaration, factoryDeprecation); - createTypeAliasDeclaration = deprecate(factory.createTypeAliasDeclaration, factoryDeprecation); - updateTypeAliasDeclaration = deprecate(factory.updateTypeAliasDeclaration, factoryDeprecation); - createEnumDeclaration = deprecate(factory.createEnumDeclaration, factoryDeprecation); - updateEnumDeclaration = deprecate(factory.updateEnumDeclaration, factoryDeprecation); - createModuleDeclaration = deprecate(factory.createModuleDeclaration, factoryDeprecation); - updateModuleDeclaration = deprecate(factory.updateModuleDeclaration, factoryDeprecation); - createModuleBlock = deprecate(factory.createModuleBlock, factoryDeprecation); - updateModuleBlock = deprecate(factory.updateModuleBlock, factoryDeprecation); - createCaseBlock = deprecate(factory.createCaseBlock, factoryDeprecation); - updateCaseBlock = deprecate(factory.updateCaseBlock, factoryDeprecation); - createNamespaceExportDeclaration = deprecate(factory.createNamespaceExportDeclaration, factoryDeprecation); - updateNamespaceExportDeclaration = deprecate(factory.updateNamespaceExportDeclaration, factoryDeprecation); - createImportEqualsDeclaration = deprecate(factory.createImportEqualsDeclaration, factoryDeprecation); - updateImportEqualsDeclaration = deprecate(factory.updateImportEqualsDeclaration, factoryDeprecation); - createImportDeclaration = deprecate(factory.createImportDeclaration, factoryDeprecation); - updateImportDeclaration = deprecate(factory.updateImportDeclaration, factoryDeprecation); - createNamespaceImport = deprecate(factory.createNamespaceImport, factoryDeprecation); - updateNamespaceImport = deprecate(factory.updateNamespaceImport, factoryDeprecation); - createNamedImports = deprecate(factory.createNamedImports, factoryDeprecation); - updateNamedImports = deprecate(factory.updateNamedImports, factoryDeprecation); - createImportSpecifier = deprecate(factory.createImportSpecifier, factoryDeprecation); - updateImportSpecifier = deprecate(factory.updateImportSpecifier, factoryDeprecation); - createExportAssignment2 = deprecate(factory.createExportAssignment, factoryDeprecation); - updateExportAssignment = deprecate(factory.updateExportAssignment, factoryDeprecation); - createNamedExports = deprecate(factory.createNamedExports, factoryDeprecation); - updateNamedExports = deprecate(factory.updateNamedExports, factoryDeprecation); - createExportSpecifier = deprecate(factory.createExportSpecifier, factoryDeprecation); - updateExportSpecifier = deprecate(factory.updateExportSpecifier, factoryDeprecation); - createExternalModuleReference = deprecate(factory.createExternalModuleReference, factoryDeprecation); - updateExternalModuleReference = deprecate(factory.updateExternalModuleReference, factoryDeprecation); - createJSDocTypeExpression = deprecate(factory.createJSDocTypeExpression, factoryDeprecation); - createJSDocTypeTag = deprecate(factory.createJSDocTypeTag, factoryDeprecation); - createJSDocReturnTag = deprecate(factory.createJSDocReturnTag, factoryDeprecation); - createJSDocThisTag = deprecate(factory.createJSDocThisTag, factoryDeprecation); - createJSDocComment = deprecate(factory.createJSDocComment, factoryDeprecation); - createJSDocParameterTag = deprecate(factory.createJSDocParameterTag, factoryDeprecation); - createJSDocClassTag = deprecate(factory.createJSDocClassTag, factoryDeprecation); - createJSDocAugmentsTag = deprecate(factory.createJSDocAugmentsTag, factoryDeprecation); - createJSDocEnumTag = deprecate(factory.createJSDocEnumTag, factoryDeprecation); - createJSDocTemplateTag = deprecate(factory.createJSDocTemplateTag, factoryDeprecation); - createJSDocTypedefTag = deprecate(factory.createJSDocTypedefTag, factoryDeprecation); - createJSDocCallbackTag = deprecate(factory.createJSDocCallbackTag, factoryDeprecation); - createJSDocSignature = deprecate(factory.createJSDocSignature, factoryDeprecation); - createJSDocPropertyTag = deprecate(factory.createJSDocPropertyTag, factoryDeprecation); - createJSDocTypeLiteral = deprecate(factory.createJSDocTypeLiteral, factoryDeprecation); - createJSDocImplementsTag = deprecate(factory.createJSDocImplementsTag, factoryDeprecation); - createJSDocAuthorTag = deprecate(factory.createJSDocAuthorTag, factoryDeprecation); - createJSDocPublicTag = deprecate(factory.createJSDocPublicTag, factoryDeprecation); - createJSDocPrivateTag = deprecate(factory.createJSDocPrivateTag, factoryDeprecation); - createJSDocProtectedTag = deprecate(factory.createJSDocProtectedTag, factoryDeprecation); - createJSDocReadonlyTag = deprecate(factory.createJSDocReadonlyTag, factoryDeprecation); - createJSDocTag = deprecate(factory.createJSDocUnknownTag, factoryDeprecation); - createJsxElement = deprecate(factory.createJsxElement, factoryDeprecation); - updateJsxElement = deprecate(factory.updateJsxElement, factoryDeprecation); - createJsxSelfClosingElement = deprecate(factory.createJsxSelfClosingElement, factoryDeprecation); - updateJsxSelfClosingElement = deprecate(factory.updateJsxSelfClosingElement, factoryDeprecation); - createJsxOpeningElement = deprecate(factory.createJsxOpeningElement, factoryDeprecation); - updateJsxOpeningElement = deprecate(factory.updateJsxOpeningElement, factoryDeprecation); - createJsxClosingElement = deprecate(factory.createJsxClosingElement, factoryDeprecation); - updateJsxClosingElement = deprecate(factory.updateJsxClosingElement, factoryDeprecation); - createJsxFragment = deprecate(factory.createJsxFragment, factoryDeprecation); - createJsxText = deprecate(factory.createJsxText, factoryDeprecation); - updateJsxText = deprecate(factory.updateJsxText, factoryDeprecation); - createJsxOpeningFragment = deprecate(factory.createJsxOpeningFragment, factoryDeprecation); - createJsxJsxClosingFragment = deprecate(factory.createJsxJsxClosingFragment, factoryDeprecation); - updateJsxFragment = deprecate(factory.updateJsxFragment, factoryDeprecation); - createJsxAttribute = deprecate(factory.createJsxAttribute, factoryDeprecation); - updateJsxAttribute = deprecate(factory.updateJsxAttribute, factoryDeprecation); - createJsxAttributes = deprecate(factory.createJsxAttributes, factoryDeprecation); - updateJsxAttributes = deprecate(factory.updateJsxAttributes, factoryDeprecation); - createJsxSpreadAttribute = deprecate(factory.createJsxSpreadAttribute, factoryDeprecation); - updateJsxSpreadAttribute = deprecate(factory.updateJsxSpreadAttribute, factoryDeprecation); - createJsxExpression = deprecate(factory.createJsxExpression, factoryDeprecation); - updateJsxExpression = deprecate(factory.updateJsxExpression, factoryDeprecation); - createCaseClause = deprecate(factory.createCaseClause, factoryDeprecation); - updateCaseClause = deprecate(factory.updateCaseClause, factoryDeprecation); - createDefaultClause = deprecate(factory.createDefaultClause, factoryDeprecation); - updateDefaultClause = deprecate(factory.updateDefaultClause, factoryDeprecation); - createHeritageClause = deprecate(factory.createHeritageClause, factoryDeprecation); - updateHeritageClause = deprecate(factory.updateHeritageClause, factoryDeprecation); - createCatchClause = deprecate(factory.createCatchClause, factoryDeprecation); - updateCatchClause = deprecate(factory.updateCatchClause, factoryDeprecation); - createPropertyAssignment = deprecate(factory.createPropertyAssignment, factoryDeprecation); - updatePropertyAssignment = deprecate(factory.updatePropertyAssignment, factoryDeprecation); - createShorthandPropertyAssignment = deprecate(factory.createShorthandPropertyAssignment, factoryDeprecation); - updateShorthandPropertyAssignment = deprecate(factory.updateShorthandPropertyAssignment, factoryDeprecation); - createSpreadAssignment = deprecate(factory.createSpreadAssignment, factoryDeprecation); - updateSpreadAssignment = deprecate(factory.updateSpreadAssignment, factoryDeprecation); - createEnumMember = deprecate(factory.createEnumMember, factoryDeprecation); - updateEnumMember = deprecate(factory.updateEnumMember, factoryDeprecation); - updateSourceFileNode = deprecate(factory.updateSourceFile, factoryDeprecation); - createNotEmittedStatement = deprecate(factory.createNotEmittedStatement, factoryDeprecation); - createPartiallyEmittedExpression = deprecate(factory.createPartiallyEmittedExpression, factoryDeprecation); - updatePartiallyEmittedExpression = deprecate(factory.updatePartiallyEmittedExpression, factoryDeprecation); - createCommaList = deprecate(factory.createCommaListExpression, factoryDeprecation); - updateCommaList = deprecate(factory.updateCommaListExpression, factoryDeprecation); - createBundle = deprecate(factory.createBundle, factoryDeprecation); - updateBundle = deprecate(factory.updateBundle, factoryDeprecation); - createImmediatelyInvokedFunctionExpression = deprecate(factory.createImmediatelyInvokedFunctionExpression, factoryDeprecation); - createImmediatelyInvokedArrowFunction = deprecate(factory.createImmediatelyInvokedArrowFunction, factoryDeprecation); - createVoidZero = deprecate(factory.createVoidZero, factoryDeprecation); - createExportDefault = deprecate(factory.createExportDefault, factoryDeprecation); - createExternalModuleExport = deprecate(factory.createExternalModuleExport, factoryDeprecation); - createNamespaceExport = deprecate(factory.createNamespaceExport, factoryDeprecation); - updateNamespaceExport = deprecate(factory.updateNamespaceExport, factoryDeprecation); - createToken = deprecate(function createToken2(kind) { - return factory.createToken(kind); - }, factoryDeprecation); - createIdentifier = deprecate(function createIdentifier2(text) { - return factory.createIdentifier( - text, - /*typeArguments*/ - void 0, - /*originalKeywordKind*/ - void 0 - ); - }, factoryDeprecation); - createTempVariable = deprecate(function createTempVariable2(recordTempVariable) { - return factory.createTempVariable( - recordTempVariable, - /*reserveInNestedScopes*/ - void 0 - ); - }, factoryDeprecation); - getGeneratedNameForNode = deprecate(function getGeneratedNameForNode2(node) { - return factory.getGeneratedNameForNode( - node, - /*flags*/ - void 0 - ); - }, factoryDeprecation); - createOptimisticUniqueName = deprecate(function createOptimisticUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */); - }, factoryDeprecation); - createFileLevelUniqueName = deprecate(function createFileLevelUniqueName2(text) { - return factory.createUniqueName(text, 16 /* Optimistic */ | 32 /* FileLevel */); - }, factoryDeprecation); - createIndexSignature = deprecate(function createIndexSignature2(decorators, modifiers, parameters, type) { - return factory.createIndexSignature(decorators, modifiers, parameters, type); - }, factoryDeprecation); - createTypePredicateNode = deprecate(function createTypePredicateNode2(parameterName, type) { - return factory.createTypePredicateNode( - /*assertsModifier*/ - void 0, - parameterName, - type - ); - }, factoryDeprecation); - updateTypePredicateNode = deprecate(function updateTypePredicateNode2(node, parameterName, type) { - return factory.updateTypePredicateNode( - node, - /*assertsModifier*/ - void 0, - parameterName, - type - ); - }, factoryDeprecation); - createLiteral = deprecate(function createLiteral2(value) { - if (typeof value === "number") { - return factory.createNumericLiteral(value); + addObjectAllocatorPatcher((objectAllocator2) => { + const Identifier73 = objectAllocator2.getIdentifierConstructor(); + if (!hasProperty(Identifier73.prototype, "originalKeywordKind")) { + Object.defineProperty(Identifier73.prototype, "originalKeywordKind", { + get: deprecate(function() { + return identifierToKeywordKind(this); + }, { + name: "originalKeywordKind", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use 'identifierToKeywordKind(identifier)' instead." + }) + }); } - if (typeof value === "object" && "base10Value" in value) { - return factory.createBigIntLiteral(value); + if (!hasProperty(Identifier73.prototype, "isInJSDocNamespace")) { + Object.defineProperty(Identifier73.prototype, "isInJSDocNamespace", { + get: deprecate(function() { + return this.flags & 2048 /* IdentifierIsInJSDocNamespace */ ? true : void 0; + }, { + name: "isInJSDocNamespace", + since: "5.0", + warnAfter: "5.1", + errorAfter: "5.2", + message: "Use '.parent' or the surrounding context to determine this instead." + }) + }); } - if (typeof value === "boolean") { - return value ? factory.createTrue() : factory.createFalse(); - } - if (typeof value === "string") { - return factory.createStringLiteral( - value, - /*isSingleQuote*/ - void 0 - ); - } - return factory.createStringLiteralFromNode(value); - }, { since: "4.0", warnAfter: "4.1", message: "Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead." }); - createMethodSignature = deprecate(function createMethodSignature2(typeParameters, parameters, type, name, questionToken) { - return factory.createMethodSignature( - /*modifiers*/ - void 0, - name, - questionToken, - typeParameters, - parameters, - type - ); - }, factoryDeprecation); - updateMethodSignature = deprecate(function updateMethodSignature2(node, typeParameters, parameters, type, name, questionToken) { - return factory.updateMethodSignature(node, node.modifiers, name, questionToken, typeParameters, parameters, type); - }, factoryDeprecation); - createTypeOperatorNode = deprecate(function createTypeOperatorNode2(operatorOrType, type) { - let operator; - if (type) { - operator = operatorOrType; - } else { - type = operatorOrType; - operator = 141 /* KeyOfKeyword */; - } - return factory.createTypeOperatorNode(operator, type); - }, factoryDeprecation); - createTaggedTemplate = deprecate(function createTaggedTemplate2(tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.createTaggedTemplateExpression(tag, typeArguments, template); - }, factoryDeprecation); - updateTaggedTemplate = deprecate(function updateTaggedTemplate2(node, tag, typeArgumentsOrTemplate, template) { - let typeArguments; - if (template) { - typeArguments = typeArgumentsOrTemplate; - } else { - template = typeArgumentsOrTemplate; - } - return factory.updateTaggedTemplateExpression(node, tag, typeArguments, template); - }, factoryDeprecation); - updateBinary = deprecate(function updateBinary2(node, left, right, operator = node.operatorToken) { - if (typeof operator === "number") { - operator = operator === node.operatorToken.kind ? node.operatorToken : factory.createToken(operator); - } - return factory.updateBinaryExpression(node, left, operator, right); - }, factoryDeprecation); - createConditional = deprecate(function createConditional2(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) { - return arguments.length === 5 ? factory.createConditionalExpression(condition, questionTokenOrWhenTrue, whenTrueOrWhenFalse, colonToken, whenFalse) : arguments.length === 3 ? factory.createConditionalExpression(condition, factory.createToken(57 /* QuestionToken */), questionTokenOrWhenTrue, factory.createToken(58 /* ColonToken */), whenTrueOrWhenFalse) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createYield = deprecate(function createYield2(asteriskTokenOrExpression, expression) { - let asteriskToken; - if (expression) { - asteriskToken = asteriskTokenOrExpression; - } else { - expression = asteriskTokenOrExpression; - } - return factory.createYieldExpression(asteriskToken, expression); - }, factoryDeprecation); - createClassExpression = deprecate(function createClassExpression2(modifiers, name, typeParameters, heritageClauses, members) { - return factory.createClassExpression( - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); - }, factoryDeprecation); - updateClassExpression = deprecate(function updateClassExpression2(node, modifiers, name, typeParameters, heritageClauses, members) { - return factory.updateClassExpression( - node, - /*decorators*/ - void 0, - modifiers, - name, - typeParameters, - heritageClauses, - members - ); - }, factoryDeprecation); - createPropertySignature = deprecate(function createPropertySignature2(modifiers, name, questionToken, type, initializer) { - const node = factory.createPropertySignature(modifiers, name, questionToken, type); - node.initializer = initializer; - return node; - }, factoryDeprecation); - updatePropertySignature = deprecate(function updatePropertySignature2(node, modifiers, name, questionToken, type, initializer) { - let updated = factory.updatePropertySignature(node, modifiers, name, questionToken, type); - if (node.initializer !== initializer) { - if (updated === node) { - updated = factory.cloneNode(node); - } - updated.initializer = initializer; - } - return updated; - }, factoryDeprecation); - createExpressionWithTypeArguments = deprecate(function createExpressionWithTypeArguments2(typeArguments, expression) { - return factory.createExpressionWithTypeArguments(expression, typeArguments); - }, factoryDeprecation); - updateExpressionWithTypeArguments = deprecate(function updateExpressionWithTypeArguments2(node, typeArguments, expression) { - return factory.updateExpressionWithTypeArguments(node, expression, typeArguments); - }, factoryDeprecation); - createArrowFunction = deprecate(function createArrowFunction2(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 6 ? factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 5 ? factory.createArrowFunction( - modifiers, - typeParameters, - parameters, - type, - /*equalsGreaterThanToken*/ - void 0, - equalsGreaterThanTokenOrBody - ) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - updateArrowFunction = deprecate(function updateArrowFunction2(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) { - return arguments.length === 7 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanTokenOrBody, body) : arguments.length === 6 ? factory.updateArrowFunction(node, modifiers, typeParameters, parameters, type, node.equalsGreaterThanToken, equalsGreaterThanTokenOrBody) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createVariableDeclaration = deprecate(function createVariableDeclaration2(name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 4 ? factory.createVariableDeclaration(name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length >= 1 && arguments.length <= 3 ? factory.createVariableDeclaration( - name, - /*exclamationToken*/ - void 0, - exclamationTokenOrType, - typeOrInitializer - ) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - updateVariableDeclaration = deprecate(function updateVariableDeclaration2(node, name, exclamationTokenOrType, typeOrInitializer, initializer) { - return arguments.length === 5 ? factory.updateVariableDeclaration(node, name, exclamationTokenOrType, typeOrInitializer, initializer) : arguments.length === 4 ? factory.updateVariableDeclaration(node, name, node.exclamationToken, exclamationTokenOrType, typeOrInitializer) : Debug.fail("Argument count mismatch"); - }, factoryDeprecation); - createImportClause = deprecate(function createImportClause2(name, namedBindings, isTypeOnly = false) { - return factory.createImportClause(isTypeOnly, name, namedBindings); - }, factoryDeprecation); - updateImportClause = deprecate(function updateImportClause2(node, name, namedBindings, isTypeOnly) { - return factory.updateImportClause(node, isTypeOnly, name, namedBindings); - }, factoryDeprecation); - createExportDeclaration = deprecate(function createExportDeclaration2(decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly = false) { - return factory.createExportDeclaration(decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier); - }, factoryDeprecation); - updateExportDeclaration = deprecate(function updateExportDeclaration2(node, decorators, modifiers, exportClause, moduleSpecifier, isTypeOnly) { - return factory.updateExportDeclaration(node, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, node.assertClause); - }, factoryDeprecation); - createJSDocParamTag = deprecate(function createJSDocParamTag2(name, isBracketed, typeExpression, comment) { - return factory.createJSDocParameterTag( - /*tagName*/ - void 0, - name, - isBracketed, - typeExpression, - /*isNameFirst*/ - false, - comment ? factory.createNodeArray([factory.createJSDocText(comment)]) : void 0 - ); - }, factoryDeprecation); - createComma = deprecate(function createComma2(left, right) { - return factory.createComma(left, right); - }, factoryDeprecation); - createLessThan = deprecate(function createLessThan2(left, right) { - return factory.createLessThan(left, right); - }, factoryDeprecation); - createAssignment = deprecate(function createAssignment2(left, right) { - return factory.createAssignment(left, right); - }, factoryDeprecation); - createStrictEquality = deprecate(function createStrictEquality2(left, right) { - return factory.createStrictEquality(left, right); - }, factoryDeprecation); - createStrictInequality = deprecate(function createStrictInequality2(left, right) { - return factory.createStrictInequality(left, right); - }, factoryDeprecation); - createAdd = deprecate(function createAdd2(left, right) { - return factory.createAdd(left, right); - }, factoryDeprecation); - createSubtract = deprecate(function createSubtract2(left, right) { - return factory.createSubtract(left, right); - }, factoryDeprecation); - createLogicalAnd = deprecate(function createLogicalAnd2(left, right) { - return factory.createLogicalAnd(left, right); - }, factoryDeprecation); - createLogicalOr = deprecate(function createLogicalOr2(left, right) { - return factory.createLogicalOr(left, right); - }, factoryDeprecation); - createPostfixIncrement = deprecate(function createPostfixIncrement2(operand) { - return factory.createPostfixIncrement(operand); - }, factoryDeprecation); - createLogicalNot = deprecate(function createLogicalNot2(operand) { - return factory.createLogicalNot(operand); - }, factoryDeprecation); - createNode2 = deprecate(function createNode3(kind, pos = 0, end = 0) { - return setTextRangePosEnd( - kind === 308 /* SourceFile */ ? parseBaseNodeFactory.createBaseSourceFileNode(kind) : kind === 79 /* Identifier */ ? parseBaseNodeFactory.createBaseIdentifierNode(kind) : kind === 80 /* PrivateIdentifier */ ? parseBaseNodeFactory.createBasePrivateIdentifierNode(kind) : !isNodeKind(kind) ? parseBaseNodeFactory.createBaseTokenNode(kind) : parseBaseNodeFactory.createBaseNode(kind), - pos, - end - ); - }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory` method instead." }); - getMutableClone = deprecate(function getMutableClone2(node) { - const clone2 = factory.cloneNode(node); - setTextRange(clone2, node); - setParent(clone2, node.parent); - return clone2; - }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`." }); - } - }); - - // src/deprecatedCompat/4.0/renamedNodeTests.ts - var isTypeAssertion; - var init_renamedNodeTests = __esm({ - "src/deprecatedCompat/4.0/renamedNodeTests.ts"() { - "use strict"; - init_ts5(); - init_deprecate(); - isTypeAssertion = deprecate(function isTypeAssertion2(node) { - return node.kind === 213 /* TypeAssertionExpression */; - }, { - since: "4.0", - warnAfter: "4.1", - message: "Use `isTypeAssertionExpression` instead." }); } }); - // src/deprecatedCompat/4.2/renamedNodeTests.ts - var isIdentifierOrPrivateIdentifier; - var init_renamedNodeTests2 = __esm({ - "src/deprecatedCompat/4.2/renamedNodeTests.ts"() { - "use strict"; - init_ts5(); - init_deprecate(); - isIdentifierOrPrivateIdentifier = deprecate(function isIdentifierOrPrivateIdentifier2(node) { - return isMemberName(node); - }, { - since: "4.2", - warnAfter: "4.3", - message: "Use `isMemberName` instead." - }); - } - }); - - // src/deprecatedCompat/4.2/abstractConstructorTypes.ts - function patchNodeFactory(factory2) { - const { - createConstructorTypeNode: createConstructorTypeNode2, - updateConstructorTypeNode: updateConstructorTypeNode2 - } = factory2; - factory2.createConstructorTypeNode = buildOverload("createConstructorTypeNode").overload({ - 0(modifiers, typeParameters, parameters, type) { - return createConstructorTypeNode2(modifiers, typeParameters, parameters, type); - }, - 1(typeParameters, parameters, type) { - return createConstructorTypeNode2( - /*modifiers*/ - void 0, - typeParameters, - parameters, - type - ); - } - }).bind({ - 0: (args) => args.length === 4, - 1: (args) => args.length === 3 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateConstructorTypeNode = buildOverload("updateConstructorTypeNode").overload({ - 0(node, modifiers, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, modifiers, typeParameters, parameters, type); - }, - 1(node, typeParameters, parameters, type) { - return updateConstructorTypeNode2(node, node.modifiers, typeParameters, parameters, type); - } - }).bind({ - 0: (args) => args.length === 5, - 1: (args) => args.length === 4 - }).deprecate({ - 1: { since: "4.2", warnAfter: "4.3", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - } - var init_abstractConstructorTypes = __esm({ - "src/deprecatedCompat/4.2/abstractConstructorTypes.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory); - patchNodeFactory(factory); - } - }); - - // src/deprecatedCompat/4.6/importTypeAssertions.ts - function patchNodeFactory2(factory2) { - const { - createImportTypeNode: createImportTypeNode2, - updateImportTypeNode: updateImportTypeNode2 - } = factory2; - factory2.createImportTypeNode = buildOverload("createImportTypeNode").overload({ - 0(argument, assertions, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2(argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(argument, qualifier, typeArguments, isTypeOf) { - return createImportTypeNode2( - argument, - /*assertions*/ - void 0, - qualifier, - typeArguments, - isTypeOf - ); - } - }).bind({ - 0: ([, assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); - factory2.updateImportTypeNode = buildOverload("updateImportTypeNode").overload({ - 0(node, argument, assertions, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, assertions, qualifier, typeArguments, isTypeOf); - }, - 1(node, argument, qualifier, typeArguments, isTypeOf) { - return updateImportTypeNode2(node, argument, node.assertions, qualifier, typeArguments, isTypeOf); - } - }).bind({ - 0: ([, , assertions, qualifier, typeArguments, isTypeOf]) => (assertions === void 0 || isImportTypeAssertionContainer(assertions)) && (qualifier === void 0 || !isArray(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean"), - 1: ([, , qualifier, typeArguments, isTypeOf, other]) => other === void 0 && (qualifier === void 0 || isEntityName(qualifier)) && (typeArguments === void 0 || isArray(typeArguments)) && (isTypeOf === void 0 || typeof isTypeOf === "boolean") - }).deprecate({ - 1: { since: "4.6", warnAfter: "4.7", message: "Use the overload that accepts 'assertions'" } - }).finish(); - } - var init_importTypeAssertions = __esm({ - "src/deprecatedCompat/4.6/importTypeAssertions.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory2); - patchNodeFactory2(factory); - } - }); - - // src/deprecatedCompat/4.7/typeParameterModifiers.ts - function patchNodeFactory3(factory2) { - const { - createTypeParameterDeclaration: createTypeParameterDeclaration2, - updateTypeParameterDeclaration: updateTypeParameterDeclaration2 - } = factory2; - factory2.createTypeParameterDeclaration = buildOverload("createTypeParameterDeclaration").overload({ - 0(modifiers, name, constraint, defaultType) { - return createTypeParameterDeclaration2(modifiers, name, constraint, defaultType); - }, - 1(name, constraint, defaultType) { - return createTypeParameterDeclaration2( - /*modifiers*/ - void 0, - name, - constraint, - defaultType - ); - } - }).bind({ - 0: ([modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - factory2.updateTypeParameterDeclaration = buildOverload("updateTypeParameterDeclaration").overload({ - 0(node, modifiers, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, modifiers, name, constraint, defaultType); - }, - 1(node, name, constraint, defaultType) { - return updateTypeParameterDeclaration2(node, node.modifiers, name, constraint, defaultType); - } - }).bind({ - 0: ([, modifiers]) => modifiers === void 0 || isArray(modifiers), - 1: ([, name]) => name !== void 0 && !isArray(name) - }).deprecate({ - 1: { since: "4.7", warnAfter: "4.8", message: "Use the overload that accepts 'modifiers'" } - }).finish(); - } - var init_typeParameterModifiers = __esm({ - "src/deprecatedCompat/4.7/typeParameterModifiers.ts"() { - "use strict"; - init_ts5(); - addNodeFactoryPatcher(patchNodeFactory3); - patchNodeFactory3(factory); - } - }); - - // src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts - function patchNodeFactory4(factory2) { - const { - createParameterDeclaration, - updateParameterDeclaration, - createPropertyDeclaration, - updatePropertyDeclaration: updatePropertyDeclaration2, - createMethodDeclaration, - updateMethodDeclaration, - createConstructorDeclaration, - updateConstructorDeclaration, - createGetAccessorDeclaration, - updateGetAccessorDeclaration, - createSetAccessorDeclaration, - updateSetAccessorDeclaration, - createIndexSignature: createIndexSignature3, - updateIndexSignature: updateIndexSignature2, - createClassStaticBlockDeclaration, - updateClassStaticBlockDeclaration, - createClassExpression: createClassExpression3, - updateClassExpression: updateClassExpression3, - createFunctionDeclaration: createFunctionDeclaration2, - updateFunctionDeclaration: updateFunctionDeclaration2, - createClassDeclaration: createClassDeclaration2, - updateClassDeclaration: updateClassDeclaration2, - createInterfaceDeclaration: createInterfaceDeclaration2, - updateInterfaceDeclaration: updateInterfaceDeclaration2, - createTypeAliasDeclaration: createTypeAliasDeclaration2, - updateTypeAliasDeclaration: updateTypeAliasDeclaration2, - createEnumDeclaration: createEnumDeclaration2, - updateEnumDeclaration: updateEnumDeclaration2, - createModuleDeclaration: createModuleDeclaration2, - updateModuleDeclaration: updateModuleDeclaration2, - createImportEqualsDeclaration: createImportEqualsDeclaration2, - updateImportEqualsDeclaration: updateImportEqualsDeclaration2, - createImportDeclaration: createImportDeclaration2, - updateImportDeclaration: updateImportDeclaration2, - createExportAssignment: createExportAssignment3, - updateExportAssignment: updateExportAssignment2, - createExportDeclaration: createExportDeclaration3, - updateExportDeclaration: updateExportDeclaration3 - } = factory2; - factory2.createParameterDeclaration = buildOverload("createParameterDeclaration").overload({ - 0(modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return createParameterDeclaration(concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateParameterDeclaration = buildOverload("updateParameterDeclaration").overload({ - 0(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer); - }, - 1(node, decorators, modifiers, dotDotDotToken, name, questionToken, type, initializer) { - return updateParameterDeclaration(node, concatenate(decorators, modifiers), dotDotDotToken, name, questionToken, type, initializer); - } - }).bind({ - 0: ([, , dotDotDotToken, name, questionToken, type, initializer, other]) => other === void 0 && (dotDotDotToken === void 0 || !isArray(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, dotDotDotToken, name, questionToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (dotDotDotToken === void 0 || typeof dotDotDotToken === "object" && isDotDotDotToken(dotDotDotToken)) && (name === void 0 || typeof name === "string" || isBindingName(name)) && (questionToken === void 0 || isQuestionToken(questionToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createPropertyDeclaration = buildOverload("createPropertyDeclaration").overload({ - 0(modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return createPropertyDeclaration(concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updatePropertyDeclaration = buildOverload("updatePropertyDeclaration").overload({ - 0(node, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, modifiers, name, questionOrExclamationToken, type, initializer); - }, - 1(node, decorators, modifiers, name, questionOrExclamationToken, type, initializer) { - return updatePropertyDeclaration2(node, concatenate(decorators, modifiers), name, questionOrExclamationToken, type, initializer); - } - }).bind({ - 0: ([, , name, questionOrExclamationToken, type, initializer, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (questionOrExclamationToken === void 0 || typeof questionOrExclamationToken === "object" && isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)), - 1: ([, , modifiers, name, questionOrExclamationToken, type, initializer]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionOrExclamationToken === void 0 || isQuestionOrExclamationToken(questionOrExclamationToken)) && (type === void 0 || isTypeNode(type)) && (initializer === void 0 || isExpression(initializer)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createMethodDeclaration = buildOverload("createMethodDeclaration").overload({ - 0(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return createMethodDeclaration(concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateMethodDeclaration = buildOverload("updateMethodDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body); - }, - 1(node, decorators, modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body) { - return updateMethodDeclaration(node, concatenate(decorators, modifiers), asteriskToken, name, questionToken, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, questionToken, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || typeof questionToken === "object" && isQuestionToken(questionToken)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || !some(parameters, isTypeParameterDeclaration)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, questionToken, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken === "object" && isAsteriskToken(asteriskToken)) && (name === void 0 || typeof name === "string" || isPropertyName(name)) && (questionToken === void 0 || !isArray(questionToken)) && (typeParameters === void 0 || !some(typeParameters, isParameter)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createConstructorDeclaration = buildOverload("createConstructorDeclaration").overload({ - 0(modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - }, - 1(_decorators, modifiers, parameters, body) { - return createConstructorDeclaration(modifiers, parameters, body); - } - }).bind({ - 0: ([modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateConstructorDeclaration = buildOverload("updateConstructorDeclaration").overload({ - 0(node, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - }, - 1(node, _decorators, modifiers, parameters, body) { - return updateConstructorDeclaration(node, modifiers, parameters, body); - } - }).bind({ - 0: ([, modifiers, parameters, body, other]) => other === void 0 && (modifiers === void 0 || !some(modifiers, isDecorator)) && (parameters === void 0 || !some(parameters, isModifier)) && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, parameters, body]) => (decorators === void 0 || !some(decorators, isModifier)) && (modifiers === void 0 || !some(modifiers, isParameter)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createGetAccessorDeclaration = buildOverload("createGetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(modifiers, name, parameters, type, body); - }, - 1(decorators, modifiers, name, parameters, type, body) { - return createGetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateGetAccessorDeclaration = buildOverload("updateGetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, modifiers, name, parameters, type, body); - }, - 1(node, decorators, modifiers, name, parameters, type, body) { - return updateGetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, type, body); - } - }).bind({ - 0: ([, , name, parameters, type, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, name, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createSetAccessorDeclaration = buildOverload("createSetAccessorDeclaration").overload({ - 0(modifiers, name, parameters, body) { - return createSetAccessorDeclaration(modifiers, name, parameters, body); - }, - 1(decorators, modifiers, name, parameters, body) { - return createSetAccessorDeclaration(concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateSetAccessorDeclaration = buildOverload("updateSetAccessorDeclaration").overload({ - 0(node, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, modifiers, name, parameters, body); - }, - 1(node, decorators, modifiers, name, parameters, body) { - return updateSetAccessorDeclaration(node, concatenate(decorators, modifiers), name, parameters, body); - } - }).bind({ - 0: ([, , name, parameters, body, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || !isArray(body)), - 1: ([, , modifiers, name, parameters, body]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (parameters === void 0 || isArray(parameters)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createIndexSignature = buildOverload("createIndexSignature").overload({ - 0(modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - }, - 1(_decorators, modifiers, parameters, type) { - return createIndexSignature3(modifiers, parameters, type); - } - }).bind({ - 0: ([modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateIndexSignature = buildOverload("updateIndexSignature").overload({ - 0(node, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - }, - 1(node, _decorators, modifiers, parameters, type) { - return updateIndexSignature2(node, modifiers, parameters, type); - } - }).bind({ - 0: ([, modifiers, parameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, parameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || every(modifiers, isModifier)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassStaticBlockDeclaration = buildOverload("createClassStaticBlockDeclaration").overload({ - 0(body) { - return createClassStaticBlockDeclaration(body); - }, - 1(_decorators, _modifiers, body) { - return createClassStaticBlockDeclaration(body); - } - }).bind({ - 0: ([body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.updateClassStaticBlockDeclaration = buildOverload("updateClassStaticBlockDeclaration").overload({ - 0(node, body) { - return updateClassStaticBlockDeclaration(node, body); - }, - 1(node, _decorators, _modifiers, body) { - return updateClassStaticBlockDeclaration(node, body); - } - }).bind({ - 0: ([, body, other1, other2]) => other1 === void 0 && other2 === void 0 && (body === void 0 || !isArray(body)), - 1: ([, decorators, modifiers, body]) => (decorators === void 0 || isArray(decorators)) && (modifiers === void 0 || isArray(decorators)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS_AND_MODIFIERS - }).finish(); - factory2.createClassExpression = buildOverload("createClassExpression").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassExpression3(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateClassExpression = buildOverload("updateClassExpression").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassExpression3(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createFunctionDeclaration = buildOverload("createFunctionDeclaration").overload({ - 0(modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(_decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return createFunctionDeclaration2(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || typeof name === "string" || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateFunctionDeclaration = buildOverload("updateFunctionDeclaration").overload({ - 0(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - }, - 1(node, _decorators, modifiers, asteriskToken, name, typeParameters, parameters, type, body) { - return updateFunctionDeclaration2(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body); - } - }).bind({ - 0: ([, , asteriskToken, name, typeParameters, parameters, type, body, other]) => other === void 0 && (asteriskToken === void 0 || !isArray(asteriskToken)) && (name === void 0 || isIdentifier(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (parameters === void 0 || every(parameters, isParameter)) && (type === void 0 || !isArray(type)) && (body === void 0 || isBlock(body)), - 1: ([, , modifiers, asteriskToken, name, typeParameters, parameters, type, body]) => (modifiers === void 0 || isArray(modifiers)) && (asteriskToken === void 0 || typeof asteriskToken !== "string" && isAsteriskToken(asteriskToken)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (parameters === void 0 || isArray(parameters)) && (type === void 0 || isTypeNode(type)) && (body === void 0 || isBlock(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createClassDeclaration = buildOverload("createClassDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createClassDeclaration2(concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: () => true - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.updateClassDeclaration = buildOverload("updateClassDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateClassDeclaration2(node, concatenate(decorators, modifiers), name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, , name, typeParameters, heritageClauses, members, other]) => other === void 0 && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isClassElement)), - 1: ([, , modifiers, name, typeParameters, heritageClauses, members]) => (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: MUST_MERGE - }).finish(); - factory2.createInterfaceDeclaration = buildOverload("createInterfaceDeclaration").overload({ - 0(modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - }, - 1(_decorators, modifiers, name, typeParameters, heritageClauses, members) { - return createInterfaceDeclaration2(modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateInterfaceDeclaration = buildOverload("updateInterfaceDeclaration").overload({ - 0(node, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - }, - 1(node, _decorators, modifiers, name, typeParameters, heritageClauses, members) { - return updateInterfaceDeclaration2(node, modifiers, name, typeParameters, heritageClauses, members); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, heritageClauses, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)), - 1: ([, decorators, modifiers, name, typeParameters, heritageClauses, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || every(typeParameters, isTypeParameterDeclaration)) && (heritageClauses === void 0 || every(heritageClauses, isHeritageClause)) && (members === void 0 || every(members, isTypeElement)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createTypeAliasDeclaration = buildOverload("createTypeAliasDeclaration").overload({ - 0(modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - }, - 1(_decorators, modifiers, name, typeParameters, type) { - return createTypeAliasDeclaration2(modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateTypeAliasDeclaration = buildOverload("updateTypeAliasDeclaration").overload({ - 0(node, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - }, - 1(node, _decorators, modifiers, name, typeParameters, type) { - return updateTypeAliasDeclaration2(node, modifiers, name, typeParameters, type); - } - }).bind({ - 0: ([, modifiers, name, typeParameters, type, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || !isArray(type)), - 1: ([, decorators, modifiers, name, typeParameters, type]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (typeParameters === void 0 || isArray(typeParameters)) && (type === void 0 || isTypeNode(type)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createEnumDeclaration = buildOverload("createEnumDeclaration").overload({ - 0(modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - }, - 1(_decorators, modifiers, name, members) { - return createEnumDeclaration2(modifiers, name, members); - } - }).bind({ - 0: ([modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateEnumDeclaration = buildOverload("updateEnumDeclaration").overload({ - 0(node, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - }, - 1(node, _decorators, modifiers, name, members) { - return updateEnumDeclaration2(node, modifiers, name, members); - } - }).bind({ - 0: ([, modifiers, name, members, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)), - 1: ([, decorators, modifiers, name, members]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name === void 0 || !isArray(name)) && (members === void 0 || isArray(members)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createModuleDeclaration = buildOverload("createModuleDeclaration").overload({ - 0(modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - }, - 1(_decorators, modifiers, name, body, flags) { - return createModuleDeclaration2(modifiers, name, body, flags); - } - }).bind({ - 0: ([modifiers, name, body, flags, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name !== void 0 && !isArray(name)) && (body === void 0 || isModuleBody(body)) && (flags === void 0 || typeof flags === "number"), - 1: ([decorators, modifiers, name, body, flags]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || typeof body === "object") && (flags === void 0 || typeof flags === "number") - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateModuleDeclaration = buildOverload("updateModuleDeclaration").overload({ - 0(node, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - }, - 1(node, _decorators, modifiers, name, body) { - return updateModuleDeclaration2(node, modifiers, name, body); - } - }).bind({ - 0: ([, modifiers, name, body, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (name === void 0 || !isArray(name)) && (body === void 0 || isModuleBody(body)), - 1: ([, decorators, modifiers, name, body]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (name !== void 0 && isModuleName(name)) && (body === void 0 || isModuleBody(body)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportEqualsDeclaration = buildOverload("createImportEqualsDeclaration").overload({ - 0(modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - }, - 1(_decorators, modifiers, isTypeOnly, name, moduleReference) { - return createImportEqualsDeclaration2(modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportEqualsDeclaration = buildOverload("updateImportEqualsDeclaration").overload({ - 0(node, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - }, - 1(node, _decorators, modifiers, isTypeOnly, name, moduleReference) { - return updateImportEqualsDeclaration2(node, modifiers, isTypeOnly, name, moduleReference); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, name, moduleReference, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && typeof name !== "boolean" && typeof moduleReference !== "string", - 1: ([, decorators, modifiers, isTypeOnly, name, moduleReference]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isTypeOnly === void 0 || typeof isTypeOnly === "boolean") && (typeof name === "string" || isIdentifier(name)) && (moduleReference !== void 0 && isModuleReference(moduleReference)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createImportDeclaration = buildOverload("createImportDeclaration").overload({ - 0(modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return createImportDeclaration2(modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateImportDeclaration = buildOverload("updateImportDeclaration").overload({ - 0(node, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, importClause, moduleSpecifier, assertClause) { - return updateImportDeclaration2(node, modifiers, importClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, importClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (importClause === void 0 || !isArray(importClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, importClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (importClause === void 0 || isImportClause(importClause)) && (moduleSpecifier !== void 0 && isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportAssignment = buildOverload("createExportAssignment").overload({ - 0(modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - }, - 1(_decorators, modifiers, isExportEquals, expression) { - return createExportAssignment3(modifiers, isExportEquals, expression); - } - }).bind({ - 0: ([modifiers, isExportEquals, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && typeof expression === "object", - 1: ([decorators, modifiers, isExportEquals, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (isExportEquals === void 0 || typeof isExportEquals === "boolean") && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportAssignment = buildOverload("updateExportAssignment").overload({ - 0(node, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - }, - 1(node, _decorators, modifiers, expression) { - return updateExportAssignment2(node, modifiers, expression); - } - }).bind({ - 0: ([, modifiers, expression, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && (expression !== void 0 && !isArray(expression)), - 1: ([, decorators, modifiers, expression]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && (expression !== void 0 && isExpression(expression)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.createExportDeclaration = buildOverload("createExportDeclaration").overload({ - 0(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(_decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return createExportDeclaration3(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - factory2.updateExportDeclaration = buildOverload("updateExportDeclaration").overload({ - 0(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - }, - 1(node, _decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { - return updateExportDeclaration3(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - } - }).bind({ - 0: ([, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause, other]) => other === void 0 && (modifiers === void 0 || every(modifiers, isModifier)) && typeof isTypeOnly === "boolean" && typeof exportClause !== "boolean" && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)), - 1: ([, decorators, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause]) => (decorators === void 0 || every(decorators, isDecorator)) && (modifiers === void 0 || isArray(modifiers)) && typeof isTypeOnly === "boolean" && (exportClause === void 0 || isNamedExportBindings(exportClause)) && (moduleSpecifier === void 0 || isExpression(moduleSpecifier)) && (assertClause === void 0 || isAssertClause(assertClause)) - }).deprecate({ - 1: DISALLOW_DECORATORS - }).finish(); - } - var MUST_MERGE, DISALLOW_DECORATORS, DISALLOW_DECORATORS_AND_MODIFIERS; - var init_mergeDecoratorsAndModifiers = __esm({ - "src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts"() { - "use strict"; - init_ts5(); - MUST_MERGE = { since: "4.8", warnAfter: "4.9.0-0", message: "Decorators have been combined with modifiers. Callers should switch to an overload that does not accept a 'decorators' parameter." }; - DISALLOW_DECORATORS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators are no longer supported for this function. Callers should switch to an overload that does not accept a 'decorators' parameter.` }; - DISALLOW_DECORATORS_AND_MODIFIERS = { since: "4.8", warnAfter: "4.9.0-0", message: `Decorators and modifiers are no longer supported for this function. Callers should switch to an overload that does not accept the 'decorators' and 'modifiers' parameters.` }; - addNodeFactoryPatcher(patchNodeFactory4); - patchNodeFactory4(factory); - } - }); - // src/deprecatedCompat/_namespaces/ts.ts var init_ts5 = __esm({ "src/deprecatedCompat/_namespaces/ts.ts"() { "use strict"; init_ts2(); init_deprecations(); - init_nodeFactoryTopLevelExports(); - init_renamedNodeTests(); - init_renamedNodeTests2(); - init_abstractConstructorTypes(); - init_importTypeAssertions(); - init_typeParameterModifiers(); - init_mergeDecoratorsAndModifiers(); + init_identifierProperties(); } }); @@ -164192,6 +166588,7 @@ ${options.prefix}` : "\n" : options.prefix InferencePriority: () => InferencePriority, InlayHintKind: () => InlayHintKind, InlayHints: () => ts_InlayHints_exports, + InternalEmitFlags: () => InternalEmitFlags, InternalSymbolName: () => InternalSymbolName, InvalidatedProjectKind: () => InvalidatedProjectKind, JsDoc: () => ts_JsDoc_exports, @@ -164235,7 +166632,7 @@ ${options.prefix}` : "\n" : options.prefix PollingInterval: () => PollingInterval, PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, - PrivateIdentifierKind: () => PrivateIdentifierKind2, + PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, QuotePreference: () => QuotePreference, RelationComparisonResult: () => RelationComparisonResult, @@ -164285,10 +166682,13 @@ ${options.prefix}` : "\n" : options.prefix WatchFileKind: () => WatchFileKind, WatchLogLevel: () => WatchLogLevel, WatchType: () => WatchType, + accessPrivateIdentifier: () => accessPrivateIdentifier, addEmitFlags: () => addEmitFlags, addEmitHelper: () => addEmitHelper, addEmitHelpers: () => addEmitHelpers, + addInternalEmitFlags: () => addInternalEmitFlags, addNodeFactoryPatcher: () => addNodeFactoryPatcher, + addObjectAllocatorPatcher: () => addObjectAllocatorPatcher, addRange: () => addRange, addRelatedInfo: () => addRelatedInfo, addSyntheticLeadingComment: () => addSyntheticLeadingComment, @@ -164359,6 +166759,7 @@ ${options.prefix}` : "\n" : options.prefix changesAffectModuleResolution: () => changesAffectModuleResolution, changesAffectingProgramStructure: () => changesAffectingProgramStructure, childIsDecorated: () => childIsDecorated, + classElementOrClassElementParameterIsDecorated: () => classElementOrClassElementParameterIsDecorated, classOrConstructorParameterIsDecorated: () => classOrConstructorParameterIsDecorated, classPrivateFieldGetHelper: () => classPrivateFieldGetHelper, classPrivateFieldInHelper: () => classPrivateFieldInHelper, @@ -164407,6 +166808,7 @@ ${options.prefix}` : "\n" : options.prefix compilerOptionsAffectSemanticDiagnostics: () => compilerOptionsAffectSemanticDiagnostics, compilerOptionsDidYouMeanDiagnostics: () => compilerOptionsDidYouMeanDiagnostics, compilerOptionsIndicateEsModules: () => compilerOptionsIndicateEsModules, + compose: () => compose, computeCommonSourceDirectoryOfFilenames: () => computeCommonSourceDirectoryOfFilenames, computeLineAndCharacterOfPosition: () => computeLineAndCharacterOfPosition, computeLineOfPosition: () => computeLineOfPosition, @@ -164424,7 +166826,6 @@ ${options.prefix}` : "\n" : options.prefix containsPath: () => containsPath, convertCompilerOptionsForTelemetry: () => convertCompilerOptionsForTelemetry, convertCompilerOptionsFromJson: () => convertCompilerOptionsFromJson, - convertEnableAutoDiscoveryToEnable: () => convertEnableAutoDiscoveryToEnable, convertJsonOption: () => convertJsonOption, convertToBase64: () => convertToBase64, convertToObject: () => convertToObject, @@ -164445,41 +166846,17 @@ ${options.prefix}` : "\n" : options.prefix createAccessorPropertyBackingField: () => createAccessorPropertyBackingField, createAccessorPropertyGetRedirector: () => createAccessorPropertyGetRedirector, createAccessorPropertySetRedirector: () => createAccessorPropertySetRedirector, - createAdd: () => createAdd, - createArrayBindingPattern: () => createArrayBindingPattern, - createArrayLiteral: () => createArrayLiteral, - createArrayTypeNode: () => createArrayTypeNode, - createArrowFunction: () => createArrowFunction, - createAsExpression: () => createAsExpression, - createAssignment: () => createAssignment, - createAwait: () => createAwait, createBaseNodeFactory: () => createBaseNodeFactory, - createBigIntLiteral: () => createBigIntLiteral, - createBinary: () => createBinary, createBinaryExpressionTrampoline: () => createBinaryExpressionTrampoline, - createBindingElement: () => createBindingElement, createBindingHelper: () => createBindingHelper, - createBlock: () => createBlock, - createBreak: () => createBreak, createBuildInfo: () => createBuildInfo, createBuilderProgram: () => createBuilderProgram, createBuilderProgramUsingProgramBuildInfo: () => createBuilderProgramUsingProgramBuildInfo, createBuilderStatusReporter: () => createBuilderStatusReporter, - createBundle: () => createBundle, createCacheWithRedirects: () => createCacheWithRedirects, createCacheableExportInfoMap: () => createCacheableExportInfoMap, createCachedDirectoryStructureHost: () => createCachedDirectoryStructureHost, - createCall: () => createCall, - createCallChain: () => createCallChain, - createCallSignature: () => createCallSignature, - createCaseBlock: () => createCaseBlock, - createCaseClause: () => createCaseClause, - createCatchClause: () => createCatchClause, - createClassDeclaration: () => createClassDeclaration, - createClassExpression: () => createClassExpression, createClassifier: () => createClassifier, - createComma: () => createComma, - createCommaList: () => createCommaList, createCommentDirectivesMap: () => createCommentDirectivesMap, createCompilerDiagnostic: () => createCompilerDiagnostic, createCompilerDiagnosticForInvalidCustomType: () => createCompilerDiagnosticForInvalidCustomType, @@ -164487,212 +166864,73 @@ ${options.prefix}` : "\n" : options.prefix createCompilerHost: () => createCompilerHost, createCompilerHostFromProgramHost: () => createCompilerHostFromProgramHost, createCompilerHostWorker: () => createCompilerHostWorker, - createComputedPropertyName: () => createComputedPropertyName, - createConditional: () => createConditional, - createConditionalTypeNode: () => createConditionalTypeNode, - createConstructSignature: () => createConstructSignature, - createConstructor: () => createConstructor, - createConstructorTypeNode: () => createConstructorTypeNode, - createContinue: () => createContinue, - createDebuggerStatement: () => createDebuggerStatement, - createDecorator: () => createDecorator, - createDefaultClause: () => createDefaultClause, - createDelete: () => createDelete, createDetachedDiagnostic: () => createDetachedDiagnostic, createDiagnosticCollection: () => createDiagnosticCollection, createDiagnosticForFileFromMessageChain: () => createDiagnosticForFileFromMessageChain, createDiagnosticForNode: () => createDiagnosticForNode, createDiagnosticForNodeArray: () => createDiagnosticForNodeArray, + createDiagnosticForNodeArrayFromMessageChain: () => createDiagnosticForNodeArrayFromMessageChain, createDiagnosticForNodeFromMessageChain: () => createDiagnosticForNodeFromMessageChain, createDiagnosticForNodeInSourceFile: () => createDiagnosticForNodeInSourceFile, createDiagnosticForRange: () => createDiagnosticForRange, createDiagnosticMessageChainFromDiagnostic: () => createDiagnosticMessageChainFromDiagnostic, createDiagnosticReporter: () => createDiagnosticReporter, - createDo: () => createDo, createDocumentPositionMapper: () => createDocumentPositionMapper, createDocumentRegistry: () => createDocumentRegistry, createDocumentRegistryInternal: () => createDocumentRegistryInternal, - createElementAccess: () => createElementAccess, - createElementAccessChain: () => createElementAccessChain, createEmitAndSemanticDiagnosticsBuilderProgram: () => createEmitAndSemanticDiagnosticsBuilderProgram, createEmitHelperFactory: () => createEmitHelperFactory, createEmptyExports: () => createEmptyExports, - createEmptyStatement: () => createEmptyStatement, - createEnumDeclaration: () => createEnumDeclaration, - createEnumMember: () => createEnumMember, - createExportAssignment: () => createExportAssignment2, - createExportDeclaration: () => createExportDeclaration, - createExportDefault: () => createExportDefault, - createExportSpecifier: () => createExportSpecifier, createExpressionForJsxElement: () => createExpressionForJsxElement, createExpressionForJsxFragment: () => createExpressionForJsxFragment, createExpressionForObjectLiteralElementLike: () => createExpressionForObjectLiteralElementLike, createExpressionForPropertyName: () => createExpressionForPropertyName, createExpressionFromEntityName: () => createExpressionFromEntityName, - createExpressionStatement: () => createExpressionStatement, - createExpressionWithTypeArguments: () => createExpressionWithTypeArguments, createExternalHelpersImportDeclarationIfNeeded: () => createExternalHelpersImportDeclarationIfNeeded, - createExternalModuleExport: () => createExternalModuleExport, - createExternalModuleReference: () => createExternalModuleReference, - createFalse: () => createFalse, createFileDiagnostic: () => createFileDiagnostic, createFileDiagnosticFromMessageChain: () => createFileDiagnosticFromMessageChain, - createFileLevelUniqueName: () => createFileLevelUniqueName, - createFor: () => createFor, - createForIn: () => createForIn, - createForOf: () => createForOf, createForOfBindingStatement: () => createForOfBindingStatement, - createFunctionDeclaration: () => createFunctionDeclaration, - createFunctionExpression: () => createFunctionExpression, - createFunctionTypeNode: () => createFunctionTypeNode, - createGetAccessor: () => createGetAccessor, createGetCanonicalFileName: () => createGetCanonicalFileName, createGetSourceFile: () => createGetSourceFile, createGetSymbolAccessibilityDiagnosticForNode: () => createGetSymbolAccessibilityDiagnosticForNode, createGetSymbolAccessibilityDiagnosticForNodeName: () => createGetSymbolAccessibilityDiagnosticForNodeName, createGetSymbolWalker: () => createGetSymbolWalker, - createHeritageClause: () => createHeritageClause, - createIdentifier: () => createIdentifier, - createIf: () => createIf, - createImmediatelyInvokedArrowFunction: () => createImmediatelyInvokedArrowFunction, - createImmediatelyInvokedFunctionExpression: () => createImmediatelyInvokedFunctionExpression, - createImportClause: () => createImportClause, - createImportDeclaration: () => createImportDeclaration, - createImportEqualsDeclaration: () => createImportEqualsDeclaration, - createImportSpecifier: () => createImportSpecifier, - createImportTypeNode: () => createImportTypeNode, createIncrementalCompilerHost: () => createIncrementalCompilerHost, createIncrementalProgram: () => createIncrementalProgram, - createIndexSignature: () => createIndexSignature, - createIndexedAccessTypeNode: () => createIndexedAccessTypeNode, - createInferTypeNode: () => createInferTypeNode, createInputFiles: () => createInputFiles, createInputFilesWithFilePaths: () => createInputFilesWithFilePaths, createInputFilesWithFileTexts: () => createInputFilesWithFileTexts, - createInterfaceDeclaration: () => createInterfaceDeclaration, - createIntersectionTypeNode: () => createIntersectionTypeNode, - createJSDocAugmentsTag: () => createJSDocAugmentsTag, - createJSDocAuthorTag: () => createJSDocAuthorTag, - createJSDocCallbackTag: () => createJSDocCallbackTag, - createJSDocClassTag: () => createJSDocClassTag, - createJSDocComment: () => createJSDocComment, - createJSDocEnumTag: () => createJSDocEnumTag, - createJSDocImplementsTag: () => createJSDocImplementsTag, - createJSDocParamTag: () => createJSDocParamTag, - createJSDocParameterTag: () => createJSDocParameterTag, - createJSDocPrivateTag: () => createJSDocPrivateTag, - createJSDocPropertyTag: () => createJSDocPropertyTag, - createJSDocProtectedTag: () => createJSDocProtectedTag, - createJSDocPublicTag: () => createJSDocPublicTag, - createJSDocReadonlyTag: () => createJSDocReadonlyTag, - createJSDocReturnTag: () => createJSDocReturnTag, - createJSDocSignature: () => createJSDocSignature, - createJSDocTag: () => createJSDocTag, - createJSDocTemplateTag: () => createJSDocTemplateTag, - createJSDocThisTag: () => createJSDocThisTag, - createJSDocTypeExpression: () => createJSDocTypeExpression, - createJSDocTypeLiteral: () => createJSDocTypeLiteral, - createJSDocTypeTag: () => createJSDocTypeTag, - createJSDocTypedefTag: () => createJSDocTypedefTag, - createJsxAttribute: () => createJsxAttribute, - createJsxAttributes: () => createJsxAttributes, - createJsxClosingElement: () => createJsxClosingElement, - createJsxElement: () => createJsxElement, - createJsxExpression: () => createJsxExpression, createJsxFactoryExpression: () => createJsxFactoryExpression, - createJsxFragment: () => createJsxFragment, - createJsxJsxClosingFragment: () => createJsxJsxClosingFragment, - createJsxOpeningElement: () => createJsxOpeningElement, - createJsxOpeningFragment: () => createJsxOpeningFragment, - createJsxSelfClosingElement: () => createJsxSelfClosingElement, - createJsxSpreadAttribute: () => createJsxSpreadAttribute, - createJsxText: () => createJsxText, - createKeywordTypeNode: () => createKeywordTypeNode, - createLabel: () => createLabel, createLanguageService: () => createLanguageService, createLanguageServiceSourceFile: () => createLanguageServiceSourceFile, - createLessThan: () => createLessThan, - createLiteral: () => createLiteral, - createLiteralTypeNode: () => createLiteralTypeNode, - createLogicalAnd: () => createLogicalAnd, - createLogicalNot: () => createLogicalNot, - createLogicalOr: () => createLogicalOr, - createLoopVariable: () => createLoopVariable, - createMappedTypeNode: () => createMappedTypeNode, createMemberAccessForPropertyName: () => createMemberAccessForPropertyName, - createMetaProperty: () => createMetaProperty, - createMethod: () => createMethod, - createMethodSignature: () => createMethodSignature, createModeAwareCache: () => createModeAwareCache, createModeAwareCacheKey: () => createModeAwareCacheKey, - createModifier: () => createModifier, - createModifiersFromModifierFlags: () => createModifiersFromModifierFlags, - createModuleBlock: () => createModuleBlock, - createModuleDeclaration: () => createModuleDeclaration, createModuleResolutionCache: () => createModuleResolutionCache, createModuleResolutionLoader: () => createModuleResolutionLoader, createModuleSpecifierResolutionHost: () => createModuleSpecifierResolutionHost, createMultiMap: () => createMultiMap, - createNamedExports: () => createNamedExports, - createNamedImports: () => createNamedImports, - createNamespaceExport: () => createNamespaceExport, - createNamespaceExportDeclaration: () => createNamespaceExportDeclaration, - createNamespaceImport: () => createNamespaceImport, - createNew: () => createNew, - createNoSubstitutionTemplateLiteral: () => createNoSubstitutionTemplateLiteral, - createNode: () => createNode2, - createNodeArray: () => createNodeArray, createNodeConverters: () => createNodeConverters, createNodeFactory: () => createNodeFactory, - createNonNullChain: () => createNonNullChain, - createNonNullExpression: () => createNonNullExpression, - createNotEmittedStatement: () => createNotEmittedStatement, - createNull: () => createNull, - createNumericLiteral: () => createNumericLiteral, - createObjectBindingPattern: () => createObjectBindingPattern, - createObjectLiteral: () => createObjectLiteral, - createOmittedExpression: () => createOmittedExpression, - createOptimisticUniqueName: () => createOptimisticUniqueName, createOptionNameMap: () => createOptionNameMap, - createOptionalTypeNode: () => createOptionalTypeNode, createOverload: () => createOverload, createPackageJsonImportFilter: () => createPackageJsonImportFilter, createPackageJsonInfo: () => createPackageJsonInfo, - createParameter: () => createParameter, - createParen: () => createParen, - createParenthesizedType: () => createParenthesizedType, createParenthesizerRules: () => createParenthesizerRules, - createPartiallyEmittedExpression: () => createPartiallyEmittedExpression, createPatternMatcher: () => createPatternMatcher, - createPostfix: () => createPostfix, - createPostfixIncrement: () => createPostfixIncrement, - createPrefix: () => createPrefix, createPrependNodes: () => createPrependNodes, createPrinter: () => createPrinter, - createPrivateIdentifier: () => createPrivateIdentifier, createProgram: () => createProgram, createProgramHost: () => createProgramHost, - createProperty: () => createProperty, - createPropertyAccess: () => createPropertyAccess, - createPropertyAccessChain: () => createPropertyAccessChain, - createPropertyAssignment: () => createPropertyAssignment, createPropertyNameNodeForIdentifierOrLiteral: () => createPropertyNameNodeForIdentifierOrLiteral, - createPropertySignature: () => createPropertySignature, - createQualifiedName: () => createQualifiedName, createQueue: () => createQueue, createRange: () => createRange, createRedirectedBuilderProgram: () => createRedirectedBuilderProgram, - createRegularExpressionLiteral: () => createRegularExpressionLiteral, createResolutionCache: () => createResolutionCache, - createRestTypeNode: () => createRestTypeNode, - createReturn: () => createReturn, createRuntimeTypeSerializer: () => createRuntimeTypeSerializer, createScanner: () => createScanner, createSemanticDiagnosticsBuilderProgram: () => createSemanticDiagnosticsBuilderProgram, - createSemicolonClassElement: () => createSemicolonClassElement, createSet: () => createSet, - createSetAccessor: () => createSetAccessor, - createShorthandPropertyAssignment: () => createShorthandPropertyAssignment, createSolutionBuilder: () => createSolutionBuilder, createSolutionBuilderHost: () => createSolutionBuilderHost, createSolutionBuilderWithWatch: () => createSolutionBuilderWithWatch, @@ -164701,27 +166939,10 @@ ${options.prefix}` : "\n" : options.prefix createSourceFile: () => createSourceFile, createSourceMapGenerator: () => createSourceMapGenerator, createSourceMapSource: () => createSourceMapSource, - createSpread: () => createSpread, - createSpreadAssignment: () => createSpreadAssignment, - createStatement: () => createStatement, - createStrictEquality: () => createStrictEquality, - createStrictInequality: () => createStrictInequality, - createStringLiteral: () => createStringLiteral, - createStringLiteralFromNode: () => createStringLiteralFromNode, - createSubtract: () => createSubtract, - createSuper: () => createSuper, createSuperAccessVariableStatement: () => createSuperAccessVariableStatement, - createSwitch: () => createSwitch, createSymbolTable: () => createSymbolTable, createSymlinkCache: () => createSymlinkCache, createSystemWatchFunctions: () => createSystemWatchFunctions, - createTaggedTemplate: () => createTaggedTemplate, - createTempVariable: () => createTempVariable, - createTemplateExpression: () => createTemplateExpression, - createTemplateHead: () => createTemplateHead, - createTemplateMiddle: () => createTemplateMiddle, - createTemplateSpan: () => createTemplateSpan, - createTemplateTail: () => createTemplateTail, createTextChange: () => createTextChange, createTextChangeFromStartLength: () => createTextChangeFromStartLength, createTextChangeRange: () => createTextChangeRange, @@ -164733,36 +166954,12 @@ ${options.prefix}` : "\n" : options.prefix createTextSpanFromRange: () => createTextSpanFromRange, createTextSpanFromStringLiteralLikeContent: () => createTextSpanFromStringLiteralLikeContent, createTextWriter: () => createTextWriter, - createThis: () => createThis, - createThisTypeNode: () => createThisTypeNode, - createThrow: () => createThrow, - createToken: () => createToken, createTokenRange: () => createTokenRange, - createTrue: () => createTrue, - createTry: () => createTry, - createTupleTypeNode: () => createTupleTypeNode, - createTypeAliasDeclaration: () => createTypeAliasDeclaration, - createTypeAssertion: () => createTypeAssertion, createTypeChecker: () => createTypeChecker, - createTypeLiteralNode: () => createTypeLiteralNode, - createTypeOf: () => createTypeOf, - createTypeOperatorNode: () => createTypeOperatorNode, - createTypeParameterDeclaration: () => createTypeParameterDeclaration, - createTypePredicateNode: () => createTypePredicateNode, - createTypePredicateNodeWithModifier: () => createTypePredicateNodeWithModifier, - createTypeQueryNode: () => createTypeQueryNode, createTypeReferenceDirectiveResolutionCache: () => createTypeReferenceDirectiveResolutionCache, - createTypeReferenceNode: () => createTypeReferenceNode, createTypeReferenceResolutionLoader: () => createTypeReferenceResolutionLoader, createUnderscoreEscapedMultiMap: () => createUnderscoreEscapedMultiMap, - createUnionTypeNode: () => createUnionTypeNode, - createUniqueName: () => createUniqueName, createUnparsedSourceFile: () => createUnparsedSourceFile, - createVariableDeclaration: () => createVariableDeclaration, - createVariableDeclarationList: () => createVariableDeclarationList, - createVariableStatement: () => createVariableStatement, - createVoid: () => createVoid, - createVoidZero: () => createVoidZero, createWatchCompilerHost: () => createWatchCompilerHost2, createWatchCompilerHostOfConfigFile: () => createWatchCompilerHostOfConfigFile, createWatchCompilerHostOfFilesAndCompilerOptions: () => createWatchCompilerHostOfFilesAndCompilerOptions, @@ -164770,10 +166967,7 @@ ${options.prefix}` : "\n" : options.prefix createWatchHost: () => createWatchHost, createWatchProgram: () => createWatchProgram, createWatchStatusReporter: () => createWatchStatusReporter, - createWhile: () => createWhile, - createWith: () => createWith, createWriteFileMeasuringIO: () => createWriteFileMeasuringIO, - createYield: () => createYield, declarationNameToString: () => declarationNameToString, decodeMappings: () => decodeMappings, decodedTextSpanIntersectsWith: () => decodedTextSpanIntersectsWith, @@ -164820,6 +167014,7 @@ ${options.prefix}` : "\n" : options.prefix equateStringsCaseInsensitive: () => equateStringsCaseInsensitive, equateStringsCaseSensitive: () => equateStringsCaseSensitive, equateValues: () => equateValues, + esDecorateHelper: () => esDecorateHelper, escapeJsxAttributeString: () => escapeJsxAttributeString, escapeLeadingUnderscores: () => escapeLeadingUnderscores, escapeNonAsciiString: () => escapeNonAsciiString, @@ -164848,6 +167043,7 @@ ${options.prefix}` : "\n" : options.prefix findAncestor: () => findAncestor, findBestPatternMatch: () => findBestPatternMatch, findChildOfKind: () => findChildOfKind, + findComputedPropertyNameCacheAssignment: () => findComputedPropertyNameCacheAssignment, findConfigFile: () => findConfigFile, findContainingList: () => findContainingList, findDiagnosticForNode: () => findDiagnosticForNode, @@ -164878,6 +167074,7 @@ ${options.prefix}` : "\n" : options.prefix flatMapIterator: () => flatMapIterator, flatMapToMutable: () => flatMapToMutable, flatten: () => flatten, + flattenCommaList: () => flattenCommaList, flattenDestructuringAssignment: () => flattenDestructuringAssignment, flattenDestructuringBinding: () => flattenDestructuringBinding, flattenDiagnosticMessageText: () => flattenDiagnosticMessageText, @@ -164983,6 +167180,7 @@ ${options.prefix}` : "\n" : options.prefix getDeclaredExpandoInitializer: () => getDeclaredExpandoInitializer, getDecorators: () => getDecorators, getDefaultCompilerOptions: () => getDefaultCompilerOptions2, + getDefaultExportInfoWorker: () => getDefaultExportInfoWorker, getDefaultFormatCodeSettings: () => getDefaultFormatCodeSettings, getDefaultLibFileName: () => getDefaultLibFileName, getDefaultLibFilePath: () => getDefaultLibFilePath, @@ -165054,9 +167252,11 @@ ${options.prefix}` : "\n" : options.prefix getFormatCodeSettingsForWriting: () => getFormatCodeSettingsForWriting, getFullWidth: () => getFullWidth, getFunctionFlags: () => getFunctionFlags, - getGeneratedNameForNode: () => getGeneratedNameForNode, getHeritageClause: () => getHeritageClause, getHostSignatureFromJSDoc: () => getHostSignatureFromJSDoc, + getIdentifierAutoGenerate: () => getIdentifierAutoGenerate, + getIdentifierGeneratedImportReference: () => getIdentifierGeneratedImportReference, + getIdentifierTypeArguments: () => getIdentifierTypeArguments, getImmediatelyInvokedFunctionExpression: () => getImmediatelyInvokedFunctionExpression, getImpliedNodeFormatForFile: () => getImpliedNodeFormatForFile, getImpliedNodeFormatForFileWorker: () => getImpliedNodeFormatForFileWorker, @@ -165068,7 +167268,9 @@ ${options.prefix}` : "\n" : options.prefix getInitializerOfBinaryExpression: () => getInitializerOfBinaryExpression, getInitializerOfBindingOrAssignmentElement: () => getInitializerOfBindingOrAssignmentElement, getInterfaceBaseTypeNodes: () => getInterfaceBaseTypeNodes, + getInternalEmitFlags: () => getInternalEmitFlags, getInvokedExpression: () => getInvokedExpression, + getIsolatedModules: () => getIsolatedModules, getJSDocAugmentsTag: () => getJSDocAugmentsTag, getJSDocClassTag: () => getJSDocClassTag, getJSDocCommentRanges: () => getJSDocCommentRanges, @@ -165092,6 +167294,8 @@ ${options.prefix}` : "\n" : options.prefix getJSDocReturnTag: () => getJSDocReturnTag, getJSDocReturnType: () => getJSDocReturnType, getJSDocRoot: () => getJSDocRoot, + getJSDocSatisfiesExpressionType: () => getJSDocSatisfiesExpressionType, + getJSDocSatisfiesTag: () => getJSDocSatisfiesTag, getJSDocTags: () => getJSDocTags, getJSDocTagsNoCache: () => getJSDocTagsNoCache, getJSDocTemplateTag: () => getJSDocTemplateTag, @@ -165146,7 +167350,6 @@ ${options.prefix}` : "\n" : options.prefix getModuleNameStringLiteralAt: () => getModuleNameStringLiteralAt, getModuleSpecifierEndingPreference: () => getModuleSpecifierEndingPreference, getModuleSpecifierResolverHost: () => getModuleSpecifierResolverHost, - getMutableClone: () => getMutableClone, getNameForExportedSymbol: () => getNameForExportedSymbol, getNameFromIndexInfo: () => getNameFromIndexInfo, getNameFromPropertyName: () => getNameFromPropertyName, @@ -165220,6 +167423,7 @@ ${options.prefix}` : "\n" : options.prefix getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, + getPrivateIdentifier: () => getPrivateIdentifier, getProperties: () => getProperties, getProperty: () => getProperty, getPropertyArrayElementValue: () => getPropertyArrayElementValue, @@ -165345,6 +167549,7 @@ ${options.prefix}` : "\n" : options.prefix getWatchErrorSummaryDiagnosticMessage: () => getWatchErrorSummaryDiagnosticMessage, getWatchFactory: () => getWatchFactory, group: () => group, + groupBy: () => groupBy, guessIndentation: () => guessIndentation, handleNoEmitOptions: () => handleNoEmitOptions, hasAbstractModifier: () => hasAbstractModifier, @@ -165390,12 +167595,14 @@ ${options.prefix}` : "\n" : options.prefix hostUsesCaseSensitiveFileNames: () => hostUsesCaseSensitiveFileNames, idText: () => idText, identifierIsThisKeyword: () => identifierIsThisKeyword, + identifierToKeywordKind: () => identifierToKeywordKind, identity: () => identity, identitySourceMapConsumer: () => identitySourceMapConsumer, ignoreSourceNewlines: () => ignoreSourceNewlines, ignoredPaths: () => ignoredPaths, importDefaultHelper: () => importDefaultHelper, importFromModuleSpecifier: () => importFromModuleSpecifier, + importNameElisionDisabled: () => importNameElisionDisabled, importStarHelper: () => importStarHelper, indexOfAnyCharCode: () => indexOfAnyCharCode, indexOfNode: () => indexOfNode, @@ -165421,6 +167628,7 @@ ${options.prefix}` : "\n" : options.prefix isAliasableExpression: () => isAliasableExpression, isAmbientModule: () => isAmbientModule, isAmbientPropertyDeclaration: () => isAmbientPropertyDeclaration, + isAnonymousFunctionDefinition: () => isAnonymousFunctionDefinition, isAnyDirectorySeparator: () => isAnyDirectorySeparator, isAnyImportOrBareOrAccessedRequire: () => isAnyImportOrBareOrAccessedRequire, isAnyImportOrReExport: () => isAnyImportOrReExport, @@ -165430,6 +167638,7 @@ ${options.prefix}` : "\n" : options.prefix isArgumentExpressionOfElementAccess: () => isArgumentExpressionOfElementAccess, isArray: () => isArray, isArrayBindingElement: () => isArrayBindingElement, + isArrayBindingOrAssignmentElement: () => isArrayBindingOrAssignmentElement, isArrayBindingOrAssignmentPattern: () => isArrayBindingOrAssignmentPattern, isArrayBindingPattern: () => isArrayBindingPattern, isArrayLiteralExpression: () => isArrayLiteralExpression, @@ -165461,7 +167670,9 @@ ${options.prefix}` : "\n" : options.prefix isBindableStaticElementAccessExpression: () => isBindableStaticElementAccessExpression, isBindableStaticNameExpression: () => isBindableStaticNameExpression, isBindingElement: () => isBindingElement, + isBindingElementOfBareOrAccessedRequire: () => isBindingElementOfBareOrAccessedRequire, isBindingName: () => isBindingName, + isBindingOrAssignmentElement: () => isBindingOrAssignmentElement, isBindingOrAssignmentPattern: () => isBindingOrAssignmentPattern, isBindingPattern: () => isBindingPattern, isBlock: () => isBlock, @@ -165502,6 +167713,7 @@ ${options.prefix}` : "\n" : options.prefix isClassStaticBlockDeclaration: () => isClassStaticBlockDeclaration, isCollapsedRange: () => isCollapsedRange, isColonToken: () => isColonToken, + isCommaExpression: () => isCommaExpression, isCommaListExpression: () => isCommaListExpression, isCommaSequence: () => isCommaSequence, isCommaToken: () => isCommaToken, @@ -165535,6 +167747,7 @@ ${options.prefix}` : "\n" : options.prefix isDecoratorTarget: () => isDecoratorTarget, isDefaultClause: () => isDefaultClause, isDefaultImport: () => isDefaultImport, + isDefaultModifier: () => isDefaultModifier, isDefaultedExpandoInitializer: () => isDefaultedExpandoInitializer, isDeleteExpression: () => isDeleteExpression, isDeleteTarget: () => isDeleteTarget, @@ -165558,6 +167771,7 @@ ${options.prefix}` : "\n" : options.prefix isEmptyBindingPattern: () => isEmptyBindingPattern, isEmptyObjectLiteral: () => isEmptyObjectLiteral, isEmptyStatement: () => isEmptyStatement, + isEmptyStringLiteral: () => isEmptyStringLiteral, isEndOfDeclarationMarker: () => isEndOfDeclarationMarker, isEntityName: () => isEntityName, isEntityNameExpression: () => isEntityNameExpression, @@ -165574,6 +167788,7 @@ ${options.prefix}` : "\n" : options.prefix isExportModifier: () => isExportModifier, isExportName: () => isExportName, isExportNamespaceAsDefaultDeclaration: () => isExportNamespaceAsDefaultDeclaration, + isExportOrDefaultModifier: () => isExportOrDefaultModifier, isExportSpecifier: () => isExportSpecifier, isExportsIdentifier: () => isExportsIdentifier, isExportsOrModuleExportsOrAlias: () => isExportsOrModuleExportsOrAlias, @@ -165628,7 +167843,6 @@ ${options.prefix}` : "\n" : options.prefix isIdentifier: () => isIdentifier, isIdentifierANonContextualKeyword: () => isIdentifierANonContextualKeyword, isIdentifierName: () => isIdentifierName, - isIdentifierOrPrivateIdentifier: () => isIdentifierOrPrivateIdentifier, isIdentifierOrThisTypeNode: () => isIdentifierOrThisTypeNode, isIdentifierPart: () => isIdentifierPart, isIdentifierStart: () => isIdentifierStart, @@ -165668,6 +167882,7 @@ ${options.prefix}` : "\n" : options.prefix isInferTypeNode: () => isInferTypeNode, isInfinityOrNaNString: () => isInfinityOrNaNString, isInitializedProperty: () => isInitializedProperty, + isInitializedVariable: () => isInitializedVariable, isInsideJsxElement: () => isInsideJsxElement, isInsideJsxElementOrAttribute: () => isInsideJsxElementOrAttribute, isInsideNodeModules: () => isInsideNodeModules, @@ -165717,6 +167932,8 @@ ${options.prefix}` : "\n" : options.prefix isJSDocPublicTag: () => isJSDocPublicTag, isJSDocReadonlyTag: () => isJSDocReadonlyTag, isJSDocReturnTag: () => isJSDocReturnTag, + isJSDocSatisfiesExpression: () => isJSDocSatisfiesExpression, + isJSDocSatisfiesTag: () => isJSDocSatisfiesTag, isJSDocSeeTag: () => isJSDocSeeTag, isJSDocSignature: () => isJSDocSignature, isJSDocTag: () => isJSDocTag, @@ -165772,11 +167989,14 @@ ${options.prefix}` : "\n" : options.prefix isLiteralLikeElementAccess: () => isLiteralLikeElementAccess, isLiteralNameOfPropertyDeclarationOrIndexAccess: () => isLiteralNameOfPropertyDeclarationOrIndexAccess, isLiteralTypeLikeExpression: () => isLiteralTypeLikeExpression, + isLiteralTypeLiteral: () => isLiteralTypeLiteral, isLiteralTypeNode: () => isLiteralTypeNode, isLocalName: () => isLocalName, isLogicalOperator: () => isLogicalOperator, isLogicalOrCoalescingAssignmentExpression: () => isLogicalOrCoalescingAssignmentExpression, isLogicalOrCoalescingAssignmentOperator: () => isLogicalOrCoalescingAssignmentOperator, + isLogicalOrCoalescingBinaryExpression: () => isLogicalOrCoalescingBinaryExpression, + isLogicalOrCoalescingBinaryOperator: () => isLogicalOrCoalescingBinaryOperator, isMappedTypeNode: () => isMappedTypeNode, isMemberName: () => isMemberName, isMergeDeclarationMarker: () => isMergeDeclarationMarker, @@ -165804,6 +168024,8 @@ ${options.prefix}` : "\n" : options.prefix isNameOfModuleDeclaration: () => isNameOfModuleDeclaration, isNamedClassElement: () => isNamedClassElement, isNamedDeclaration: () => isNamedDeclaration, + isNamedEvaluation: () => isNamedEvaluation, + isNamedEvaluationSource: () => isNamedEvaluationSource, isNamedExportBindings: () => isNamedExportBindings, isNamedExports: () => isNamedExports, isNamedImportBindings: () => isNamedImportBindings, @@ -165828,6 +168050,7 @@ ${options.prefix}` : "\n" : options.prefix isNodeModulesDirectory: () => isNodeModulesDirectory, isNodeWithPossibleHoistedDeclaration: () => isNodeWithPossibleHoistedDeclaration, isNonContextualKeyword: () => isNonContextualKeyword, + isNonExportDefaultModifier: () => isNonExportDefaultModifier, isNonGlobalAmbientModule: () => isNonGlobalAmbientModule, isNonGlobalDeclaration: () => isNonGlobalDeclaration, isNonNullAccess: () => isNonNullAccess, @@ -165896,6 +168119,7 @@ ${options.prefix}` : "\n" : options.prefix isPropertyName: () => isPropertyName, isPropertyNameLiteral: () => isPropertyNameLiteral, isPropertySignature: () => isPropertySignature, + isProtoSetter: () => isProtoSetter, isPrototypeAccess: () => isPrototypeAccess, isPrototypePropertyAssignment: () => isPrototypePropertyAssignment, isPunctuation: () => isPunctuation, @@ -166007,7 +168231,6 @@ ${options.prefix}` : "\n" : options.prefix isTupleTypeNode: () => isTupleTypeNode, isTypeAlias: () => isTypeAlias, isTypeAliasDeclaration: () => isTypeAliasDeclaration, - isTypeAssertion: () => isTypeAssertion, isTypeAssertionExpression: () => isTypeAssertionExpression, isTypeDeclaration: () => isTypeDeclaration, isTypeElement: () => isTypeElement, @@ -166017,8 +168240,9 @@ ${options.prefix}` : "\n" : options.prefix isTypeLiteralNode: () => isTypeLiteralNode, isTypeNode: () => isTypeNode, isTypeNodeKind: () => isTypeNodeKind, - isTypeNodeOrTypeParameterDeclaration: () => isTypeNodeOrTypeParameterDeclaration, isTypeOfExpression: () => isTypeOfExpression, + isTypeOnlyExportDeclaration: () => isTypeOnlyExportDeclaration, + isTypeOnlyImportDeclaration: () => isTypeOnlyImportDeclaration, isTypeOnlyImportOrExportDeclaration: () => isTypeOnlyImportOrExportDeclaration, isTypeOperatorNode: () => isTypeOperatorNode, isTypeParameterDeclaration: () => isTypeParameterDeclaration, @@ -166093,6 +168317,7 @@ ${options.prefix}` : "\n" : options.prefix maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, memoize: () => memoize, + memoizeCached: () => memoizeCached, memoizeOne: () => memoizeOne, memoizeWeak: () => memoizeWeak, metadataHelper: () => metadataHelper, @@ -166118,6 +168343,7 @@ ${options.prefix}` : "\n" : options.prefix mutateMapSkippingNewValues: () => mutateMapSkippingNewValues, needsParentheses: () => needsParentheses, needsScopeMarker: () => needsScopeMarker, + newPrivateEnvironment: () => newPrivateEnvironment, noEmitNotification: () => noEmitNotification, noEmitSubstitution: () => noEmitSubstitution, noTransformers: () => noTransformers, @@ -166211,6 +168437,7 @@ ${options.prefix}` : "\n" : options.prefix programContainsEsModules: () => programContainsEsModules, programContainsModules: () => programContainsModules, projectReferenceIsEqualTo: () => projectReferenceIsEqualTo, + propKeyHelper: () => propKeyHelper, propertyNamePart: () => propertyNamePart, pseudoBigIntToString: () => pseudoBigIntToString, punctuationPart: () => punctuationPart, @@ -166275,10 +168502,12 @@ ${options.prefix}` : "\n" : options.prefix returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + runInitializersHelper: () => runInitializersHelper, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, scanShebangTrivia: () => scanShebangTrivia, + scanTokenAtPosition: () => scanTokenAtPosition, scanner: () => scanner, screenStartingMessageCodes: () => screenStartingMessageCodes, semanticDiagnosticsOptionDeclarations: () => semanticDiagnosticsOptionDeclarations, @@ -166290,7 +168519,12 @@ ${options.prefix}` : "\n" : options.prefix setConstantValue: () => setConstantValue, setEachParent: () => setEachParent, setEmitFlags: () => setEmitFlags, + setFunctionNameHelper: () => setFunctionNameHelper, setGetSourceFileAsHashVersioned: () => setGetSourceFileAsHashVersioned, + setIdentifierAutoGenerate: () => setIdentifierAutoGenerate, + setIdentifierGeneratedImportReference: () => setIdentifierGeneratedImportReference, + setIdentifierTypeArguments: () => setIdentifierTypeArguments, + setInternalEmitFlags: () => setInternalEmitFlags, setLocalizedDiagnosticMessages: () => setLocalizedDiagnosticMessages, setModuleDefaultHelper: () => setModuleDefaultHelper, setNodeFlags: () => setNodeFlags, @@ -166298,6 +168532,7 @@ ${options.prefix}` : "\n" : options.prefix setOriginalNode: () => setOriginalNode, setParent: () => setParent, setParentRecursive: () => setParentRecursive, + setPrivateIdentifier: () => setPrivateIdentifier, setResolvedModule: () => setResolvedModule, setResolvedTypeReferenceDirective: () => setResolvedTypeReferenceDirective, setSnippetElement: () => setSnippetElement, @@ -166338,6 +168573,7 @@ ${options.prefix}` : "\n" : options.prefix skipTrivia: () => skipTrivia, skipTypeChecking: () => skipTypeChecking, skipTypeParentheses: () => skipTypeParentheses, + skipWhile: () => skipWhile, sliceAfter: () => sliceAfter, some: () => some, sort: () => sort, @@ -166432,6 +168668,7 @@ ${options.prefix}` : "\n" : options.prefix transformES2020: () => transformES2020, transformES2021: () => transformES2021, transformES5: () => transformES5, + transformESDecorators: () => transformESDecorators, transformESNext: () => transformESNext, transformGenerators: () => transformGenerators, transformJsx: () => transformJsx, @@ -166458,6 +168695,7 @@ ${options.prefix}` : "\n" : options.prefix tryGetDirectories: () => tryGetDirectories, tryGetExtensionFromPath: () => tryGetExtensionFromPath2, tryGetImportFromModuleSpecifier: () => tryGetImportFromModuleSpecifier, + tryGetJSDocSatisfiesTypeNode: () => tryGetJSDocSatisfiesTypeNode, tryGetModuleNameFromFile: () => tryGetModuleNameFromFile, tryGetModuleSpecifierFromDeclaration: () => tryGetModuleSpecifierFromDeclaration, tryGetNativePerformanceHooks: () => tryGetNativePerformanceHooks, @@ -166492,148 +168730,14 @@ ${options.prefix}` : "\n" : options.prefix unreachableCodeIsError: () => unreachableCodeIsError, unusedLabelIsError: () => unusedLabelIsError, unwrapInnermostStatementOfLabel: () => unwrapInnermostStatementOfLabel, - updateArrayBindingPattern: () => updateArrayBindingPattern, - updateArrayLiteral: () => updateArrayLiteral, - updateArrayTypeNode: () => updateArrayTypeNode, - updateArrowFunction: () => updateArrowFunction, - updateAsExpression: () => updateAsExpression, - updateAwait: () => updateAwait, - updateBinary: () => updateBinary, - updateBindingElement: () => updateBindingElement, - updateBlock: () => updateBlock, - updateBreak: () => updateBreak, - updateBundle: () => updateBundle, - updateCall: () => updateCall, - updateCallChain: () => updateCallChain, - updateCallSignature: () => updateCallSignature, - updateCaseBlock: () => updateCaseBlock, - updateCaseClause: () => updateCaseClause, - updateCatchClause: () => updateCatchClause, - updateClassDeclaration: () => updateClassDeclaration, - updateClassExpression: () => updateClassExpression, - updateCommaList: () => updateCommaList, - updateComputedPropertyName: () => updateComputedPropertyName, - updateConditional: () => updateConditional, - updateConditionalTypeNode: () => updateConditionalTypeNode, - updateConstructSignature: () => updateConstructSignature, - updateConstructor: () => updateConstructor, - updateConstructorTypeNode: () => updateConstructorTypeNode, - updateContinue: () => updateContinue, - updateDecorator: () => updateDecorator, - updateDefaultClause: () => updateDefaultClause, - updateDelete: () => updateDelete, - updateDo: () => updateDo, - updateElementAccess: () => updateElementAccess, - updateElementAccessChain: () => updateElementAccessChain, - updateEnumDeclaration: () => updateEnumDeclaration, - updateEnumMember: () => updateEnumMember, updateErrorForNoInputFiles: () => updateErrorForNoInputFiles, - updateExportAssignment: () => updateExportAssignment, - updateExportDeclaration: () => updateExportDeclaration, - updateExportSpecifier: () => updateExportSpecifier, - updateExpressionStatement: () => updateExpressionStatement, - updateExpressionWithTypeArguments: () => updateExpressionWithTypeArguments, - updateExternalModuleReference: () => updateExternalModuleReference, - updateFor: () => updateFor, - updateForIn: () => updateForIn, - updateForOf: () => updateForOf, - updateFunctionDeclaration: () => updateFunctionDeclaration, - updateFunctionExpression: () => updateFunctionExpression, - updateFunctionTypeNode: () => updateFunctionTypeNode, - updateGetAccessor: () => updateGetAccessor, - updateHeritageClause: () => updateHeritageClause, - updateIf: () => updateIf, - updateImportClause: () => updateImportClause, - updateImportDeclaration: () => updateImportDeclaration, - updateImportEqualsDeclaration: () => updateImportEqualsDeclaration, - updateImportSpecifier: () => updateImportSpecifier, - updateImportTypeNode: () => updateImportTypeNode, - updateIndexSignature: () => updateIndexSignature, - updateIndexedAccessTypeNode: () => updateIndexedAccessTypeNode, - updateInferTypeNode: () => updateInferTypeNode, - updateInterfaceDeclaration: () => updateInterfaceDeclaration, - updateIntersectionTypeNode: () => updateIntersectionTypeNode, - updateJsxAttribute: () => updateJsxAttribute, - updateJsxAttributes: () => updateJsxAttributes, - updateJsxClosingElement: () => updateJsxClosingElement, - updateJsxElement: () => updateJsxElement, - updateJsxExpression: () => updateJsxExpression, - updateJsxFragment: () => updateJsxFragment, - updateJsxOpeningElement: () => updateJsxOpeningElement, - updateJsxSelfClosingElement: () => updateJsxSelfClosingElement, - updateJsxSpreadAttribute: () => updateJsxSpreadAttribute, - updateJsxText: () => updateJsxText, - updateLabel: () => updateLabel, updateLanguageServiceSourceFile: () => updateLanguageServiceSourceFile, - updateLiteralTypeNode: () => updateLiteralTypeNode, - updateMappedTypeNode: () => updateMappedTypeNode, - updateMetaProperty: () => updateMetaProperty, - updateMethod: () => updateMethod, - updateMethodSignature: () => updateMethodSignature, updateMissingFilePathsWatch: () => updateMissingFilePathsWatch, - updateModuleBlock: () => updateModuleBlock, - updateModuleDeclaration: () => updateModuleDeclaration, - updateNamedExports: () => updateNamedExports, - updateNamedImports: () => updateNamedImports, - updateNamespaceExport: () => updateNamespaceExport, - updateNamespaceExportDeclaration: () => updateNamespaceExportDeclaration, - updateNamespaceImport: () => updateNamespaceImport, - updateNew: () => updateNew, - updateNonNullChain: () => updateNonNullChain, - updateNonNullExpression: () => updateNonNullExpression, - updateObjectBindingPattern: () => updateObjectBindingPattern, - updateObjectLiteral: () => updateObjectLiteral, - updateOptionalTypeNode: () => updateOptionalTypeNode, updatePackageJsonWatch: () => updatePackageJsonWatch, - updateParameter: () => updateParameter, - updateParen: () => updateParen, - updateParenthesizedType: () => updateParenthesizedType, - updatePartiallyEmittedExpression: () => updatePartiallyEmittedExpression, - updatePostfix: () => updatePostfix, - updatePrefix: () => updatePrefix, - updateProperty: () => updateProperty, - updatePropertyAccess: () => updatePropertyAccess, - updatePropertyAccessChain: () => updatePropertyAccessChain, - updatePropertyAssignment: () => updatePropertyAssignment, - updatePropertySignature: () => updatePropertySignature, - updateQualifiedName: () => updateQualifiedName, updateResolutionField: () => updateResolutionField, - updateRestTypeNode: () => updateRestTypeNode, - updateReturn: () => updateReturn, - updateSetAccessor: () => updateSetAccessor, updateSharedExtendedConfigFileWatcher: () => updateSharedExtendedConfigFileWatcher, - updateShorthandPropertyAssignment: () => updateShorthandPropertyAssignment, updateSourceFile: () => updateSourceFile, - updateSourceFileNode: () => updateSourceFileNode, - updateSpread: () => updateSpread, - updateSpreadAssignment: () => updateSpreadAssignment, - updateStatement: () => updateStatement, - updateSwitch: () => updateSwitch, - updateTaggedTemplate: () => updateTaggedTemplate, - updateTemplateExpression: () => updateTemplateExpression, - updateTemplateSpan: () => updateTemplateSpan, - updateThrow: () => updateThrow, - updateTry: () => updateTry, - updateTupleTypeNode: () => updateTupleTypeNode, - updateTypeAliasDeclaration: () => updateTypeAliasDeclaration, - updateTypeAssertion: () => updateTypeAssertion, - updateTypeLiteralNode: () => updateTypeLiteralNode, - updateTypeOf: () => updateTypeOf, - updateTypeOperatorNode: () => updateTypeOperatorNode, - updateTypeParameterDeclaration: () => updateTypeParameterDeclaration, - updateTypePredicateNode: () => updateTypePredicateNode, - updateTypePredicateNodeWithModifier: () => updateTypePredicateNodeWithModifier, - updateTypeQueryNode: () => updateTypeQueryNode, - updateTypeReferenceNode: () => updateTypeReferenceNode, - updateUnionTypeNode: () => updateUnionTypeNode, - updateVariableDeclaration: () => updateVariableDeclaration, - updateVariableDeclarationList: () => updateVariableDeclarationList, - updateVariableStatement: () => updateVariableStatement, - updateVoid: () => updateVoid, updateWatchingWildcardDirectories: () => updateWatchingWildcardDirectories, - updateWhile: () => updateWhile, - updateWith: () => updateWith, - updateYield: () => updateYield, usesExtensionsOnImports: () => usesExtensionsOnImports, usingSingleLineStringWriter: () => usingSingleLineStringWriter, utf16EncodeAsString: () => utf16EncodeAsString, @@ -166642,6 +168746,7 @@ ${options.prefix}` : "\n" : options.prefix version: () => version, versionMajorMinor: () => versionMajorMinor, visitArray: () => visitArray, + visitCommaListElements: () => visitCommaListElements, visitEachChild: () => visitEachChild, visitFunctionBody: () => visitFunctionBody, visitIterationBody: () => visitIterationBody, @@ -166650,6 +168755,8 @@ ${options.prefix}` : "\n" : options.prefix visitNodes: () => visitNodes2, visitParameterList: () => visitParameterList, walkUpBindingElementsAndPatterns: () => walkUpBindingElementsAndPatterns, + walkUpLexicalEnvironments: () => walkUpLexicalEnvironments, + walkUpOuterExpressions: () => walkUpOuterExpressions, walkUpParenthesizedExpressions: () => walkUpParenthesizedExpressions, walkUpParenthesizedTypes: () => walkUpParenthesizedTypes, walkUpParenthesizedTypesAndGetParentAndChild: () => walkUpParenthesizedTypesAndGetParentAndChild, diff --git a/lib/typingsInstaller.js b/lib/typingsInstaller.js index b76938e71dc..2b20b45f480 100644 --- a/lib/typingsInstaller.js +++ b/lib/typingsInstaller.js @@ -54,7 +54,7 @@ var path = __toESM(require("path")); // src/compiler/corePublic.ts var versionMajorMinor = "5.0"; -var version = `${versionMajorMinor}.0-dev.20230112`; +var version = `${versionMajorMinor}.0-beta`; // src/compiler/core.ts var emptyArray = []; @@ -843,18 +843,6 @@ function isPatternMatch({ prefix, suffix }, candidate) { function and(f, g) { return (arg) => f(arg) && g(arg); } -function or(...fs2) { - return (...args) => { - let lastResult; - for (const f of fs2) { - lastResult = f(...args); - if (lastResult) { - return lastResult; - } - } - return lastResult; - }; -} function enumerateInsertsAndDeletes(newItems, oldItems, comparer, inserted, deleted, unchanged) { unchanged = unchanged || noop; let newIndex = 0; @@ -2966,14 +2954,15 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind4) => { SyntaxKind4[SyntaxKind4["JSDocSeeTag"] = 350] = "JSDocSeeTag"; SyntaxKind4[SyntaxKind4["JSDocPropertyTag"] = 351] = "JSDocPropertyTag"; SyntaxKind4[SyntaxKind4["JSDocThrowsTag"] = 352] = "JSDocThrowsTag"; - SyntaxKind4[SyntaxKind4["SyntaxList"] = 353] = "SyntaxList"; - SyntaxKind4[SyntaxKind4["NotEmittedStatement"] = 354] = "NotEmittedStatement"; - SyntaxKind4[SyntaxKind4["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; - SyntaxKind4[SyntaxKind4["CommaListExpression"] = 356] = "CommaListExpression"; - SyntaxKind4[SyntaxKind4["MergeDeclarationMarker"] = 357] = "MergeDeclarationMarker"; - SyntaxKind4[SyntaxKind4["EndOfDeclarationMarker"] = 358] = "EndOfDeclarationMarker"; - SyntaxKind4[SyntaxKind4["SyntheticReferenceExpression"] = 359] = "SyntheticReferenceExpression"; - SyntaxKind4[SyntaxKind4["Count"] = 360] = "Count"; + SyntaxKind4[SyntaxKind4["JSDocSatisfiesTag"] = 353] = "JSDocSatisfiesTag"; + SyntaxKind4[SyntaxKind4["SyntaxList"] = 354] = "SyntaxList"; + SyntaxKind4[SyntaxKind4["NotEmittedStatement"] = 355] = "NotEmittedStatement"; + SyntaxKind4[SyntaxKind4["PartiallyEmittedExpression"] = 356] = "PartiallyEmittedExpression"; + SyntaxKind4[SyntaxKind4["CommaListExpression"] = 357] = "CommaListExpression"; + SyntaxKind4[SyntaxKind4["MergeDeclarationMarker"] = 358] = "MergeDeclarationMarker"; + SyntaxKind4[SyntaxKind4["EndOfDeclarationMarker"] = 359] = "EndOfDeclarationMarker"; + SyntaxKind4[SyntaxKind4["SyntheticReferenceExpression"] = 360] = "SyntheticReferenceExpression"; + SyntaxKind4[SyntaxKind4["Count"] = 361] = "Count"; SyntaxKind4[SyntaxKind4["FirstAssignment"] = 63 /* EqualsToken */] = "FirstAssignment"; SyntaxKind4[SyntaxKind4["LastAssignment"] = 78 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind4[SyntaxKind4["FirstCompoundAssignment"] = 64 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -3002,9 +2991,9 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind4) => { SyntaxKind4[SyntaxKind4["LastStatement"] = 256 /* DebuggerStatement */] = "LastStatement"; SyntaxKind4[SyntaxKind4["FirstNode"] = 163 /* QualifiedName */] = "FirstNode"; SyntaxKind4[SyntaxKind4["FirstJSDocNode"] = 312 /* JSDocTypeExpression */] = "FirstJSDocNode"; - SyntaxKind4[SyntaxKind4["LastJSDocNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocNode"; + SyntaxKind4[SyntaxKind4["LastJSDocNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocNode"; SyntaxKind4[SyntaxKind4["FirstJSDocTagNode"] = 330 /* JSDocTag */] = "FirstJSDocTagNode"; - SyntaxKind4[SyntaxKind4["LastJSDocTagNode"] = 352 /* JSDocThrowsTag */] = "LastJSDocTagNode"; + SyntaxKind4[SyntaxKind4["LastJSDocTagNode"] = 353 /* JSDocSatisfiesTag */] = "LastJSDocTagNode"; SyntaxKind4[SyntaxKind4["FirstContextualKeyword"] = 126 /* AbstractKeyword */] = "FirstContextualKeyword"; SyntaxKind4[SyntaxKind4["LastContextualKeyword"] = 162 /* OfKeyword */] = "LastContextualKeyword"; return SyntaxKind4; @@ -3046,6 +3035,8 @@ var NodeFlags = /* @__PURE__ */ ((NodeFlags3) => { NodeFlags3[NodeFlags3["ContextFlags"] = 50720768] = "ContextFlags"; NodeFlags3[NodeFlags3["TypeExcludesFlags"] = 40960] = "TypeExcludesFlags"; NodeFlags3[NodeFlags3["PermanentlySetIncrementalFlags"] = 6291456] = "PermanentlySetIncrementalFlags"; + NodeFlags3[NodeFlags3["IdentifierHasExtendedUnicodeEscape"] = 128 /* ContainsThis */] = "IdentifierHasExtendedUnicodeEscape"; + NodeFlags3[NodeFlags3["IdentifierIsInJSDocNamespace"] = 2048 /* HasAsyncFunctions */] = "IdentifierIsInJSDocNamespace"; return NodeFlags3; })(NodeFlags || {}); var ModifierFlags = /* @__PURE__ */ ((ModifierFlags3) => { @@ -3418,11 +3409,6 @@ var EmitFlags = /* @__PURE__ */ ((EmitFlags3) => { EmitFlags3[EmitFlags3["HasEndOfDeclarationMarker"] = 8388608] = "HasEndOfDeclarationMarker"; EmitFlags3[EmitFlags3["Iterator"] = 16777216] = "Iterator"; EmitFlags3[EmitFlags3["NoAsciiEscaping"] = 33554432] = "NoAsciiEscaping"; - EmitFlags3[EmitFlags3["TypeScriptClassWrapper"] = 67108864] = "TypeScriptClassWrapper"; - EmitFlags3[EmitFlags3["NeverApplyImportHelper"] = 134217728] = "NeverApplyImportHelper"; - EmitFlags3[EmitFlags3["IgnoreSourceNewlines"] = 268435456] = "IgnoreSourceNewlines"; - EmitFlags3[EmitFlags3["Immutable"] = 536870912] = "Immutable"; - EmitFlags3[EmitFlags3["IndirectCall"] = 1073741824] = "IndirectCall"; return EmitFlags3; })(EmitFlags || {}); var commentPragmas = { @@ -5360,10 +5346,9 @@ var Diagnostics = { Line_terminator_not_permitted_before_arrow: diag(1200, 1 /* Error */, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(1202, 1 /* Error */, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: diag(1203, 1 /* Error */, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), - Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), + Re_exporting_a_type_when_0_is_enabled_requires_using_export_type: diag(1205, 1 /* Error */, "Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205", "Re-exporting a type when '{0}' is enabled requires using 'export type'."), Decorators_are_not_valid_here: diag(1206, 1 /* Error */, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: diag(1207, 1 /* Error */, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), - _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: diag(1208, 1 /* Error */, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0: diag(1209, 1 /* Error */, "Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209", "Invalid optional chain from new expression. Did you mean to call '{0}()'?"), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: diag(1210, 1 /* Error */, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: diag(1211, 1 /* Error */, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), @@ -5373,7 +5358,6 @@ var Diagnostics = { Invalid_use_of_0_Modules_are_automatically_in_strict_mode: diag(1215, 1 /* Error */, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: diag(1216, 1 /* Error */, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: diag(1218, 1 /* Error */, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), - Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: diag(1219, 1 /* Error */, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: diag(1221, 1 /* Error */, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: diag(1222, 1 /* Error */, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: diag(1223, 1 /* Error */, "_0_tag_already_specified_1223", "'{0}' tag already specified."), @@ -5420,7 +5404,7 @@ var Diagnostics = { An_optional_element_cannot_follow_a_rest_element: diag(1266, 1 /* Error */, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: diag(1267, 1 /* Error */, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: diag(1268, 1 /* Error */, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), - Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), + Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled: diag(1269, 1 /* Error */, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269", "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled."), Decorator_function_return_type_0_is_not_assignable_to_type_1: diag(1270, 1 /* Error */, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: diag(1271, 1 /* Error */, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: diag(1272, 1 /* Error */, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), @@ -5429,6 +5413,17 @@ var Diagnostics = { accessor_modifier_can_only_appear_on_a_property_declaration: diag(1275, 1 /* Error */, "accessor_modifier_can_only_appear_on_a_property_declaration_1275", "'accessor' modifier can only appear on a property declaration."), An_accessor_property_cannot_be_declared_optional: diag(1276, 1 /* Error */, "An_accessor_property_cannot_be_declared_optional_1276", "An 'accessor' property cannot be declared optional."), _0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class: diag(1277, 1 /* Error */, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277", "'{0}' modifier can only appear on a type parameter of a function, method or class"), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0: diag(1278, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278", "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}."), + The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0: diag(1279, 1 /* Error */, "The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279", "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}."), + Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement: diag(1280, 1 /* Error */, "Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280", "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement."), + Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead: diag(1281, 1 /* Error */, "Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281", "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead."), + An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1282, 1 /* Error */, "An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282", "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1283, 1 /* Error */, "An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283", "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type: diag(1284, 1 /* Error */, "An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284", "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type."), + An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration: diag(1285, 1 /* Error */, "An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285", "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration."), + ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1286, 1 /* Error */, "ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286", "ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled: diag(1287, 1 /* Error */, "A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287", "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled."), + An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled: diag(1288, 1 /* Error */, "An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288", "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled."), with_statements_are_not_allowed_in_an_async_function_block: diag(1300, 1 /* Error */, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: diag(1308, 1 /* Error */, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: diag(1309, 1 /* Error */, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), @@ -5500,7 +5495,6 @@ var Diagnostics = { An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: diag(1380, 1 /* Error */, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: diag(1381, 1 /* Error */, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: diag(1382, 1 /* Error */, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), - Only_named_exports_may_use_export_type: diag(1383, 1 /* Error */, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1385, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: diag(1386, 1 /* Error */, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: diag(1387, 1 /* Error */, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), @@ -5548,7 +5542,7 @@ var Diagnostics = { The_file_is_in_the_program_because_Colon: diag(1430, 3 /* Message */, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1431, 1 /* Error */, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: diag(1432, 1 /* Error */, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), - Decorators_may_not_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), + Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters: diag(1433, 1 /* Error */, "Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433", "Neither decorators nor modifiers may be applied to 'this' parameters."), Unexpected_keyword_or_identifier: diag(1434, 1 /* Error */, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: diag(1435, 1 /* Error */, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: diag(1436, 1 /* Error */, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), @@ -5561,7 +5555,7 @@ var Diagnostics = { Module_declaration_names_may_only_use_or_quoted_strings: diag(1443, 1 /* Error */, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1444, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: diag(1446, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), - _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled: diag(1448, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: diag(1449, 3 /* Message */, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: diag(1450, 3 /* Message */, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: diag(1451, 1 /* Error */, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), @@ -5589,6 +5583,8 @@ var Diagnostics = { To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1: diag(1481, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481", `To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \`"type": "module"\` to '{1}'.`), To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0: diag(1482, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482", 'To convert this file to an ECMAScript module, add the field `"type": "module"` to \'{0}\'.'), To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module: diag(1483, 3 /* Message */, "To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483", 'To convert this file to an ECMAScript module, create a local package.json file with `{ "type": "module" }`.'), + _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1484, 1 /* Error */, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484", "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), + _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled: diag(1485, 1 /* Error */, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -6046,7 +6042,7 @@ var Diagnostics = { This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: diag(2745, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: diag(2746, 1 /* Error */, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: diag(2747, 1 /* Error */, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), - Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), + Cannot_access_ambient_const_enums_when_0_is_enabled: diag(2748, 1 /* Error */, "Cannot_access_ambient_const_enums_when_0_is_enabled_2748", "Cannot access ambient const enums when '{0}' is enabled."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: diag(2749, 1 /* Error */, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: diag(2750, 1 /* Error */, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: diag(2751, 1 /* Error */, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), @@ -6294,12 +6290,12 @@ var Diagnostics = { The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: diag(5088, 1 /* Error */, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: diag(5089, 1 /* Error */, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: diag(5090, 1 /* Error */, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), - Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), + Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled: diag(5091, 1 /* Error */, "Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled."), The_root_value_of_a_0_file_must_be_an_object: diag(5092, 1 /* Error */, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: diag(5093, 1 /* Error */, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: diag(5094, 1 /* Error */, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: diag(5095, 1 /* Error */, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), - Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_moduleResolution_is_set_to_bundler_and_eithe_5096", "Option 'allowImportingTsExtensions' can only be used when 'moduleResolution' is set to 'bundler' and either 'noEmit' or 'emitDeclarationOnly' is set."), + Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set: diag(5096, 1 /* Error */, "Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096", "Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set."), An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled: diag(5097, 1 /* Error */, "An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097", "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled."), Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler: diag(5098, 1 /* Error */, "Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098", "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'."), Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: diag(5099, 1 /* Error */, "Import_assignment_is_not_allowed_when_moduleResolution_is_set_to_bundler_Consider_using_import_Aster_5099", `Import assignment is not allowed when 'moduleResolution' is set to 'bundler'. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), @@ -6307,6 +6303,9 @@ var Diagnostics = { Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_silence_this_error: diag(5101, 1 /* Error */, "Flag_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_ignoreDeprecations_Colon_2_to_5101", `Flag '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify 'ignoreDeprecations: "{2}"' to silence this error.`), Flag_0_is_deprecated_Please_remove_it_from_your_configuration: diag(5102, 1 /* Error */, "Flag_0_is_deprecated_Please_remove_it_from_your_configuration_5102", "Flag '{0}' is deprecated. Please remove it from your configuration."), Invalid_value_for_ignoreDeprecations: diag(5103, 1 /* Error */, "Invalid_value_for_ignoreDeprecations_5103", "Invalid value for '--ignoreDeprecations'."), + Option_0_is_redundant_and_cannot_be_specified_with_option_1: diag(5104, 1 /* Error */, "Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104", "Option '{0}' is redundant and cannot be specified with option '{1}'."), + Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System: diag(5105, 1 /* Error */, "Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105", "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'."), + Use_0_instead: diag(5106, 3 /* Message */, "Use_0_instead_5106", "Use '{0}' instead."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -6589,6 +6588,8 @@ var Diagnostics = { package_json_scope_0_explicitly_maps_specifier_1_to_null: diag(6274, 3 /* Message */, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: diag(6275, 3 /* Message */, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: diag(6276, 3 /* Message */, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), + Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update: diag(6277, 3 /* Message */, "Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277", "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update."), + There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings: diag(6278, 3 /* Message */, "There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278", `There are types at '{0}', but this result could not be resolved when respecting package.json "exports". The '{1}' library may need to update its package.json or typings.`), Enable_project_compilation: diag(6302, 3 /* Message */, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: diag(6304, 1 /* Error */, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: diag(6305, 1 /* Error */, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), @@ -6713,7 +6714,7 @@ var Diagnostics = { Filters_results_from_the_include_option: diag(6627, 3 /* Message */, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: diag(6628, 3 /* Message */, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: diag(6629, 3 /* Message */, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), - Enable_experimental_support_for_TC39_stage_2_draft_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), + Enable_experimental_support_for_legacy_experimental_decorators: diag(6630, 3 /* Message */, "Enable_experimental_support_for_legacy_experimental_decorators_6630", "Enable experimental support for legacy experimental decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: diag(6631, 3 /* Message */, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: diag(6632, 3 /* Message */, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: diag(6633, 3 /* Message */, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), @@ -6799,6 +6800,7 @@ var Diagnostics = { Require_undeclared_properties_from_index_signatures_to_use_element_accesses: diag(6717, 3 /* Message */, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: diag(6718, 3 /* Message */, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: diag(6803, 3 /* Message */, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), + Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting: diag(6804, 3 /* Message */, "Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804", "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting."), one_of_Colon: diag(6900, 3 /* Message */, "one_of_Colon_6900", "one of:"), one_or_more_Colon: diag(6901, 3 /* Message */, "one_or_more_Colon_6901", "one or more:"), type_Colon: diag(6902, 3 /* Message */, "type_Colon_6902", "type:"), @@ -6934,6 +6936,7 @@ var Diagnostics = { You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder: diag(8035, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035", "You cannot rename elements that are defined in a 'node_modules' folder."), You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder: diag(8036, 1 /* Error */, "You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036", "You cannot rename elements that are defined in another 'node_modules' folder."), Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files: diag(8037, 1 /* Error */, "Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037", "Type satisfaction expressions can only be used in TypeScript files."), + Decorators_must_come_after_export_or_export_default_in_JavaScript_files: diag(8038, 1 /* Error */, "Decorators_must_come_after_export_or_export_default_in_JavaScript_files_8038", "Decorators must come after 'export' or 'export default' in JavaScript files."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9005, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: diag(17e3, 1 /* Error */, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), @@ -7219,7 +7222,8 @@ var Diagnostics = { _0_is_possibly_null: diag(18047, 1 /* Error */, "_0_is_possibly_null_18047", "'{0}' is possibly 'null'."), _0_is_possibly_undefined: diag(18048, 1 /* Error */, "_0_is_possibly_undefined_18048", "'{0}' is possibly 'undefined'."), _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."), - The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here.") + The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."), + Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string.") }; // src/compiler/scanner.ts @@ -7752,10 +7756,7 @@ function reduceEachTrailingCommentRange(text, pos, cb, state, initial) { initial ); } -function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments) { - if (!comments) { - comments = []; - } +function appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) { comments.push({ kind, pos, end, hasTrailingNewLine }); return comments; } @@ -9333,7 +9334,7 @@ function createTextChangeRange(span, newLength) { } var unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); function isParameterPropertyDeclaration(node, parent) { - return hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent.kind === 173 /* Constructor */; + return isParameter(node) && hasSyntacticModifier(node, 16476 /* ParameterPropertyModifier */) && parent.kind === 173 /* Constructor */; } function walkUpBindingElementsAndPatterns(binding) { let node = binding.parent; @@ -9402,6 +9403,10 @@ function unescapeLeadingUnderscores(identifier) { function idText(identifierOrPrivateName) { return unescapeLeadingUnderscores(identifierOrPrivateName.escapedText); } +function identifierToKeywordKind(node) { + const token = stringToToken(node.escapedText); + return token ? tryCast(token, isKeyword) : void 0; +} function symbolName(symbol) { if (symbol.valueDeclaration && isPrivateIdentifierClassElementDeclaration(symbol.valueDeclaration)) { return idText(symbol.valueDeclaration.name); @@ -9532,6 +9537,11 @@ function getAssignedName(node) { return node.parent.name; } } +function getModifiers(node) { + if (hasSyntacticModifier(node, 126975 /* Modifier */)) { + return filter(node.modifiers, isModifier); + } +} function getJSDocParameterTagsWorker(param, noCache) { if (param.name) { if (isIdentifier(param.name)) { @@ -9636,15 +9646,17 @@ function getJSDocTypeTag(node) { return void 0; } function getJSDocTagsWorker(node, noCache) { + var _a2, _b; if (!canHaveJSDoc(node)) return emptyArray; - let tags = node.jsDocCache; + let tags = (_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache; if (tags === void 0 || noCache) { const comments = getJSDocCommentsAndTags(node, noCache); Debug.assert(comments.length < 2 || comments[0] !== comments[1]); tags = flatMap(comments, (j) => isJSDoc(j) ? j.tags : j); if (!noCache) { - node.jsDocCache = tags; + (_b = node.jsDoc) != null ? _b : node.jsDoc = []; + node.jsDoc.jsDocCache = tags; } } return tags; @@ -9692,18 +9704,15 @@ function isNamedExportBindings(node) { function isNodeKind(kind) { return kind >= 163 /* FirstNode */; } -function isTokenKind(kind) { - return kind >= 0 /* FirstToken */ && kind <= 162 /* LastToken */; -} -function isToken(n) { - return isTokenKind(n.kind); -} function isNodeArray(array) { return hasProperty(array, "pos") && hasProperty(array, "end"); } function isLiteralKind(kind) { return 8 /* FirstLiteralToken */ <= kind && kind <= 14 /* LastLiteralToken */; } +function isLiteralExpression(node) { + return isLiteralKind(node.kind); +} function isTemplateLiteralKind(kind) { return 14 /* FirstTemplateToken */ <= kind && kind <= 17 /* LastTemplateToken */; } @@ -9715,10 +9724,12 @@ function isAssertionKey(node) { return isStringLiteral(node) || isIdentifier(node); } function isGeneratedIdentifier(node) { - return isIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isGeneratedPrivateIdentifier(node) { - return isPrivateIdentifier(node) && node.autoGenerate !== void 0; + var _a2; + return isPrivateIdentifier(node) && ((_a2 = node.emitNode) == null ? void 0 : _a2.autoGenerate) !== void 0; } function isPrivateIdentifierClassElementDeclaration(node) { return (isPropertyDeclaration(node) || isMethodOrAccessor(node)) && isPrivateIdentifier(node.name); @@ -9911,6 +9922,7 @@ function isLeftHandSideExpressionKind(kind) { case 230 /* ExpressionWithTypeArguments */: case 233 /* MetaProperty */: case 100 /* ImportKeyword */: + case 279 /* MissingDeclaration */: return true; default: return false; @@ -9933,6 +9945,17 @@ function isUnaryExpressionKind(kind) { return isLeftHandSideExpressionKind(kind); } } +function isLiteralTypeLiteral(node) { + switch (node.kind) { + case 104 /* NullKeyword */: + case 110 /* TrueKeyword */: + case 95 /* FalseKeyword */: + case 221 /* PrefixUnaryExpression */: + return true; + default: + return isLiteralExpression(node); + } +} function isExpression(node) { return isExpressionKind(skipPartiallyEmittedExpressions(node).kind); } @@ -9945,8 +9968,8 @@ function isExpressionKind(kind) { case 227 /* SpreadElement */: case 231 /* AsExpression */: case 229 /* OmittedExpression */: - case 356 /* CommaListExpression */: - case 355 /* PartiallyEmittedExpression */: + case 357 /* CommaListExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: return true; default: @@ -10085,7 +10108,7 @@ function isDeclarationStatementKind(kind) { return kind === 259 /* FunctionDeclaration */ || kind === 279 /* MissingDeclaration */ || kind === 260 /* ClassDeclaration */ || kind === 261 /* InterfaceDeclaration */ || kind === 262 /* TypeAliasDeclaration */ || kind === 263 /* EnumDeclaration */ || kind === 264 /* ModuleDeclaration */ || kind === 269 /* ImportDeclaration */ || kind === 268 /* ImportEqualsDeclaration */ || kind === 275 /* ExportDeclaration */ || kind === 274 /* ExportAssignment */ || kind === 267 /* NamespaceExportDeclaration */; } function isStatementKindButNotDeclarationKind(kind) { - return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 354 /* NotEmittedStatement */ || kind === 358 /* EndOfDeclarationMarker */ || kind === 357 /* MergeDeclarationMarker */; + return kind === 249 /* BreakStatement */ || kind === 248 /* ContinueStatement */ || kind === 256 /* DebuggerStatement */ || kind === 243 /* DoStatement */ || kind === 241 /* ExpressionStatement */ || kind === 239 /* EmptyStatement */ || kind === 246 /* ForInStatement */ || kind === 247 /* ForOfStatement */ || kind === 245 /* ForStatement */ || kind === 242 /* IfStatement */ || kind === 253 /* LabeledStatement */ || kind === 250 /* ReturnStatement */ || kind === 252 /* SwitchStatement */ || kind === 254 /* ThrowStatement */ || kind === 255 /* TryStatement */ || kind === 240 /* VariableStatement */ || kind === 244 /* WhileStatement */ || kind === 251 /* WithStatement */ || kind === 355 /* NotEmittedStatement */ || kind === 359 /* EndOfDeclarationMarker */ || kind === 358 /* MergeDeclarationMarker */; } function isDeclaration(node) { if (node.kind === 165 /* TypeParameter */) { @@ -10142,7 +10165,7 @@ function isCaseOrDefaultClause(node) { return kind === 292 /* CaseClause */ || kind === 293 /* DefaultClause */; } function isJSDocNode(node) { - return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 352 /* LastJSDocNode */; + return node.kind >= 312 /* FirstJSDocNode */ && node.kind <= 353 /* LastJSDocNode */; } function hasJSDocNodes(node) { if (!canHaveJSDoc(node)) @@ -10277,7 +10300,7 @@ function getTokenPosOfNode(node, sourceFile, includeJsDoc) { if (includeJsDoc && hasJSDocNodes(node)) { return getTokenPosOfNode(node.jsDoc[0], sourceFile); } - if (node.kind === 353 /* SyntaxList */ && node._children.length > 0) { + if (node.kind === 354 /* SyntaxList */ && node._children.length > 0) { return getTokenPosOfNode(node._children[0], sourceFile, includeJsDoc); } return skipTrivia( @@ -10375,10 +10398,11 @@ function isComputedNonLiteralName(name) { return name.kind === 164 /* ComputedPropertyName */ && !isStringOrNumericLiteralLike(name.expression); } function tryGetTextOfPropertyName(name) { + var _a2; switch (name.kind) { case 79 /* Identifier */: case 80 /* PrivateIdentifier */: - return name.autoGenerate ? void 0 : name.escapedText; + return ((_a2 = name.emitNode) == null ? void 0 : _a2.autoGenerate) ? void 0 : name.escapedText; case 10 /* StringLiteral */: case 8 /* NumericLiteral */: case 14 /* NoSubstitutionTemplateLiteral */: @@ -10867,7 +10891,7 @@ function isSpecialPropertyDeclaration(expr) { } function setValueDeclaration(symbol, node) { const { valueDeclaration } = symbol; - if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { + if (!valueDeclaration || !(node.flags & 16777216 /* Ambient */ && !isInJSFile(node) && !(valueDeclaration.flags & 16777216 /* Ambient */)) && (isAssignmentDeclaration(valueDeclaration) && !isAssignmentDeclaration(node)) || valueDeclaration.kind !== node.kind && isEffectiveModuleDeclaration(valueDeclaration)) { symbol.valueDeclaration = node; } } @@ -11011,7 +11035,7 @@ function filterOwnedJSDocTags(hostNode, jsDoc) { return ownsJSDocTag(hostNode, jsDoc) ? [jsDoc] : void 0; } function ownsJSDocTag(hostNode, tag) { - return !isJSDocTypeTag(tag) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; + return !(isJSDocTypeTag(tag) || isJSDocSatisfiesTag(tag)) || !tag.parent || !isJSDoc(tag.parent) || !isParenthesizedExpression(tag.parent.parent) || tag.parent.parent === hostNode; } function getNextJSDocCommentLocation(node) { const parent = node.parent; @@ -11266,7 +11290,7 @@ function getOperator(expression) { } function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 356 /* CommaListExpression */: + case 357 /* CommaListExpression */: return 0 /* Comma */; case 227 /* SpreadElement */: return 1 /* Spread */; @@ -11456,7 +11480,7 @@ function isThisIdentifier(node) { return !!node && node.kind === 79 /* Identifier */ && identifierIsThisKeyword(node); } function identifierIsThisKeyword(id) { - return id.originalKeywordKind === 108 /* ThisKeyword */; + return id.escapedText === "this"; } function hasSyntacticModifier(node, flags) { return !!getSelectedSyntacticModifierFlags(node, flags); @@ -11524,7 +11548,7 @@ function getEffectiveModifierFlagsNoCache(node) { } function getSyntacticModifierFlagsNoCache(node) { let flags = canHaveModifiers(node) ? modifiersToFlags(node.modifiers) : 0 /* None */; - if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.isInJSDocNamespace) { + if (node.flags & 4 /* NestedNamespace */ || node.kind === 79 /* Identifier */ && node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { flags |= 1 /* Export */; } return flags; @@ -11575,9 +11599,21 @@ function modifierToFlag(token) { } return 0 /* None */; } +function isBinaryLogicalOperator(token) { + return token === 56 /* BarBarToken */ || token === 55 /* AmpersandAmpersandToken */; +} function isLogicalOrCoalescingAssignmentOperator(token) { return token === 75 /* BarBarEqualsToken */ || token === 76 /* AmpersandAmpersandEqualsToken */ || token === 77 /* QuestionQuestionEqualsToken */; } +function isLogicalOrCoalescingAssignmentExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingAssignmentOperator(expr.operatorToken.kind); +} +function isLogicalOrCoalescingBinaryOperator(token) { + return isBinaryLogicalOperator(token) || token === 60 /* QuestionQuestionToken */; +} +function isLogicalOrCoalescingBinaryExpression(expr) { + return isBinaryExpression(expr) && isLogicalOrCoalescingBinaryOperator(expr.operatorToken.kind); +} function isAssignmentOperator(token) { return token >= 63 /* FirstAssignment */ && token <= 78 /* LastAssignment */; } @@ -11653,7 +11689,7 @@ function getLastChild(node) { return lastChild; } function isTypeNodeKind(kind) { - return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; + return kind >= 179 /* FirstTypeNode */ && kind <= 202 /* LastTypeNode */ || kind === 131 /* AnyKeyword */ || kind === 157 /* UnknownKeyword */ || kind === 148 /* NumberKeyword */ || kind === 160 /* BigIntKeyword */ || kind === 149 /* ObjectKeyword */ || kind === 134 /* BooleanKeyword */ || kind === 152 /* StringKeyword */ || kind === 153 /* SymbolKeyword */ || kind === 114 /* VoidKeyword */ || kind === 155 /* UndefinedKeyword */ || kind === 144 /* NeverKeyword */ || kind === 139 /* IntrinsicKeyword */ || kind === 230 /* ExpressionWithTypeArguments */ || kind === 315 /* JSDocAllType */ || kind === 316 /* JSDocUnknownType */ || kind === 317 /* JSDocNullableType */ || kind === 318 /* JSDocNonNullableType */ || kind === 319 /* JSDocOptionalType */ || kind === 320 /* JSDocFunctionType */ || kind === 321 /* JSDocVariadicType */; } function isAccessExpression(node) { return node.kind === 208 /* PropertyAccessExpression */ || node.kind === 209 /* ElementAccessExpression */; @@ -11687,7 +11723,7 @@ function getLeftmostExpression(node, stopAtCallExpressions) { case 209 /* ElementAccessExpression */: case 208 /* PropertyAccessExpression */: case 232 /* NonNullExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 235 /* SatisfiesExpression */: node = node.expression; continue; @@ -11755,7 +11791,6 @@ function Identifier2(kind, pos, end) { this.parent = void 0; this.original = void 0; this.emitNode = void 0; - this.flowNode = void 0; } function SourceMapSource(fileName, text, skipTrivia2) { this.fileName = fileName; @@ -12799,7 +12834,7 @@ function createNodeConverters(factory2) { if (!node.body) return Debug.fail(`Cannot convert a FunctionDeclaration without a body`); const updated = factory2.createFunctionExpression( - node.modifiers, + getModifiers(node), node.asteriskToken, node.name, node.typeParameters, @@ -12938,7 +12973,6 @@ function createNodeFactory(flags, baseFactory2) { createRegularExpressionLiteral, createLiteralLikeNode, createIdentifier, - updateIdentifier, createTempVariable, createLoopVariable, createUniqueName, @@ -13348,6 +13382,12 @@ function createNodeFactory(flags, baseFactory2) { get updateJSDocThrowsTag() { return getJSDocTypeLikeTagUpdateFunction(352 /* JSDocThrowsTag */); }, + get createJSDocSatisfiesTag() { + return getJSDocTypeLikeTagCreateFunction(353 /* JSDocSatisfiesTag */); + }, + get updateJSDocSatisfiesTag() { + return getJSDocTypeLikeTagUpdateFunction(353 /* JSDocSatisfiesTag */); + }, createJSDocEnumTag, updateJSDocEnumTag, createJSDocUnknownTag, @@ -13529,6 +13569,7 @@ function createNodeFactory(flags, baseFactory2) { createArraySliceCall, createArrayConcatCall, createObjectDefinePropertyCall, + createObjectGetOwnPropertyDescriptorCall, createReflectGetCall, createReflectSetCall, createPropertyDescriptor, @@ -13681,55 +13722,43 @@ function createNodeFactory(flags, baseFactory2) { ); } } - function createBaseIdentifier(escapedText, originalKeywordKind) { + function createBaseIdentifier(escapedText) { const node = baseFactory2.createBaseIdentifierNode(79 /* Identifier */); - node.originalKeywordKind = originalKeywordKind; node.escapedText = escapedText; - node.autoGenerate = void 0; - node.typeArguments = void 0; - node.hasExtendedUnicodeEscape = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.symbol = void 0; return node; } function createBaseGeneratedIdentifier(text, autoGenerateFlags, prefix, suffix) { - const node = createBaseIdentifier( - escapeLeadingUnderscores(text), - /*originalKeywordKind*/ - void 0 - ); - node.autoGenerate = { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } - function createIdentifier(text, typeArguments, originalKeywordKind, hasExtendedUnicodeEscape) { + function createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape) { if (originalKeywordKind === void 0 && text) { originalKeywordKind = stringToToken(text); } if (originalKeywordKind === 79 /* Identifier */) { originalKeywordKind = void 0; } - const node = createBaseIdentifier(escapeLeadingUnderscores(text), originalKeywordKind); - node.typeArguments = asNodeArray(typeArguments); - node.hasExtendedUnicodeEscape = hasExtendedUnicodeEscape; - if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + const node = createBaseIdentifier(escapeLeadingUnderscores(text)); + if (hasExtendedUnicodeEscape) + node.flags |= 128 /* IdentifierHasExtendedUnicodeEscape */; + if (node.escapedText === "await") { node.transformFlags |= 67108864 /* ContainsPossibleTopLevelAwait */; } - if (node.hasExtendedUnicodeEscape) { + if (node.flags & 128 /* IdentifierHasExtendedUnicodeEscape */) { node.transformFlags |= 1024 /* ContainsES2015 */; } return node; } - function updateIdentifier(node, typeArguments) { - return node.typeArguments !== typeArguments ? update(createIdentifier(idText(node), typeArguments), node) : node; - } function createTempVariable(recordTempVariable, reservedInNestedScopes, prefix, suffix) { let flags2 = 1 /* Auto */; if (reservedInNestedScopes) @@ -13777,7 +13806,6 @@ function createNodeFactory(flags, baseFactory2) { function createBasePrivateIdentifier(escapedText) { const node = baseFactory2.createBasePrivateIdentifierNode(80 /* PrivateIdentifier */); node.escapedText = escapedText; - node.autoGenerate = void 0; node.transformFlags |= 16777216 /* ContainsClassFields */; return node; } @@ -13788,12 +13816,12 @@ function createNodeFactory(flags, baseFactory2) { } function createBaseGeneratedPrivateIdentifier(text, autoGenerateFlags, prefix, suffix) { const node = createBasePrivateIdentifier(escapeLeadingUnderscores(text)); - node.autoGenerate = { + setIdentifierAutoGenerate(node, { flags: autoGenerateFlags, id: nextAutoGenerateId, prefix, suffix - }; + }); nextAutoGenerateId++; return node; } @@ -13955,7 +13983,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.expression = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateTypeParameterDeclaration(node, modifiers, name, constraint, defaultType) { @@ -13976,7 +14003,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.dotDotDotToken) | propagateNameFlags(node.name) | propagateChildFlags(node.questionToken) | propagateChildFlags(node.initializer) | (((_a2 = node.questionToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */) | (((_b = node.dotDotDotToken) != null ? _b : node.initializer) ? 1024 /* ContainsES2015 */ : 0 /* None */) | (modifiersToFlags(node.modifiers) & 16476 /* ParameterPropertyModifier */ ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */); } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) { @@ -14004,7 +14030,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.initializer = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertySignature(node, modifiers, name, questionToken, type) { @@ -14027,7 +14052,6 @@ function createNodeFactory(flags, baseFactory2) { const isAmbient = node.flags & 16777216 /* Ambient */ || modifiersToFlags(node.modifiers) & 2 /* Ambient */; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (isAmbient || node.questionToken || node.exclamationToken || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isComputedPropertyName(node.name) || modifiersToFlags(node.modifiers) & 32 /* Static */ && node.initializer ? 8192 /* ContainsTypeScriptClassSyntax */ : 0 /* None */) | 16777216 /* ContainsClassFields */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyDeclaration(node, modifiers, name, questionOrExclamationToken, type, initializer) { @@ -14043,7 +14067,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14073,7 +14096,6 @@ function createNodeFactory(flags, baseFactory2) { } node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -14094,10 +14116,8 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(172 /* ClassStaticBlockDeclaration */); node.body = body; node.transformFlags = propagateChildFlags(body) | 16777216 /* ContainsClassFields */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -14109,7 +14129,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateClassStaticBlockDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -14120,12 +14139,10 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = createNodeArray(parameters); node.body = body; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | 1024 /* ContainsES2015 */; - node.illegalDecorators = void 0; node.typeParameters = void 0; node.type = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -14137,7 +14154,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateConstructorDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.typeParameters = original.typeParameters; updated.type = original.type; } @@ -14158,7 +14174,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeArguments = void 0; node.typeParameters = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -14190,7 +14205,6 @@ function createNodeFactory(flags, baseFactory2) { node.typeParameters = void 0; node.type = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -14215,7 +14229,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14231,7 +14244,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14246,9 +14258,7 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = asNodeArray(parameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14299,7 +14309,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = 1 /* ContainsTypeScript */; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14325,7 +14334,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -14394,7 +14402,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) { @@ -14596,7 +14603,6 @@ function createNodeFactory(flags, baseFactory2) { node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.properties); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateObjectLiteralExpression(node, properties) { @@ -14609,7 +14615,6 @@ function createNodeFactory(flags, baseFactory2) { node.name = name; node.transformFlags = propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | (isIdentifier(node.name) ? propagateIdentifierNameFlags(node.name) : propagateChildFlags(node.name) | 536870912 /* ContainsPrivateIdentifierInExpression */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -14660,7 +14665,6 @@ function createNodeFactory(flags, baseFactory2) { node.argumentExpression = argumentExpression; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.questionDotToken) | propagateChildFlags(node.argumentExpression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -14811,7 +14815,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags = propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateParenthesizedExpression(node, expression) { @@ -14832,7 +14835,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -14855,7 +14857,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.equalsGreaterThanToken) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | (isAsync ? 256 /* ContainsES2017 */ | 16384 /* ContainsLexicalThis */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -14953,7 +14954,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 536870912 /* ContainsPrivateIdentifierInExpression */; } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function propagateAssignmentPatternFlags(node) { @@ -15095,7 +15095,6 @@ function createNodeFactory(flags, baseFactory2) { node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.heritageClauses) | propagateChildrenFlags(node.members) | (node.typeParameters ? 1 /* ContainsTypeScript */ : 0 /* None */) | 1024 /* ContainsES2015 */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) { @@ -15211,7 +15210,6 @@ function createNodeFactory(flags, baseFactory2) { node.multiLine = multiLine; node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; @@ -15227,9 +15225,7 @@ function createNodeFactory(flags, baseFactory2) { if (modifiersToFlags(node.modifiers) & 2 /* Ambient */) { node.transformFlags = 1 /* ContainsTypeScript */; } - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15239,7 +15235,6 @@ function createNodeFactory(flags, baseFactory2) { function createEmptyStatement() { const node = createBaseNode(239 /* EmptyStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function createExpressionStatement(expression) { @@ -15247,7 +15242,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression); node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15261,7 +15255,6 @@ function createNodeFactory(flags, baseFactory2) { node.elseStatement = asEmbeddedStatement(elseStatement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thenStatement) | propagateChildFlags(node.elseStatement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15274,7 +15267,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.statement) | propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15287,7 +15279,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15302,7 +15293,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.condition) | propagateChildFlags(node.incrementor) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -15318,7 +15308,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.initializer) | propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -15337,7 +15326,6 @@ function createNodeFactory(flags, baseFactory2) { if (awaitModifier) node.transformFlags |= 128 /* ContainsES2018 */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.flowNode = void 0; @@ -15351,7 +15339,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15363,7 +15350,6 @@ function createNodeFactory(flags, baseFactory2) { node.label = asName(label); node.transformFlags |= propagateChildFlags(node.label) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15375,7 +15361,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 4194304 /* ContainsHoistedDeclarationOrCompletion */; node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15388,7 +15373,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15401,7 +15385,6 @@ function createNodeFactory(flags, baseFactory2) { node.caseBlock = caseBlock; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.caseBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; node.possiblyExhaustive = false; return node; @@ -15415,7 +15398,6 @@ function createNodeFactory(flags, baseFactory2) { node.statement = asEmbeddedStatement(statement); node.transformFlags |= propagateChildFlags(node.label) | propagateChildFlags(node.statement); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15427,7 +15409,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = expression; node.transformFlags |= propagateChildFlags(node.expression); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15441,7 +15422,6 @@ function createNodeFactory(flags, baseFactory2) { node.finallyBlock = finallyBlock; node.transformFlags |= propagateChildFlags(node.tryBlock) | propagateChildFlags(node.catchClause) | propagateChildFlags(node.finallyBlock); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15451,7 +15431,6 @@ function createNodeFactory(flags, baseFactory2) { function createDebuggerStatement() { const node = createBaseNode(256 /* DebuggerStatement */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.flowNode = void 0; return node; } @@ -15464,7 +15443,6 @@ function createNodeFactory(flags, baseFactory2) { node.initializer = asInitializer(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer) | (((_a2 = node.exclamationToken) != null ? _a2 : node.type) ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateVariableDeclaration(node, name, exclamationToken, type, initializer) { @@ -15500,10 +15478,8 @@ function createNodeFactory(flags, baseFactory2) { const isAsyncGenerator = isAsync && isGenerator; node.transformFlags = propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.asteriskToken) | propagateNameFlags(node.name) | propagateChildrenFlags(node.typeParameters) | propagateChildrenFlags(node.parameters) | propagateChildFlags(node.type) | propagateChildFlags(node.body) & ~67108864 /* ContainsPossibleTopLevelAwait */ | (isAsyncGenerator ? 128 /* ContainsES2018 */ : isAsync ? 256 /* ContainsES2017 */ : isGenerator ? 2048 /* ContainsGenerator */ : 0 /* None */) | (node.typeParameters || node.type ? 1 /* ContainsTypeScript */ : 0 /* None */) | 4194304 /* ContainsHoistedDeclarationOrCompletion */; } - node.illegalDecorators = void 0; node.typeArguments = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.endFlowNode = void 0; @@ -15515,7 +15491,9 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateFunctionDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return finishUpdateBaseSignatureDeclaration(updated, original); } @@ -15535,7 +15513,6 @@ function createNodeFactory(flags, baseFactory2) { } } node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { @@ -15549,19 +15526,11 @@ function createNodeFactory(flags, baseFactory2) { node.heritageClauses = asNodeArray(heritageClauses); node.members = createNodeArray(members); node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? finishUpdateInterfaceDeclaration(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; - } - function finishUpdateInterfaceDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? update(createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members), node) : node; } function createTypeAliasDeclaration(modifiers, name, typeParameters, type) { const node = createBaseDeclaration(262 /* TypeAliasDeclaration */); @@ -15570,21 +15539,13 @@ function createNodeFactory(flags, baseFactory2) { node.typeParameters = asNodeArray(typeParameters); node.type = type; node.transformFlags = 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) { - return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? finishUpdateTypeAliasDeclaration(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; - } - function finishUpdateTypeAliasDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? update(createTypeAliasDeclaration(modifiers, name, typeParameters, type), node) : node; } function createEnumDeclaration(modifiers, name, members) { const node = createBaseDeclaration(263 /* EnumDeclaration */); @@ -15593,19 +15554,11 @@ function createNodeFactory(flags, baseFactory2) { node.members = createNodeArray(members); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildrenFlags(node.members) | 1 /* ContainsTypeScript */; node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateEnumDeclaration(node, modifiers, name, members) { - return node.modifiers !== modifiers || node.name !== name || node.members !== members ? finishUpdateEnumDeclaration(createEnumDeclaration(modifiers, name, members), node) : node; - } - function finishUpdateEnumDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.members !== members ? update(createEnumDeclaration(modifiers, name, members), node) : node; } function createModuleDeclaration(modifiers, name, body, flags2 = 0 /* None */) { const node = createBaseDeclaration(264 /* ModuleDeclaration */); @@ -15619,28 +15572,19 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.name) | propagateChildFlags(node.body) | 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; } function updateModuleDeclaration(node, modifiers, name, body) { - return node.modifiers !== modifiers || node.name !== name || node.body !== body ? finishUpdateModuleDeclaration(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; - } - function finishUpdateModuleDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.name !== name || node.body !== body ? update(createModuleDeclaration(modifiers, name, body, node.flags), node) : node; } function createModuleBlock(statements) { const node = createBaseNode(265 /* ModuleBlock */); node.statements = createNodeArray(statements); node.transformFlags |= propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateModuleBlock(node, statements) { @@ -15661,10 +15605,8 @@ function createNodeFactory(flags, baseFactory2) { const node = createBaseDeclaration(267 /* NamespaceExportDeclaration */); node.name = asName(name); node.transformFlags |= propagateIdentifierNameFlags(node.name) | 1 /* ContainsTypeScript */; - node.illegalDecorators = void 0; node.modifiers = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateNamespaceExportDeclaration(node, name) { @@ -15672,7 +15614,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateNamespaceExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; } return update(updated, original); @@ -15688,19 +15629,11 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= 1 /* ContainsTypeScript */; } node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateImportEqualsDeclaration(node, modifiers, isTypeOnly, name, moduleReference) { - return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? finishUpdateImportEqualsDeclaration(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; - } - function finishUpdateImportEqualsDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.isTypeOnly !== isTypeOnly || node.name !== name || node.moduleReference !== moduleReference ? update(createImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference), node) : node; } function createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause) { const node = createBaseNode(269 /* ImportDeclaration */); @@ -15710,19 +15643,11 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildFlags(node.importClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, assertClause) { - return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? finishUpdateImportDeclaration(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; - } - function finishUpdateImportDeclaration(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.assertClause !== assertClause ? update(createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause), node) : node; } function createImportClause(isTypeOnly, name, namedBindings) { const node = createBaseDeclaration(270 /* ImportClause */); @@ -15822,19 +15747,11 @@ function createNodeFactory(flags, baseFactory2) { ) : parenthesizerRules().parenthesizeExpressionOfExportDefault(expression); node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.expression); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportAssignment(node, modifiers, expression) { - return node.modifiers !== modifiers || node.expression !== expression ? finishUpdateExportAssignment(createExportAssignment(modifiers, node.isExportEquals, expression), node) : node; - } - function finishUpdateExportAssignment(updated, original) { - if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; - } - return update(updated, original); + return node.modifiers !== modifiers || node.expression !== expression ? update(createExportAssignment(modifiers, node.isExportEquals, expression), node) : node; } function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { const node = createBaseDeclaration(275 /* ExportDeclaration */); @@ -15845,9 +15762,7 @@ function createNodeFactory(flags, baseFactory2) { node.assertClause = assertClause; node.transformFlags |= propagateChildrenFlags(node.modifiers) | propagateChildFlags(node.exportClause) | propagateChildFlags(node.moduleSpecifier); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; - node.illegalDecorators = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportDeclaration(node, modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause) { @@ -15855,7 +15770,9 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateExportDeclaration(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; + if (updated.modifiers === original.modifiers) { + updated.modifiers = original.modifiers; + } } return update(updated, original); } @@ -15877,7 +15794,6 @@ function createNodeFactory(flags, baseFactory2) { node.transformFlags |= propagateChildFlags(node.propertyName) | propagateChildFlags(node.name); node.transformFlags &= ~67108864 /* ContainsPossibleTopLevelAwait */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateExportSpecifier(node, isTypeOnly, propertyName, name) { @@ -15886,7 +15802,6 @@ function createNodeFactory(flags, baseFactory2) { function createMissingDeclaration() { const node = createBaseDeclaration(279 /* MissingDeclaration */); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function createExternalModuleReference(expression) { @@ -15927,7 +15842,6 @@ function createNodeFactory(flags, baseFactory2) { node.type = type; node.transformFlags = propagateChildrenFlags(node.parameters) | (node.type ? 1 /* ContainsTypeScript */ : 0 /* None */); node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; node.typeArguments = void 0; @@ -15959,7 +15873,6 @@ function createNodeFactory(flags, baseFactory2) { node.parameters = createNodeArray(parameters); node.type = type; node.jsDoc = void 0; - node.jsDocCache = void 0; node.locals = void 0; node.nextContainer = void 0; return node; @@ -16287,7 +16200,6 @@ function createNodeFactory(flags, baseFactory2) { node.statements = createNodeArray(statements); node.transformFlags |= propagateChildFlags(node.expression) | propagateChildrenFlags(node.statements); node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateCaseClause(node, expression, statements) { @@ -16339,12 +16251,10 @@ function createNodeFactory(flags, baseFactory2) { node.name = asName(name); node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateNameFlags(node.name) | propagateChildFlags(node.initializer); - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updatePropertyAssignment(node, name, initializer) { @@ -16352,7 +16262,6 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdatePropertyAssignment(updated, original) { if (updated !== original) { - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; @@ -16365,12 +16274,10 @@ function createNodeFactory(flags, baseFactory2) { node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer); node.transformFlags |= propagateIdentifierNameFlags(node.name) | propagateChildFlags(node.objectAssignmentInitializer) | 1024 /* ContainsES2015 */; node.equalsToken = void 0; - node.illegalDecorators = void 0; node.modifiers = void 0; node.questionToken = void 0; node.exclamationToken = void 0; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateShorthandPropertyAssignment(node, name, objectAssignmentInitializer) { @@ -16378,11 +16285,10 @@ function createNodeFactory(flags, baseFactory2) { } function finishUpdateShorthandPropertyAssignment(updated, original) { if (updated !== original) { - updated.equalsToken = original.equalsToken; - updated.illegalDecorators = original.illegalDecorators; updated.modifiers = original.modifiers; updated.questionToken = original.questionToken; updated.exclamationToken = original.exclamationToken; + updated.equalsToken = original.equalsToken; } return update(updated, original); } @@ -16391,7 +16297,6 @@ function createNodeFactory(flags, baseFactory2) { node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression); node.transformFlags |= propagateChildFlags(node.expression) | 128 /* ContainsES2018 */ | 65536 /* ContainsObjectRestOrSpread */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateSpreadAssignment(node, expression) { @@ -16403,7 +16308,6 @@ function createNodeFactory(flags, baseFactory2) { node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer); node.transformFlags |= propagateChildFlags(node.name) | propagateChildFlags(node.initializer) | 1 /* ContainsTypeScript */; node.jsDoc = void 0; - node.jsDocCache = void 0; return node; } function updateEnumMember(node, name, initializer) { @@ -16585,18 +16489,18 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createSyntaxList(children) { - const node = createBaseNode(353 /* SyntaxList */); + const node = createBaseNode(354 /* SyntaxList */); node._children = children; return node; } function createNotEmittedStatement(original) { - const node = createBaseNode(354 /* NotEmittedStatement */); + const node = createBaseNode(355 /* NotEmittedStatement */); node.original = original; setTextRange(node, original); return node; } function createPartiallyEmittedExpression(expression, original) { - const node = createBaseNode(355 /* PartiallyEmittedExpression */); + const node = createBaseNode(356 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; @@ -16618,7 +16522,7 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createCommaListExpression(elements) { - const node = createBaseNode(356 /* CommaListExpression */); + const node = createBaseNode(357 /* CommaListExpression */); node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; @@ -16627,19 +16531,19 @@ function createNodeFactory(flags, baseFactory2) { return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createEndOfDeclarationMarker(original) { - const node = createBaseNode(358 /* EndOfDeclarationMarker */); + const node = createBaseNode(359 /* EndOfDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createMergeDeclarationMarker(original) { - const node = createBaseNode(357 /* MergeDeclarationMarker */); + const node = createBaseNode(358 /* MergeDeclarationMarker */); node.emitNode = {}; node.original = original; return node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(359 /* SyntheticReferenceExpression */); + const node = createBaseNode(360 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -16649,36 +16553,32 @@ function createNodeFactory(flags, baseFactory2) { return node.expression !== expression || node.thisArg !== thisArg ? update(createSyntheticReferenceExpression(expression, thisArg), node) : node; } function cloneGeneratedIdentifier(node) { - const clone2 = createBaseIdentifier( - node.escapedText, - /*originalKeywordKind*/ - void 0 - ); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function cloneIdentifier(node) { - const clone2 = createBaseIdentifier(node.escapedText, node.originalKeywordKind); + const clone2 = createBaseIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.typeArguments = node.typeArguments; - clone2.hasExtendedUnicodeEscape = node.hasExtendedUnicodeEscape; clone2.jsDoc = node.jsDoc; - clone2.jsDocCache = node.jsDocCache; clone2.flowNode = node.flowNode; clone2.symbol = node.symbol; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + const typeArguments = getIdentifierTypeArguments(node); + if (typeArguments) + setIdentifierTypeArguments(clone2, typeArguments); return clone2; } function cloneGeneratedPrivateIdentifier(node) { const clone2 = createBasePrivateIdentifier(node.escapedText); clone2.flags |= node.flags & ~8 /* Synthesized */; - clone2.autoGenerate = { ...node.autoGenerate }; clone2.transformFlags = node.transformFlags; setOriginalNode(clone2, node); + setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate }); return clone2; } function clonePrivateIdentifier(node) { @@ -16847,6 +16747,9 @@ function createNodeFactory(flags, baseFactory2) { function createObjectDefinePropertyCall(target, propertyName, attributes) { return createGlobalMethodCall("Object", "defineProperty", [target, asExpression(propertyName), attributes]); } + function createObjectGetOwnPropertyDescriptorCall(target, propertyName) { + return createGlobalMethodCall("Object", "getOwnPropertyDescriptor", [target, asExpression(propertyName)]); + } function createReflectGetCall(target, propertyKey, receiver) { return createGlobalMethodCall("Reflect", "get", receiver ? [target, propertyKey, receiver] : [target, propertyKey]); } @@ -16883,7 +16786,7 @@ function createNodeFactory(flags, baseFactory2) { return updateSatisfiesExpression(outerExpression, expression, outerExpression.type); case 232 /* NonNullExpression */: return updateNonNullExpression(outerExpression, expression); - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return updatePartiallyEmittedExpression(outerExpression, expression); } } @@ -17419,7 +17322,7 @@ function getTransformFlagsSubtreeExclusions(kind) { case 213 /* TypeAssertionExpression */: case 235 /* SatisfiesExpression */: case 231 /* AsExpression */: - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: case 214 /* ParenthesizedExpression */: case 106 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -17455,6 +17358,7 @@ function setOriginalNode(node, original) { function mergeEmitNode(sourceEmitNode, destEmitNode) { const { flags, + internalFlags, leadingComments, trailingComments, commentRange, @@ -17472,7 +17376,9 @@ function mergeEmitNode(sourceEmitNode, destEmitNode) { if (trailingComments) destEmitNode.trailingComments = addRange(trailingComments.slice(), destEmitNode.trailingComments); if (flags) - destEmitNode.flags = flags & ~536870912 /* Immutable */; + destEmitNode.flags = flags; + if (internalFlags) + destEmitNode.internalFlags = internalFlags & ~8 /* Immutable */; if (commentRange) destEmitNode.commentRange = commentRange; if (sourceMapRange) @@ -17514,7 +17420,7 @@ function getOrCreateEmitNode(node) { } node.emitNode = {}; } else { - Debug.assert(!(node.emitNode.flags & 536870912 /* Immutable */), "Invalid attempt to mutate an immutable node."); + Debug.assert(!(node.emitNode.internalFlags & 8 /* Immutable */), "Invalid attempt to mutate an immutable node."); } return node.emitNode; } @@ -17546,6 +17452,18 @@ function getSyntheticTrailingComments(node) { var _a2; return (_a2 = node.emitNode) == null ? void 0 : _a2.trailingComments; } +function setIdentifierTypeArguments(node, typeArguments) { + getOrCreateEmitNode(node).identifierTypeArguments = typeArguments; + return node; +} +function getIdentifierTypeArguments(node) { + var _a2; + return (_a2 = node.emitNode) == null ? void 0 : _a2.identifierTypeArguments; +} +function setIdentifierAutoGenerate(node, autoGenerate) { + getOrCreateEmitNode(node).autoGenerate = autoGenerate; + return node; +} // src/compiler/factory/emitHelpers.ts function helperString(input, ...args) { @@ -17832,7 +17750,7 @@ function isMetaProperty(node) { return node.kind === 233 /* MetaProperty */; } function isCommaListExpression(node) { - return node.kind === 356 /* CommaListExpression */; + return node.kind === 357 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 236 /* TemplateSpan */; @@ -17913,7 +17831,7 @@ function isExportSpecifier(node) { return node.kind === 278 /* ExportSpecifier */; } function isNotEmittedStatement(node) { - return node.kind === 354 /* NotEmittedStatement */; + return node.kind === 355 /* NotEmittedStatement */; } function isExternalModuleReference(node) { return node.kind === 280 /* ExternalModuleReference */; @@ -17999,6 +17917,9 @@ function isJSDocTypeTag(node) { function isJSDocTemplateTag(node) { return node.kind === 348 /* JSDocTemplateTag */; } +function isJSDocSatisfiesTag(node) { + return node.kind === 353 /* JSDocSatisfiesTag */; +} // src/compiler/factory/utilities.ts function isLocalName(node) { @@ -18019,8 +17940,11 @@ function findUseStrictPrologue(statements) { } return void 0; } +function isCommaExpression(node) { + return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */; +} function isCommaSequence(node) { - return node.kind === 223 /* BinaryExpression */ && node.operatorToken.kind === 27 /* CommaToken */ || node.kind === 356 /* CommaListExpression */; + return isCommaExpression(node) || isCommaListExpression(node); } function isJSDocTypeAssertion(node) { return isParenthesizedExpression(node) && isInJSFile(node) && !!getJSDocTypeTag(node); @@ -18034,11 +17958,12 @@ function isOuterExpression(node, kinds = 15 /* All */) { return (kinds & 1 /* Parentheses */) !== 0; case 213 /* TypeAssertionExpression */: case 231 /* AsExpression */: + case 230 /* ExpressionWithTypeArguments */: case 235 /* SatisfiesExpression */: return (kinds & 2 /* TypeAssertions */) !== 0; case 232 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 355 /* PartiallyEmittedExpression */: + case 356 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -18104,12 +18029,21 @@ function getJSDocTypeAliasName(fullName) { } } } -var isTypeNodeOrTypeParameterDeclaration = or(isTypeNode, isTypeParameterDeclaration); -var isQuestionOrExclamationToken = or(isQuestionToken, isExclamationToken); -var isIdentifierOrThisTypeNode = or(isIdentifier, isThisTypeNode); -var isReadonlyKeywordOrPlusOrMinusToken = or(isReadonlyKeyword, isPlusToken, isMinusToken); -var isQuestionOrPlusOrMinusToken = or(isQuestionToken, isPlusToken, isMinusToken); -var isModuleName = or(isIdentifier, isStringLiteral); +function isQuestionOrExclamationToken(node) { + return isQuestionToken(node) || isExclamationToken(node); +} +function isIdentifierOrThisTypeNode(node) { + return isIdentifier(node) || isThisTypeNode(node); +} +function isReadonlyKeywordOrPlusOrMinusToken(node) { + return isReadonlyKeyword(node) || isPlusToken(node) || isMinusToken(node); +} +function isQuestionOrPlusOrMinusToken(node) { + return isQuestionToken(node) || isPlusToken(node) || isMinusToken(node); +} +function isModuleName(node) { + return isIdentifier(node) || isStringLiteral(node); +} function isExponentiationOperator(kind) { return kind === 42 /* AsteriskAsteriskToken */; } @@ -18382,7 +18316,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.constraint) || visitNode2(cbNode, node.default) || visitNode2(cbNode, node.expression); }, [300 /* ShorthandPropertyAssignment */]: function forEachChildInShorthandPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.equalsToken) || visitNode2(cbNode, node.objectAssignmentInitializer); }, [301 /* SpreadAssignment */]: function forEachChildInSpreadAssignment(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.expression); @@ -18397,7 +18331,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); }, [299 /* PropertyAssignment */]: function forEachChildInPropertyAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.initializer); }, [257 /* VariableDeclaration */]: function forEachChildInVariableDeclaration(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.exclamationToken) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.initializer); @@ -18406,7 +18340,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.dotDotDotToken) || visitNode2(cbNode, node.propertyName) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [178 /* IndexSignature */]: function forEachChildInIndexSignature(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [182 /* ConstructorType */]: function forEachChildInConstructorType(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -18423,7 +18357,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.questionToken) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); }, [173 /* Constructor */]: function forEachChildInConstructor(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [174 /* GetAccessor */]: function forEachChildInGetAccessor(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -18432,7 +18366,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [259 /* FunctionDeclaration */]: function forEachChildInFunctionDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); }, [215 /* FunctionExpression */]: function forEachChildInFunctionExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.asteriskToken) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.body); @@ -18441,7 +18375,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.modifiers) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type) || visitNode2(cbNode, node.equalsGreaterThanToken) || visitNode2(cbNode, node.body); }, [172 /* ClassStaticBlockDeclaration */]: function forEachChildInClassStaticBlockDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.body); }, [180 /* TypeReference */]: function forEachChildInTypeReference(node, cbNode, cbNodes) { return visitNode2(cbNode, node.typeName) || visitNodes(cbNode, cbNodes, node.typeArguments); @@ -18562,7 +18496,7 @@ var forEachChildTable = { return visitNodes(cbNode, cbNodes, node.statements) || visitNode2(cbNode, node.endOfFileToken); }, [240 /* VariableStatement */]: function forEachChildInVariableStatement(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.declarationList); }, [258 /* VariableDeclarationList */]: function forEachChildInVariableDeclarationList(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.declarations); @@ -18626,25 +18560,25 @@ var forEachChildTable = { [260 /* ClassDeclaration */]: forEachChildInClassDeclarationOrExpression, [228 /* ClassExpression */]: forEachChildInClassDeclarationOrExpression, [261 /* InterfaceDeclaration */]: function forEachChildInInterfaceDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.heritageClauses) || visitNodes(cbNode, cbNodes, node.members); }, [262 /* TypeAliasDeclaration */]: function forEachChildInTypeAliasDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.typeParameters) || visitNode2(cbNode, node.type); }, [263 /* EnumDeclaration */]: function forEachChildInEnumDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNodes(cbNode, cbNodes, node.members); }, [302 /* EnumMember */]: function forEachChildInEnumMember(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.initializer); }, [264 /* ModuleDeclaration */]: function forEachChildInModuleDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.body); }, [268 /* ImportEqualsDeclaration */]: function forEachChildInImportEqualsDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name) || visitNode2(cbNode, node.moduleReference); }, [269 /* ImportDeclaration */]: function forEachChildInImportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.importClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [270 /* ImportClause */]: function forEachChildInImportClause(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.namedBindings); @@ -18656,7 +18590,7 @@ var forEachChildTable = { return visitNode2(cbNode, node.name) || visitNode2(cbNode, node.value); }, [267 /* NamespaceExportDeclaration */]: function forEachChildInNamespaceExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNode2(cbNode, node.name); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.name); }, [271 /* NamespaceImport */]: function forEachChildInNamespaceImport(node, cbNode, _cbNodes) { return visitNode2(cbNode, node.name); @@ -18667,12 +18601,12 @@ var forEachChildTable = { [272 /* NamedImports */]: forEachChildInNamedImportsOrExports, [276 /* NamedExports */]: forEachChildInNamedImportsOrExports, [275 /* ExportDeclaration */]: function forEachChildInExportDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.exportClause) || visitNode2(cbNode, node.moduleSpecifier) || visitNode2(cbNode, node.assertClause); }, [273 /* ImportSpecifier */]: forEachChildInImportOrExportSpecifier, [278 /* ExportSpecifier */]: forEachChildInImportOrExportSpecifier, [274 /* ExportAssignment */]: function forEachChildInExportAssignment(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); + return visitNodes(cbNode, cbNodes, node.modifiers) || visitNode2(cbNode, node.expression); }, [225 /* TemplateExpression */]: function forEachChildInTemplateExpression(node, cbNode, cbNodes) { return visitNode2(cbNode, node.head) || visitNodes(cbNode, cbNodes, node.templateSpans); @@ -18699,9 +18633,9 @@ var forEachChildTable = { return visitNode2(cbNode, node.expression); }, [279 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { - return visitNodes(cbNode, cbNodes, node.illegalDecorators) || visitNodes(cbNode, cbNodes, node.modifiers); + return visitNodes(cbNode, cbNodes, node.modifiers); }, - [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [357 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [281 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -18773,6 +18707,7 @@ var forEachChildTable = { [347 /* JSDocTypeTag */]: forEachChildInJSDocTypeLikeTag, [346 /* JSDocThisTag */]: forEachChildInJSDocTypeLikeTag, [343 /* JSDocEnumTag */]: forEachChildInJSDocTypeLikeTag, + [353 /* JSDocSatisfiesTag */]: forEachChildInJSDocTypeLikeTag, [352 /* JSDocThrowsTag */]: forEachChildInJSDocTypeLikeTag, [342 /* JSDocOverloadTag */]: forEachChildInJSDocTypeLikeTag, [326 /* JSDocSignature */]: function forEachChildInJSDocSignature(node, cbNode, _cbNodes) { @@ -18792,7 +18727,7 @@ var forEachChildTable = { [339 /* JSDocReadonlyTag */]: forEachChildInJSDocTag, [334 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [340 /* JSDocOverrideTag */]: forEachChildInJSDocTag, - [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [356 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; function forEachChildInCallOrConstructSignature(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -19756,8 +19691,6 @@ var Parser; const pos = getNodePos(); const result = kind === 79 /* Identifier */ ? factory2.createIdentifier( "", - /*typeArguments*/ - void 0, /*originalKeywordKind*/ void 0 ) : isTemplateLiteralKind(kind) ? factory2.createTemplateLiteralLikeNode( @@ -19792,13 +19725,7 @@ var Parser; const text = internIdentifier(scanner.getTokenValue()); const hasExtendedUnicodeEscape = scanner.hasExtendedUnicodeEscape(); nextTokenWithoutCheck(); - return finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind, - hasExtendedUnicodeEscape - ), pos); + return finishNode(factory2.createIdentifier(text, originalKeywordKind, hasExtendedUnicodeEscape), pos); } if (token() === 80 /* PrivateIdentifier */) { parseErrorAtCurrentToken(privateIdentifierDiagnosticMessage || Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); @@ -19909,7 +19836,7 @@ var Parser; } } function canFollowExportModifier() { - return token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); + return token() === 59 /* AtToken */ || token() !== 41 /* AsteriskToken */ && token() !== 128 /* AsKeyword */ && token() !== 18 /* OpenBraceToken */ && canFollowModifier(); } function nextTokenCanFollowExportModifier() { nextToken(); @@ -19923,7 +19850,7 @@ var Parser; } function nextTokenCanFollowDefaultKeyword() { nextToken(); - return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); + return token() === 84 /* ClassKeyword */ || token() === 98 /* FunctionKeyword */ || token() === 118 /* InterfaceKeyword */ || token() === 59 /* AtToken */ || token() === 126 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 132 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); } function isListElement(parsingContext2, inErrorRecovery) { const node = currentNode(parsingContext2); @@ -20140,6 +20067,7 @@ var Parser; return parseElement(); } function currentNode(parsingContext2, pos) { + var _a2; if (!syntaxCursor || !isReusableParsingContext(parsingContext2) || parseErrorBeforeNextFinishedNode) { return void 0; } @@ -20154,8 +20082,8 @@ var Parser; if (!canReuseNode(node, parsingContext2)) { return void 0; } - if (canHaveJSDoc(node) && node.jsDocCache) { - node.jsDocCache = void 0; + if (canHaveJSDoc(node) && ((_a2 = node.jsDoc) == null ? void 0 : _a2.jsDocCache)) { + node.jsDoc.jsDocCache = void 0; } return node; } @@ -20214,7 +20142,7 @@ var Parser; return true; case 171 /* MethodDeclaration */: const methodDeclaration = node; - const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.originalKeywordKind === 135 /* ConstructorKeyword */; + const nameIsConstructor = methodDeclaration.name.kind === 79 /* Identifier */ && methodDeclaration.name.escapedText === "constructor"; return !nameIsConstructor; } } @@ -20436,13 +20364,10 @@ var Parser; function parseEntityName(allowReservedWords, diagnosticMessage) { const pos = getNodePos(); let entity = allowReservedWords ? parseIdentifierName(diagnosticMessage) : parseIdentifier(diagnosticMessage); - let dotPos = getNodePos(); while (parseOptional(24 /* DotToken */)) { if (token() === 29 /* LessThanToken */) { - entity.jsdocDotPos = dotPos; break; } - dotPos = getNodePos(); entity = finishNode( factory2.createQualifiedName( entity, @@ -20772,6 +20697,8 @@ var Parser; function parseTypeParameter() { const pos = getNodePos(); const modifiers = parseModifiers( + /*allowDecorators*/ + false, /*permitConstAsModifier*/ true ); @@ -20824,10 +20751,16 @@ var Parser; function parseParameterWorker(inOuterAwaitContext, allowAmbiguity = true) { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = inOuterAwaitContext ? doInAwaitContext(parseDecorators) : doOutsideOfAwaitContext(parseDecorators); + const modifiers = inOuterAwaitContext ? doInAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )) : doOutsideOfAwaitContext(() => parseModifiers( + /*allowDecorators*/ + true + )); if (token() === 108 /* ThisKeyword */) { const node2 = factory2.createParameterDeclaration( - decorators, + modifiers, /*dotDotDotToken*/ void 0, createIdentifier( @@ -20840,14 +20773,14 @@ var Parser; /*initializer*/ void 0 ); - if (decorators) { - parseErrorAtRange(decorators[0], Diagnostics.Decorators_may_not_be_applied_to_this_parameters); + const modifier = firstOrUndefined(modifiers); + if (modifier) { + parseErrorAtRange(modifier, Diagnostics.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters); } return withJSDoc(finishNode(node2, pos), hasJSDoc); } const savedTopLevel = topLevel; topLevel = false; - const modifiers = combineDecoratorsAndModifiers(decorators, parseModifiers()); const dotDotDotToken = parseOptionalToken(25 /* DotDotDotToken */); if (!allowAmbiguity && !isParameterNameStart()) { return void 0; @@ -20959,7 +20892,7 @@ var Parser; nextToken(); return token() === 58 /* ColonToken */ || token() === 27 /* CommaToken */ || token() === 23 /* CloseBracketToken */; } - function parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers) { const parameters = parseBracketedList(ParsingContext.Parameters, () => parseParameter( /*inOuterAwaitContext*/ false @@ -20967,7 +20900,6 @@ var Parser; const type = parseTypeAnnotation(); parseTypeMemberSemicolon(); const node = factory2.createIndexSignature(modifiers, parameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers) { @@ -21022,37 +20954,18 @@ var Parser; } const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 174 /* GetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 4 /* Type */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers, - 175 /* SetAccessor */, - 4 /* Type */ - ); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 4 /* Type */); } if (isIndexSignature()) { - return parseIndexSignatureDeclaration( - pos, - hasJSDoc, - /*decorators*/ - void 0, - modifiers - ); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } return parsePropertyOrMethodSignature(pos, hasJSDoc, modifiers); } @@ -21532,7 +21445,10 @@ var Parser; } function skipParameterStart() { if (isModifierKind(token())) { - parseModifiers(); + parseModifiers( + /*allowDecorators*/ + false + ); } if (isIdentifier2() || token() === 108 /* ThisKeyword */) { nextToken(); @@ -21660,6 +21576,7 @@ var Parser; case 133 /* AwaitKeyword */: case 125 /* YieldKeyword */: case 80 /* PrivateIdentifier */: + case 59 /* AtToken */: return true; default: if (isBinaryOperator2()) { @@ -22751,6 +22668,8 @@ var Parser; break; } return parseFunctionExpression(); + case 59 /* AtToken */: + return parseDecoratedExpression(); case 84 /* ClassKeyword */: return parseClassExpression(); case 98 /* FunctionKeyword */: @@ -22818,13 +22737,15 @@ var Parser; ); return withJSDoc(finishNode(factory2.createSpreadAssignment(expression), pos), hasJSDoc); } - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const tokenIsIdentifier = isIdentifier2(); @@ -22832,7 +22753,7 @@ var Parser; const questionToken = parseOptionalToken(57 /* QuestionToken */); const exclamationToken = parseOptionalToken(53 /* ExclamationToken */); if (asteriskToken || token() === 20 /* OpenParenToken */ || token() === 29 /* LessThanToken */) { - return parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken); + return parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken); } let node; const isShorthandPropertyAssignment2 = tokenIsIdentifier && token() !== 58 /* ColonToken */; @@ -22852,7 +22773,6 @@ var Parser; )); node = factory2.createPropertyAssignment(name, initializer); } - node.illegalDecorators = decorators; node.modifiers = modifiers; node.questionToken = questionToken; node.exclamationToken = exclamationToken; @@ -22880,7 +22800,10 @@ var Parser; ); const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + false + ); parseExpected(98 /* FunctionKeyword */); const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; @@ -23252,7 +23175,7 @@ var Parser; if (currentToken2 === 154 /* TypeKeyword */) { currentToken2 = lookAhead(nextToken); } - if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */) { + if (currentToken2 === 63 /* EqualsToken */ || currentToken2 === 41 /* AsteriskToken */ || currentToken2 === 18 /* OpenBraceToken */ || currentToken2 === 88 /* DefaultKeyword */ || currentToken2 === 128 /* AsKeyword */ || currentToken2 === 59 /* AtToken */) { return true; } continue; @@ -23336,8 +23259,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -23346,8 +23267,6 @@ var Parser; return parseVariableStatement( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -23357,8 +23276,6 @@ var Parser; return parseFunctionDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -23366,8 +23283,6 @@ var Parser; return parseClassDeclaration( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0 ); @@ -23430,8 +23345,10 @@ var Parser; function parseDeclaration() { const pos = getNodePos(); const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); - const modifiers = parseModifiers(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); const isAmbient = some(modifiers, isDeclareModifier); if (isAmbient) { const node = tryReuseAmbientDeclaration(pos); @@ -23441,9 +23358,9 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parseDeclarationWorker(pos, hasJSDoc, modifiers)); } else { - return parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers); + return parseDeclarationWorker(pos, hasJSDoc, modifiers); } } function tryReuseAmbientDeclaration(pos) { @@ -23454,41 +23371,41 @@ var Parser; } }); } - function parseDeclarationWorker(pos, hasJSDoc, decorators, modifiers) { + function parseDeclarationWorker(pos, hasJSDoc, modifiersIn) { switch (token()) { case 113 /* VarKeyword */: case 119 /* LetKeyword */: case 85 /* ConstKeyword */: - return parseVariableStatement(pos, hasJSDoc, decorators, modifiers); + return parseVariableStatement(pos, hasJSDoc, modifiersIn); case 98 /* FunctionKeyword */: - return parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseFunctionDeclaration(pos, hasJSDoc, modifiersIn); case 84 /* ClassKeyword */: - return parseClassDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassDeclaration(pos, hasJSDoc, modifiersIn); case 118 /* InterfaceKeyword */: - return parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseInterfaceDeclaration(pos, hasJSDoc, modifiersIn); case 154 /* TypeKeyword */: - return parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseTypeAliasDeclaration(pos, hasJSDoc, modifiersIn); case 92 /* EnumKeyword */: - return parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseEnumDeclaration(pos, hasJSDoc, modifiersIn); case 159 /* GlobalKeyword */: case 142 /* ModuleKeyword */: case 143 /* NamespaceKeyword */: - return parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseModuleDeclaration(pos, hasJSDoc, modifiersIn); case 100 /* ImportKeyword */: - return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiersIn); case 93 /* ExportKeyword */: nextToken(); switch (token()) { case 88 /* DefaultKeyword */: case 63 /* EqualsToken */: - return parseExportAssignment(pos, hasJSDoc, decorators, modifiers); + return parseExportAssignment(pos, hasJSDoc, modifiersIn); case 128 /* AsKeyword */: - return parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseNamespaceExportDeclaration(pos, hasJSDoc, modifiersIn); default: - return parseExportDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseExportDeclaration(pos, hasJSDoc, modifiersIn); } default: - if (decorators || modifiers) { + if (modifiersIn) { const missing = createMissingNode( 279 /* MissingDeclaration */, /*reportAtCurrentPosition*/ @@ -23496,8 +23413,7 @@ var Parser; Diagnostics.Declaration_expected ); setTextRangePos(missing, pos); - missing.illegalDecorators = decorators; - missing.modifiers = modifiers; + missing.modifiers = modifiersIn; return missing; } return void 0; @@ -23630,17 +23546,16 @@ var Parser; function canFollowContextualOfKeyword() { return nextTokenIsIdentifier() && nextToken() === 21 /* CloseParenToken */; } - function parseVariableStatement(pos, hasJSDoc, decorators, modifiers) { + function parseVariableStatement(pos, hasJSDoc, modifiers) { const declarationList = parseVariableDeclarationList( /*inForStatementInitializer*/ false ); parseSemicolon(); const node = factory2.createVariableStatement(modifiers, declarationList); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseFunctionDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseFunctionDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); const modifierFlags = modifiersToFlags(modifiers); parseExpected(98 /* FunctionKeyword */); @@ -23663,7 +23578,6 @@ var Parser; const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, Diagnostics.or_expected); setAwaitContext(savedAwaitContext); const node = factory2.createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseConstructorName() { @@ -23677,7 +23591,7 @@ var Parser; }); } } - function tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers) { + function tryParseConstructorDeclaration(pos, hasJSDoc, modifiers) { return tryParse(() => { if (parseConstructorName()) { const typeParameters = parseTypeParameters(); @@ -23689,14 +23603,13 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(0 /* None */, Diagnostics.or_expected); const node = factory2.createConstructorDeclaration(modifiers, parameters, body); - node.illegalDecorators = decorators; node.typeParameters = typeParameters; node.type = type; return withJSDoc(finishNode(node, pos), hasJSDoc); } }); } - function parseMethodDeclaration(pos, hasJSDoc, decorators, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { + function parseMethodDeclaration(pos, hasJSDoc, modifiers, asteriskToken, name, questionToken, exclamationToken, diagnosticMessage) { const isGenerator = asteriskToken ? 1 /* Yield */ : 0 /* None */; const isAsync = some(modifiers, isAsyncModifier) ? 2 /* Await */ : 0 /* None */; const typeParameters = parseTypeParameters(); @@ -23708,7 +23621,7 @@ var Parser; ); const body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage); const node = factory2.createMethodDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, asteriskToken, name, questionToken, @@ -23720,13 +23633,13 @@ var Parser; node.exclamationToken = exclamationToken; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken) { + function parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken) { const exclamationToken = !questionToken && !scanner.hasPrecedingLineBreak() ? parseOptionalToken(53 /* ExclamationToken */) : void 0; const type = parseTypeAnnotation(); const initializer = doOutsideOfContext(8192 /* YieldContext */ | 32768 /* AwaitContext */ | 4096 /* DisallowInContext */, parseInitializer); parseSemicolonAfterPropertyName(name, type, initializer); const node = factory2.createPropertyDeclaration( - combineDecoratorsAndModifiers(decorators, modifiers), + modifiers, name, questionToken || exclamationToken, type, @@ -23734,7 +23647,7 @@ var Parser; ); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers) { const asteriskToken = parseOptionalToken(41 /* AsteriskToken */); const name = parsePropertyName(); const questionToken = parseOptionalToken(57 /* QuestionToken */); @@ -23742,7 +23655,6 @@ var Parser; return parseMethodDeclaration( pos, hasJSDoc, - decorators, modifiers, asteriskToken, name, @@ -23752,9 +23664,9 @@ var Parser; Diagnostics.or_expected ); } - return parsePropertyDeclaration(pos, hasJSDoc, decorators, modifiers, name, questionToken); + return parsePropertyDeclaration(pos, hasJSDoc, modifiers, name, questionToken); } - function parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, kind, flags) { + function parseAccessorDeclaration(pos, hasJSDoc, modifiers, kind, flags) { const name = parsePropertyName(); const typeParameters = parseTypeParameters(); const parameters = parseParameters(0 /* None */); @@ -23764,7 +23676,7 @@ var Parser; false ); const body = parseFunctionBlockOrSemicolon(flags); - const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, type, body) : factory2.createSetAccessorDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, parameters, body); + const node = kind === 174 /* GetAccessor */ ? factory2.createGetAccessorDeclaration(modifiers, name, parameters, type, body) : factory2.createSetAccessorDeclaration(modifiers, name, parameters, body); node.typeParameters = typeParameters; if (isSetAccessorDeclaration(node)) node.type = type; @@ -23810,11 +23722,10 @@ var Parser; } return false; } - function parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers) { parseExpectedToken(124 /* StaticKeyword */); const body = parseClassStaticBlockBody(); const node = withJSDoc(finishNode(factory2.createClassStaticBlockDeclaration(body), pos), hasJSDoc); - node.illegalDecorators = decorators; node.modifiers = modifiers; return node; } @@ -23854,15 +23765,7 @@ var Parser; const expression = doInDecoratorContext(parseDecoratorExpression); return finishNode(factory2.createDecorator(expression), pos); } - function parseDecorators() { - const pos = getNodePos(); - let list, decorator; - while (decorator = tryParseDecorator()) { - list = append(list, decorator); - } - return list && createNodeArray(list, pos); - } - function tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + function tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); const kind = token(); if (token() === 85 /* ConstKeyword */ && permitConstAsModifier) { @@ -23880,23 +23783,26 @@ var Parser; } return finishNode(factory2.createToken(kind), pos); } - function combineDecoratorsAndModifiers(decorators, modifiers) { - if (!decorators) - return modifiers; - if (!modifiers) - return decorators; - const decoratorsAndModifiers = factory2.createNodeArray(concatenate(decorators, modifiers)); - setTextRangePosEnd(decoratorsAndModifiers, decorators.pos, modifiers.end); - return decoratorsAndModifiers; - } - function parseModifiers(permitConstAsModifier, stopOnStartOfClassStaticBlock) { + function parseModifiers(allowDecorators, permitConstAsModifier, stopOnStartOfClassStaticBlock) { const pos = getNodePos(); - let list, modifier, hasSeenStatic = false; - while (modifier = tryParseModifier(permitConstAsModifier, stopOnStartOfClassStaticBlock, hasSeenStatic)) { + let list; + let modifier, hasSeenStaticModifier = false; + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { if (modifier.kind === 124 /* StaticKeyword */) - hasSeenStatic = true; + hasSeenStaticModifier = true; list = append(list, modifier); } + if (allowDecorators && token() === 59 /* AtToken */) { + let decorator; + while (decorator = tryParseDecorator()) { + list = append(list, decorator); + } + while (modifier = tryParseModifier(hasSeenStaticModifier, permitConstAsModifier, stopOnStartOfClassStaticBlock)) { + if (modifier.kind === 124 /* StaticKeyword */) + hasSeenStaticModifier = true; + list = append(list, modifier); + } + } return list && createNodeArray(list, pos); } function parseModifiersForArrowFunction() { @@ -23916,30 +23822,31 @@ var Parser; return finishNode(factory2.createSemicolonClassElement(), pos); } const hasJSDoc = hasPrecedingJSDocComment(); - const decorators = parseDecorators(); const modifiers = parseModifiers( + /*allowDecorators*/ + true, /*permitConstAsModifier*/ true, /*stopOnStartOfClassStaticBlock*/ true ); if (token() === 124 /* StaticKeyword */ && lookAhead(nextTokenIsOpenBrace)) { - return parseClassStaticBlockDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseClassStaticBlockDeclaration(pos, hasJSDoc, modifiers); } if (parseContextualModifier(137 /* GetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 174 /* GetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 174 /* GetAccessor */, 0 /* None */); } if (parseContextualModifier(151 /* SetKeyword */)) { - return parseAccessorDeclaration(pos, hasJSDoc, decorators, modifiers, 175 /* SetAccessor */, 0 /* None */); + return parseAccessorDeclaration(pos, hasJSDoc, modifiers, 175 /* SetAccessor */, 0 /* None */); } if (token() === 135 /* ConstructorKeyword */ || token() === 10 /* StringLiteral */) { - const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, decorators, modifiers); + const constructorDeclaration = tryParseConstructorDeclaration(pos, hasJSDoc, modifiers); if (constructorDeclaration) { return constructorDeclaration; } } if (isIndexSignature()) { - return parseIndexSignatureDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseIndexSignatureDeclaration(pos, hasJSDoc, modifiers); } if (tokenIsIdentifierOrKeyword(token()) || token() === 10 /* StringLiteral */ || token() === 8 /* NumericLiteral */ || token() === 41 /* AsteriskToken */ || token() === 22 /* OpenBracketToken */) { const isAmbient = some(modifiers, isDeclareModifier); @@ -23947,12 +23854,12 @@ var Parser; for (const m of modifiers) { m.flags |= 16777216 /* Ambient */; } - return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers)); + return doInsideOfContext(16777216 /* Ambient */, () => parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers)); } else { - return parsePropertyOrMethodDeclaration(pos, hasJSDoc, decorators, modifiers); + return parsePropertyOrMethodDeclaration(pos, hasJSDoc, modifiers); } } - if (decorators || modifiers) { + if (modifiers) { const name = createMissingNode( 79 /* Identifier */, /*reportAtCurrentPosition*/ @@ -23962,7 +23869,6 @@ var Parser; return parsePropertyDeclaration( pos, hasJSDoc, - decorators, modifiers, name, /*questionToken*/ @@ -23971,21 +23877,39 @@ var Parser; } return Debug.fail("Should not have attempted to parse class member declaration."); } + function parseDecoratedExpression() { + const pos = getNodePos(); + const hasJSDoc = hasPrecedingJSDocComment(); + const modifiers = parseModifiers( + /*allowDecorators*/ + true + ); + if (token() === 84 /* ClassKeyword */) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 228 /* ClassExpression */); + } + const missing = createMissingNode( + 279 /* MissingDeclaration */, + /*reportAtCurrentPosition*/ + true, + Diagnostics.Expression_expected + ); + setTextRangePos(missing, pos); + missing.modifiers = modifiers; + return missing; + } function parseClassExpression() { return parseClassDeclarationOrExpression( getNodePos(), hasPrecedingJSDocComment(), - /*decorators*/ - void 0, /*modifiers*/ void 0, 228 /* ClassExpression */ ); } - function parseClassDeclaration(pos, hasJSDoc, decorators, modifiers) { - return parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, 260 /* ClassDeclaration */); + function parseClassDeclaration(pos, hasJSDoc, modifiers) { + return parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, 260 /* ClassDeclaration */); } - function parseClassDeclarationOrExpression(pos, hasJSDoc, decorators, modifiers, kind) { + function parseClassDeclarationOrExpression(pos, hasJSDoc, modifiers, kind) { const savedAwaitContext = inAwaitContext(); parseExpected(84 /* ClassKeyword */); const name = parseNameOfClassDeclarationOrExpression(); @@ -24004,7 +23928,7 @@ var Parser; members = createMissingList(); } setAwaitContext(savedAwaitContext); - const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members) : factory2.createClassExpression(combineDecoratorsAndModifiers(decorators, modifiers), name, typeParameters, heritageClauses, members); + const node = kind === 260 /* ClassDeclaration */ ? factory2.createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : factory2.createClassExpression(modifiers, name, typeParameters, heritageClauses, members); return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseNameOfClassDeclarationOrExpression() { @@ -24045,17 +23969,16 @@ var Parser; function parseClassMembers() { return parseList(ParsingContext.ClassMembers, parseClassElement); } - function parseInterfaceDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseInterfaceDeclaration(pos, hasJSDoc, modifiers) { parseExpected(118 /* InterfaceKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); const heritageClauses = parseHeritageClauses(); const members = parseObjectTypeMembers(); const node = factory2.createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseTypeAliasDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) { parseExpected(154 /* TypeKeyword */); const name = parseIdentifier(); const typeParameters = parseTypeParameters(); @@ -24063,7 +23986,6 @@ var Parser; const type = token() === 139 /* IntrinsicKeyword */ && tryParse(parseKeywordAndNoDot) || parseType(); parseSemicolon(); const node = factory2.createTypeAliasDeclaration(modifiers, name, typeParameters, type); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseEnumMember() { @@ -24073,7 +23995,7 @@ var Parser; const initializer = allowInAnd(parseInitializer); return withJSDoc(finishNode(factory2.createEnumMember(name, initializer), pos), hasJSDoc); } - function parseEnumDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseEnumDeclaration(pos, hasJSDoc, modifiers) { parseExpected(92 /* EnumKeyword */); const name = parseIdentifier(); let members; @@ -24084,7 +24006,6 @@ var Parser; members = createMissingList(); } const node = factory2.createEnumDeclaration(modifiers, name, members); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseModuleBlock() { @@ -24098,24 +24019,21 @@ var Parser; } return finishNode(factory2.createModuleBlock(statements), pos); } - function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags) { + function parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiers, flags) { const namespaceFlag = flags & 16 /* Namespace */; const name = parseIdentifier(); const body = parseOptional(24 /* DotToken */) ? parseModuleOrNamespaceDeclaration( getNodePos(), /*hasJSDoc*/ false, - /*decorators*/ - void 0, /*modifiers*/ void 0, 4 /* NestedNamespace */ | namespaceFlag ) : parseModuleBlock(); const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; let name; if (token() === 159 /* GlobalKeyword */) { @@ -24131,23 +24049,22 @@ var Parser; } else { parseSemicolon(); } - const node = factory2.createModuleDeclaration(modifiers, name, body, flags); - node.illegalDecorators = decorators; + const node = factory2.createModuleDeclaration(modifiersIn, name, body, flags); return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseModuleDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseModuleDeclaration(pos, hasJSDoc, modifiersIn) { let flags = 0; if (token() === 159 /* GlobalKeyword */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } else if (parseOptional(143 /* NamespaceKeyword */)) { flags |= 16 /* Namespace */; } else { parseExpected(142 /* ModuleKeyword */); if (token() === 10 /* StringLiteral */) { - return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, decorators, modifiers); + return parseAmbientExternalModuleDeclaration(pos, hasJSDoc, modifiersIn); } } - return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, decorators, modifiers, flags); + return parseModuleOrNamespaceDeclaration(pos, hasJSDoc, modifiersIn, flags); } function isExternalModuleReference2() { return token() === 147 /* RequireKeyword */ && lookAhead(nextTokenIsOpenParen); @@ -24161,17 +24078,16 @@ var Parser; function nextTokenIsSlash() { return nextToken() === 43 /* SlashToken */; } - function parseNamespaceExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseNamespaceExportDeclaration(pos, hasJSDoc, modifiers) { parseExpected(128 /* AsKeyword */); parseExpected(143 /* NamespaceKeyword */); const name = parseIdentifier(); parseSemicolon(); const node = factory2.createNamespaceExportDeclaration(name); - node.illegalDecorators = decorators; node.modifiers = modifiers; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseImportDeclarationOrImportEqualsDeclaration(pos, hasJSDoc, modifiers) { parseExpected(100 /* ImportKeyword */); const afterImportPos = scanner.getStartPos(); let identifier; @@ -24184,7 +24100,7 @@ var Parser; identifier = isIdentifier2() ? parseIdentifier() : void 0; } if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) { - return parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly); + return parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly); } let importClause; if (identifier || // import id @@ -24200,7 +24116,6 @@ var Parser; } parseSemicolon(); const node = factory2.createImportDeclaration(modifiers, importClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } function parseAssertEntry() { @@ -24259,12 +24174,11 @@ var Parser; function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() { return token() === 27 /* CommaToken */ || token() === 158 /* FromKeyword */; } - function parseImportEqualsDeclaration(pos, hasJSDoc, decorators, modifiers, identifier, isTypeOnly) { + function parseImportEqualsDeclaration(pos, hasJSDoc, modifiers, identifier, isTypeOnly) { parseExpected(63 /* EqualsToken */); const moduleReference = parseModuleReference(); parseSemicolon(); const node = factory2.createImportEqualsDeclaration(modifiers, isTypeOnly, identifier, moduleReference); - node.illegalDecorators = decorators; const finished = withJSDoc(finishNode(node, pos), hasJSDoc); return finished; } @@ -24374,7 +24288,7 @@ var Parser; function parseNamespaceExport(pos) { return finishNode(factory2.createNamespaceExport(parseIdentifierName()), pos); } - function parseExportDeclaration(pos, hasJSDoc, decorators, modifiers) { + function parseExportDeclaration(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -24404,10 +24318,9 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, assertClause); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } - function parseExportAssignment(pos, hasJSDoc, decorators, modifiers) { + function parseExportAssignment(pos, hasJSDoc, modifiers) { const savedAwaitContext = inAwaitContext(); setAwaitContext( /*value*/ @@ -24426,7 +24339,6 @@ var Parser; parseSemicolon(); setAwaitContext(savedAwaitContext); const node = factory2.createExportAssignment(modifiers, isExportEquals, expression); - node.illegalDecorators = decorators; return withJSDoc(finishNode(node, pos), hasJSDoc); } let ParsingContext; @@ -24810,6 +24722,9 @@ var Parser; case "overload": tag = parseOverloadTag(start2, tagName, margin, indentText); break; + case "satisfies": + tag = parseSatisfiesTag(start2, tagName, margin, indentText); + break; case "see": tag = parseSeeTag(start2, tagName, margin, indentText); break; @@ -25118,6 +25033,14 @@ var Parser; const className = parseExpressionWithTypeArgumentsForAugments(); return finishNode(factory2.createJSDocAugmentsTag(tagName, className, parseTrailingTagComments(start2, getNodePos(), margin, indentText)), start2); } + function parseSatisfiesTag(start2, tagName, margin, indentText) { + const typeExpression = parseJSDocTypeExpression( + /*mayOmitBraces*/ + false + ); + const comments2 = margin !== void 0 && indentText !== void 0 ? parseTrailingTagComments(start2, getNodePos(), margin, indentText) : void 0; + return finishNode(factory2.createJSDocSatisfiesTag(tagName, typeExpression, comments2), start2); + } function parseExpressionWithTypeArgumentsForAugments() { const usedBrace = parseOptional(18 /* OpenBraceToken */); const pos = getNodePos(); @@ -25222,7 +25145,7 @@ var Parser; return finishNode(jsDocNamespaceNode, pos); } if (nested) { - typeNameOrNamespaceName.isInJSDocNamespace = true; + typeNameOrNamespaceName.flags |= 2048 /* IdentifierIsInJSDocNamespace */; } return typeNameOrNamespaceName; } @@ -25426,12 +25349,7 @@ var Parser; const end2 = scanner.getTextPos(); const originalKeywordKind = token(); const text = internIdentifier(scanner.getTokenValue()); - const result = finishNode(factory2.createIdentifier( - text, - /*typeArguments*/ - void 0, - originalKeywordKind - ), pos, end2); + const result = finishNode(factory2.createIdentifier(text, originalKeywordKind), pos, end2); nextTokenJSDoc(); return result; } @@ -26053,6 +25971,7 @@ var libEntries = [ ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], + ["es2023", "lib.es2023.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -26106,14 +26025,17 @@ var libEntries = [ ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], - ["esnext.array", "lib.es2022.array.d.ts"], + ["es2023.array", "lib.es2023.array.d.ts"], + ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], - ["esnext.weakref", "lib.es2021.weakref.d.ts"] + ["esnext.weakref", "lib.es2021.weakref.d.ts"], + ["decorators", "lib.decorators.d.ts"], + ["decorators.legacy", "lib.decorators.legacy.d.ts"] ]; var libs = libEntries.map((entry) => entry[0]); var libMap = new Map(libEntries); @@ -26656,6 +26578,13 @@ var commandOptionsWithoutBuild = [ transpileOptionValue: true, defaultValueDescription: false }, + { + name: "verbatimModuleSyntax", + type: "boolean", + category: Diagnostics.Interop_Constraints, + description: Diagnostics.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting, + defaultValueDescription: false + }, // Strict Type Checks { name: "strict", @@ -26957,7 +26886,7 @@ var commandOptionsWithoutBuild = [ { name: "allowImportingTsExtensions", type: "boolean", - affectsModuleResolution: true, + affectsSemanticDiagnostics: true, category: Diagnostics.Modules, description: Diagnostics.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set, defaultValueDescription: false @@ -27021,10 +26950,11 @@ var commandOptionsWithoutBuild = [ { name: "experimentalDecorators", type: "boolean", + affectsEmit: true, affectsSemanticDiagnostics: true, affectsBuildInfo: true, category: Diagnostics.Language_and_Environment, - description: Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, + description: Diagnostics.Enable_experimental_support_for_legacy_experimental_decorators, defaultValueDescription: false }, { @@ -27138,7 +27068,7 @@ var commandOptionsWithoutBuild = [ paramType: Diagnostics.NEWLINE, category: Diagnostics.Emit, description: Diagnostics.Set_the_newline_character_for_emitting_files, - defaultValueDescription: Diagnostics.Platform_specific + defaultValueDescription: "lf" }, { name: "noErrorTruncation", @@ -27314,7 +27244,7 @@ var commandOptionsWithoutBuild = [ affectsModuleResolution: true, category: Diagnostics.Interop_Constraints, description: Diagnostics.Ensure_that_casing_is_correct_in_imports, - defaultValueDescription: false + defaultValueDescription: true }, { name: "maxNodeModuleJsDepth", @@ -27438,14 +27368,6 @@ var buildOpts = [ ...optionsForBuild ]; var typeAcquisitionDeclarations = [ - { - /* @deprecated typingOptions.enableAutoDiscovery - * Use typeAcquisition.enable instead. - */ - name: "enableAutoDiscovery", - type: "boolean", - defaultValueDescription: false - }, { name: "enable", type: "boolean", @@ -27627,12 +27549,6 @@ function getTsconfigRootOptionsMap() { elementOptions: getCommandLineWatchOptionsMap(), extraKeyDiagnostics: watchOptionsDidYouMeanDiagnostics }, - { - name: "typingOptions", - type: "object", - elementOptions: getCommandLineTypeAcquisitionMap(), - extraKeyDiagnostics: typeAcquisitionDidYouMeanDiagnostics - }, { name: "typeAcquisition", type: "object", @@ -27947,6 +27863,7 @@ function matchesExcludeWorker(pathToCheck, excludeSpecs, useCaseSensitiveFileNam return !hasExtension(pathToCheck) && excludeRegex.test(ensureTrailingDirectorySeparator(pathToCheck)); } function specToDiagnostic(spec, disallowTrailingRecursion) { + Debug.assert(typeof spec === "string"); if (disallowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return [Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, spec]; } else if (invalidDotDotAfterRecursiveWildcard(spec)) { @@ -28000,7 +27917,7 @@ function formatExtensions(extensions) { result.push("JSON"); return result.join(", "); } -function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache) { +function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, resultFromCache, legacyResult) { if (resultFromCache) { resultFromCache.failedLookupLocations = updateResolutionField(resultFromCache.failedLookupLocations, failedLookupLocations); resultFromCache.affectingLocations = updateResolutionField(resultFromCache.affectingLocations, affectingLocations); @@ -28018,7 +27935,8 @@ function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibra }, failedLookupLocations: initializeResolutionField(failedLookupLocations), affectingLocations: initializeResolutionField(affectingLocations), - resolutionDiagnostics: initializeResolutionField(diagnostics) + resolutionDiagnostics: initializeResolutionField(diagnostics), + node10Result: legacyResult }; } function initializeResolutionField(value) { @@ -28470,7 +28388,7 @@ function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, hos return nodeModuleNameResolverWorker(0 /* None */, moduleName, getDirectoryPath(containingFile), compilerOptions, host, cache, extensions, !!isConfigLookup, redirectedReference); } function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, compilerOptions, host, cache, extensions, isConfigLookup, redirectedReference) { - var _a2, _b; + var _a2, _b, _c, _d; const traceEnabled = isTraceEnabled(compilerOptions, host); const failedLookupLocations = []; const affectingLocations = []; @@ -28497,44 +28415,60 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, if (getEmitModuleResolutionKind(compilerOptions) === 2 /* Node10 */) { const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */); const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */); - result = priorityExtensions && tryResolve(priorityExtensions) || secondaryExtensions && tryResolve(secondaryExtensions) || void 0; + result = priorityExtensions && tryResolve(priorityExtensions, state) || secondaryExtensions && tryResolve(secondaryExtensions, state) || void 0; } else { - result = tryResolve(extensions); + result = tryResolve(extensions, state); + } + let legacyResult; + if (((_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.isExternalLibraryImport) && !isConfigLookup && extensions & (1 /* TypeScript */ | 4 /* Declaration */) && features & 8 /* Exports */ && !isExternalModuleNameRelative(moduleName) && !extensionIsOk(1 /* TypeScript */ | 4 /* Declaration */, result.value.resolved.extension) && conditions.indexOf("import") > -1) { + traceIfEnabled(state, Diagnostics.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update); + const diagnosticState = { + ...state, + features: state.features & ~8 /* Exports */, + failedLookupLocations: [], + affectingLocations: [], + reportDiagnostic: noop + }; + const diagnosticResult = tryResolve(extensions & (1 /* TypeScript */ | 4 /* Declaration */), diagnosticState); + if ((_b = diagnosticResult == null ? void 0 : diagnosticResult.value) == null ? void 0 : _b.isExternalLibraryImport) { + legacyResult = diagnosticResult.value.resolved.path; + } } return createResolvedModuleWithFailedLookupLocations( - (_a2 = result == null ? void 0 : result.value) == null ? void 0 : _a2.resolved, - (_b = result == null ? void 0 : result.value) == null ? void 0 : _b.isExternalLibraryImport, + (_c = result == null ? void 0 : result.value) == null ? void 0 : _c.resolved, + (_d = result == null ? void 0 : result.value) == null ? void 0 : _d.isExternalLibraryImport, failedLookupLocations, affectingLocations, diagnostics, - state.resultFromCache + state.resultFromCache, + legacyResult ); - function tryResolve(extensions2) { - const loader = (extensions3, candidate, onlyRecordFailures, state2) => nodeLoadModuleByRelativeName( + function tryResolve(extensions2, state2) { + const loader = (extensions3, candidate, onlyRecordFailures, state3) => nodeLoadModuleByRelativeName( extensions3, candidate, onlyRecordFailures, - state2, + state3, /*considerPackageJson*/ true ); - const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state); + const resolved = tryLoadModuleUsingOptionalResolutionSettings(extensions2, moduleName, containingDirectory, loader, state2); if (resolved) { return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) { if (traceEnabled) { trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state, cache, redirectedReference); + resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); } if (!resolved2) return void 0; @@ -28553,7 +28487,7 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, candidate, /*onlyRecordFailures*/ false, - state, + state2, /*considerPackageJson*/ true ); @@ -29710,7 +29644,7 @@ function getModuleInstanceStateWorker(node, visited) { case 264 /* ModuleDeclaration */: return getModuleInstanceState(node, visited); case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { return 0 /* NonInstantiated */; } } @@ -30139,6 +30073,7 @@ function createBinder() { } else if (containerFlags & 64 /* IsInterface */) { seenThisKeyword = false; bindChildren(node); + Debug.assertNotNode(node, isIdentifier); node.flags = seenThisKeyword ? node.flags | 128 /* ContainsThis */ : node.flags & ~128 /* ContainsThis */; } else { bindChildren(node); @@ -30439,13 +30374,12 @@ function createBinder() { } else if (node.kind === 221 /* PrefixUnaryExpression */ && node.operator === 53 /* ExclamationToken */) { node = node.operand; } else { - return node.kind === 223 /* BinaryExpression */ && (node.operatorToken.kind === 55 /* AmpersandAmpersandToken */ || node.operatorToken.kind === 56 /* BarBarToken */ || node.operatorToken.kind === 60 /* QuestionQuestionToken */); + return isLogicalOrCoalescingBinaryExpression(node); } } } function isLogicalAssignmentExpression(node) { - node = skipParentheses(node); - return isBinaryExpression(node) && isLogicalOrCoalescingAssignmentOperator(node.operatorToken.kind); + return isLogicalOrCoalescingAssignmentExpression(skipParentheses(node)); } function isTopLevelLogicalExpression(node) { while (isParenthesizedExpression(node.parent) || isPrefixUnaryExpression(node.parent) && node.parent.operator === 53 /* ExclamationToken */) { @@ -30828,7 +30762,7 @@ function createBinder() { }; } const operator = node.operatorToken.kind; - if (operator === 55 /* AmpersandAmpersandToken */ || operator === 56 /* BarBarToken */ || operator === 60 /* QuestionQuestionToken */ || isLogicalOrCoalescingAssignmentOperator(operator)) { + if (isLogicalOrCoalescingBinaryOperator(operator) || isLogicalOrCoalescingAssignmentOperator(operator)) { if (isTopLevelLogicalExpression(node)) { const postExpressionLabel = createBranchLabel(); bindLogicalLikeExpression(node, postExpressionLabel, postExpressionLabel); @@ -31298,13 +31232,17 @@ function createBinder() { } function checkContextualIdentifier(node) { if (!file.parseDiagnostics.length && !(node.flags & 16777216 /* Ambient */) && !(node.flags & 8388608 /* JSDoc */) && !isIdentifierName(node)) { - if (inStrictMode && node.originalKeywordKind >= 117 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 125 /* LastFutureReservedWord */) { + const originalKeywordKind = identifierToKeywordKind(node); + if (originalKeywordKind === void 0) { + return; + } + if (inStrictMode && originalKeywordKind >= 117 /* FirstFutureReservedWord */ && originalKeywordKind <= 125 /* LastFutureReservedWord */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, getStrictModeIdentifierMessage(node), declarationNameToString(node) )); - } else if (node.originalKeywordKind === 133 /* AwaitKeyword */) { + } else if (originalKeywordKind === 133 /* AwaitKeyword */) { if (isExternalModule(file) && isInTopLevelContext(node)) { file.bindDiagnostics.push(createDiagnosticForNode2( node, @@ -31318,7 +31256,7 @@ function createBinder() { declarationNameToString(node) )); } - } else if (node.originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { + } else if (originalKeywordKind === 125 /* YieldKeyword */ && node.flags & 8192 /* YieldContext */) { file.bindDiagnostics.push(createDiagnosticForNode2( node, Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, @@ -31530,7 +31468,7 @@ function createBinder() { function bindWorker(node) { switch (node.kind) { case 79 /* Identifier */: - if (node.isInJSDocNamespace) { + if (node.flags & 2048 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; while (parentNode && !isJSDocTypeAlias(parentNode)) { parentNode = parentNode.parent; @@ -32646,13 +32584,10 @@ var JsxNames; // src/compiler/visitorPublic.ts function visitNode(node, visitor, test, lift) { - if (node === void 0 || visitor === void 0) { + if (node === void 0) { return node; } const visited = visitor(node); - if (visited === node) { - return node; - } let visitedNode; if (visited === void 0) { return void 0; @@ -32665,7 +32600,7 @@ function visitNode(node, visitor, test, lift) { return visitedNode; } function visitNodes2(nodes, visitor, test, start, count) { - if (nodes === void 0 || visitor === void 0) { + if (nodes === void 0) { return nodes; } const length2 = nodes.length; @@ -32701,25 +32636,30 @@ function visitArrayWorker(nodes, visitor, test, start, count) { } for (let i = 0; i < count; i++) { const node = nodes[i + start]; - const visited = node !== void 0 ? visitor(node) : void 0; + const visited = node !== void 0 ? visitor ? visitor(node) : node : void 0; if (updated !== void 0 || visited === void 0 || visited !== node) { if (updated === void 0) { updated = nodes.slice(0, i); + Debug.assertEachNode(updated, test); } if (visited) { if (isArray(visited)) { for (const visitedNode of visited) { - void Debug.assertNode(visitedNode, test); + Debug.assertNode(visitedNode, test); updated.push(visitedNode); } } else { - void Debug.assertNode(visited, test); + Debug.assertNode(visited, test); updated.push(visited); } } } } - return updated != null ? updated : nodes; + if (updated) { + return updated; + } + Debug.assertEachNode(nodes, test); + return nodes; } function visitLexicalEnvironment(statements, visitor, context, start, ensureUseStrict, nodesVisitor = visitNodes2) { context.startLexicalEnvironment(); @@ -32733,7 +32673,7 @@ function visitParameterList(nodes, visitor, context, nodesVisitor = visitNodes2) context.startLexicalEnvironment(); if (nodes) { context.setLexicalEnvironmentFlags(1 /* InParameters */, true); - updated = nodesVisitor(nodes, visitor, isParameterDeclaration); + updated = nodesVisitor(nodes, visitor, isParameter); if (context.getLexicalEnvironmentFlags() & 2 /* VariablesHoistedInParameters */ && getEmitScriptTarget(context.getCompilerOptions()) >= 2 /* ES2015 */) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } @@ -32855,6 +32795,7 @@ function visitFunctionBody(node, visitor, context, nodeVisitor = visitNode) { function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { context.startBlockScope(); const updated = nodeVisitor(body, visitor, isStatement, context.factory.liftToBlock); + Debug.assert(updated); const declarations = context.endBlockScope(); if (some(declarations)) { if (isBlock(updated)) { @@ -32867,23 +32808,17 @@ function visitIterationBody(body, visitor, context, nodeVisitor = visitNode) { return updated; } var visitEachChildTable = { - [79 /* Identifier */]: function visitEachChildOfIdentifier(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { - return context.factory.updateIdentifier( - node, - nodesVisitor(node.typeArguments, visitor, isTypeNodeOrTypeParameterDeclaration) - ); - }, [163 /* QualifiedName */]: function visitEachChildOfQualifiedName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateQualifiedName( node, - nodeVisitor(node.left, visitor, isEntityName), - nodeVisitor(node.right, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.left, visitor, isEntityName)), + Debug.checkDefined(nodeVisitor(node.right, visitor, isIdentifier)) ); }, [164 /* ComputedPropertyName */]: function visitEachChildOfComputedPropertyName(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateComputedPropertyName( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Signature elements @@ -32891,7 +32826,7 @@ var visitEachChildTable = { return context.factory.updateTypeParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.constraint, visitor, isTypeNode), nodeVisitor(node.default, visitor, isTypeNode) ); @@ -32900,9 +32835,9 @@ var visitEachChildTable = { return context.factory.updateParameterDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -32910,7 +32845,7 @@ var visitEachChildTable = { [167 /* Decorator */]: function visitEachChildOfDecorator(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDecorator( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Type elements @@ -32918,19 +32853,19 @@ var visitEachChildTable = { return context.factory.updatePropertySignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode) ); }, [169 /* PropertyDeclaration */]: function visitEachChildOfPropertyDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { - var _a2; + var _a2, _b; return context.factory.updatePropertyDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), // QuestionToken and ExclamationToken are mutually exclusive in PropertyDeclaration - nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken), + tokenVisitor ? nodeVisitor((_a2 = node.questionToken) != null ? _a2 : node.exclamationToken, tokenVisitor, isQuestionOrExclamationToken) : (_b = node.questionToken) != null ? _b : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -32939,10 +32874,10 @@ var visitEachChildTable = { return context.factory.updateMethodSignature( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -32950,9 +32885,9 @@ var visitEachChildTable = { return context.factory.updateMethodDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), @@ -32962,7 +32897,7 @@ var visitEachChildTable = { [173 /* Constructor */]: function visitEachChildOfConstructorDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConstructorDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -32971,7 +32906,7 @@ var visitEachChildTable = { return context.factory.updateGetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), visitFunctionBody(node.body, visitor, context, nodeVisitor) @@ -32981,7 +32916,7 @@ var visitEachChildTable = { return context.factory.updateSetAccessorDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifierLike), - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), visitParameterList(node.parameters, visitor, context, nodesVisitor), visitFunctionBody(node.body, visitor, context, nodeVisitor) ); @@ -32998,7 +32933,7 @@ var visitEachChildTable = { return context.factory.updateCallSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, @@ -33006,16 +32941,16 @@ var visitEachChildTable = { return context.factory.updateConstructSignature( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), + nodesVisitor(node.parameters, visitor, isParameter), nodeVisitor(node.type, visitor, isTypeNode) ); }, [178 /* IndexSignature */]: function visitEachChildOfIndexSignatureDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexSignature( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.modifiers, visitor, isModifierLike), + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, // Types @@ -33023,14 +32958,14 @@ var visitEachChildTable = { return context.factory.updateTypePredicateNode( node, nodeVisitor(node.assertsModifier, visitor, isAssertsKeyword), - nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode), + Debug.checkDefined(nodeVisitor(node.parameterName, visitor, isIdentifierOrThisTypeNode)), nodeVisitor(node.type, visitor, isTypeNode) ); }, [180 /* TypeReference */]: function visitEachChildOfTypeReferenceNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeReferenceNode( node, - nodeVisitor(node.typeName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.typeName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -33038,8 +32973,8 @@ var visitEachChildTable = { return context.factory.updateFunctionTypeNode( node, nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [182 /* ConstructorType */]: function visitEachChildOfConstructorTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -33047,14 +32982,14 @@ var visitEachChildTable = { node, nodesVisitor(node.modifiers, visitor, isModifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodesVisitor(node.parameters, visitor, isParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + nodesVisitor(node.parameters, visitor, isParameter), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [183 /* TypeQuery */]: function visitEachChildOfTypeQueryNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeQueryNode( node, - nodeVisitor(node.exprName, visitor, isEntityName), + Debug.checkDefined(nodeVisitor(node.exprName, visitor, isEntityName)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, @@ -33067,7 +33002,7 @@ var visitEachChildTable = { [185 /* ArrayType */]: function visitEachChildOfArrayTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateArrayTypeNode( node, - nodeVisitor(node.elementType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.elementType, visitor, isTypeNode)) ); }, [186 /* TupleType */]: function visitEachChildOfTupleTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -33079,13 +33014,13 @@ var visitEachChildTable = { [187 /* OptionalType */]: function visitEachChildOfOptionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateOptionalTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [188 /* RestType */]: function visitEachChildOfRestTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateRestTypeNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [189 /* UnionType */]: function visitEachChildOfUnionTypeNode(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -33103,22 +33038,22 @@ var visitEachChildTable = { [191 /* ConditionalType */]: function visitEachChildOfConditionalTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateConditionalTypeNode( node, - nodeVisitor(node.checkType, visitor, isTypeNode), - nodeVisitor(node.extendsType, visitor, isTypeNode), - nodeVisitor(node.trueType, visitor, isTypeNode), - nodeVisitor(node.falseType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.checkType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.extendsType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.trueType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.falseType, visitor, isTypeNode)) ); }, [192 /* InferType */]: function visitEachChildOfInferTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInferTypeNode( node, - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration) + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)) ); }, [202 /* ImportType */]: function visitEachChildOfImportTypeNode(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeNode( node, - nodeVisitor(node.argument, visitor, isTypeNode), + Debug.checkDefined(nodeVisitor(node.argument, visitor, isTypeNode)), nodeVisitor(node.assertions, visitor, isImportTypeAssertionContainer), nodeVisitor(node.qualifier, visitor, isEntityName), nodesVisitor(node.typeArguments, visitor, isTypeNode), @@ -33128,45 +33063,45 @@ var visitEachChildTable = { [298 /* ImportTypeAssertionContainer */]: function visitEachChildOfImportTypeAssertionContainer(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportTypeAssertionContainer( node, - nodeVisitor(node.assertClause, visitor, isAssertClause), + Debug.checkDefined(nodeVisitor(node.assertClause, visitor, isAssertClause)), node.multiLine ); }, [199 /* NamedTupleMember */]: function visitEachChildOfNamedTupleMember(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateNamedTupleMember( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.type, visitor, isTypeNode) + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [193 /* ParenthesizedType */]: function visitEachChildOfParenthesizedType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedType( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [195 /* TypeOperator */]: function visitEachChildOfTypeOperatorNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOperatorNode( node, - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [196 /* IndexedAccessType */]: function visitEachChildOfIndexedAccessType(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIndexedAccessTypeNode( node, - nodeVisitor(node.objectType, visitor, isTypeNode), - nodeVisitor(node.indexType, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.objectType, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.indexType, visitor, isTypeNode)) ); }, [197 /* MappedType */]: function visitEachChildOfMappedType(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateMappedTypeNode( node, - nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken), - nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration), + tokenVisitor ? nodeVisitor(node.readonlyToken, tokenVisitor, isReadonlyKeywordOrPlusOrMinusToken) : node.readonlyToken, + Debug.checkDefined(nodeVisitor(node.typeParameter, visitor, isTypeParameterDeclaration)), nodeVisitor(node.nameType, visitor, isTypeNode), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken), + tokenVisitor ? nodeVisitor(node.questionToken, tokenVisitor, isQuestionOrPlusOrMinusToken) : node.questionToken, nodeVisitor(node.type, visitor, isTypeNode), nodesVisitor(node.members, visitor, isTypeElement) ); @@ -33174,21 +33109,21 @@ var visitEachChildTable = { [198 /* LiteralType */]: function visitEachChildOfLiteralTypeNode(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLiteralTypeNode( node, - nodeVisitor(node.literal, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.literal, visitor, isLiteralTypeLiteral)) ); }, [200 /* TemplateLiteralType */]: function visitEachChildOfTemplateLiteralType(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralType( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateLiteralTypeSpan) ); }, [201 /* TemplateLiteralTypeSpan */]: function visitEachChildOfTemplateLiteralTypeSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateLiteralTypeSpan( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Binding patterns @@ -33207,9 +33142,9 @@ var visitEachChildTable = { [205 /* BindingElement */]: function visitEachChildOfBindingElement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBindingElement( node, - nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken), + tokenVisitor ? nodeVisitor(node.dotDotDotToken, tokenVisitor, isDotDotDotToken) : node.dotDotDotToken, nodeVisitor(node.propertyName, visitor, isPropertyName), - nodeVisitor(node.name, visitor, isBindingName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -33229,37 +33164,37 @@ var visitEachChildTable = { [208 /* PropertyAccessExpression */]: function visitEachChildOfPropertyAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isPropertyAccessChain(node) ? context.factory.updatePropertyAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ) : context.factory.updatePropertyAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.name, visitor, isMemberName) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.name, visitor, isMemberName)) ); }, [209 /* ElementAccessExpression */]: function visitEachChildOfElementAccessExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return isElementAccessChain(node) ? context.factory.updateElementAccessChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ) : context.factory.updateElementAccessExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.argumentExpression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.argumentExpression, visitor, isExpression)) ); }, [210 /* CallExpression */]: function visitEachChildOfCallExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return isCallChain(node) ? context.factory.updateCallChain( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + tokenVisitor ? nodeVisitor(node.questionDotToken, tokenVisitor, isQuestionDotToken) : node.questionDotToken, nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ) : context.factory.updateCallExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -33267,7 +33202,7 @@ var visitEachChildTable = { [211 /* NewExpression */]: function visitEachChildOfNewExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNewExpression( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), nodesVisitor(node.arguments, visitor, isExpression) ); @@ -33275,29 +33210,29 @@ var visitEachChildTable = { [212 /* TaggedTemplateExpression */]: function visitEachChildOfTaggedTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTaggedTemplateExpression( node, - nodeVisitor(node.tag, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.tag, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.template, visitor, isTemplateLiteral) + Debug.checkDefined(nodeVisitor(node.template, visitor, isTemplateLiteral)) ); }, [213 /* TypeAssertionExpression */]: function visitEachChildOfTypeAssertionExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAssertion( node, - nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [214 /* ParenthesizedExpression */]: function visitEachChildOfParenthesizedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateParenthesizedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [215 /* FunctionExpression */]: function visitEachChildOfFunctionExpression(node, visitor, context, nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateFunctionExpression( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -33312,82 +33247,82 @@ var visitEachChildTable = { nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), nodeVisitor(node.type, visitor, isTypeNode), - nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.equalsGreaterThanToken, tokenVisitor, isEqualsGreaterThanToken)) : node.equalsGreaterThanToken, visitFunctionBody(node.body, visitor, context, nodeVisitor) ); }, [217 /* DeleteExpression */]: function visitEachChildOfDeleteExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateDeleteExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [218 /* TypeOfExpression */]: function visitEachChildOfTypeOfExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeOfExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [219 /* VoidExpression */]: function visitEachChildOfVoidExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVoidExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [220 /* AwaitExpression */]: function visitEachChildOfAwaitExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAwaitExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [221 /* PrefixUnaryExpression */]: function visitEachChildOfPrefixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePrefixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [222 /* PostfixUnaryExpression */]: function visitEachChildOfPostfixUnaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePostfixUnaryExpression( node, - nodeVisitor(node.operand, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.operand, visitor, isExpression)) ); }, [223 /* BinaryExpression */]: function visitEachChildOfBinaryExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateBinaryExpression( node, - nodeVisitor(node.left, visitor, isExpression), - nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken), - nodeVisitor(node.right, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.left, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.operatorToken, tokenVisitor, isBinaryOperatorToken)) : node.operatorToken, + Debug.checkDefined(nodeVisitor(node.right, visitor, isExpression)) ); }, [224 /* ConditionalExpression */]: function visitEachChildOfConditionalExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateConditionalExpression( node, - nodeVisitor(node.condition, visitor, isExpression), - nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken), - nodeVisitor(node.whenTrue, visitor, isExpression), - nodeVisitor(node.colonToken, tokenVisitor, isColonToken), - nodeVisitor(node.whenFalse, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.condition, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.questionToken, tokenVisitor, isQuestionToken)) : node.questionToken, + Debug.checkDefined(nodeVisitor(node.whenTrue, visitor, isExpression)), + tokenVisitor ? Debug.checkDefined(nodeVisitor(node.colonToken, tokenVisitor, isColonToken)) : node.colonToken, + Debug.checkDefined(nodeVisitor(node.whenFalse, visitor, isExpression)) ); }, [225 /* TemplateExpression */]: function visitEachChildOfTemplateExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateExpression( node, - nodeVisitor(node.head, visitor, isTemplateHead), + Debug.checkDefined(nodeVisitor(node.head, visitor, isTemplateHead)), nodesVisitor(node.templateSpans, visitor, isTemplateSpan) ); }, [226 /* YieldExpression */]: function visitEachChildOfYieldExpression(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateYieldExpression( node, - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.expression, visitor, isExpression) ); }, [227 /* SpreadElement */]: function visitEachChildOfSpreadElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadElement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [228 /* ClassExpression */]: function visitEachChildOfClassExpression(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -33403,45 +33338,45 @@ var visitEachChildTable = { [230 /* ExpressionWithTypeArguments */]: function visitEachChildOfExpressionWithTypeArguments(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionWithTypeArguments( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode) ); }, [231 /* AsExpression */]: function visitEachChildOfAsExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAsExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [235 /* SatisfiesExpression */]: function visitEachChildOfSatisfiesExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSatisfiesExpression( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [232 /* NonNullExpression */]: function visitEachChildOfNonNullExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return isOptionalChain(node) ? context.factory.updateNonNullChain( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ) : context.factory.updateNonNullExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [233 /* MetaProperty */]: function visitEachChildOfMetaProperty(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateMetaProperty( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Misc [236 /* TemplateSpan */]: function visitEachChildOfTemplateSpan(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTemplateSpan( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.literal, visitor, isTemplateMiddleOrTemplateTail)) ); }, // Element @@ -33454,21 +33389,21 @@ var visitEachChildTable = { [240 /* VariableStatement */]: function visitEachChildOfVariableStatement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateVariableStatement( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.declarationList, visitor, isVariableDeclarationList) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.declarationList, visitor, isVariableDeclarationList)) ); }, [241 /* ExpressionStatement */]: function visitEachChildOfExpressionStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExpressionStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [242 /* IfStatement */]: function visitEachChildOfIfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateIfStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.thenStatement, visitor, isStatement, context.factory.liftToBlock)), nodeVisitor(node.elseStatement, visitor, isStatement, context.factory.liftToBlock) ); }, @@ -33476,13 +33411,13 @@ var visitEachChildTable = { return context.factory.updateDoStatement( node, visitIterationBody(node.statement, visitor, context, nodeVisitor), - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [244 /* WhileStatement */]: function visitEachChildOfWhileStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWhileStatement( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -33498,17 +33433,17 @@ var visitEachChildTable = { [246 /* ForInStatement */]: function visitEachChildOfForInStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateForInStatement( node, - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, [247 /* ForOfStatement */]: function visitEachChildOfForOfStatement(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateForOfStatement( node, - nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword), - nodeVisitor(node.initializer, visitor, isForInitializer), - nodeVisitor(node.expression, visitor, isExpression), + tokenVisitor ? nodeVisitor(node.awaitModifier, tokenVisitor, isAwaitKeyword) : node.awaitModifier, + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isForInitializer)), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), visitIterationBody(node.statement, visitor, context, nodeVisitor) ); }, @@ -33533,34 +33468,34 @@ var visitEachChildTable = { [251 /* WithStatement */]: function visitEachChildOfWithStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateWithStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [252 /* SwitchStatement */]: function visitEachChildOfSwitchStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSwitchStatement( node, - nodeVisitor(node.expression, visitor, isExpression), - nodeVisitor(node.caseBlock, visitor, isCaseBlock) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), + Debug.checkDefined(nodeVisitor(node.caseBlock, visitor, isCaseBlock)) ); }, [253 /* LabeledStatement */]: function visitEachChildOfLabeledStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateLabeledStatement( node, - nodeVisitor(node.label, visitor, isIdentifier), - nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock) + Debug.checkDefined(nodeVisitor(node.label, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.statement, visitor, isStatement, context.factory.liftToBlock)) ); }, [254 /* ThrowStatement */]: function visitEachChildOfThrowStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateThrowStatement( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [255 /* TryStatement */]: function visitEachChildOfTryStatement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTryStatement( node, - nodeVisitor(node.tryBlock, visitor, isBlock), + Debug.checkDefined(nodeVisitor(node.tryBlock, visitor, isBlock)), nodeVisitor(node.catchClause, visitor, isCatchClause), nodeVisitor(node.finallyBlock, visitor, isBlock) ); @@ -33568,8 +33503,8 @@ var visitEachChildTable = { [257 /* VariableDeclaration */]: function visitEachChildOfVariableDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, tokenVisitor) { return context.factory.updateVariableDeclaration( node, - nodeVisitor(node.name, visitor, isBindingName), - nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken), + Debug.checkDefined(nodeVisitor(node.name, visitor, isBindingName)), + tokenVisitor ? nodeVisitor(node.exclamationToken, tokenVisitor, isExclamationToken) : node.exclamationToken, nodeVisitor(node.type, visitor, isTypeNode), nodeVisitor(node.initializer, visitor, isExpression) ); @@ -33584,7 +33519,7 @@ var visitEachChildTable = { return context.factory.updateFunctionDeclaration( node, nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken), + tokenVisitor ? nodeVisitor(node.asteriskToken, tokenVisitor, isAsteriskToken) : node.asteriskToken, nodeVisitor(node.name, visitor, isIdentifier), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), visitParameterList(node.parameters, visitor, context, nodesVisitor), @@ -33605,8 +33540,8 @@ var visitEachChildTable = { [261 /* InterfaceDeclaration */]: function visitEachChildOfInterfaceDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateInterfaceDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), nodesVisitor(node.heritageClauses, visitor, isHeritageClause), nodesVisitor(node.members, visitor, isTypeElement) @@ -33615,25 +33550,25 @@ var visitEachChildTable = { [262 /* TypeAliasDeclaration */]: function visitEachChildOfTypeAliasDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateTypeAliasDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.typeParameters, visitor, isTypeParameterDeclaration), - nodeVisitor(node.type, visitor, isTypeNode) + Debug.checkDefined(nodeVisitor(node.type, visitor, isTypeNode)) ); }, [263 /* EnumDeclaration */]: function visitEachChildOfEnumDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isIdentifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodesVisitor(node.members, visitor, isEnumMember) ); }, [264 /* ModuleDeclaration */]: function visitEachChildOfModuleDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateModuleDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.name, visitor, isModuleName), + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.name, visitor, isModuleName)), nodeVisitor(node.body, visitor, isModuleBody) ); }, @@ -33652,24 +33587,24 @@ var visitEachChildTable = { [267 /* NamespaceExportDeclaration */]: function visitEachChildOfNamespaceExportDeclaration(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExportDeclaration( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [268 /* ImportEqualsDeclaration */]: function visitEachChildOfImportEqualsDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportEqualsDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, - nodeVisitor(node.name, visitor, isIdentifier), - nodeVisitor(node.moduleReference, visitor, isModuleReference) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), + Debug.checkDefined(nodeVisitor(node.moduleReference, visitor, isModuleReference)) ); }, [269 /* ImportDeclaration */]: function visitEachChildOfImportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateImportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), nodeVisitor(node.importClause, visitor, isImportClause), - nodeVisitor(node.moduleSpecifier, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.moduleSpecifier, visitor, isExpression)), nodeVisitor(node.assertClause, visitor, isAssertClause) ); }, @@ -33683,8 +33618,8 @@ var visitEachChildTable = { [297 /* AssertEntry */]: function visitEachChildOfAssertEntry(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateAssertEntry( node, - nodeVisitor(node.name, visitor, isAssertionKey), - nodeVisitor(node.value, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isAssertionKey)), + Debug.checkDefined(nodeVisitor(node.value, visitor, isExpression)) ); }, [270 /* ImportClause */]: function visitEachChildOfImportClause(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { @@ -33698,13 +33633,13 @@ var visitEachChildTable = { [271 /* NamespaceImport */]: function visitEachChildOfNamespaceImport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceImport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [277 /* NamespaceExport */]: function visitEachChildOfNamespaceExport(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateNamespaceExport( node, - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [272 /* NamedImports */]: function visitEachChildOfNamedImports(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { @@ -33718,20 +33653,20 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, [274 /* ExportAssignment */]: function visitEachChildOfExportAssignment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportAssignment( node, - nodesVisitor(node.modifiers, visitor, isModifier), - nodeVisitor(node.expression, visitor, isExpression) + nodesVisitor(node.modifiers, visitor, isModifierLike), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [275 /* ExportDeclaration */]: function visitEachChildOfExportDeclaration(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExportDeclaration( node, - nodesVisitor(node.modifiers, visitor, isModifier), + nodesVisitor(node.modifiers, visitor, isModifierLike), node.isTypeOnly, nodeVisitor(node.exportClause, visitor, isNamedExportBindings), nodeVisitor(node.moduleSpecifier, visitor, isExpression), @@ -33749,59 +33684,59 @@ var visitEachChildTable = { node, node.isTypeOnly, nodeVisitor(node.propertyName, visitor, isIdentifier), - nodeVisitor(node.name, visitor, isIdentifier) + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)) ); }, // Module references [280 /* ExternalModuleReference */]: function visitEachChildOfExternalModuleReference(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateExternalModuleReference( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // JSX [281 /* JsxElement */]: function visitEachChildOfJsxElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxElement( node, - nodeVisitor(node.openingElement, visitor, isJsxOpeningElement), + Debug.checkDefined(nodeVisitor(node.openingElement, visitor, isJsxOpeningElement)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingElement, visitor, isJsxClosingElement) + Debug.checkDefined(nodeVisitor(node.closingElement, visitor, isJsxClosingElement)) ); }, [282 /* JsxSelfClosingElement */]: function visitEachChildOfJsxSelfClosingElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSelfClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [283 /* JsxOpeningElement */]: function visitEachChildOfJsxOpeningElement(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxOpeningElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression), + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)), nodesVisitor(node.typeArguments, visitor, isTypeNode), - nodeVisitor(node.attributes, visitor, isJsxAttributes) + Debug.checkDefined(nodeVisitor(node.attributes, visitor, isJsxAttributes)) ); }, [284 /* JsxClosingElement */]: function visitEachChildOfJsxClosingElement(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxClosingElement( node, - nodeVisitor(node.tagName, visitor, isJsxTagNameExpression) + Debug.checkDefined(nodeVisitor(node.tagName, visitor, isJsxTagNameExpression)) ); }, [285 /* JsxFragment */]: function visitEachChildOfJsxFragment(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxFragment( node, - nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment), + Debug.checkDefined(nodeVisitor(node.openingFragment, visitor, isJsxOpeningFragment)), nodesVisitor(node.children, visitor, isJsxChild), - nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment) + Debug.checkDefined(nodeVisitor(node.closingFragment, visitor, isJsxClosingFragment)) ); }, [288 /* JsxAttribute */]: function visitEachChildOfJsxAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxAttribute( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.initializer, visitor, isStringLiteralOrJsxExpression) ); }, @@ -33814,20 +33749,20 @@ var visitEachChildTable = { [290 /* JsxSpreadAttribute */]: function visitEachChildOfJsxSpreadAttribute(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxSpreadAttribute( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, [291 /* JsxExpression */]: function visitEachChildOfJsxExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateJsxExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Clauses [292 /* CaseClause */]: function visitEachChildOfCaseClause(node, visitor, context, nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateCaseClause( node, - nodeVisitor(node.expression, visitor, isExpression), + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)), nodesVisitor(node.statements, visitor, isStatement) ); }, @@ -33847,35 +33782,35 @@ var visitEachChildTable = { return context.factory.updateCatchClause( node, nodeVisitor(node.variableDeclaration, visitor, isVariableDeclaration), - nodeVisitor(node.block, visitor, isBlock) + Debug.checkDefined(nodeVisitor(node.block, visitor, isBlock)) ); }, // Property assignments [299 /* PropertyAssignment */]: function visitEachChildOfPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePropertyAssignment( node, - nodeVisitor(node.name, visitor, isPropertyName), - nodeVisitor(node.initializer, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), + Debug.checkDefined(nodeVisitor(node.initializer, visitor, isExpression)) ); }, [300 /* ShorthandPropertyAssignment */]: function visitEachChildOfShorthandPropertyAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateShorthandPropertyAssignment( node, - nodeVisitor(node.name, visitor, isIdentifier), + Debug.checkDefined(nodeVisitor(node.name, visitor, isIdentifier)), nodeVisitor(node.objectAssignmentInitializer, visitor, isExpression) ); }, [301 /* SpreadAssignment */]: function visitEachChildOfSpreadAssignment(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateSpreadAssignment( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, // Enum [302 /* EnumMember */]: function visitEachChildOfEnumMember(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updateEnumMember( node, - nodeVisitor(node.name, visitor, isPropertyName), + Debug.checkDefined(nodeVisitor(node.name, visitor, isPropertyName)), nodeVisitor(node.initializer, visitor, isExpression) ); }, @@ -33887,13 +33822,13 @@ var visitEachChildTable = { ); }, // Transformation nodes - [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [356 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, - nodeVisitor(node.expression, visitor, isExpression) + Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [357 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -35275,7 +35210,7 @@ function sameFiles(a, b, caseSensitive) { return a === b || !caseSensitive && compareStringsCaseInsensitive(a, b) === 0 /* EqualTo */; } function getDetailWatchInfo(projectName, watchers) { - return `Project: ${projectName} watcher already invoked: ${watchers.isInvoked}`; + return `Project: ${projectName} watcher already invoked: ${watchers == null ? void 0 : watchers.isInvoked}`; } var TypingsInstaller = class { constructor(installTypingHost, globalCachePath, safeListPath, typesMapLocation2, throttleLimit, log2 = nullLog) { diff --git a/package.json b/package.json index 1c05fb6ec64..9e94c0639bc 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "typescript", "author": "Microsoft Corp.", "homepage": "https://www.typescriptlang.org/", - "version": "5.0.0", + "version": "5.0.0-beta", "license": "Apache-2.0", "description": "TypeScript is a language for application scale JavaScript development", "keywords": [ diff --git a/src/compiler/corePublic.ts b/src/compiler/corePublic.ts index 80df5e0515f..3ff67b980a4 100644 --- a/src/compiler/corePublic.ts +++ b/src/compiler/corePublic.ts @@ -4,7 +4,7 @@ export const versionMajorMinor = "5.0"; // The following is baselined as a literal template type without intervention /** The version of the TypeScript compiler release */ // eslint-disable-next-line @typescript-eslint/no-inferrable-types -export const version: string = `${versionMajorMinor}.0-dev`; +export const version: string = `${versionMajorMinor}.0-beta`; /** * Type of objects whose values are all of the same type. diff --git a/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.errors.txt b/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.errors.txt index 6fa0f1db4f1..2deab106f61 100644 --- a/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.errors.txt +++ b/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.errors.txt @@ -1,6 +1,8 @@ error TS2468: Cannot find global value 'Promise'. tests/cases/conformance/node/other.cts(2,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. +tests/cases/conformance/node/other.cts(3,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. tests/cases/conformance/node/other.cts(3,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. +tests/cases/conformance/node/other.cts(4,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. tests/cases/conformance/node/other.cts(4,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. tests/cases/conformance/node/other.cts(5,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. tests/cases/conformance/node/other.mts(2,18): error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher. @@ -20,6 +22,7 @@ tests/cases/conformance/node/other.ts(4,24): error TS2712: A dynamic import call tests/cases/conformance/node/other.ts(5,18): error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher. tests/cases/conformance/node/other.ts(5,24): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. tests/cases/conformance/node/other2.cts(2,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. +tests/cases/conformance/node/other2.cts(3,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. tests/cases/conformance/node/other2.cts(3,18): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. tests/cases/conformance/node/other2.mts(2,18): error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher. tests/cases/conformance/node/other2.mts(2,24): error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. @@ -109,26 +112,32 @@ tests/cases/conformance/node/other2.ts(3,24): error TS2712: A dynamic import cal !!! error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher. ~~~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. -==== tests/cases/conformance/node/other.cts (4 errors) ==== +==== tests/cases/conformance/node/other.cts (6 errors) ==== // cjs format file, no TLA export const a = import("package/cjs"); ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. export const b = import("package/mjs"); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. export const c = import("package"); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. export const f = import("inner"); ~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. -==== tests/cases/conformance/node/other2.cts (2 errors) ==== +==== tests/cases/conformance/node/other2.cts (3 errors) ==== // cjs format file, no TLA export const d = import("inner/cjs"); ~~~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. export const e = import("inner/mjs"); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ~~~~~~~~~~~~~~~~~~~ !!! error TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. ==== tests/cases/conformance/node/node_modules/inner/index.d.ts (0 errors) ==== diff --git a/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.js b/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.js index 6ea138c379f..902a661b5e8 100644 --- a/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.js +++ b/tests/baselines/reference/nodeModulesDeclarationEmitDynamicImportWithPackageExports.js @@ -153,19 +153,3 @@ export declare const d: { cjsNonmain: true; }; export declare const e: typeof import("inner/mjs"); -//// [other.d.cts] -export declare const a: Promise<{ - default: typeof import("./index.cjs"); -}>; -export declare const b: Promise; -export declare const c: Promise; -export declare const f: Promise<{ - default: typeof import("inner"); - cjsMain: true; -}>; -//// [other2.d.cts] -export declare const d: Promise<{ - default: typeof import("inner/cjs"); - cjsNonmain: true; -}>; -export declare const e: Promise; diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).errors.txt index a8a76a05152..1216d882007 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).errors.txt @@ -1,26 +1,44 @@ +/index.ts(1,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(2,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,50): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. +/index.ts(6,50): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(7,14): error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. /index.ts(7,49): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. +/index.ts(7,49): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(10,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(11,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. -==== /index.ts (3 errors) ==== +==== /index.ts (9 errors) ==== import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface LocalInterface extends RequireInterface, ImportInterface {} import {type RequireInterface as Req} from "pkg" assert { "resolution-mode": "require" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import {type ImportInterface as Imp} from "pkg" assert { "resolution-mode": "import" }; ~~~~~~~~~~~~~~~ !!! error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface Loc extends Req, Imp {} export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /node_modules/pkg/package.json (0 errors) ==== { diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).js index 1b8bc65976e..e24fd94dba7 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=node16).js @@ -30,16 +30,3 @@ export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" //// [index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - - -//// [index.d.ts] -import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} -import { type RequireInterface as Req } from "pkg" assert { "resolution-mode": "require" }; -import { type ImportInterface as Imp } from "pkg" assert { "resolution-mode": "import" }; -export interface Loc extends Req, Imp { -} -export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).errors.txt index 5aaee4a285e..097bebc6d34 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).errors.txt @@ -1,26 +1,44 @@ +/index.ts(1,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(2,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,50): error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. +/index.ts(6,50): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(7,14): error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. /index.ts(7,49): error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. +/index.ts(7,49): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(10,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(11,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. -==== /index.ts (3 errors) ==== +==== /index.ts (9 errors) ==== import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface LocalInterface extends RequireInterface, ImportInterface {} import {type RequireInterface as Req} from "pkg" assert { "resolution-mode": "require" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import {type ImportInterface as Imp} from "pkg" assert { "resolution-mode": "import" }; ~~~~~~~~~~~~~~~ !!! error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface Loc extends Req, Imp {} export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /node_modules/pkg/package.json (0 errors) ==== { diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).js index 1b8bc65976e..e24fd94dba7 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit1(module=nodenext).js @@ -30,16 +30,3 @@ export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" //// [index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - - -//// [index.d.ts] -import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} -import { type RequireInterface as Req } from "pkg" assert { "resolution-mode": "require" }; -import { type ImportInterface as Imp } from "pkg" assert { "resolution-mode": "import" }; -export interface Loc extends Req, Imp { -} -export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).errors.txt index 0403a6e026f..299c92f3b0d 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).errors.txt @@ -1,11 +1,21 @@ +/index.ts(1,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(2,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,14): error TS2305: Module '"pkg"' has no exported member 'RequireInterface'. /index.ts(6,50): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. +/index.ts(6,50): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(7,49): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. +/index.ts(7,49): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(10,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(11,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. -==== /index.ts (3 errors) ==== +==== /index.ts (9 errors) ==== import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface LocalInterface extends RequireInterface, ImportInterface {} @@ -14,13 +24,21 @@ !!! error TS2305: Module '"pkg"' has no exported member 'RequireInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import {type ImportInterface as Imp} from "pkg" assert { "resolution-mode": "import" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface Loc extends Req, Imp {} export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /node_modules/pkg/package.json (0 errors) ==== { diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).js index fad19d466a6..817fbde7e07 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=node16).js @@ -34,16 +34,3 @@ export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" //// [index.js] export {}; - - -//// [index.d.ts] -import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} -import { type RequireInterface as Req } from "pkg" assert { "resolution-mode": "require" }; -import { type ImportInterface as Imp } from "pkg" assert { "resolution-mode": "import" }; -export interface Loc extends Req, Imp { -} -export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).errors.txt index 47c2ad040c0..d0ae4f1ef1a 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).errors.txt @@ -1,11 +1,21 @@ +/index.ts(1,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(2,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,14): error TS2305: Module '"pkg"' has no exported member 'RequireInterface'. /index.ts(6,50): error TS1454: `resolution-mode` can only be set for type-only imports. +/index.ts(6,50): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(7,49): error TS1454: `resolution-mode` can only be set for type-only imports. +/index.ts(7,49): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(10,45): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(11,44): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. -==== /index.ts (3 errors) ==== +==== /index.ts (9 errors) ==== import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface LocalInterface extends RequireInterface, ImportInterface {} @@ -14,13 +24,21 @@ !!! error TS2305: Module '"pkg"' has no exported member 'RequireInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS1454: `resolution-mode` can only be set for type-only imports. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. import {type ImportInterface as Imp} from "pkg" assert { "resolution-mode": "import" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS1454: `resolution-mode` can only be set for type-only imports. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export interface Loc extends Req, Imp {} export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /node_modules/pkg/package.json (0 errors) ==== { diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).js index fad19d466a6..817fbde7e07 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmit2(module=nodenext).js @@ -34,16 +34,3 @@ export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" //// [index.js] export {}; - - -//// [index.d.ts] -import type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} -import { type RequireInterface as Req } from "pkg" assert { "resolution-mode": "require" }; -import { type ImportInterface as Imp } from "pkg" assert { "resolution-mode": "import" }; -export interface Loc extends Req, Imp { -} -export type { RequireInterface } from "pkg" assert { "resolution-mode": "require" }; -export type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).errors.txt index bc3eb30565c..4934625b136 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).errors.txt @@ -2,10 +2,11 @@ /index.ts(2,73): error TS1453: `resolution-mode` should be either `require` or `import`. /index.ts(4,10): error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. /index.ts(4,39): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. +/index.ts(4,39): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,76): error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. -==== /index.ts (5 errors) ==== +==== /index.ts (6 errors) ==== // incorrect mode import type { RequireInterface } from "pkg" assert { "resolution-mode": "foobar" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -18,6 +19,8 @@ !!! error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. // not exclusively type-only import {type RequireInterface as Req, RequireInterface as Req2} from "pkg" assert { "resolution-mode": "require" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).js index 3b2af2656d0..7daaa0cda7e 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=node16).js @@ -30,10 +30,3 @@ export interface LocalInterface extends RequireInterface, ImportInterface {} //// [index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - - -//// [index.d.ts] -import type { RequireInterface } from "pkg"; -import { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).errors.txt index 49a86cf5980..4d564793b0c 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).errors.txt @@ -2,10 +2,11 @@ /index.ts(2,73): error TS1453: `resolution-mode` should be either `require` or `import`. /index.ts(4,10): error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. /index.ts(4,39): error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. +/index.ts(4,39): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(6,76): error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. -==== /index.ts (5 errors) ==== +==== /index.ts (6 errors) ==== // incorrect mode import type { RequireInterface } from "pkg" assert { "resolution-mode": "foobar" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -18,6 +19,8 @@ !!! error TS2305: Module '"pkg"' has no exported member 'ImportInterface'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2836: Import assertions are not allowed on statements that transpile to commonjs 'require' calls. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. // not exclusively type-only import {type RequireInterface as Req, RequireInterface as Req2} from "pkg" assert { "resolution-mode": "require" }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).js b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).js index 3b2af2656d0..7daaa0cda7e 100644 --- a/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportModeDeclarationEmitErrors1(module=nodenext).js @@ -30,10 +30,3 @@ export interface LocalInterface extends RequireInterface, ImportInterface {} //// [index.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - - -//// [index.d.ts] -import type { RequireInterface } from "pkg"; -import { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; -export interface LocalInterface extends RequireInterface, ImportInterface { -} diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).errors.txt b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).errors.txt new file mode 100644 index 00000000000..224e7b20e2d --- /dev/null +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).errors.txt @@ -0,0 +1,38 @@ +/index.ts(2,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(3,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(5,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + + +==== /index.ts (5 errors) ==== + export type LocalInterface = + & import("pkg", { assert: {"resolution-mode": "require"} }).RequireInterface + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + & import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + + export const a = (null as any as import("pkg", { assert: {"resolution-mode": "require"} }).RequireInterface); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + export const b = (null as any as import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +==== /node_modules/pkg/package.json (0 errors) ==== + { + "name": "pkg", + "version": "0.0.1", + "exports": { + "import": "./import.js", + "require": "./require.js" + } + } +==== /node_modules/pkg/import.d.ts (0 errors) ==== + export interface ImportInterface {} +==== /node_modules/pkg/require.d.ts (0 errors) ==== + export interface RequireInterface {} \ No newline at end of file diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js index 1b444aae0df..ac1cb24c8b3 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=node16).js @@ -28,9 +28,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.b = exports.a = void 0; exports.a = null; exports.b = null; - - -//// [index.d.ts] -export type LocalInterface = import("pkg", { assert: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).errors.txt new file mode 100644 index 00000000000..224e7b20e2d --- /dev/null +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).errors.txt @@ -0,0 +1,38 @@ +/index.ts(2,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(3,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(5,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + + +==== /index.ts (5 errors) ==== + export type LocalInterface = + & import("pkg", { assert: {"resolution-mode": "require"} }).RequireInterface + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + & import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + + export const a = (null as any as import("pkg", { assert: {"resolution-mode": "require"} }).RequireInterface); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + export const b = (null as any as import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +==== /node_modules/pkg/package.json (0 errors) ==== + { + "name": "pkg", + "version": "0.0.1", + "exports": { + "import": "./import.js", + "require": "./require.js" + } + } +==== /node_modules/pkg/import.d.ts (0 errors) ==== + export interface ImportInterface {} +==== /node_modules/pkg/require.d.ts (0 errors) ==== + export interface RequireInterface {} \ No newline at end of file diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js index 1b444aae0df..ac1cb24c8b3 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).js @@ -28,9 +28,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.b = exports.a = void 0; exports.a = null; exports.b = null; - - -//// [index.d.ts] -export type LocalInterface = import("pkg", { assert: { "resolution-mode": "require" } }).RequireInterface & import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).errors.txt b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).errors.txt index 9cca0bcdb64..cbc83003bfd 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).errors.txt @@ -1,6 +1,9 @@ error TS2468: Cannot find global value 'Promise'. /index.ts(2,51): error TS1453: `resolution-mode` should be either `require` or `import`. +/index.ts(3,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(5,78): error TS1453: `resolution-mode` should be either `require` or `import`. +/index.ts(6,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /other.ts(3,7): error TS1340: Module 'pkg' does not refer to a type, but is used as a type here. Did you mean 'typeof import('pkg')'? /other.ts(3,22): error TS1005: 'assert' expected. /other.ts(3,39): error TS1005: ';' expected. @@ -94,17 +97,23 @@ error TS2468: Cannot find global value 'Promise'. export interface ImportInterface {} ==== /node_modules/pkg/require.d.ts (0 errors) ==== export interface RequireInterface {} -==== /index.ts (2 errors) ==== +==== /index.ts (5 errors) ==== export type LocalInterface = & import("pkg", { assert: {"resolution-mode": "foobar"} }).RequireInterface ~~~~~~~~ !!! error TS1453: `resolution-mode` should be either `require` or `import`. & import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export const a = (null as any as import("pkg", { assert: {"resolution-mode": "foobar"} }).RequireInterface); ~~~~~~~~ !!! error TS1453: `resolution-mode` should be either `require` or `import`. export const b = (null as any as import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /other.ts (28 errors) ==== // missing assert: export type LocalInterface = diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js index 6b34fb98748..258fffcef2b 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).js @@ -119,10 +119,6 @@ exports.a = null; exports.b = null; -//// [index.d.ts] -export type LocalInterface = import("pkg", { assert: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { assert: {} }); export declare const a: any; diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).errors.txt index 9cca0bcdb64..cbc83003bfd 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).errors.txt @@ -1,6 +1,9 @@ error TS2468: Cannot find global value 'Promise'. /index.ts(2,51): error TS1453: `resolution-mode` should be either `require` or `import`. +/index.ts(3,31): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /index.ts(5,78): error TS1453: `resolution-mode` should be either `require` or `import`. +/index.ts(6,14): error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. +/index.ts(6,58): error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. /other.ts(3,7): error TS1340: Module 'pkg' does not refer to a type, but is used as a type here. Did you mean 'typeof import('pkg')'? /other.ts(3,22): error TS1005: 'assert' expected. /other.ts(3,39): error TS1005: ';' expected. @@ -94,17 +97,23 @@ error TS2468: Cannot find global value 'Promise'. export interface ImportInterface {} ==== /node_modules/pkg/require.d.ts (0 errors) ==== export interface RequireInterface {} -==== /index.ts (2 errors) ==== +==== /index.ts (5 errors) ==== export type LocalInterface = & import("pkg", { assert: {"resolution-mode": "foobar"} }).RequireInterface ~~~~~~~~ !!! error TS1453: `resolution-mode` should be either `require` or `import`. & import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. export const a = (null as any as import("pkg", { assert: {"resolution-mode": "foobar"} }).RequireInterface); ~~~~~~~~ !!! error TS1453: `resolution-mode` should be either `require` or `import`. export const b = (null as any as import("pkg", { assert: {"resolution-mode": "import"} }).ImportInterface); + ~ +!!! error TS2841: The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. ==== /other.ts (28 errors) ==== // missing assert: export type LocalInterface = diff --git a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js index 6b34fb98748..258fffcef2b 100644 --- a/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).js @@ -119,10 +119,6 @@ exports.a = null; exports.b = null; -//// [index.d.ts] -export type LocalInterface = import("pkg", { assert: { "resolution-mode": "foobar" } }).RequireInterface & import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; -export declare const a: import("pkg").RequireInterface; -export declare const b: import("pkg", { assert: { "resolution-mode": "import" } }).ImportInterface; //// [other.d.ts] export type LocalInterface = import("pkg", { assert: {} }); export declare const a: any; diff --git a/tests/baselines/reference/tscWatch/moduleResolution/module-resolutions-from-file-are-partially-used.js b/tests/baselines/reference/tscWatch/moduleResolution/module-resolutions-from-file-are-partially-used.js index 99ac0dfe2e5..7f0b6e7dfbe 100644 --- a/tests/baselines/reference/tscWatch/moduleResolution/module-resolutions-from-file-are-partially-used.js +++ b/tests/baselines/reference/tscWatch/moduleResolution/module-resolutions-from-file-are-partially-used.js @@ -118,12 +118,22 @@ File '/user/username/projects/myproject/node_modules/pkg/package.json' exists ac File '/a/lib/package.json' does not exist. File '/a/package.json' does not exist. File '/package.json' does not exist according to earlier cached lookups. +index.ts:1:44 - error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +1 import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + index.ts:2:39 - error TS2307: Cannot find module 'pkg1' or its corresponding type declarations. 2 import type { RequireInterface } from "pkg1" assert { "resolution-mode": "require" };    ~~~~~~ -[12:00:44 AM] Found 1 error. Watching for file changes. +index.ts:2:46 - error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +2 import type { RequireInterface } from "pkg1" assert { "resolution-mode": "require" }; +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +[12:00:44 AM] Found 3 errors. Watching for file changes. @@ -256,12 +266,27 @@ Reusing resolution of module 'pkg1' from '/user/username/projects/myproject/inde File '/a/lib/package.json' does not exist according to earlier cached lookups. File '/a/package.json' does not exist according to earlier cached lookups. File '/package.json' does not exist according to earlier cached lookups. +a.ts:2:44 - error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +2 import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" } +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +index.ts:1:44 - error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +1 import type { ImportInterface } from "pkg" assert { "resolution-mode": "import" }; +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + index.ts:2:39 - error TS2307: Cannot find module 'pkg1' or its corresponding type declarations. 2 import type { RequireInterface } from "pkg1" assert { "resolution-mode": "require" };    ~~~~~~ -[12:00:54 AM] Found 1 error. Watching for file changes. +index.ts:2:46 - error TS4125: 'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'. + +2 import type { RequireInterface } from "pkg1" assert { "resolution-mode": "require" }; +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +[12:00:54 AM] Found 4 errors. Watching for file changes.