[package] authors = ["강동윤 ", "OJ Kwon "] description = "TBD" documentation = "https://rustdoc.swc.rs/swc_core/" edition = "2021" license = "Apache-2.0" name = "swc_core" repository = "https://github.com/swc-project/swc.git" version = "0.7.7" [package.metadata.docs.rs] features = [ "common_perf", "allocator_node", "base", "base_node", "common", "visit", "quote", "utils", "transforms", "bundler", "loader", "ast", "trace_macro", "plugin_transform", ] rustdoc-args = ["--cfg", "docsrs"] [lib] doctest = false [features] ### Public features ### Users should opt in necessary features explicitly ## Flags to opt into certain optimizations. In most cases this won't expose new interfaces, ## but changes internal logics to perform differently. These flag should be turned on in combination with ## actual features. Refer build.rs for more details. # swc_common/perf common_perf = ["swc_common/perf"] # configures specific memory allocator. # node.js binding should depend on this. allocator_node = ["swc_node_base"] ## General # Enable swc reexports. To avoid confusion between swc_core namespace, # it is named as 'base' instead. base = ["__base"] base_concurrent = ["__base", "swc/concurrent"] # Enables n-api related features. base_node = [ "__base", "swc/node", # Assume if anyone enables n-api related codes, they may would like to use # some utility functions as well. "swc_nodejs_common", ] # Enable swc_common reexports. # # In most cases, top-level features (i.e plugin, or plugin_host) will include this, so no need to # explicitly opt in. However, if top-level feature should be controlled by feature as opt-in # and some other dependent feature need this, can be manually selected. # refer binding_core_wasm for example: it has plugin_transform_host feature, but # it has to be a feature to be enabled by compile time flag to avoid cargo's feature collision, # while it also need to access 'common' exports by default for cargo check / or clippy. common = ["__common"] # TODO: internally concurrent / perf refers to the same feature (`parking_lot`) # - can we consolidate them? common_concurrent = ["__common", "swc_common/concurrent"] # Enable swc_ecma_visit visit = ["swc_ecma_visit"] # Enable `quote!` macro support. quote = [ # Dependent features "__common", "ast", # Enable optional package "swc_ecma_quote_macros", ] # Enable swc_ecma_utils utils = ["__utils", "__common"] # Enable swc_ecma_transforms base features transforms = ["__transforms", "__testing_transform"] # Enable swc_bundler bundler = ["__bundler"] bundler_node_v1 = ["__bundler", "swc_node_bundler/swc_v1"] bundler_node_v2 = ["__bundler", "swc_node_bundler/swc_v2"] # Enable swc_ecma_loader loader = ["swc_ecma_loader"] # Enable swc_ecma_transforms_testing testing_transform = ["__testing_transform"] # Enable swc_ecma_ast / swc_atoms support. # TODO: currently both are enabled at once, we may want to separate them. ast = ["swc_ecma_ast", "swc_atoms"] # Enable trace macro support. # TODO: Once all top-level package (node, wasm, cli..) imports swc_core, # we may encapsulate `tracing` package into swc_core. trace_macro = ["swc_trace_macro"] binding_macro_native = ["__binding_macros", "binding_macros/binding_native"] binding_macro_wasm = ["__binding_macros", "binding_macros/binding_wasm"] ## Plugins # Top level features should be enabled to write plugins for the custom transform. plugin_transform = [ "__plugin_transform", "__plugin_transform_schema_v1", "__testing_transform", ] # Host features to enable plugin `runner` runtime. # native feature is for the host environment does not have, or cannot access # to the wasm runtime (i.e cli, or @swc/core node bindings). # js feature is for the environment can access wasm runtime (i.e @swc/wasm) plugin_transform_host_js = [ # Dependent features "__plugin_transform_host", "__plugin_transform_host_schema_v1", "__plugin_transform_env_js", ] plugin_transform_host_native = [ # Dependent features "__plugin_transform_host", "__plugin_transform_host_schema_v1", "__plugin_transform_env_native", ] ### Internal features that public features are relying on. ### This is not supposed to be used directly, and does not gaurantee ### stability across each versions. # Specify version of AST schema will be used. # This'll be automatically selected via transform_plugin features, # SWC upstream decides which version to be used for specific version of # swc_core. __plugin_transform_host_schema_v1 = [ # Dependent features "__plugin_transform_schema_v1", # Enable optional features "swc/plugin_transform_schema_v1", "swc_plugin_runner/plugin_transform_schema_v1", ] __plugin_transform_schema_v1 = ["swc_common/plugin_transform_schema_v1"] # Do not use: testing purpose only __plugin_transform_host_schema_vtest = [ # Dependent features "__plugin_transform_schema_vtest", # Enable optional features "swc/plugin_transform_schema_vtest", "swc_plugin_runner/plugin_transform_schema_vtest", ] __plugin_transform_schema_vtest = ["swc_common/plugin_transform_schema_vtest"] ## Plugins __plugin_transform = [ # Dependent features "visit", "__common", "ast", # Enable optional packages "swc_ecma_ast/rkyv-impl", "swc_atoms/rkyv-impl", "swc_common/plugin-mode", "swc_plugin_proxy/plugin-mode", "swc_plugin_macro", "swc_plugin", "once_cell", ] # Internal flags for any transform plugin feature # Internal flags for any transform plugin host feature __plugin_transform_host = [ # Dependent features "__common", # Enable optional packages "swc_ecma_ast/rkyv-impl", "swc_atoms/rkyv-impl", "swc_common/plugin-rt", # TODO: we may simply flag around downlevel plugin feature "swc_plugin_proxy/plugin-rt", "swc/plugin", ] # Internal flags to control plugin environment __plugin_transform_env_native = [ "swc_plugin_runner/filesystem_cache", "wasmer/default", "wasmer-wasi/default", ] __plugin_transform_env_js = [ "swc_plugin_runner/memory_cache", "wasmer/js-default", "wasmer-wasi/js-default", ] # Do not use: testing purpose only # Force enable different version of AST schema __plugin_transform_schema_test = [ "__plugin_transform", "__plugin_transform_schema_vtest", ] ## Common __base = ["swc"] __binding_macros = ["common", "__base", "__transforms", "ast", "binding_macros"] __bundler = ["swc_bundler"] __common = ["swc_common"] __testing_transform = ["swc_ecma_transforms_testing"] __transforms = ["swc_ecma_transforms"] __utils = ["swc_ecma_utils"] [dependencies] # 3rd party dependencies once_cell = { optional = true, version = "1.13.0" } wasmer = { optional = true, version = "2.3.0", default-features = false } wasmer-wasi = { optional = true, version = "2.3.0", default-features = false } # swc_* dependencies binding_macros = { optional = true, version = "0.2.3", path = "../binding_macros" } swc = { optional = true, version = "0.214.6", path = "../swc" } swc_atoms = { optional = true, version = "0.4.5", path = "../swc_atoms" } swc_bundler = { optional = true, version = "0.177.3", path = "../swc_bundler" } swc_common = { optional = true, version = "0.27.6", path = "../swc_common" } swc_ecma_ast = { optional = true, version = "0.90.7", path = "../swc_ecma_ast" } swc_ecma_loader = { optional = true, version = "0.39.4", path = "../swc_ecma_loader" } swc_ecma_parser = { optional = true, version = "0.117.4", path = "../swc_ecma_parser" } swc_ecma_quote_macros = { optional = true, version = "0.28.4", path = "../swc_ecma_quote_macros" } swc_ecma_transforms = { optional = true, version = "0.183.3", path = "../swc_ecma_transforms" } swc_ecma_transforms_testing = { optional = true, version = "0.105.4", path = "../swc_ecma_transforms_testing" } swc_ecma_utils = { optional = true, version = "0.99.4", path = "../swc_ecma_utils" } swc_ecma_visit = { optional = true, version = "0.76.5", path = "../swc_ecma_visit" } swc_node_base = { optional = true, version = "0.5.5", path = "../swc_node_base" } swc_node_bundler = { optional = true, version = "0.0.1", path = "../swc_node_bundler" } swc_nodejs_common = { optional = true, version = "0.0.1", path = "../swc_nodejs_common" } swc_plugin = { optional = true, version = "0.89.0", path = "../swc_plugin" } swc_plugin_macro = { optional = true, version = "0.9.3", path = "../swc_plugin_macro" } swc_plugin_proxy = { optional = true, version = "0.18.5", path = "../swc_plugin_proxy" } swc_trace_macro = { optional = true, version = "0.1.2", path = "../swc_trace_macro" } # TODO: eventually swc_plugin_runner needs to remove default features swc_plugin_runner = { optional = true, version = "0.71.7", path = "../swc_plugin_runner", default-features = false } [dev-dependencies] testing = { version = "0.29.4", path = "../testing" }