Struct SourceType

Source
#[repr(C)]
pub struct SourceType { /* private fields */ }
Expand description

Source Type for JavaScript vs TypeScript / Script vs Module / JSX

Implementations§

Source§

impl SourceType

Source

pub const fn cjs() -> Self

Creates a SourceType representing a regular JavaScript file.

This file could be a vanilla script (no module system of any kind) or a CommonJS file.

The resulting source type is not a module, nor does it support JSX. Use SourceType::jsx for JSX sources.

§Example

let js = SourceType::cjs();
assert!(js.is_javascript());
assert!(js.is_script()); // not a module
assert!(!js.is_jsx());
Source

pub const fn mjs() -> Self

Creates a SourceType representing a JavaScript file using ES6 modules. This is akin to a file with an .mjs extension.

§Example

let mjs = SourceType::mjs();
Source

pub const fn unambiguous() -> Self

A SourceType that will be treated as a module if it contains ESM syntax.

After a file is parsed with an unambiguous source type, it will have a final ModuleKind of either Module or Script.

Source

pub const fn jsx() -> Self

Creates a SourceType representing a JavaScript` file with JSX.

§Example

let jsx = SourceType::jsx();
assert!(jsx.is_javascript());
assert!(jsx.is_jsx());
Source

pub const fn ts() -> Self

Creates a SourceType representing a TypeScript file.

Unlike SourceType::cjs, this method creates modules. Use SourceType::tsx for TypeScript files with JSX support.

§Example

let ts = SourceType::ts();
assert!(ts.is_typescript());
assert!(!ts.is_typescript_definition());
assert!(ts.is_module());
assert!(!ts.is_jsx());
Source

pub const fn tsx() -> Self

Creates a SourceType representing a TypeScript file with JSX.

§Example

let tsx = SourceType::tsx();
assert!(tsx.is_typescript());
assert!(!tsx.is_typescript_definition());
assert!(tsx.is_module());
assert!(tsx.is_jsx());
Source

pub const fn d_ts() -> Self

Creates a SourceType representing a [TypeScript definition] file.

§Example

let dts = SourceType::d_ts();
assert!(dts.is_typescript());
assert!(dts.is_typescript_definition());
assert!(dts.is_module());
assert!(!dts.is_jsx());
Source

pub fn is_script(self) -> bool

Mark this source type as a script.

Source

pub fn is_module(self) -> bool

Mark this source type as a module.

Source

pub fn is_unambiguous(self) -> bool

true if this SourceType is unambiguous.

Source

pub fn module_kind(self) -> ModuleKind

What module system is this source type using?

Source

pub fn is_javascript(self) -> bool

Returns true if this is a JavaScript file with or without syntax extensions (like JSX).

Source

pub fn is_typescript(self) -> bool

Returns true if this is a TypeScript file or TypeScript definition file.

I.e., true for .ts, .cts, .mts, .tsx, and .d.ts files.

Source

pub fn is_typescript_definition(self) -> bool

Returns true if this is a TypeScript definition file (e.g. .d.ts).

Source

pub fn is_jsx(self) -> bool

Returns true if this source type is using JSX.

Note that TSX is considered JSX in this context.

Source

pub fn is_strict(self) -> bool

Does this source type implicitly use strict mode semantics?

Does not consider "use strict"; directives.

Source

pub const fn with_script(self, yes: bool) -> Self

Mark this SourceType as a script if yes is true. No change will occur if yes is false.

Source

pub const fn with_module(self, yes: bool) -> Self

Mark this SourceType as a module if yes is true. No change will occur if yes is false.

Source

pub const fn with_unambiguous(self, yes: bool) -> Self

Mark this SourceType as unambiguous if yes is true. No change will occur if yes is false.

Source

pub const fn with_javascript(self, yes: bool) -> Self

Mark this SourceType as using JavaScript if yes is true. No change will occur if yes is false.

Source

pub const fn with_typescript(self, yes: bool) -> Self

Mark this SourceType as using TypeScript if yes is true. No change will occur if yes is false.

Source

pub const fn with_typescript_definition(self, yes: bool) -> Self

Mark this SourceType as a [TypeScript definition] file if yes is true.

Source

pub const fn with_jsx(self, yes: bool) -> Self

Mark this SourceType as using JSX if yes is true. No change will occur if yes is false.

When using TypeScript, this source type now represents a TSX file.

Source

pub const fn with_standard(self, yes: bool) -> Self

Disable language extensions (e.g. JSX) if yes is true. No change will occur if yes is false.

Source

pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Self, UnknownExtension>

Converts a file Path to SourceType.

§Examples

// supports .ts, .mts, .cts, .tsx, .d.ts, etc.
let ts = SourceType::from_path("foo.ts").unwrap();
assert!(ts.is_typescript());
assert!(!ts.is_typescript_definition());

// supports .js, .mjs, .cjs, .jsx
let jsx = SourceType::from_path("foo.jsx").unwrap();
assert!(jsx.is_javascript());
assert!(jsx.is_jsx());
§Behavior
§JSX

All JavaScript-like files are treated as JSX, since some tools (like babel) also do not make a distinction between .js and .jsx. However, for TypeScript files, only .tsx files are treated as JSX.

Note that this behavior deviates from SourceType::cjs, which produces scripts.

§Modules vs. Scripts.

Oxc has partial support for Node’s CommonJS detection strategy. Any file with a .c[tj]s extension is treated as a script. All other files are treated as modules.

§Errors

Returns UnknownExtension if:

  • there is no file name
  • the file extension is not one of “js”, “mjs”, “cjs”, “jsx”, “ts”, “mts”, “cts”, “tsx”. See VALID_EXTENSIONS for the list of valid extensions.

Trait Implementations§

Source§

impl Clone for SourceType

Source§

fn clone(&self) -> SourceType

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> CloneIn<'a> for SourceType

Source§

type Cloned = SourceType

The type of the cloned object. Read more
Source§

fn clone_in(&self, _: &'a Allocator) -> Self

Clone self into the given allocator. allocator may be the same one that self is already in.
Source§

fn clone_in_with_semantic_ids( &self, allocator: &'new_alloc Allocator, ) -> Self::Cloned

Almost identical as clone_in, but for some special type, it will also clone the semantic ids. Please use this method only if you make sure semantic info is synced with the ast node.
Source§

impl ContentEq for SourceType

Source§

fn content_eq(&self, other: &Self) -> bool

This method tests for contents of self and other to be equal.
Source§

fn content_ne(&self, other: &Self) -> bool

This method tests for contents of self and other not to be equal. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Debug for SourceType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SourceType

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Hash for SourceType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SourceType

Source§

fn eq(&self, other: &SourceType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for SourceType

Source§

impl Eq for SourceType

Source§

impl StructuralPartialEq for SourceType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.