Product
Introducing Ruby Support in Socket
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
@swc/types
Advanced tools
The @swc/types package provides TypeScript type definitions for the AST (Abstract Syntax Tree) nodes used by SWC, a super-fast compiler written in Rust. It is primarily used by developers working on tooling for JavaScript and TypeScript, such as linters, formatters, and compilers. By offering a structured way to represent code, it enables programmatic analysis, manipulation, and generation of JavaScript and TypeScript code.
Defining AST Nodes
This code sample demonstrates how to define a simple AST node for a variable declaration in JavaScript using the types provided by @swc/types. It represents a variable `x` being declared and initialized with the value `10`.
{
"type": "VariableDeclaration",
"kind": "var",
"declarations": [
{
"type": "VariableDeclarator",
"id": {
"type": "Identifier",
"name": "x"
},
"init": {
"type": "Literal",
"value": 10,
"raw": "10"
}
}
]
}
Manipulating AST Nodes
This function takes an AST node and, if it is a numeric literal, doubles its value. It showcases how @swc/types can be used to manipulate AST nodes programmatically.
function updateLiteralValue(node) {
if (node.type === 'Literal' && typeof node.value === 'number') {
node.value *= 2;
}
return node;
}
Similar to @swc/types, @babel/types provides definitions and constructors for AST nodes for use with Babel. While both packages serve a similar purpose in providing tools for AST manipulation, @babel/types is tailored for the Babel ecosystem, which might make it more suitable for projects already using Babel for transpilation.
The TypeScript package itself includes utilities for working with TypeScript ASTs. While @swc/types is focused on SWC's AST format, the TypeScript package is essential for projects that need to work directly with TypeScript codebases, offering more comprehensive support for TypeScript-specific features.
Typings for @swc/core
APIs. This is a separate package because SWC is used by various tools but not all of them want to depend on @swc/core
.
This package is very cheap, so feel free to depend on this.
FAQs
Typings for the swc project.
The npm package @swc/types receives a total of 6,206,709 weekly downloads. As such, @swc/types popularity was classified as popular.
We found that @swc/types demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.