Revert "Revert "[web] Add `js_types` sources to build. (#40597)" (#40685)"

This reverts commit 4bc9341d047199bc7178d5d4e533a5875aecfc70.
diff --git a/sky/packages/sky_engine/BUILD.gn b/sky/packages/sky_engine/BUILD.gn
index dad2a02..ae0207d 100644
--- a/sky/packages/sky_engine/BUILD.gn
+++ b/sky/packages/sky_engine/BUILD.gn
@@ -8,6 +8,7 @@
 import("//third_party/dart/sdk/lib/_http/http_sources.gni")
 import(
     "//third_party/dart/sdk/lib/_internal/js_runtime/interceptors_sources.gni")
+import("//third_party/dart/sdk/lib/_internal/js_shared/js_types_sources.gni")
 import("//third_party/dart/sdk/lib/async/async_sources.gni")
 import("//third_party/dart/sdk/lib/collection/collection_sources.gni")
 import("//third_party/dart/sdk/lib/convert/convert_sources.gni")
@@ -18,6 +19,7 @@
 import("//third_party/dart/sdk/lib/internal/internal_sources.gni")
 import("//third_party/dart/sdk/lib/io/io_sources.gni")
 import("//third_party/dart/sdk/lib/isolate/isolate_sources.gni")
+import("//third_party/dart/sdk/lib/js/js_annotations_sources.gni")
 import("//third_party/dart/sdk/lib/js/js_sources.gni")
 import("//third_party/dart/sdk/lib/js_interop/js_interop_sources.gni")
 import("//third_party/dart/sdk/lib/js_util/js_util_sources.gni")
@@ -86,6 +88,19 @@
   ]
 }
 
+copy("_js_annotations") {
+  lib_path = rebase_path("js", "", dart_sdk_lib_path)
+  sources = rebase_path(js_annotations_sdk_sources, "", lib_path)
+  outputs = [ "$root_gen_dir/dart-pkg/sky_engine/lib/_js_annotations/{{source_file_part}}" ]
+}
+
+copy("_js_types") {
+  lib_path = rebase_path("_internal/js_shared", "", dart_sdk_lib_path)
+  sources = rebase_path(js_types_sdk_sources, "", lib_path)
+  outputs =
+      [ "$root_gen_dir/dart-pkg/sky_engine/lib/_js_types/{{source_file_part}}" ]
+}
+
 copy("internal") {
   lib_path = rebase_path("internal", "", dart_sdk_lib_path)
   sources = rebase_path(internal_sdk_sources, "", lib_path)
@@ -180,6 +195,8 @@
   deps = [
     ":_http",
     ":_interceptors",
+    ":_js_annotations",
+    ":_js_types",
     ":async",
     ":collection",
     ":convert",
@@ -230,6 +247,10 @@
     "  # public API, e.g. List being Iterable by virtue of implementing",
     "  # EfficientLengthIterable. Not including this library yields analysis errors.",
     "  \"dart:_internal\": \"internal/internal.dart\"",
+    "  # The _js_annotations library is also needed for the same reasons as _internal.",
+    "  \"dart:_js_annotations\": \"_js_annotations/_js_annotations.dart\"",
+    "  # The _js_types library is also needed for the same reasons as _internal.",
+    "  \"dart:_js_types\": \"_js_types/js_types.dart\"",
     "  \"dart:nativewrappers\": \"_empty.dart\"",
   ]
 }
diff --git a/sky/packages/sky_engine/lib/_embedder.yaml b/sky/packages/sky_engine/lib/_embedder.yaml
index bcd988c..69436dc 100644
--- a/sky/packages/sky_engine/lib/_embedder.yaml
+++ b/sky/packages/sky_engine/lib/_embedder.yaml
@@ -25,4 +25,8 @@
   # public API, e.g. List being Iterable by virtue of implementing
   # EfficientLengthIterable. Not including this library yields analysis errors.
   "dart:_internal": "../../../../../third_party/dart/sdk/lib/internal/internal.dart"
+  # The _js_annotations library is also needed for the same reasons as _internal.
+  "dart:_js_annotations": "../../../../../third_party/dart/sdk/lib/js/_js_annotations.dart"
+  # The _js_types library is also needed for the same reasons as _internal.
+  "dart:_js_types": "../../../../../third_party/dart/sdk/lib/_internal/js_shared/lib/js_types.dart"
   "dart:nativewrappers": "_empty.dart"