-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
feature_flags.zig
174 lines (123 loc) · 5.34 KB
/
feature_flags.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
const env = @import("env.zig");
pub const strong_etags_for_built_files = true;
pub const keep_alive = false;
// Debug helpers
pub const print_ast = false;
pub const disable_printing_null = false;
/// Store and reuse file descriptors during module resolution
/// This was a ~5% performance improvement
pub const store_file_descriptors = !env.isBrowser;
pub const css_in_js_import_behavior = CSSInJSImportBehavior.facade;
pub const only_output_esm = true;
pub const jsx_runtime_is_cjs = true;
pub const bundle_node_modules = true;
pub const tracing = true;
pub const minify_javascript_string_length = false;
pub const verbose_watcher = false;
pub const css_supports_fence = true;
pub const enable_entry_cache = true;
pub const enable_bytecode_caching = false;
pub const dev_only = true;
pub const verbose_fs = false;
pub const watch_directories = true;
pub const tailwind_css_at_keyword = true;
pub const bundle_dynamic_import = true;
// This feature flag exists so when you have defines inside package.json, you can use single quotes in nested strings.
pub const allow_json_single_quotes = true;
pub const react_specific_warnings = true;
pub const log_allocations = false;
pub const CSSInJSImportBehavior = enum {
// When you import a .css file and you reference the import in JavaScript
// Just return whatever the property key they referenced was
facade,
facade_onimportcss,
};
// having issues compiling WebKit with this enabled
pub const remote_inspector = false;
pub const auto_import_buffer = false;
pub const is_macro_enabled = !env.isWasm and !env.isWasi;
// pretend everything is always the macro environment
// useful for debugging the macro's JSX transform
pub const force_macro = false;
pub const include_filename_in_jsx = false;
pub const verbose_analytics = false;
pub const disable_compression_in_http_client = false;
pub const enable_keepalive = true;
pub const atomic_file_watcher = env.isLinux;
pub const node_streams = false;
pub const simd = true;
// This change didn't seem to make a meaningful difference in microbenchmarks
pub const latin1_is_now_ascii = false;
pub const http_buffer_pooling = true;
pub const disable_lolhtml = false;
/// There is, what I think is, a bug in getaddrinfo()
/// on macOS that specifically impacts localhost and not
/// other ipv4 hosts. This is a workaround for that.
/// "localhost" fails to connect.
pub const hardcode_localhost_to_127_0_0_1 = false;
/// React doesn't do anything with jsxs
/// If the "jsxs" import is development, "jsxs" isn't supported
/// But it's very easy to end up importing it accidentally, causing an error at runtime
/// so we just disable it
pub const support_jsxs_in_jsx_transform = false;
pub const use_simdutf = @import("root").bun.Environment.isNative and !@import("root").bun.JSC.is_bindgen;
pub const inline_properties_in_transpiler = true;
pub const same_target_becomes_destructuring = true;
pub const react_server_components = true;
pub const help_catch_memory_issues = @import("root").bun.Environment.allow_assert;
/// This performs similar transforms as https://github.com/rollup/plugins/tree/master/packages/commonjs
///
/// Though, not exactly the same.
///
/// There are two scenarios where this kicks in:
///
/// 1) You import a CommonJS module using ESM.
///
/// Semantically, CommonJS expects us to wrap everything in a closure. That
/// bloats the code. We want to make the generated code as small as we can.
///
/// To avoid that, we attempt to unwrap the CommonJS module into ESM.
///
/// But, we can't always do that. When you have cyclical require() or directly
/// mutate exported bindings, we can't unwrap it.
///
/// However, in the simple case, where you do something like
///
/// exports.foo = 123;
/// exports.bar = 456;
///
/// We can unwrap it into
///
/// export const foo = 123;
/// export const bar = 456;
///
/// 2) You import a CommonJS module using CommonJS.
///
/// This is a bit more complicated. We want to avoid the closure wrapper, but
/// it's really difficult to track down all the places where you mutate the
/// exports object. `require.cache` makes it even more complicated.
/// So, we just wrap the entire module in a closure.
///
/// But what if we previously unwrapped it?
///
/// In that case, we wrap it again in the printer.
pub const unwrap_commonjs_to_esm = true;
pub const boundary_based_chunking = true;
/// https://sentry.engineering/blog/the-case-for-debug-ids
/// https://github.com/mitsuhiko/source-map-rfc/blob/proposals/debug-id/proposals/debug-id.md
/// https://github.com/source-map/source-map-rfc/pull/20
pub const source_map_debug_id = true;
pub const alignment_tweak = false;
pub const export_star_redirect = false;
pub const streaming_file_uploads_for_http_client = true;
// TODO: fix concurrent transpiler on Windows
pub const concurrent_transpiler = !env.isWindows;
// https://github.com/oven-sh/bun/issues/5426#issuecomment-1813865316
pub const disable_auto_js_to_ts_in_node_modules = true;
pub const runtime_transpiler_cache = true;
pub const windows_bunx_fast_path = false; // Disabled to simplify fixing the bunx issue
pub const breaking_changes_1_1_0 = false;
// This causes strange bugs where writing via console.log (sync) has a different
// order than via Bun.file.writer() so we turn it off until there's a unified,
// buffered writer abstraction shared throughout Bun
pub const nonblocking_stdout_and_stderr_on_posix = false;