Skip to content
File

Blob: src/workerd/api/BUILD.bazel

14.3 KB
1load("//:build/kj_test.bzl", "kj_test")
2load("//:build/wd_capnp_library.bzl", "wd_capnp_library")
3load("//:build/wd_cc_library.bzl", "wd_cc_library")
4load("//:build/wd_test.bzl", "wd_test")
5 
6filegroup(
7 name = "srcs",
8 # Only add files here when needed: Where possible, new src/header files should be defined in
9 # their own targets, modularizing bazel targets makes incremental rebuilds faster.
10 srcs = [
11 "actor.c++",
12 "actor-state.c++",
13 "basics.c++",
14 "blob.c++",
15 "cache.c++",
16 "cf-property.c++",
17 "container.c++",
18 "events.c++",
19 "eventsource.c++",
20 "export-loopback.c++",
21 "filesystem.c++",
22 "form-data.c++",
23 "global-scope.c++",
24 "headers.c++",
25 "hibernatable-web-socket.c++",
26 "http.c++",
27 "messagechannel.c++",
28 "performance.c++",
29 "queue.c++",
30 "scheduled.c++",
31 "sockets.c++",
32 "sql.c++",
33 "sync-kv.c++",
34 "system-streams.c++",
35 "trace.c++",
36 "tracing.c++",
37 "unsafe.c++",
38 "url-standard.c++",
39 "web-socket.c++",
40 "worker-rpc.c++",
41 ] + glob(
42 [
43 "crypto/*.c++",
44 "streams/*.c++",
45 ],
46 exclude = [
47 "**/*test*.c++",
48 "crypto/crc-impl.c++",
49 "streams/compression.c++",
50 "streams/encoding.c++",
51 ],
52 ),
53 visibility = ["//visibility:public"],
54)
55 
56filegroup(
57 name = "hdrs",
58 srcs = [
59 "actor.h",
60 "actor-state.h",
61 "basics.h",
62 "blob.h",
63 "cache.h",
64 "cf-property.h",
65 "container.h",
66 "events.h",
67 "eventsource.h",
68 "export-loopback.h",
69 "filesystem.h",
70 "form-data.h",
71 "global-scope.h",
72 "headers.h",
73 "hibernatable-web-socket.h",
74 "http.h",
75 "messagechannel.h",
76 "performance.h",
77 "queue.h",
78 "scheduled.h",
79 "sockets.h",
80 "sql.h",
81 "sync-kv.h",
82 "system-streams.h",
83 "trace.h",
84 "tracing.h",
85 "unsafe.h",
86 "url-standard.h",
87 "web-socket.h",
88 "worker-rpc.h",
89 ] + glob(
90 [
91 "crypto/*.h",
92 "streams/*.h",
93 ],
94 exclude = [
95 "crypto/crc-impl.h",
96 "streams/compression.h",
97 "streams/encoding.h",
98 ],
99 ),
100 visibility = ["//visibility:public"],
101)
102 
103wd_cc_library(
104 name = "analytics-engine",
105 srcs = [
106 "analytics-engine.c++",
107 ],
108 hdrs = [
109 "analytics-engine.h",
110 "analytics-engine-impl.h",
111 ],
112 visibility = ["//visibility:public"],
113 deps = [
114 "//src/workerd/io",
115 ],
116)
117 
118wd_cc_library(
119 name = "capnp",
120 srcs = [
121 "capnp.c++",
122 ],
123 hdrs = [
124 "capnp.h",
125 ],
126 visibility = ["//visibility:public"],
127 deps = [
128 "//src/workerd/io",
129 ],
130)
131 
132wd_cc_library(
133 name = "worker-loader",
134 srcs = [
135 "worker-loader.c++",
136 ],
137 hdrs = [
138 "worker-loader.h",
139 ],
140 visibility = ["//visibility:public"],
141 deps = [
142 "//src/workerd/io",
143 ],
144)
145 
146wd_cc_library(
147 name = "workers-module",
148 srcs = [
149 "workers-module.c++",
150 ],
151 hdrs = [
152 "workers-module.h",
153 ],
154 visibility = ["//visibility:public"],
155 deps = [
156 "//src/workerd/io",
157 ],
158)
159 
160wd_cc_library(
161 name = "base64",
162 srcs = [
163 "base64.c++",
164 ],
165 hdrs = [
166 "base64.h",
167 ],
168 visibility = ["//visibility:public"],
169 deps = [
170 "//src/workerd/jsg",
171 "@simdutf",
172 ],
173)
174 
175wd_cc_library(
176 name = "commonjs",
177 srcs = [
178 "commonjs.c++",
179 ],
180 hdrs = [
181 "commonjs.h",
182 ],
183 visibility = ["//visibility:public"],
184 deps = [
185 "//src/workerd/io",
186 ],
187)
188 
189wd_cc_library(
190 name = "crypto-crc-impl",
191 srcs = [
192 "crypto/crc-impl.c++",
193 ],
194 hdrs = [
195 "crypto/crc-impl.h",
196 ],
197 visibility = ["//visibility:public"],
198)
199 
200wd_cc_library(
201 name = "fuzzilli",
202 srcs = [
203 "fuzzilli.c++",
204 ],
205 hdrs = [
206 "fuzzilli.h",
207 ],
208 visibility = ["//visibility:public"],
209 deps = [
210 "//src/workerd/api:util",
211 "//src/workerd/util:immediate-crash",
212 ],
213)
214 
215wd_cc_library(
216 name = "kv",
217 srcs = [
218 "kv.c++",
219 ],
220 hdrs = [
221 "kv.h",
222 ],
223 implementation_deps = [
224 "//src/workerd/util:mimetype",
225 ],
226 visibility = ["//visibility:public"],
227 deps = [
228 "//src/workerd/io",
229 ],
230)
231 
232# for using EW_STREAMS_ISOLATE_TYPES with workerd-api etc. To use the different streams APIs,
233# include the headers you need directly.
234wd_cc_library(
235 name = "streams",
236 hdrs = ["streams.h"],
237 visibility = ["//visibility:public"],
238 deps = [
239 ":streams-compression",
240 ":streams-encoding",
241 "//src/workerd/io",
242 ],
243)
244 
245wd_cc_library(
246 name = "streams-compression",
247 srcs = ["streams/compression.c++"],
248 hdrs = ["streams/compression.h"],
249 visibility = ["//visibility:public"],
250 deps = [
251 "//src/workerd/io",
252 "//src/workerd/util:state-machine",
253 "@nbytes",
254 ],
255)
256 
257wd_cc_library(
258 name = "streams-encoding",
259 srcs = ["streams/encoding.c++"],
260 hdrs = ["streams/encoding.h"],
261 visibility = ["//visibility:public"],
262 deps = [
263 "//src/workerd/io",
264 ],
265)
266 
267wd_cc_library(
268 name = "hibernation-event-params",
269 hdrs = ["hibernation-event-params.h"],
270 visibility = ["//visibility:public"],
271 deps = [
272 "@capnp-cpp//src/kj",
273 ],
274)
275 
276wd_cc_library(
277 name = "r2",
278 srcs = glob(["r2*.c++"]),
279 hdrs = glob(["r2*.h"]),
280 implementation_deps = [
281 ":r2-api_capnp",
282 ],
283 visibility = ["//visibility:public"],
284 deps = [
285 "//src/workerd/io",
286 ],
287)
288 
289wd_cc_library(
290 name = "memory-cache",
291 srcs = ["memory-cache.c++"],
292 hdrs = ["memory-cache.h"],
293 implementation_deps = [
294 "//src/workerd/io",
295 ],
296 visibility = ["//visibility:public"],
297 deps = [
298 "//src/workerd/io:compatibility-date_capnp",
299 "//src/workerd/jsg",
300 "//src/workerd/util:checked-queue",
301 "//src/workerd/util:uuid",
302 ],
303)
304 
305wd_cc_library(
306 name = "rtti",
307 srcs = [
308 "modules.c++",
309 "rtti.c++",
310 ],
311 hdrs = [
312 "modules.h",
313 "rtti.h",
314 ],
315 implementation_deps = [
316 ":analytics-engine",
317 ":kv",
318 ":pyodide",
319 ":streams",
320 ":streams-compression",
321 ":streams-encoding",
322 ":urlpattern",
323 ":urlpattern-standard",
324 ":worker-loader",
325 "//src/workerd/jsg:rtti",
326 ],
327 visibility = ["//visibility:public"],
328 deps = [
329 ":base64",
330 ":html-rewriter",
331 ":hyperdrive",
332 ":memory-cache",
333 ":r2",
334 ":workers-module",
335 "//src/cloudflare",
336 "//src/node",
337 "//src/pyodide",
338 "//src/workerd/api/node",
339 "//src/workerd/io",
340 ],
341)
342 
343wd_cc_library(
344 name = "html-rewriter",
345 srcs = ["html-rewriter.c++"],
346 hdrs = ["html-rewriter.h"],
347 implementation_deps = [
348 "@com_cloudflare_lol_html//:lolhtml",
349 ],
350 visibility = ["//visibility:public"],
351 deps = [
352 "//src/workerd/io",
353 ],
354)
355 
356wd_cc_library(
357 name = "hyperdrive",
358 srcs = ["hyperdrive.c++"],
359 hdrs = ["hyperdrive.h"],
360 implementation_deps = [
361 "//src/workerd/util:entropy",
362 ],
363 visibility = ["//visibility:public"],
364 deps = [
365 "//src/workerd/io",
366 ],
367)
368 
369wd_cc_library(
370 name = "pyodide",
371 srcs = [
372 "pyodide/pyodide.c++",
373 "pyodide/requirements.c++",
374 ],
375 hdrs = [
376 "pyodide/pyodide.h",
377 "pyodide/requirements.h",
378 "//src/pyodide:generated/pyodide_extra.capnp.h",
379 "//src/pyodide:pyodide_static.capnp.h",
380 ],
381 implementation_deps = [
382 "//src/workerd/io",
383 "//src/workerd/util:strings",
384 ],
385 visibility = ["//visibility:public"],
386 deps = [
387 "//src/pyodide:pyodide_extra_capnp",
388 "//src/pyodide:pyodide_static",
389 "//src/workerd/io:compatibility-date_capnp",
390 "//src/workerd/jsg",
391 "@capnp-cpp//src/kj:kj-async",
392 "@capnp-cpp//src/kj/compat:kj-gzip",
393 "@capnp-cpp//src/kj/compat:kj-http",
394 "@capnp-cpp//src/kj/compat:kj-tls",
395 ],
396)
397 
398kj_test(
399 src = "pyodide/pyodide-test.c++",
400 deps = [":pyodide"],
401)
402 
403wd_cc_library(
404 name = "util",
405 srcs = ["util.c++"],
406 hdrs = ["util.h"],
407 implementation_deps = [
408 "//src/workerd/util:mimetype",
409 "//src/workerd/util:strings",
410 "@simdutf",
411 ],
412 visibility = ["//visibility:public"],
413 deps = [
414 "//src/workerd/jsg",
415 "@capnp-cpp//src/kj",
416 ],
417)
418 
419wd_cc_library(
420 name = "encoding",
421 srcs = [
422 "encoding.c++",
423 "encoding-legacy.c++",
424 ],
425 hdrs = [
426 "encoding.h",
427 "encoding-legacy.h",
428 "encoding-shared.h",
429 ],
430 implementation_deps = [
431 "//src/workerd/util:strings",
432 "@simdutf",
433 ],
434 visibility = ["//visibility:public"],
435 deps = [
436 ":util",
437 "//src/rust/encoding",
438 "//src/workerd/io:compatibility-date_capnp",
439 "//src/workerd/io:features",
440 "//src/workerd/jsg",
441 "@capnp-cpp//src/kj",
442 "@simdutf",
443 "@workerd-cxx//kj-rs",
444 ],
445)
446 
447wd_cc_library(
448 name = "data-url",
449 srcs = ["data-url.c++"],
450 hdrs = ["data-url.h"],
451 implementation_deps = [
452 ":encoding",
453 "//src/workerd/util:strings",
454 ],
455 visibility = ["//visibility:public"],
456 deps = [
457 "//src/workerd/jsg:url",
458 "//src/workerd/util:mimetype",
459 "@capnp-cpp//src/kj",
460 ],
461)
462 
463wd_cc_library(
464 name = "deferred-proxy",
465 hdrs = ["deferred-proxy.h"],
466 visibility = ["//visibility:public"],
467 deps = [
468 "@capnp-cpp//src/kj",
469 "@capnp-cpp//src/kj:kj-async",
470 ],
471)
472 
473wd_capnp_library(src = "r2-api.capnp")
474 
475wd_capnp_library(src = "analytics-engine.capnp")
476 
477wd_cc_library(
478 name = "url",
479 srcs = ["url.c++"],
480 hdrs = ["url.h"],
481 implementation_deps = [":util"],
482 visibility = ["//visibility:public"],
483 deps = [
484 "//src/workerd/io:compatibility-date_capnp",
485 "//src/workerd/jsg",
486 "@capnp-cpp//src/kj",
487 ],
488)
489 
490wd_cc_library(
491 name = "urlpattern",
492 srcs = ["urlpattern.c++"],
493 hdrs = ["urlpattern.h"],
494 visibility = ["//visibility:public"],
495 deps = [
496 ":url",
497 "//src/workerd/jsg",
498 "//src/workerd/util:own-util",
499 "@capnp-cpp//src/kj",
500 ],
501)
502 
503wd_cc_library(
504 name = "urlpattern-standard",
505 srcs = ["urlpattern-standard.c++"],
506 hdrs = ["urlpattern-standard.h"],
507 visibility = ["//visibility:public"],
508 deps = [
509 "//src/workerd/jsg",
510 "@ada-url",
511 "@capnp-cpp//src/kj",
512 ],
513)
514 
515####################################################################################################
516## Tests
517 
518[
519 kj_test(
520 src = f,
521 deps = [
522 "//src/workerd/io",
523 "//src/workerd/io:promise-wrapper",
524 ],
525 )
526 for f in [
527 "actor-state-test.c++",
528 "basics-test.c++",
529 "crypto/aes-test.c++",
530 "crypto/impl-test.c++",
531 ]
532]
533 
534[
535 kj_test(
536 src = f,
537 deps = [
538 "//src/workerd/io",
539 "//src/workerd/io:promise-wrapper",
540 "//src/workerd/tests:test-fixture",
541 ],
542 )
543 for f in [
544 "streams/queue-test.c++",
545 "streams/standard-test.c++",
546 ]
547]
548 
549kj_test(
550 src = "data-url-test.c++",
551 deps = [
552 ":data-url",
553 "//src/workerd/io",
554 ],
555)
556 
557kj_test(
558 src = "util-test.c++",
559 deps = [
560 ":util",
561 ],
562)
563 
564kj_test(
565 src = "deferred-proxy-test.c++",
566 deps = [
567 ":deferred-proxy",
568 ],
569)
570 
571kj_test(
572 src = "streams/internal-test.c++",
573 deps = [
574 "//src/workerd/io",
575 "//src/workerd/tests:test-fixture",
576 ],
577)
578 
579kj_test(
580 src = "streams-test.c++",
581 deps = [
582 "//src/workerd/io",
583 "//src/workerd/tests:test-fixture",
584 ],
585)
586 
587kj_test(
588 src = "system-streams-test.c++",
589 deps = [
590 "//src/workerd/io",
591 "//src/workerd/tests:test-fixture",
592 ],
593)
594 
595kj_test(
596 src = "actor-state-iocontext-test.c++",
597 deps = [
598 "//src/workerd/io",
599 "//src/workerd/tests:test-fixture",
600 ],
601)
602 
603kj_test(
604 src = "sockets-test.c++",
605 deps = [
606 "//src/workerd/io",
607 "//src/workerd/io:worker-interface",
608 "//src/workerd/tests:test-fixture",
609 "//src/workerd/util:autogate",
610 ],
611)
612 
613kj_test(
614 src = "api-rtti-test.c++",
615 deps = [
616 ":encoding",
617 ":html-rewriter",
618 ":streams",
619 ":urlpattern",
620 ":urlpattern-standard",
621 "//src/workerd/io",
622 "//src/workerd/jsg:rtti",
623 ],
624)
625 
626kj_test(
627 src = "encoding-test.c++",
628 deps = [
629 ":encoding",
630 "//src/workerd/io",
631 ],
632)
633 
634kj_test(
635 src = "base64-test.c++",
636 deps = ["//src/workerd/tests:test-fixture"],
637)
638 
639kj_test(
640 src = "ser-errors-test.c++",
641 deps = [
642 "//src/workerd/jsg",
643 "//src/workerd/tests:test-fixture",
644 ],
645)
646 
647kj_test(
648 src = "cf-property-test.c++",
649 deps = ["//src/workerd/tests:test-fixture"],
650)
651 
652kj_test(
653 src = "streams/writable-sink-test.c++",
654 deps = [
655 "//src/workerd/io",
656 "//src/workerd/jsg",
657 "//src/workerd/tests:test-fixture",
658 ],
659)
660 
661kj_test(
662 src = "streams/readable-source-test.c++",
663 deps = [
664 "//src/workerd/io",
665 "//src/workerd/jsg",
666 "//src/workerd/tests:test-fixture",
667 ],
668)
669 
670kj_test(
671 src = "streams/writable-sink-adapter-test.c++",
672 deps = [
673 "//src/workerd/io",
674 "//src/workerd/jsg",
675 "//src/workerd/tests:test-fixture",
676 ],
677)
678 
679kj_test(
680 src = "streams/readable-source-adapter-test.c++",
681 deps = [
682 "//src/workerd/io",
683 "//src/workerd/jsg",
684 "//src/workerd/tests:test-fixture",
685 ],
686)
687 
688wd_test(
689 src = "streams/identitytransformstream-backpressure-test.wd-test",
690 args = ["--experimental"],
691 data = ["streams/identitytransformstream-backpressure-test.js"],
692)
693 
694wd_test(
695 src = "streams/identitytransformstream-byob-test.wd-test",
696 args = ["--experimental"],
697 data = ["streams/identitytransformstream-byob-test.js"],
698)
699 
700wd_test(
701 src = "streams/streams-test.wd-test",
702 args = ["--experimental"],
703 data = ["streams/streams-test.js"],
704)