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.
- package/bun.d.ts +4 -4
- package/docs/README.md +28 -0
- package/globals.d.ts +0 -1
- package/overrides.d.ts +45 -15
- package/package.json +1 -1
- package/test.d.ts +1 -1
- package/docs/api/binary-data.md +0 -1038
- package/docs/api/cc.md +0 -197
- package/docs/api/color.md +0 -262
- package/docs/api/console.md +0 -57
- package/docs/api/cookie.md +0 -449
- package/docs/api/dns.md +0 -110
- package/docs/api/fetch.md +0 -463
- package/docs/api/ffi.md +0 -557
- package/docs/api/file-io.md +0 -366
- package/docs/api/file-system-router.md +0 -112
- package/docs/api/file.md +0 -19
- package/docs/api/glob.md +0 -178
- package/docs/api/globals.md +0 -387
- package/docs/api/hashing.md +0 -319
- package/docs/api/html-rewriter.md +0 -334
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/api/node-api.md +0 -14
- package/docs/api/redis.md +0 -597
- package/docs/api/s3.md +0 -850
- package/docs/api/secrets.md +0 -319
- package/docs/api/semver.md +0 -52
- package/docs/api/spawn.md +0 -582
- package/docs/api/sql.md +0 -1374
- package/docs/api/sqlite.md +0 -694
- package/docs/api/streams.md +0 -230
- package/docs/api/tcp.md +0 -221
- package/docs/api/transpiler.md +0 -276
- package/docs/api/udp.md +0 -123
- package/docs/api/utils.md +0 -891
- package/docs/api/websockets.md +0 -573
- package/docs/api/workers.md +0 -322
- package/docs/api/yaml.md +0 -668
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css.md +0 -1028
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/executables.md +0 -626
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/hmr.md +0 -234
- package/docs/bundler/html.md +0 -349
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/loaders.md +0 -410
- package/docs/bundler/macros.md +0 -329
- package/docs/bundler/plugins.md +0 -449
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/add.md +0 -173
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-create.md +0 -338
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/bunx.md +0 -89
- package/docs/cli/filter.md +0 -90
- package/docs/cli/info.md +0 -65
- package/docs/cli/init.md +0 -85
- package/docs/cli/install.md +0 -344
- package/docs/cli/link.md +0 -40
- package/docs/cli/outdated.md +0 -90
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/pm.md +0 -285
- package/docs/cli/publish.md +0 -120
- package/docs/cli/remove.md +0 -7
- package/docs/cli/run.md +0 -261
- package/docs/cli/test.md +0 -397
- package/docs/cli/unlink.md +0 -9
- package/docs/cli/update.md +0 -129
- package/docs/cli/why.md +0 -67
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/binary/arraybuffer-to-array.md +0 -27
- package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
- package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
- package/docs/guides/binary/arraybuffer-to-string.md +0 -15
- package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
- package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
- package/docs/guides/binary/blob-to-dataview.md +0 -14
- package/docs/guides/binary/blob-to-stream.md +0 -14
- package/docs/guides/binary/blob-to-string.md +0 -15
- package/docs/guides/binary/blob-to-typedarray.md +0 -14
- package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
- package/docs/guides/binary/buffer-to-blob.md +0 -14
- package/docs/guides/binary/buffer-to-readablestream.md +0 -41
- package/docs/guides/binary/buffer-to-string.md +0 -25
- package/docs/guides/binary/buffer-to-typedarray.md +0 -14
- package/docs/guides/binary/dataview-to-string.md +0 -15
- package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
- package/docs/guides/binary/typedarray-to-blob.md +0 -16
- package/docs/guides/binary/typedarray-to-buffer.md +0 -14
- package/docs/guides/binary/typedarray-to-dataview.md +0 -14
- package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
- package/docs/guides/binary/typedarray-to-string.md +0 -16
- package/docs/guides/deployment/railway.md +0 -157
- package/docs/guides/ecosystem/astro.md +0 -72
- package/docs/guides/ecosystem/discordjs.md +0 -77
- package/docs/guides/ecosystem/docker.md +0 -140
- package/docs/guides/ecosystem/drizzle.md +0 -185
- package/docs/guides/ecosystem/edgedb.md +0 -228
- package/docs/guides/ecosystem/elysia.md +0 -31
- package/docs/guides/ecosystem/express.md +0 -40
- package/docs/guides/ecosystem/hono.md +0 -39
- package/docs/guides/ecosystem/mongoose.md +0 -87
- package/docs/guides/ecosystem/neon-drizzle.md +0 -220
- package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
- package/docs/guides/ecosystem/nextjs.md +0 -49
- package/docs/guides/ecosystem/nuxt.md +0 -56
- package/docs/guides/ecosystem/pm2.md +0 -57
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/qwik.md +0 -107
- package/docs/guides/ecosystem/react.md +0 -50
- package/docs/guides/ecosystem/remix.md +0 -78
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/ecosystem/sentry.md +0 -52
- package/docs/guides/ecosystem/solidstart.md +0 -58
- package/docs/guides/ecosystem/ssr-react.md +0 -51
- package/docs/guides/ecosystem/stric.md +0 -55
- package/docs/guides/ecosystem/sveltekit.md +0 -125
- package/docs/guides/ecosystem/systemd.md +0 -113
- package/docs/guides/ecosystem/vite.md +0 -71
- package/docs/guides/html-rewriter/extract-links.md +0 -68
- package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
- package/docs/guides/http/cluster.md +0 -66
- package/docs/guides/http/fetch-unix.md +0 -33
- package/docs/guides/http/fetch.md +0 -24
- package/docs/guides/http/file-uploads.md +0 -94
- package/docs/guides/http/hot.md +0 -26
- package/docs/guides/http/proxy.md +0 -24
- package/docs/guides/http/server.md +0 -46
- package/docs/guides/http/simple.md +0 -18
- package/docs/guides/http/stream-file.md +0 -48
- package/docs/guides/http/stream-iterator.md +0 -47
- package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
- package/docs/guides/http/tls.md +0 -30
- package/docs/guides/install/add-dev.md +0 -26
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/install/add-optional.md +0 -25
- package/docs/guides/install/add-peer.md +0 -43
- package/docs/guides/install/add-tarball.md +0 -33
- package/docs/guides/install/add.md +0 -42
- package/docs/guides/install/azure-artifacts.md +0 -73
- package/docs/guides/install/cicd.md +0 -41
- package/docs/guides/install/custom-registry.md +0 -30
- package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
- package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
- package/docs/guides/install/jfrog-artifactory.md +0 -28
- package/docs/guides/install/npm-alias.md +0 -23
- package/docs/guides/install/registry-scope.md +0 -38
- package/docs/guides/install/trusted.md +0 -46
- package/docs/guides/install/workspaces.md +0 -70
- package/docs/guides/install/yarnlock.md +0 -44
- package/docs/guides/process/argv.md +0 -58
- package/docs/guides/process/ctrl-c.md +0 -16
- package/docs/guides/process/ipc.md +0 -66
- package/docs/guides/process/nanoseconds.md +0 -13
- package/docs/guides/process/os-signals.md +0 -39
- package/docs/guides/process/spawn-stderr.md +0 -31
- package/docs/guides/process/spawn-stdout.md +0 -26
- package/docs/guides/process/spawn.md +0 -41
- package/docs/guides/process/stdin.md +0 -54
- package/docs/guides/read-file/arraybuffer.md +0 -28
- package/docs/guides/read-file/buffer.md +0 -19
- package/docs/guides/read-file/exists.md +0 -16
- package/docs/guides/read-file/json.md +0 -17
- package/docs/guides/read-file/mime.md +0 -20
- package/docs/guides/read-file/stream.md +0 -26
- package/docs/guides/read-file/string.md +0 -22
- package/docs/guides/read-file/uint8array.md +0 -21
- package/docs/guides/read-file/watch.md +0 -68
- package/docs/guides/runtime/build-time-constants.md +0 -293
- package/docs/guides/runtime/cicd.md +0 -43
- package/docs/guides/runtime/codesign-macos-executable.md +0 -56
- package/docs/guides/runtime/define-constant.md +0 -145
- package/docs/guides/runtime/delete-directory.md +0 -37
- package/docs/guides/runtime/delete-file.md +0 -19
- package/docs/guides/runtime/heap-snapshot.md +0 -26
- package/docs/guides/runtime/import-html.md +0 -15
- package/docs/guides/runtime/import-json.md +0 -44
- package/docs/guides/runtime/import-toml.md +0 -30
- package/docs/guides/runtime/import-yaml.md +0 -102
- package/docs/guides/runtime/read-env.md +0 -32
- package/docs/guides/runtime/set-env.md +0 -47
- package/docs/guides/runtime/shell.md +0 -40
- package/docs/guides/runtime/timezone.md +0 -35
- package/docs/guides/runtime/tsconfig-paths.md +0 -29
- package/docs/guides/runtime/typescript.md +0 -49
- package/docs/guides/runtime/vscode-debugger.md +0 -47
- package/docs/guides/runtime/web-debugger.md +0 -82
- package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
- package/docs/guides/streams/node-readable-to-blob.md +0 -11
- package/docs/guides/streams/node-readable-to-json.md +0 -12
- package/docs/guides/streams/node-readable-to-string.md +0 -12
- package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
- package/docs/guides/streams/to-array.md +0 -14
- package/docs/guides/streams/to-arraybuffer.md +0 -14
- package/docs/guides/streams/to-blob.md +0 -14
- package/docs/guides/streams/to-buffer.md +0 -15
- package/docs/guides/streams/to-json.md +0 -14
- package/docs/guides/streams/to-string.md +0 -14
- package/docs/guides/streams/to-typedarray.md +0 -22
- package/docs/guides/test/bail.md +0 -22
- package/docs/guides/test/coverage-threshold.md +0 -60
- package/docs/guides/test/coverage.md +0 -44
- package/docs/guides/test/happy-dom.md +0 -68
- package/docs/guides/test/migrate-from-jest.md +0 -143
- package/docs/guides/test/mock-clock.md +0 -48
- package/docs/guides/test/mock-functions.md +0 -68
- package/docs/guides/test/rerun-each.md +0 -14
- package/docs/guides/test/run-tests.md +0 -111
- package/docs/guides/test/skip-tests.md +0 -39
- package/docs/guides/test/snapshot.md +0 -95
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/guides/test/svelte-test.md +0 -120
- package/docs/guides/test/testing-library.md +0 -92
- package/docs/guides/test/timeout.md +0 -15
- package/docs/guides/test/todo-tests.md +0 -67
- package/docs/guides/test/update-snapshots.md +0 -46
- package/docs/guides/test/watch-mode.md +0 -19
- package/docs/guides/util/base64.md +0 -15
- package/docs/guides/util/deep-equals.md +0 -39
- package/docs/guides/util/deflate.md +0 -18
- package/docs/guides/util/detect-bun.md +0 -23
- package/docs/guides/util/entrypoint.md +0 -17
- package/docs/guides/util/escape-html.md +0 -22
- package/docs/guides/util/file-url-to-path.md +0 -14
- package/docs/guides/util/gzip.md +0 -18
- package/docs/guides/util/hash-a-password.md +0 -54
- package/docs/guides/util/import-meta-dir.md +0 -13
- package/docs/guides/util/import-meta-file.md +0 -13
- package/docs/guides/util/import-meta-path.md +0 -13
- package/docs/guides/util/javascript-uuid.md +0 -23
- package/docs/guides/util/main.md +0 -32
- package/docs/guides/util/path-to-file-url.md +0 -14
- package/docs/guides/util/sleep.md +0 -22
- package/docs/guides/util/version.md +0 -21
- package/docs/guides/util/which-path-to-executable-bin.md +0 -15
- package/docs/guides/websocket/compression.md +0 -31
- package/docs/guides/websocket/context.md +0 -77
- package/docs/guides/websocket/pubsub.md +0 -41
- package/docs/guides/websocket/simple.md +0 -33
- package/docs/guides/write-file/append.md +0 -52
- package/docs/guides/write-file/basic.md +0 -44
- package/docs/guides/write-file/blob.md +0 -28
- package/docs/guides/write-file/cat.md +0 -17
- package/docs/guides/write-file/file-cp.md +0 -16
- package/docs/guides/write-file/filesink.md +0 -52
- package/docs/guides/write-file/response.md +0 -17
- package/docs/guides/write-file/stdout.md +0 -21
- package/docs/guides/write-file/stream.md +0 -17
- package/docs/guides/write-file/unlink.md +0 -16
- package/docs/index.md +0 -77
- package/docs/install/audit.md +0 -57
- package/docs/install/cache.md +0 -59
- package/docs/install/catalogs.md +0 -298
- package/docs/install/index.md +0 -248
- package/docs/install/isolated.md +0 -197
- package/docs/install/lifecycle.md +0 -46
- package/docs/install/lockfile.md +0 -58
- package/docs/install/npmrc.md +0 -105
- package/docs/install/overrides.md +0 -73
- package/docs/install/patch.md +0 -59
- package/docs/install/registries.md +0 -30
- package/docs/install/security-scanner-api.md +0 -81
- package/docs/install/workspaces.md +0 -114
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/benchmarking.md +0 -203
- package/docs/project/bindgen.md +0 -225
- package/docs/project/building-windows.md +0 -162
- package/docs/project/contributing.md +0 -347
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/autoimport.md +0 -94
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/bunfig.md +0 -772
- package/docs/runtime/debugger.md +0 -325
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/hot.md +0 -145
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/modules.md +0 -320
- package/docs/runtime/nodejs-apis.md +0 -463
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/shell.md +0 -605
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/discovery.md +0 -85
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/reporters.md +0 -117
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/time.md +0 -126
- package/docs/test/writing.md +0 -825
- package/docs/typescript.md +0 -53
package/docs/api/file-io.md
DELETED
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
{% callout %}
|
|
2
|
-
|
|
3
|
-
<!-- **Note** — The `Bun.file` and `Bun.write` APIs documented on this page are heavily optimized and represent the recommended way to perform file-system tasks using Bun. Existing Node.js projects may use Bun's [nearly complete](https://bun.com/docs/runtime/nodejs-apis#node-fs) implementation of the [`node:fs`](https://nodejs.org/api/fs.html) module. -->
|
|
4
|
-
|
|
5
|
-
**Note** — The `Bun.file` and `Bun.write` APIs documented on this page are heavily optimized and represent the recommended way to perform file-system tasks using Bun. For operations that are not yet available with `Bun.file`, such as `mkdir` or `readdir`, you can use Bun's [nearly complete](https://bun.com/docs/runtime/nodejs-apis#node-fs) implementation of the [`node:fs`](https://nodejs.org/api/fs.html) module.
|
|
6
|
-
|
|
7
|
-
{% /callout %}
|
|
8
|
-
|
|
9
|
-
Bun provides a set of optimized APIs for reading and writing files.
|
|
10
|
-
|
|
11
|
-
## Reading files (`Bun.file()`)
|
|
12
|
-
|
|
13
|
-
`Bun.file(path): BunFile`
|
|
14
|
-
|
|
15
|
-
Create a `BunFile` instance with the `Bun.file(path)` function. A `BunFile` represents a lazily-loaded file; initializing it does not actually read the file from disk.
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
const foo = Bun.file("foo.txt"); // relative to cwd
|
|
19
|
-
foo.size; // number of bytes
|
|
20
|
-
foo.type; // MIME type
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
The reference conforms to the [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) interface, so the contents can be read in various formats.
|
|
24
|
-
|
|
25
|
-
```ts
|
|
26
|
-
const foo = Bun.file("foo.txt");
|
|
27
|
-
|
|
28
|
-
await foo.text(); // contents as a string
|
|
29
|
-
await foo.stream(); // contents as ReadableStream
|
|
30
|
-
await foo.arrayBuffer(); // contents as ArrayBuffer
|
|
31
|
-
await foo.bytes(); // contents as Uint8Array
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
File references can also be created using numerical [file descriptors](https://en.wikipedia.org/wiki/File_descriptor) or `file://` URLs.
|
|
35
|
-
|
|
36
|
-
```ts
|
|
37
|
-
Bun.file(1234);
|
|
38
|
-
Bun.file(new URL(import.meta.url)); // reference to the current file
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
A `BunFile` can point to a location on disk where a file does not exist.
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
const notreal = Bun.file("notreal.txt");
|
|
45
|
-
notreal.size; // 0
|
|
46
|
-
notreal.type; // "text/plain;charset=utf-8"
|
|
47
|
-
const exists = await notreal.exists(); // false
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
The default MIME type is `text/plain;charset=utf-8`, but it can be overridden by passing a second argument to `Bun.file`.
|
|
51
|
-
|
|
52
|
-
```ts
|
|
53
|
-
const notreal = Bun.file("notreal.json", { type: "application/json" });
|
|
54
|
-
notreal.type; // => "application/json;charset=utf-8"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
For convenience, Bun exposes `stdin`, `stdout` and `stderr` as instances of `BunFile`.
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
Bun.stdin; // readonly
|
|
61
|
-
Bun.stdout;
|
|
62
|
-
Bun.stderr;
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Deleting files (`file.delete()`)
|
|
66
|
-
|
|
67
|
-
You can delete a file by calling the `.delete()` function.
|
|
68
|
-
|
|
69
|
-
```ts
|
|
70
|
-
await Bun.file("logs.json").delete();
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Writing files (`Bun.write()`)
|
|
74
|
-
|
|
75
|
-
`Bun.write(destination, data): Promise<number>`
|
|
76
|
-
|
|
77
|
-
The `Bun.write` function is a multi-tool for writing payloads of all kinds to disk.
|
|
78
|
-
|
|
79
|
-
The first argument is the `destination` which can have any of the following types:
|
|
80
|
-
|
|
81
|
-
- `string`: A path to a location on the file system. Use the `"path"` module to manipulate paths.
|
|
82
|
-
- `URL`: A `file://` descriptor.
|
|
83
|
-
- `BunFile`: A file reference.
|
|
84
|
-
|
|
85
|
-
The second argument is the data to be written. It can be any of the following:
|
|
86
|
-
|
|
87
|
-
- `string`
|
|
88
|
-
- `Blob` (including `BunFile`)
|
|
89
|
-
- `ArrayBuffer` or `SharedArrayBuffer`
|
|
90
|
-
- `TypedArray` (`Uint8Array`, et. al.)
|
|
91
|
-
- `Response`
|
|
92
|
-
|
|
93
|
-
All possible permutations are handled using the fastest available system calls on the current platform.
|
|
94
|
-
|
|
95
|
-
{% details summary="See syscalls" %}
|
|
96
|
-
|
|
97
|
-
{% table %}
|
|
98
|
-
|
|
99
|
-
- Output
|
|
100
|
-
- Input
|
|
101
|
-
- System call
|
|
102
|
-
- Platform
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
- file
|
|
107
|
-
- file
|
|
108
|
-
- copy_file_range
|
|
109
|
-
- Linux
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
- file
|
|
114
|
-
- pipe
|
|
115
|
-
- sendfile
|
|
116
|
-
- Linux
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
- pipe
|
|
121
|
-
- pipe
|
|
122
|
-
- splice
|
|
123
|
-
- Linux
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
- terminal
|
|
128
|
-
- file
|
|
129
|
-
- sendfile
|
|
130
|
-
- Linux
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
- terminal
|
|
135
|
-
- terminal
|
|
136
|
-
- sendfile
|
|
137
|
-
- Linux
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
- socket
|
|
142
|
-
- file or pipe
|
|
143
|
-
- sendfile (if http, not https)
|
|
144
|
-
- Linux
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
- file (doesn't exist)
|
|
149
|
-
- file (path)
|
|
150
|
-
- clonefile
|
|
151
|
-
- macOS
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
- file (exists)
|
|
156
|
-
- file
|
|
157
|
-
- fcopyfile
|
|
158
|
-
- macOS
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
- file
|
|
163
|
-
- Blob or string
|
|
164
|
-
- write
|
|
165
|
-
- macOS
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
- file
|
|
170
|
-
- Blob or string
|
|
171
|
-
- write
|
|
172
|
-
- Linux
|
|
173
|
-
|
|
174
|
-
{% /table %}
|
|
175
|
-
|
|
176
|
-
{% /details %}
|
|
177
|
-
|
|
178
|
-
To write a string to disk:
|
|
179
|
-
|
|
180
|
-
```ts
|
|
181
|
-
const data = `It was the best of times, it was the worst of times.`;
|
|
182
|
-
await Bun.write("output.txt", data);
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
To copy a file to another location on disk:
|
|
186
|
-
|
|
187
|
-
```js
|
|
188
|
-
const input = Bun.file("input.txt");
|
|
189
|
-
const output = Bun.file("output.txt"); // doesn't exist yet!
|
|
190
|
-
await Bun.write(output, input);
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
To write a byte array to disk:
|
|
194
|
-
|
|
195
|
-
```ts
|
|
196
|
-
const encoder = new TextEncoder();
|
|
197
|
-
const data = encoder.encode("datadatadata"); // Uint8Array
|
|
198
|
-
await Bun.write("output.txt", data);
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
To write a file to `stdout`:
|
|
202
|
-
|
|
203
|
-
```ts
|
|
204
|
-
const input = Bun.file("input.txt");
|
|
205
|
-
await Bun.write(Bun.stdout, input);
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
To write the body of an HTTP response to disk:
|
|
209
|
-
|
|
210
|
-
```ts
|
|
211
|
-
const response = await fetch("https://bun.com");
|
|
212
|
-
await Bun.write("index.html", response);
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Incremental writing with `FileSink`
|
|
216
|
-
|
|
217
|
-
Bun provides a native incremental file writing API called `FileSink`. To retrieve a `FileSink` instance from a `BunFile`:
|
|
218
|
-
|
|
219
|
-
```ts
|
|
220
|
-
const file = Bun.file("output.txt");
|
|
221
|
-
const writer = file.writer();
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
To incrementally write to the file, call `.write()`.
|
|
225
|
-
|
|
226
|
-
```ts
|
|
227
|
-
const file = Bun.file("output.txt");
|
|
228
|
-
const writer = file.writer();
|
|
229
|
-
|
|
230
|
-
writer.write("it was the best of times\n");
|
|
231
|
-
writer.write("it was the worst of times\n");
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
These chunks will be buffered internally. To flush the buffer to disk, use `.flush()`. This returns the number of flushed bytes.
|
|
235
|
-
|
|
236
|
-
```ts
|
|
237
|
-
writer.flush(); // write buffer to disk
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
The buffer will also auto-flush when the `FileSink`'s _high water mark_ is reached; that is, when its internal buffer is full. This value can be configured.
|
|
241
|
-
|
|
242
|
-
```ts
|
|
243
|
-
const file = Bun.file("output.txt");
|
|
244
|
-
const writer = file.writer({ highWaterMark: 1024 * 1024 }); // 1MB
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
To flush the buffer and close the file:
|
|
248
|
-
|
|
249
|
-
```ts
|
|
250
|
-
writer.end();
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Note that, by default, the `bun` process will stay alive until this `FileSink` is explicitly closed with `.end()`. To opt out of this behavior, you can "unref" the instance.
|
|
254
|
-
|
|
255
|
-
```ts
|
|
256
|
-
writer.unref();
|
|
257
|
-
|
|
258
|
-
// to "re-ref" it later
|
|
259
|
-
writer.ref();
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
## Directories
|
|
263
|
-
|
|
264
|
-
Bun's implementation of `node:fs` is fast, and we haven't implemented a Bun-specific API for reading directories just yet. For now, you should use `node:fs` for working with directories in Bun.
|
|
265
|
-
|
|
266
|
-
### Reading directories (readdir)
|
|
267
|
-
|
|
268
|
-
To read a directory in Bun, use `readdir` from `node:fs`.
|
|
269
|
-
|
|
270
|
-
```ts
|
|
271
|
-
import { readdir } from "node:fs/promises";
|
|
272
|
-
|
|
273
|
-
// read all the files in the current directory
|
|
274
|
-
const files = await readdir(import.meta.dir);
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
#### Reading directories recursively
|
|
278
|
-
|
|
279
|
-
To recursively read a directory in Bun, use `readdir` with `recursive: true`.
|
|
280
|
-
|
|
281
|
-
```ts
|
|
282
|
-
import { readdir } from "node:fs/promises";
|
|
283
|
-
|
|
284
|
-
// read all the files in the current directory, recursively
|
|
285
|
-
const files = await readdir("../", { recursive: true });
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### Creating directories (mkdir)
|
|
289
|
-
|
|
290
|
-
To recursively create a directory, use `mkdir` in `node:fs`:
|
|
291
|
-
|
|
292
|
-
```ts
|
|
293
|
-
import { mkdir } from "node:fs/promises";
|
|
294
|
-
|
|
295
|
-
await mkdir("path/to/dir", { recursive: true });
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## Benchmarks
|
|
299
|
-
|
|
300
|
-
The following is a 3-line implementation of the Linux `cat` command.
|
|
301
|
-
|
|
302
|
-
```ts#cat.ts
|
|
303
|
-
// Usage
|
|
304
|
-
// $ bun ./cat.ts ./path-to-file
|
|
305
|
-
|
|
306
|
-
import { resolve } from "path";
|
|
307
|
-
|
|
308
|
-
const path = resolve(process.argv.at(-1));
|
|
309
|
-
await Bun.write(Bun.stdout, Bun.file(path));
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
To run the file:
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
$ bun ./cat.ts ./path-to-file
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
It runs 2x faster than GNU `cat` for large files on Linux.
|
|
319
|
-
|
|
320
|
-
{% image src="/images/cat.jpg" /%}
|
|
321
|
-
|
|
322
|
-
## Reference
|
|
323
|
-
|
|
324
|
-
```ts
|
|
325
|
-
interface Bun {
|
|
326
|
-
stdin: BunFile;
|
|
327
|
-
stdout: BunFile;
|
|
328
|
-
stderr: BunFile;
|
|
329
|
-
|
|
330
|
-
file(path: string | number | URL, options?: { type?: string }): BunFile;
|
|
331
|
-
|
|
332
|
-
write(
|
|
333
|
-
destination: string | number | BunFile | URL,
|
|
334
|
-
input:
|
|
335
|
-
| string
|
|
336
|
-
| Blob
|
|
337
|
-
| ArrayBuffer
|
|
338
|
-
| SharedArrayBuffer
|
|
339
|
-
| TypedArray
|
|
340
|
-
| Response,
|
|
341
|
-
): Promise<number>;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
interface BunFile {
|
|
345
|
-
readonly size: number;
|
|
346
|
-
readonly type: string;
|
|
347
|
-
|
|
348
|
-
text(): Promise<string>;
|
|
349
|
-
stream(): ReadableStream;
|
|
350
|
-
arrayBuffer(): Promise<ArrayBuffer>;
|
|
351
|
-
json(): Promise<any>;
|
|
352
|
-
writer(params: { highWaterMark?: number }): FileSink;
|
|
353
|
-
exists(): Promise<boolean>;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
export interface FileSink {
|
|
357
|
-
write(
|
|
358
|
-
chunk: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,
|
|
359
|
-
): number;
|
|
360
|
-
flush(): number | Promise<number>;
|
|
361
|
-
end(error?: Error): number | Promise<number>;
|
|
362
|
-
start(options?: { highWaterMark?: number }): void;
|
|
363
|
-
ref(): void;
|
|
364
|
-
unref(): void;
|
|
365
|
-
}
|
|
366
|
-
```
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
Bun provides a fast API for resolving routes against file-system paths. This API is primarily intended for library authors. At the moment only Next.js-style file-system routing is supported, but other styles may be added in the future.
|
|
2
|
-
|
|
3
|
-
## Next.js-style
|
|
4
|
-
|
|
5
|
-
The `FileSystemRouter` class can resolve routes against a `pages` directory. (The Next.js 13 `app` directory is not yet supported.) Consider the following `pages` directory:
|
|
6
|
-
|
|
7
|
-
```txt
|
|
8
|
-
pages
|
|
9
|
-
├── index.tsx
|
|
10
|
-
├── settings.tsx
|
|
11
|
-
├── blog
|
|
12
|
-
│ ├── [slug].tsx
|
|
13
|
-
│ └── index.tsx
|
|
14
|
-
└── [[...catchall]].tsx
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
The `FileSystemRouter` can be used to resolve routes against this directory:
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
const router = new Bun.FileSystemRouter({
|
|
21
|
-
style: "nextjs",
|
|
22
|
-
dir: "./pages",
|
|
23
|
-
origin: "https://mydomain.com",
|
|
24
|
-
assetPrefix: "_next/static/"
|
|
25
|
-
});
|
|
26
|
-
router.match("/");
|
|
27
|
-
|
|
28
|
-
// =>
|
|
29
|
-
{
|
|
30
|
-
filePath: "/path/to/pages/index.tsx",
|
|
31
|
-
kind: "exact",
|
|
32
|
-
name: "/",
|
|
33
|
-
pathname: "/",
|
|
34
|
-
src: "https://mydomain.com/_next/static/pages/index.tsx"
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Query parameters will be parsed and returned in the `query` property.
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
router.match("/settings?foo=bar");
|
|
42
|
-
|
|
43
|
-
// =>
|
|
44
|
-
{
|
|
45
|
-
filePath: "/Users/colinmcd94/Documents/bun/fun/pages/settings.tsx",
|
|
46
|
-
kind: "dynamic",
|
|
47
|
-
name: "/settings",
|
|
48
|
-
pathname: "/settings?foo=bar",
|
|
49
|
-
src: "https://mydomain.com/_next/static/pages/settings.tsx",
|
|
50
|
-
query: {
|
|
51
|
-
foo: "bar"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
The router will automatically parse URL parameters and return them in the `params` property:
|
|
57
|
-
|
|
58
|
-
```ts
|
|
59
|
-
router.match("/blog/my-cool-post");
|
|
60
|
-
|
|
61
|
-
// =>
|
|
62
|
-
{
|
|
63
|
-
filePath: "/Users/colinmcd94/Documents/bun/fun/pages/blog/[slug].tsx",
|
|
64
|
-
kind: "dynamic",
|
|
65
|
-
name: "/blog/[slug]",
|
|
66
|
-
pathname: "/blog/my-cool-post",
|
|
67
|
-
src: "https://mydomain.com/_next/static/pages/blog/[slug].tsx",
|
|
68
|
-
params: {
|
|
69
|
-
slug: "my-cool-post"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
The `.match()` method also accepts `Request` and `Response` objects. The `url` property will be used to resolve the route.
|
|
75
|
-
|
|
76
|
-
```ts
|
|
77
|
-
router.match(new Request("https://example.com/blog/my-cool-post"));
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The router will read the directory contents on initialization. To re-scan the files, use the `.reload()` method.
|
|
81
|
-
|
|
82
|
-
```ts
|
|
83
|
-
router.reload();
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Reference
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
interface Bun {
|
|
90
|
-
class FileSystemRouter {
|
|
91
|
-
constructor(params: {
|
|
92
|
-
dir: string;
|
|
93
|
-
style: "nextjs";
|
|
94
|
-
origin?: string;
|
|
95
|
-
assetPrefix?: string;
|
|
96
|
-
fileExtensions?: string[];
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
reload(): void;
|
|
100
|
-
|
|
101
|
-
match(path: string | Request | Response): {
|
|
102
|
-
filePath: string;
|
|
103
|
-
kind: "exact" | "catch-all" | "optional-catch-all" | "dynamic";
|
|
104
|
-
name: string;
|
|
105
|
-
pathname: string;
|
|
106
|
-
src: string;
|
|
107
|
-
params?: Record<string, string>;
|
|
108
|
-
query?: Record<string, string>;
|
|
109
|
-
} | null
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
```
|
package/docs/api/file.md
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Bun.js has fast paths for common use cases that make Web APIs live up to the performance demands of servers and CLIs.
|
|
2
|
-
|
|
3
|
-
`Bun.file(path)` returns a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) that represents a lazily-loaded file.
|
|
4
|
-
|
|
5
|
-
When you pass a file blob to `Bun.write`, Bun automatically uses a faster system call:
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
const blob = Bun.file("input.txt");
|
|
9
|
-
await Bun.write("output.txt", blob);
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
On Linux, this uses the [`copy_file_range`](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) syscall and on macOS, this becomes `clonefile` (or [`fcopyfile`](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/copyfile.3.html)).
|
|
13
|
-
|
|
14
|
-
`Bun.write` also supports [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) objects. It automatically converts to a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).
|
|
15
|
-
|
|
16
|
-
```js
|
|
17
|
-
// Eventually, this will stream the response to disk but today it buffers
|
|
18
|
-
await Bun.write("index.html", await fetch("https://example.com"));
|
|
19
|
-
```
|
package/docs/api/glob.md
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
Bun includes a fast native implementation of file globbing.
|
|
2
|
-
|
|
3
|
-
## Quickstart
|
|
4
|
-
|
|
5
|
-
**Scan a directory for files matching `*.ts`**:
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import { Glob } from "bun";
|
|
9
|
-
|
|
10
|
-
const glob = new Glob("**/*.ts");
|
|
11
|
-
|
|
12
|
-
// Scans the current working directory and each of its sub-directories recursively
|
|
13
|
-
for await (const file of glob.scan(".")) {
|
|
14
|
-
console.log(file); // => "index.ts"
|
|
15
|
-
}
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**Match a string against a glob pattern**:
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import { Glob } from "bun";
|
|
22
|
-
|
|
23
|
-
const glob = new Glob("*.ts");
|
|
24
|
-
|
|
25
|
-
glob.match("index.ts"); // => true
|
|
26
|
-
glob.match("index.js"); // => false
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
`Glob` is a class which implements the following interface:
|
|
30
|
-
|
|
31
|
-
```ts
|
|
32
|
-
class Glob {
|
|
33
|
-
scan(root: string | ScanOptions): AsyncIterable<string>;
|
|
34
|
-
scanSync(root: string | ScanOptions): Iterable<string>;
|
|
35
|
-
|
|
36
|
-
match(path: string): boolean;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
interface ScanOptions {
|
|
40
|
-
/**
|
|
41
|
-
* The root directory to start matching from. Defaults to `process.cwd()`
|
|
42
|
-
*/
|
|
43
|
-
cwd?: string;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Allow patterns to match entries that begin with a period (`.`).
|
|
47
|
-
*
|
|
48
|
-
* @default false
|
|
49
|
-
*/
|
|
50
|
-
dot?: boolean;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Return the absolute path for entries.
|
|
54
|
-
*
|
|
55
|
-
* @default false
|
|
56
|
-
*/
|
|
57
|
-
absolute?: boolean;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Indicates whether to traverse descendants of symbolic link directories.
|
|
61
|
-
*
|
|
62
|
-
* @default false
|
|
63
|
-
*/
|
|
64
|
-
followSymlinks?: boolean;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Throw an error when symbolic link is broken
|
|
68
|
-
*
|
|
69
|
-
* @default false
|
|
70
|
-
*/
|
|
71
|
-
throwErrorOnBrokenSymlink?: boolean;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Return only files.
|
|
75
|
-
*
|
|
76
|
-
* @default true
|
|
77
|
-
*/
|
|
78
|
-
onlyFiles?: boolean;
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Supported Glob Patterns
|
|
83
|
-
|
|
84
|
-
Bun supports the following glob patterns:
|
|
85
|
-
|
|
86
|
-
### `?` - Match any single character
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
const glob = new Glob("???.ts");
|
|
90
|
-
glob.match("foo.ts"); // => true
|
|
91
|
-
glob.match("foobar.ts"); // => false
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### `*` - Matches zero or more characters, except for path separators (`/` or `\`)
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
const glob = new Glob("*.ts");
|
|
98
|
-
glob.match("index.ts"); // => true
|
|
99
|
-
glob.match("src/index.ts"); // => false
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### `**` - Match any number of characters including `/`
|
|
103
|
-
|
|
104
|
-
```ts
|
|
105
|
-
const glob = new Glob("**/*.ts");
|
|
106
|
-
glob.match("index.ts"); // => true
|
|
107
|
-
glob.match("src/index.ts"); // => true
|
|
108
|
-
glob.match("src/index.js"); // => false
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### `[ab]` - Matches one of the characters contained in the brackets, as well as character ranges
|
|
112
|
-
|
|
113
|
-
```ts
|
|
114
|
-
const glob = new Glob("ba[rz].ts");
|
|
115
|
-
glob.match("bar.ts"); // => true
|
|
116
|
-
glob.match("baz.ts"); // => true
|
|
117
|
-
glob.match("bat.ts"); // => false
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
You can use character ranges (e.g `[0-9]`, `[a-z]`) as well as the negation operators `^` or `!` to match anything _except_ the characters contained within the braces (e.g `[^ab]`, `[!a-z]`)
|
|
121
|
-
|
|
122
|
-
```ts
|
|
123
|
-
const glob = new Glob("ba[a-z][0-9][^4-9].ts");
|
|
124
|
-
glob.match("bar01.ts"); // => true
|
|
125
|
-
glob.match("baz83.ts"); // => true
|
|
126
|
-
glob.match("bat22.ts"); // => true
|
|
127
|
-
glob.match("bat24.ts"); // => false
|
|
128
|
-
glob.match("ba0a8.ts"); // => false
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### `{a,b,c}` - Match any of the given patterns
|
|
132
|
-
|
|
133
|
-
```ts
|
|
134
|
-
const glob = new Glob("{a,b,c}.ts");
|
|
135
|
-
glob.match("a.ts"); // => true
|
|
136
|
-
glob.match("b.ts"); // => true
|
|
137
|
-
glob.match("c.ts"); // => true
|
|
138
|
-
glob.match("d.ts"); // => false
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
These match patterns can be deeply nested (up to 10 levels), and contain any of the wildcards from above.
|
|
142
|
-
|
|
143
|
-
### `!` - Negates the result at the start of a pattern
|
|
144
|
-
|
|
145
|
-
```ts
|
|
146
|
-
const glob = new Glob("!index.ts");
|
|
147
|
-
glob.match("index.ts"); // => false
|
|
148
|
-
glob.match("foo.ts"); // => true
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### `\` - Escapes any of the special characters above
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
const glob = new Glob("\\!index.ts");
|
|
155
|
-
glob.match("!index.ts"); // => true
|
|
156
|
-
glob.match("index.ts"); // => false
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
## Node.js `fs.glob()` compatibility
|
|
160
|
-
|
|
161
|
-
Bun also implements Node.js's `fs.glob()` functions with additional features:
|
|
162
|
-
|
|
163
|
-
```ts
|
|
164
|
-
import { glob, globSync, promises } from "node:fs";
|
|
165
|
-
|
|
166
|
-
// Array of patterns
|
|
167
|
-
const files = await promises.glob(["**/*.ts", "**/*.js"]);
|
|
168
|
-
|
|
169
|
-
// Exclude patterns
|
|
170
|
-
const filtered = await promises.glob("**/*", {
|
|
171
|
-
exclude: ["node_modules/**", "*.test.*"],
|
|
172
|
-
});
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
All three functions (`fs.glob()`, `fs.globSync()`, `fs.promises.glob()`) support:
|
|
176
|
-
|
|
177
|
-
- Array of patterns as the first argument
|
|
178
|
-
- `exclude` option to filter results
|