bun-types 1.3.2-canary.20251104T140728 → 1.3.2-canary.20251106T140813

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
@@ -1,276 +0,0 @@
1
- Bun exposes its internal transpiler via the `Bun.Transpiler` class. To create an instance of Bun's transpiler:
2
-
3
- ```ts
4
- const transpiler = new Bun.Transpiler({
5
- loader: "tsx", // "js | "jsx" | "ts" | "tsx"
6
- });
7
- ```
8
-
9
- ## `.transformSync()`
10
-
11
- Transpile code synchronously with the `.transformSync()` method. Modules are not resolved and the code is not executed. The result is a string of vanilla JavaScript code.
12
-
13
- <!-- It is synchronous and runs in the same thread as other JavaScript code. -->
14
-
15
- {% codetabs %}
16
-
17
- ```js#Example
18
- const transpiler = new Bun.Transpiler({
19
- loader: 'tsx',
20
- });
21
-
22
- const code = `
23
- import * as whatever from "./whatever.ts"
24
- export function Home(props: {title: string}){
25
- return <p>{props.title}</p>;
26
- }`;
27
-
28
- const result = transpiler.transformSync(code);
29
- ```
30
-
31
- ```js#Result
32
- import { __require as require } from "bun:wrap";
33
- import * as JSX from "react/jsx-dev-runtime";
34
- var jsx = require(JSX).jsxDEV;
35
-
36
- export default jsx(
37
- "div",
38
- {
39
- children: "hi!",
40
- },
41
- undefined,
42
- false,
43
- undefined,
44
- this,
45
- );
46
- ```
47
-
48
- {% /codetabs %}
49
-
50
- To override the default loader specified in the `new Bun.Transpiler()` constructor, pass a second argument to `.transformSync()`.
51
-
52
- ```ts
53
- transpiler.transformSync("<div>hi!</div>", "tsx");
54
- ```
55
-
56
- {% details summary="Nitty gritty" %}
57
- When `.transformSync` is called, the transpiler is run in the same thread as the currently executed code.
58
-
59
- If a macro is used, it will be run in the same thread as the transpiler, but in a separate event loop from the rest of your application. Currently, globals between macros and regular code are shared, which means it is possible (but not recommended) to share states between macros and regular code. Attempting to use AST nodes outside of a macro is undefined behavior.
60
- {% /details %}
61
-
62
- ## `.transform()`
63
-
64
- The `transform()` method is an async version of `.transformSync()` that returns a `Promise<string>`.
65
-
66
- ```js
67
- const transpiler = new Bun.Transpiler({ loader: "jsx" });
68
- const result = await transpiler.transform("<div>hi!</div>");
69
- console.log(result);
70
- ```
71
-
72
- Unless you're transpiling _many_ large files, you should probably use `Bun.Transpiler.transformSync`. The cost of the threadpool will often take longer than actually transpiling code.
73
-
74
- ```ts
75
- await transpiler.transform("<div>hi!</div>", "tsx");
76
- ```
77
-
78
- {% details summary="Nitty gritty" %}
79
- The `.transform()` method runs the transpiler in Bun's worker threadpool, so if you run it 100 times, it will run it across `Math.floor($cpu_count * 0.8)` threads, without blocking the main JavaScript thread.
80
-
81
- If your code uses a macro, it will potentially spawn a new copy of Bun's JavaScript runtime environment in that new thread.
82
- {% /details %}
83
-
84
- ## `.scan()`
85
-
86
- The `Transpiler` instance can also scan some source code and return a list of its imports and exports, plus additional metadata about each one. [Type-only](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) imports and exports are ignored.
87
-
88
- {% codetabs %}
89
-
90
- ```ts#Example
91
- const transpiler = new Bun.Transpiler({
92
- loader: 'tsx',
93
- });
94
-
95
- const code = `
96
- import React from 'react';
97
- import type {ReactNode} from 'react';
98
- const val = require('./cjs.js')
99
- import('./loader');
100
-
101
- export const name = "hello";
102
- `;
103
-
104
- const result = transpiler.scan(code);
105
- ```
106
-
107
- ```json#Output
108
- {
109
- "exports": [
110
- "name"
111
- ],
112
- "imports": [
113
- {
114
- "kind": "import-statement",
115
- "path": "react"
116
- },
117
- {
118
- "kind": "import-statement",
119
- "path": "remix"
120
- },
121
- {
122
- "kind": "dynamic-import",
123
- "path": "./loader"
124
- }
125
- ]
126
- }
127
- ```
128
-
129
- {% /codetabs %}
130
-
131
- Each import in the `imports` array has a `path` and `kind`. Bun categories imports into the following kinds:
132
-
133
- - `import-statement`: `import React from 'react'`
134
- - `require-call`: `const val = require('./cjs.js')`
135
- - `require-resolve`: `require.resolve('./cjs.js')`
136
- - `dynamic-import`: `import('./loader')`
137
- - `import-rule`: `@import 'foo.css'`
138
- - `url-token`: `url('./foo.png')`
139
- <!-- - `internal`: `import {foo} from 'bun:internal'`
140
- - `entry-point-build`: `import {foo} from 'bun:entry'`
141
- - `entry-point-run`: `bun ./mymodule` -->
142
-
143
- ## `.scanImports()`
144
-
145
- For performance-sensitive code, you can use the `.scanImports()` method to get a list of imports. It's faster than `.scan()` (especially for large files) but marginally less accurate due to some performance optimizations.
146
-
147
- {% codetabs %}
148
-
149
- ```ts#Example
150
- const transpiler = new Bun.Transpiler({
151
- loader: 'tsx',
152
- });
153
-
154
- const code = `
155
- import React from 'react';
156
- import type {ReactNode} from 'react';
157
- const val = require('./cjs.js')
158
- import('./loader');
159
-
160
- export const name = "hello";
161
- `;
162
-
163
- const result = transpiler.scanImports(code);
164
- ```
165
-
166
- ```json#Results
167
- [
168
- {
169
- kind: "import-statement",
170
- path: "react"
171
- }, {
172
- kind: "require-call",
173
- path: "./cjs.js"
174
- }, {
175
- kind: "dynamic-import",
176
- path: "./loader"
177
- }
178
- ]
179
- ```
180
-
181
- {% /codetabs %}
182
-
183
- ## Reference
184
-
185
- ```ts
186
- type Loader = "jsx" | "js" | "ts" | "tsx";
187
-
188
- interface TranspilerOptions {
189
- // Replace key with value. Value must be a JSON string.
190
- // { "process.env.NODE_ENV": "\"production\"" }
191
- define?: Record<string, string>,
192
-
193
- // Default loader for this transpiler
194
- loader?: Loader,
195
-
196
- // Default platform to target
197
- // This affects how import and/or require is used
198
- target?: "browser" | "bun" | "node",
199
-
200
- // Specify a tsconfig.json file as stringified JSON or an object
201
- // Use this to set a custom JSX factory, fragment, or import source
202
- // For example, if you want to use Preact instead of React. Or if you want to use Emotion.
203
- tsconfig?: string | TSConfig,
204
-
205
- // Replace imports with macros
206
- macro?: MacroMap,
207
-
208
- // Specify a set of exports to eliminate
209
- // Or rename certain exports
210
- exports?: {
211
- eliminate?: string[];
212
- replace?: Record<string, string>;
213
- },
214
-
215
- // Whether to remove unused imports from transpiled file
216
- // Default: false
217
- trimUnusedImports?: boolean,
218
-
219
- // Whether to enable a set of JSX optimizations
220
- // jsxOptimizationInline ...,
221
-
222
- // Experimental whitespace minification
223
- minifyWhitespace?: boolean,
224
-
225
- // Whether to inline constant values
226
- // Typically improves performance and decreases bundle size
227
- // Default: true
228
- inline?: boolean,
229
- }
230
-
231
- // Map import paths to macros
232
- interface MacroMap {
233
- // {
234
- // "react-relay": {
235
- // "graphql": "bun-macro-relay/bun-macro-relay.tsx"
236
- // }
237
- // }
238
- [packagePath: string]: {
239
- [importItemName: string]: string,
240
- },
241
- }
242
-
243
- class Bun.Transpiler {
244
- constructor(options: TranspilerOptions)
245
-
246
- transform(code: string, loader?: Loader): Promise<string>
247
- transformSync(code: string, loader?: Loader): string
248
-
249
- scan(code: string): {exports: string[], imports: Import}
250
- scanImports(code: string): Import[]
251
- }
252
-
253
- type Import = {
254
- path: string,
255
- kind:
256
- // import foo from 'bar'; in JavaScript
257
- | "import-statement"
258
- // require("foo") in JavaScript
259
- | "require-call"
260
- // require.resolve("foo") in JavaScript
261
- | "require-resolve"
262
- // Dynamic import() in JavaScript
263
- | "dynamic-import"
264
- // @import() in CSS
265
- | "import-rule"
266
- // url() in CSS
267
- | "url-token"
268
- // The import was injected by Bun
269
- | "internal" 
270
- // Entry point (not common)
271
- | "entry-point-build"
272
- | "entry-point-run"
273
- }
274
-
275
- const transpiler = new Bun.Transpiler({ loader: "jsx" });
276
- ```
package/docs/api/udp.md DELETED
@@ -1,123 +0,0 @@
1
- Use Bun's UDP API to implement services with advanced real-time requirements, such as voice chat.
2
-
3
- ## Bind a UDP socket (`Bun.udpSocket()`)
4
-
5
- To create a new (bound) UDP socket:
6
-
7
- ```ts
8
- const socket = await Bun.udpSocket({});
9
- console.log(socket.port); // assigned by the operating system
10
- ```
11
-
12
- Specify a port:
13
-
14
- ```ts
15
- const socket = await Bun.udpSocket({
16
- port: 41234,
17
- });
18
- console.log(socket.port); // 41234
19
- ```
20
-
21
- ### Send a datagram
22
-
23
- Specify the data to send, as well as the destination port and address.
24
-
25
- ```ts
26
- socket.send("Hello, world!", 41234, "127.0.0.1");
27
- ```
28
-
29
- Note that the address must be a valid IP address - `send` does not perform
30
- DNS resolution, as it is intended for low-latency operations.
31
-
32
- ### Receive datagrams
33
-
34
- When creating your socket, add a callback to specify what should be done when packets are received:
35
-
36
- ```ts
37
- const server = await Bun.udpSocket({
38
- socket: {
39
- data(socket, buf, port, addr) {
40
- console.log(`message from ${addr}:${port}:`);
41
- console.log(buf.toString());
42
- },
43
- },
44
- });
45
-
46
- const client = await Bun.udpSocket({});
47
- client.send("Hello!", server.port, "127.0.0.1");
48
- ```
49
-
50
- ### Connections
51
-
52
- While UDP does not have a concept of a connection, many UDP communications (especially as a client) involve only one peer.
53
- In such cases it can be beneficial to connect the socket to that peer, which specifies to which address all packets are sent
54
- and restricts incoming packets to that peer only.
55
-
56
- ```ts
57
- const server = await Bun.udpSocket({
58
- socket: {
59
- data(socket, buf, port, addr) {
60
- console.log(`message from ${addr}:${port}:`);
61
- console.log(buf.toString());
62
- },
63
- },
64
- });
65
- const client = await Bun.udpSocket({
66
- connect: {
67
- port: server.port,
68
- hostname: "127.0.0.1",
69
- },
70
- });
71
-
72
- client.send("Hello");
73
- ```
74
-
75
- Because connections are implemented on the operating system level, you can potentially observe performance benefits, too.
76
-
77
- ### Send many packets at once using `sendMany()`
78
-
79
- If you want to send a large volume of packets at once, it can make sense to batch them all together to avoid the overhead
80
- of making a system call for each. This is made possible by the `sendMany()` API:
81
-
82
- For an unconnected socket, `sendMany` takes an array as its only argument. Each set of three array elements describes a packet:
83
- The first item is the data to be sent, the second is the target port, and the last is the target address.
84
-
85
- ```ts
86
- const socket = await Bun.udpSocket({});
87
- // sends 'Hello' to 127.0.0.1:41234, and 'foo' to 1.1.1.1:53 in a single operation
88
- socket.sendMany(["Hello", 41234, "127.0.0.1", "foo", 53, "1.1.1.1"]);
89
- ```
90
-
91
- With a connected socket, `sendMany` simply takes an array, where each element represents the data to be sent to the peer.
92
-
93
- ```ts
94
- const socket = await Bun.udpSocket({
95
- connect: {
96
- port: 41234,
97
- hostname: "localhost",
98
- },
99
- });
100
- socket.sendMany(["foo", "bar", "baz"]);
101
- ```
102
-
103
- `sendMany` returns the number of packets that were successfully sent. As with `send`, `sendMany` only takes valid IP addresses
104
- as destinations, as it does not perform DNS resolution.
105
-
106
- ### Handle backpressure
107
-
108
- It may happen that a packet that you're sending does not fit into the operating system's packet buffer. You can detect that this
109
- has happened when:
110
-
111
- - `send` returns `false`
112
- - `sendMany` returns a number smaller than the number of packets you specified
113
- In this case, the `drain` socket handler will be called once the socket becomes writable again:
114
-
115
- ```ts
116
- const socket = await Bun.udpSocket({
117
- socket: {
118
- drain(socket) {
119
- // continue sending data
120
- },
121
- },
122
- });
123
- ```