├── README.md ├── VSCode-win32-arm64.7z ├── buildFiles ├── electron │ └── src │ │ ├── build │ │ └── config │ │ │ └── compiler │ │ │ └── BUILD.gn │ │ └── electron │ │ ├── BUILD.gn │ │ └── build │ │ └── args │ │ └── release.gn └── vscode │ ├── .yarnrc │ ├── build │ ├── gulpfile.vscode.js │ ├── gulpfile.vscode.win32.js │ ├── npm │ │ ├── postinstall.js │ │ └── preinstall.js │ ├── package.json │ └── yarn.lock │ ├── extensions │ ├── package.json │ └── yarn.lock │ ├── package.json │ ├── remote │ ├── .yarnrc │ ├── package.json │ ├── web │ │ ├── .yarnrc │ │ ├── package.json │ │ └── yarn.lock │ └── yarn.lock │ └── yarn.lock ├── electon_dist.7z ├── gn.exe ├── node.lib └── screenshot.jfif /README.md: -------------------------------------------------------------------------------- 1 | HOW TO BUILD 2 | ---- 3 | 4 | This is a simple instruction on the build step of Code - OSS for Windows ARM64 PCs. 5 | 6 | ## Requirements 7 | 8 | + Electron v6-0-x (simply use gclient to checkout both the Chromium and the Electron source) 9 | + Chromium 76.0.3309.118 10 | + Code-OSS branch electron 6.0.x 11 | + VS 2019 and its build tools 12 | 13 | 14 | ## Notes 15 | 16 | I dont want to push or fork so I will only note some key issues: 17 | 18 | ### Electron / Chromium 19 | 20 | For VS2019, you need to specify /std:c++17 for all projects and suppress some warnings like microsoft-spec. Electron is strictly built against chrome 76.0.3309.118 so you may not want to checkout other versions. 21 | If you have any experiences with a chromium build you will find it quite straightforward. 22 | 23 | As chrome 76 is considered an "old" version of chrome, you may need the correct gn.exe. Fortunately, I have prepared that for you. 24 | 25 | 26 | ### Node 27 | 28 | If you dont want to build electron from scratch you can jump to this section. 29 | 30 | With electon and its libraries, all of the projects can be cross-compiled because the node runtime is actually inside the Electron main executable. So you do not need to build Node once again. Once you set the msvs_version and target cpu you can build all of the native node_modules. 31 | Note that some of the node_modules may not compile due to the bump of v8 version. You may simply replace these requirements with my forked repos. 32 | 33 | Still, when node-gyp propmts that the v6.0.1 arm64 lib is missing (because electron does not prepare that for us), just place the prebuilt node.lib in the "arm64" sub-folder inside the node-gyp cache. The automatically downloaded header is suitable for build. 34 | 35 | 36 | ### VSCode 37 | 38 | Do not build VSCode with native ARM64 node. It looks like tsc does not work well with the current Node binary. Please always do a cross compile. 39 | For other things just do a yarn and npm compile. 40 | 41 | ### About Extensions 42 | 43 | Someone has reported empty extensions. Basically this repo has included essential *native* extensions for you. For other non-native extensions, you can copy extension data from any (synced) x86-based VSCode and paste into your Code-OSS data folder. 44 | 45 | ## Screenshot 46 | 47 | ![Screenshot](screenshot.jfif) 48 | 49 | Personally speaking, the execution speed is damn fast (!). I tested on a Snapdragon 850 tablet w/ 8 Gigs of memory. The editing is quite smooth and the scrolling does not lag at all. The overall performance is better than a MacBook 12" (Core M/HD 615), even with several(9) extensions enabled. 50 | -------------------------------------------------------------------------------- /VSCode-win32-arm64.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ljsabc/Code-OSS-Win32-arm64/4b9341ec307301f200372a47ac24b30d9c69771a/VSCode-win32-arm64.7z -------------------------------------------------------------------------------- /buildFiles/electron/src/electron/BUILD.gn: -------------------------------------------------------------------------------- 1 | import("//build/config/locales.gni") 2 | import("//build/config/ui.gni") 3 | import("//build/config/win/manifest.gni") 4 | import("//content/public/app/mac_helpers.gni") 5 | import("//pdf/features.gni") 6 | import("//printing/buildflags/buildflags.gni") 7 | import("//third_party/ffmpeg/ffmpeg_options.gni") 8 | import("//tools/generate_library_loader/generate_library_loader.gni") 9 | import("//tools/grit/grit_rule.gni") 10 | import("//tools/grit/repack.gni") 11 | import("//tools/v8_context_snapshot/v8_context_snapshot.gni") 12 | import("//v8/gni/snapshot_toolchain.gni") 13 | import("build/asar.gni") 14 | import("build/extract_symbols.gni") 15 | import("build/js_wrap.gni") 16 | import("build/npm.gni") 17 | import("build/tsc.gni") 18 | import("buildflags/buildflags.gni") 19 | import("electron_paks.gni") 20 | import("filenames.auto.gni") 21 | import("filenames.gni") 22 | 23 | if (is_mac) { 24 | import("//build/config/mac/rules.gni") 25 | import("//third_party/icu/config.gni") 26 | import("//ui/gl/features.gni") 27 | import("//v8/gni/v8.gni") 28 | } 29 | 30 | if (is_linux) { 31 | import("//build/config/linux/pkg_config.gni") 32 | 33 | pkg_config("gio_unix") { 34 | packages = [ "gio-unix-2.0" ] 35 | } 36 | 37 | pkg_config("libnotify_config") { 38 | packages = [ 39 | "glib-2.0", 40 | "gdk-pixbuf-2.0", 41 | ] 42 | } 43 | } 44 | 45 | branding = read_file("atom/app/BRANDING.json", "json") 46 | electron_project_name = branding.project_name 47 | electron_product_name = branding.product_name 48 | electron_mac_bundle_id = branding.mac_bundle_id 49 | 50 | if (is_mas_build) { 51 | assert(is_mac, 52 | "It doesn't make sense to build a MAS build on a non-mac platform") 53 | } 54 | 55 | config("branding") { 56 | defines = [ 57 | "ATOM_PRODUCT_NAME=\"$electron_product_name\"", 58 | "ATOM_PROJECT_NAME=\"$electron_project_name\"", 59 | ] 60 | } 61 | 62 | # We geneate the definitions twice here, once in //electron/electron.d.ts 63 | # and once in $target_gen_dir 64 | # The one in $target_gen_dir is used for the actual TSC build later one 65 | # and the one in //electron/electron.d.ts is used by your IDE (vscode) 66 | # for typescript prompting 67 | npm_action("build_electron_definitions") { 68 | script = "gn-typescript-definitions" 69 | args = [ rebase_path("$target_gen_dir/tsc/typings/electron.d.ts") ] 70 | inputs = auto_filenames.api_docs + [ "yarn.lock" ] 71 | 72 | outputs = [ 73 | "$target_gen_dir/tsc/typings/electron.d.ts", 74 | ] 75 | } 76 | 77 | npm_action("atom_browserify_sandbox_unwrapped") { 78 | script = "browserify" 79 | deps = [ 80 | ":build_electron_definitions", 81 | ] 82 | 83 | inputs = auto_filenames.sandbox_browserify_deps 84 | 85 | outputs = [ 86 | "$target_gen_dir/js2c/sandbox_bundle_unwrapped.js", 87 | ] 88 | 89 | args = [ 90 | "lib/sandboxed_renderer/init.js", 91 | "-r", 92 | "./lib/sandboxed_renderer/api/exports/electron.js:electron", 93 | "-t", 94 | "aliasify", 95 | "-p", 96 | "[", 97 | "tsify", 98 | "-p", 99 | "tsconfig.electron.json", 100 | "]", 101 | "--standalone", 102 | "sandboxed_preload", 103 | "-o", 104 | rebase_path(outputs[0]), 105 | ] 106 | } 107 | 108 | npm_action("atom_browserify_isolated_unwrapped") { 109 | script = "browserify" 110 | deps = [ 111 | ":build_electron_definitions", 112 | ] 113 | 114 | inputs = auto_filenames.isolated_browserify_deps 115 | 116 | outputs = [ 117 | "$target_gen_dir/js2c/isolated_bundle_unwrapped.js", 118 | ] 119 | 120 | args = [ 121 | "lib/isolated_renderer/init.js", 122 | "-t", 123 | "aliasify", 124 | "-p", 125 | "[", 126 | "tsify", 127 | "-p", 128 | "tsconfig.electron.json", 129 | "]", 130 | "--standalone", 131 | "isolated_preload", 132 | "-o", 133 | rebase_path(outputs[0]), 134 | ] 135 | } 136 | 137 | npm_action("atom_browserify_content_script_unwrapped") { 138 | script = "browserify" 139 | deps = [ 140 | ":build_electron_definitions", 141 | ] 142 | 143 | inputs = auto_filenames.context_script_browserify_deps 144 | 145 | outputs = [ 146 | "$target_gen_dir/js2c/content_script_bundle_unwrapped.js", 147 | ] 148 | 149 | args = [ 150 | "lib/content_script/init.js", 151 | "-t", 152 | "aliasify", 153 | "-p", 154 | "[", 155 | "tsify", 156 | "-p", 157 | "tsconfig.electron.json", 158 | "]", 159 | "--standalone", 160 | "content_script_preload", 161 | "-o", 162 | rebase_path(outputs[0]), 163 | ] 164 | } 165 | 166 | js_wrap("atom_browserify_content_script") { 167 | deps = [ 168 | ":atom_browserify_content_script_unwrapped", 169 | ] 170 | 171 | inputs = [ 172 | "$target_gen_dir/js2c/content_script_bundle_unwrapped.js", 173 | ] 174 | 175 | outputs = [ 176 | "$target_gen_dir/js2c/content_script_bundle.js", 177 | ] 178 | } 179 | 180 | js_wrap("atom_browserify_isolated") { 181 | deps = [ 182 | ":atom_browserify_isolated_unwrapped", 183 | ] 184 | 185 | inputs = [ 186 | "$target_gen_dir/js2c/isolated_bundle_unwrapped.js", 187 | ] 188 | 189 | outputs = [ 190 | "$target_gen_dir/js2c/isolated_bundle.js", 191 | ] 192 | } 193 | 194 | js_wrap("atom_browserify_sandbox") { 195 | deps = [ 196 | ":atom_browserify_sandbox_unwrapped", 197 | ] 198 | 199 | inputs = [ 200 | "$target_gen_dir/js2c/sandbox_bundle_unwrapped.js", 201 | ] 202 | 203 | outputs = [ 204 | "$target_gen_dir/js2c/sandbox_bundle.js", 205 | ] 206 | } 207 | 208 | copy("atom_js2c_copy") { 209 | sources = [ 210 | "lib/common/asar.js", 211 | "lib/common/asar_init.js", 212 | ] 213 | outputs = [ 214 | "$target_gen_dir/js2c/{{source_file_part}}", 215 | ] 216 | } 217 | 218 | action("atom_js2c") { 219 | deps = [ 220 | ":atom_browserify_content_script", 221 | ":atom_browserify_isolated", 222 | ":atom_browserify_sandbox", 223 | ":atom_js2c_copy", 224 | ] 225 | 226 | browserify_sources = [ 227 | "$target_gen_dir/js2c/content_script_bundle.js", 228 | "$target_gen_dir/js2c/isolated_bundle.js", 229 | "$target_gen_dir/js2c/sandbox_bundle.js", 230 | ] 231 | 232 | sources = browserify_sources + [ 233 | "$target_gen_dir/js2c/asar.js", 234 | "$target_gen_dir/js2c/asar_init.js", 235 | ] 236 | 237 | inputs = sources + [ "//third_party/electron_node/tools/js2c.py" ] 238 | outputs = [ 239 | "$root_gen_dir/atom_natives.cc", 240 | ] 241 | 242 | script = "tools/js2c.py" 243 | args = [ rebase_path("//third_party/electron_node") ] + 244 | rebase_path(outputs, root_build_dir) + 245 | rebase_path(sources, root_build_dir) 246 | } 247 | 248 | target_gen_electron_js = "$target_gen_dir/js/electron" 249 | target_gen_default_app_js = "$target_gen_dir/js/default_app" 250 | 251 | typescript_build("lib_js") { 252 | deps = [ 253 | ":build_electron_definitions", 254 | ] 255 | type_root = rebase_path("$target_gen_dir/tsc/electron/typings") 256 | 257 | sources = filenames.js_sources 258 | if (enable_desktop_capturer) { 259 | sources += [ 260 | "lib/browser/desktop-capturer.js", 261 | "lib/renderer/api/desktop-capturer.js", 262 | ] 263 | } 264 | if (enable_view_api) { 265 | sources += [ 266 | "lib/browser/api/views/box-layout.js", 267 | "lib/browser/api/views/button.js", 268 | "lib/browser/api/views/label-button.js", 269 | "lib/browser/api/views/layout-manager.js", 270 | "lib/browser/api/views/md-text-button.js", 271 | "lib/browser/api/views/resize-area.js", 272 | "lib/browser/api/views/text-field.js", 273 | ] 274 | } 275 | 276 | output_gen_dir = target_gen_electron_js 277 | output_dir_name = "lib" 278 | tsconfig = "tsconfig.electron.json" 279 | } 280 | 281 | asar("electron_asar") { 282 | deps = [ 283 | ":lib_js", 284 | ] 285 | 286 | root = "$target_gen_electron_js/electron/lib" 287 | sources = get_target_outputs(":lib_js") 288 | outputs = [ 289 | "$root_out_dir/resources/electron.asar", 290 | ] 291 | } 292 | 293 | typescript_build("default_app_js") { 294 | deps = [ 295 | ":build_electron_definitions", 296 | ] 297 | type_root = rebase_path("$target_gen_dir/tsc/electron/typings") 298 | 299 | sources = filenames.default_app_ts_sources 300 | 301 | output_gen_dir = target_gen_default_app_js 302 | output_dir_name = "default_app" 303 | tsconfig = "tsconfig.default_app.json" 304 | } 305 | 306 | copy("default_app_static") { 307 | sources = filenames.default_app_static_sources 308 | outputs = [ 309 | "$target_gen_default_app_js/{{source}}", 310 | ] 311 | } 312 | 313 | copy("default_app_octicon_deps") { 314 | sources = filenames.default_app_octicon_sources 315 | outputs = [ 316 | "$target_gen_default_app_js/electron/default_app/octicon/{{source_file_part}}", 317 | ] 318 | } 319 | 320 | asar("default_app_asar") { 321 | deps = [ 322 | ":default_app_js", 323 | ":default_app_octicon_deps", 324 | ":default_app_static", 325 | ] 326 | 327 | root = "$target_gen_default_app_js/electron/default_app" 328 | sources = get_target_outputs(":default_app_js") + 329 | get_target_outputs(":default_app_static") + 330 | get_target_outputs(":default_app_octicon_deps") 331 | outputs = [ 332 | "$root_out_dir/resources/default_app.asar", 333 | ] 334 | } 335 | 336 | grit("resources") { 337 | source = "electron_resources.grd" 338 | 339 | outputs = [ 340 | "grit/electron_resources.h", 341 | "electron_resources.pak", 342 | ] 343 | 344 | # Mojo manifest overlays are generated. 345 | source_is_generated = true 346 | grit_flags = [ 347 | "-E", 348 | "target_gen_dir=" + rebase_path(target_gen_dir, root_build_dir), 349 | ] 350 | 351 | deps = [ 352 | ":copy_shell_devtools_discovery_page", 353 | ] 354 | 355 | output_dir = "$target_gen_dir" 356 | } 357 | 358 | copy("copy_shell_devtools_discovery_page") { 359 | sources = [ 360 | "//content/shell/resources/shell_devtools_discovery_page.html", 361 | ] 362 | outputs = [ 363 | "$target_gen_dir/shell_devtools_discovery_page.html", 364 | ] 365 | } 366 | 367 | if (is_linux) { 368 | generate_library_loader("libnotify_loader") { 369 | name = "LibNotifyLoader" 370 | output_h = "libnotify_loader.h" 371 | output_cc = "libnotify_loader.cc" 372 | header = "" 373 | config = ":libnotify_config" 374 | 375 | functions = [ 376 | "notify_is_initted", 377 | "notify_init", 378 | "notify_get_server_caps", 379 | "notify_get_server_info", 380 | "notify_notification_new", 381 | "notify_notification_add_action", 382 | "notify_notification_set_image_from_pixbuf", 383 | "notify_notification_set_timeout", 384 | "notify_notification_set_hint_string", 385 | "notify_notification_show", 386 | "notify_notification_close", 387 | ] 388 | } 389 | } 390 | 391 | source_set("manifests") { 392 | sources = [ 393 | "//electron/atom/app/manifests.cc", 394 | "//electron/atom/app/manifests.h", 395 | ] 396 | 397 | include_dirs = [ "//electron" ] 398 | 399 | deps = [ 400 | "//electron/atom/common/api:mojo", 401 | "//printing/buildflags", 402 | "//services/proxy_resolver/public/cpp:manifest", 403 | "//services/service_manager/public/cpp", 404 | ] 405 | 406 | if (enable_basic_printing) { 407 | deps += [ "//components/services/pdf_compositor/public/cpp:manifest" ] 408 | } 409 | 410 | if (enable_print_preview) { 411 | deps += [ "//chrome/services/printing/public/cpp:manifest" ] 412 | } 413 | } 414 | 415 | static_library("electron_lib") { 416 | configs += [ "//v8:external_startup_data" ] 417 | configs += [ "//third_party/electron_node:node_internals" ] 418 | 419 | public_configs = [ ":branding" ] 420 | 421 | deps = [ 422 | ":atom_js2c", 423 | ":manifests", 424 | ":resources", 425 | "atom/common/api:mojo", 426 | "buildflags", 427 | "chromium_src:chrome", 428 | "native_mate", 429 | "//base:base_static", 430 | "//base/allocator:buildflags", 431 | "//chrome/app/resources:platform_locale_settings", 432 | "//components/certificate_transparency", 433 | "//components/net_log", 434 | "//components/network_session_configurator/common", 435 | "//components/prefs", 436 | "//components/spellcheck/renderer", 437 | "//components/viz/host", 438 | "//components/viz/service", 439 | "//content/public/browser", 440 | "//content/public/child", 441 | "//content/public/common:service_names", 442 | "//content/public/renderer", 443 | "//content/public/utility", 444 | "//device/bluetooth", 445 | "//gin", 446 | "//media/capture/mojom:video_capture", 447 | "//media/mojo/interfaces", 448 | "//net:extras", 449 | "//net:net_resources", 450 | "//net:net_with_v8", 451 | "//ppapi/host", 452 | "//ppapi/proxy", 453 | "//ppapi/shared_impl", 454 | "//printing/buildflags", 455 | "//services/audio/public/mojom:constants", 456 | "//services/device/public/cpp/geolocation", 457 | "//services/device/public/mojom", 458 | "//services/proxy_resolver:lib", 459 | "//services/video_capture/public/mojom:constants", 460 | "//services/viz/privileged/interfaces/compositing", 461 | "//skia", 462 | "//third_party/blink/public:blink", 463 | "//third_party/boringssl", 464 | "//third_party/electron_node:node_lib", 465 | "//third_party/leveldatabase", 466 | "//third_party/libyuv", 467 | "//third_party/webrtc_overrides:init_webrtc", 468 | "//third_party/widevine/cdm:headers", 469 | "//ui/base/idle", 470 | "//ui/events:dom_keycode_converter", 471 | "//ui/gl", 472 | "//ui/native_theme", 473 | "//ui/shell_dialogs", 474 | "//ui/views", 475 | "//v8", 476 | "//v8:v8_libplatform", 477 | ] 478 | 479 | public_deps = [ 480 | "//base", 481 | "//base:i18n", 482 | "//content/public/app:both", 483 | ] 484 | 485 | include_dirs = [ 486 | "chromium_src", 487 | ".", 488 | "$target_gen_dir", 489 | 490 | # TODO(nornagon): replace usage of SchemeRegistry by an actually exported 491 | # API of blink, then remove this from the include_dirs. 492 | "//third_party/blink/renderer", 493 | ] 494 | 495 | defines = [ "V8_DEPRECATION_WARNINGS" ] 496 | libs = [] 497 | 498 | if (is_linux) { 499 | defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ] 500 | } 501 | 502 | extra_source_filters = [] 503 | if (!is_linux) { 504 | extra_source_filters += [ 505 | "*\bx/*", 506 | "*_x11.h", 507 | "*_x11.cc", 508 | "*_gtk.h", 509 | "*_gtk.cc", 510 | "*\blibrary_loaders/*", 511 | ] 512 | } 513 | if (!is_win) { 514 | extra_source_filters += [ 515 | "*\bwin_*.h", 516 | "*\bwin_*.cc", 517 | ] 518 | } 519 | if (!is_posix) { 520 | extra_source_filters += [ 521 | "*_posix.cc", 522 | "*_posix.h", 523 | ] 524 | } 525 | if (is_mac) { 526 | extra_source_filters += [ 527 | "*_views.cc", 528 | "*_views.h", 529 | "*\bviews/*", 530 | ] 531 | } 532 | 533 | set_sources_assignment_filter( 534 | sources_assignment_filter + extra_source_filters) 535 | sources = filenames.lib_sources 536 | set_sources_assignment_filter(sources_assignment_filter) 537 | 538 | if (is_component_build) { 539 | defines += [ "NODE_SHARED_MODE" ] 540 | } 541 | 542 | if (enable_fake_location_provider) { 543 | sources += [ 544 | "atom/browser/fake_location_provider.cc", 545 | "atom/browser/fake_location_provider.h", 546 | ] 547 | } 548 | 549 | if (is_mac) { 550 | deps += [ 551 | "//components/remote_cocoa/app_shim", 552 | "//content/common:mac_helpers", 553 | "//ui/accelerated_widget_mac", 554 | ] 555 | sources += [ 556 | "atom/browser/ui/views/autofill_popup_view.cc", 557 | "atom/browser/ui/views/autofill_popup_view.h", 558 | ] 559 | if (is_mas_build) { 560 | sources += [ "atom/browser/api/atom_api_app_mas.mm" ] 561 | sources -= [ 562 | "atom/browser/auto_updater_mac.mm", 563 | "atom/common/crash_reporter/crash_reporter_mac.h", 564 | "atom/common/crash_reporter/crash_reporter_mac.mm", 565 | ] 566 | defines += [ "MAS_BUILD" ] 567 | } else { 568 | libs += [ 569 | "Squirrel.framework", 570 | "ReactiveCocoa.framework", 571 | "Mantle.framework", 572 | ] 573 | cflags_objcc = [ 574 | "-F", 575 | rebase_path("external_binaries", root_build_dir), 576 | ] 577 | 578 | # ReactiveCocoa which is used by Squirrel requires using __weak. 579 | cflags_objcc += [ "-fobjc-weak" ] 580 | } 581 | } 582 | if (is_linux) { 583 | deps += [ 584 | ":libnotify_loader", 585 | "//build/config/linux/gtk", 586 | "//chrome/browser/ui/libgtkui", 587 | "//dbus", 588 | "//device/bluetooth", 589 | "//third_party/breakpad:client", 590 | "//ui/events/devices/x11", 591 | "//ui/events/platform/x11", 592 | "//ui/views/controls/webview", 593 | "//ui/wm", 594 | ] 595 | configs += [ ":gio_unix" ] 596 | include_dirs += [ "//third_party/breakpad" ] 597 | defines += [ 598 | # Disable warnings for g_settings_list_schemas. 599 | "GLIB_DISABLE_DEPRECATION_WARNINGS", 600 | ] 601 | 602 | sources += filenames.lib_sources_nss 603 | } 604 | if (is_win) { 605 | libs += [ "dwmapi.lib" ] 606 | deps += [ 607 | "//ui/native_theme:native_theme_browser", 608 | "//ui/views/controls/webview", 609 | "//ui/wm", 610 | "//ui/wm/public", 611 | ] 612 | public_deps += [ 613 | "//sandbox/win:sandbox", 614 | "//third_party/crashpad/crashpad/handler", 615 | ] 616 | } 617 | 618 | if ((is_mac && !is_mas_build) || is_win) { 619 | sources += [ 620 | "atom/common/crash_reporter/crash_reporter_crashpad.cc", 621 | "atom/common/crash_reporter/crash_reporter_crashpad.h", 622 | ] 623 | deps += [ "//third_party/crashpad/crashpad/client" ] 624 | } 625 | 626 | if (enable_pdf) { 627 | deps += [ "//pdf" ] 628 | } 629 | 630 | if (enable_run_as_node) { 631 | sources += [ 632 | "atom/app/node_main.cc", 633 | "atom/app/node_main.h", 634 | ] 635 | } 636 | 637 | if (enable_osr) { 638 | sources += [ 639 | "atom/browser/osr/osr_host_display_client.cc", 640 | "atom/browser/osr/osr_host_display_client.h", 641 | "atom/browser/osr/osr_host_display_client_mac.mm", 642 | "atom/browser/osr/osr_render_widget_host_view.cc", 643 | "atom/browser/osr/osr_render_widget_host_view.h", 644 | "atom/browser/osr/osr_video_consumer.cc", 645 | "atom/browser/osr/osr_video_consumer.h", 646 | "atom/browser/osr/osr_view_proxy.cc", 647 | "atom/browser/osr/osr_view_proxy.h", 648 | "atom/browser/osr/osr_web_contents_view.cc", 649 | "atom/browser/osr/osr_web_contents_view.h", 650 | "atom/browser/osr/osr_web_contents_view_mac.mm", 651 | ] 652 | deps += [ 653 | "//components/viz/service", 654 | "//services/viz/public/interfaces", 655 | "//ui/compositor", 656 | ] 657 | } 658 | 659 | if (enable_desktop_capturer) { 660 | if (is_component_build && is_win) { 661 | # On windows the implementation relies on unexported 662 | # DxgiDuplicatorController class. 663 | deps += [ "//third_party/webrtc/modules/desktop_capture" ] 664 | } 665 | sources += [ 666 | "atom/browser/api/atom_api_desktop_capturer.cc", 667 | "atom/browser/api/atom_api_desktop_capturer.h", 668 | ] 669 | } 670 | 671 | if (enable_view_api) { 672 | sources += [ 673 | "atom/browser/api/views/atom_api_box_layout.cc", 674 | "atom/browser/api/views/atom_api_box_layout.h", 675 | "atom/browser/api/views/atom_api_button.cc", 676 | "atom/browser/api/views/atom_api_button.h", 677 | "atom/browser/api/views/atom_api_label_button.cc", 678 | "atom/browser/api/views/atom_api_label_button.h", 679 | "atom/browser/api/views/atom_api_layout_manager.cc", 680 | "atom/browser/api/views/atom_api_layout_manager.h", 681 | "atom/browser/api/views/atom_api_md_text_button.cc", 682 | "atom/browser/api/views/atom_api_md_text_button.h", 683 | "atom/browser/api/views/atom_api_resize_area.cc", 684 | "atom/browser/api/views/atom_api_resize_area.h", 685 | "atom/browser/api/views/atom_api_text_field.cc", 686 | "atom/browser/api/views/atom_api_text_field.h", 687 | ] 688 | } 689 | 690 | if (enable_basic_printing) { 691 | sources += [ 692 | "atom/browser/printing/print_preview_message_handler.cc", 693 | "atom/browser/printing/print_preview_message_handler.h", 694 | "atom/renderer/printing/print_render_frame_helper_delegate.cc", 695 | "atom/renderer/printing/print_render_frame_helper_delegate.h", 696 | ] 697 | } 698 | 699 | if (enable_pepper_flash) { 700 | deps += [ "components/pepper_flash" ] 701 | } 702 | } 703 | 704 | electron_paks("packed_resources") { 705 | if (is_mac) { 706 | output_dir = "$root_gen_dir/electron_repack" 707 | copy_data_to_bundle = true 708 | } else { 709 | output_dir = root_out_dir 710 | } 711 | } 712 | 713 | if (is_mac) { 714 | electron_framework_name = "$electron_product_name Framework" 715 | electron_helper_name = "$electron_product_name Helper" 716 | electron_login_helper_name = "$electron_product_name Login Helper" 717 | electron_framework_version = "A" 718 | electron_version = read_file("ELECTRON_VERSION", "trim string") 719 | 720 | mac_xib_bundle_data("electron_xibs") { 721 | sources = [ 722 | "atom/common/resources/mac/MainMenu.xib", 723 | ] 724 | } 725 | 726 | bundle_data("electron_framework_resources") { 727 | public_deps = [ 728 | ":packed_resources", 729 | ] 730 | sources = [] 731 | if (icu_use_data_file) { 732 | sources += [ "$root_out_dir/icudtl.dat" ] 733 | public_deps += [ "//third_party/icu:icudata" ] 734 | } 735 | if (v8_use_external_startup_data) { 736 | sources += [ "$root_out_dir/natives_blob.bin" ] 737 | public_deps += [ "//v8" ] 738 | if (use_v8_context_snapshot) { 739 | sources += [ "$root_out_dir/v8_context_snapshot.bin" ] 740 | public_deps += [ "//tools/v8_context_snapshot" ] 741 | } else { 742 | sources += [ "$root_out_dir/snapshot_blob.bin" ] 743 | } 744 | } 745 | outputs = [ 746 | "{{bundle_resources_dir}}/{{source_file_part}}", 747 | ] 748 | } 749 | 750 | if (!is_component_build) { 751 | bundle_data("electron_framework_libraries") { 752 | sources = [] 753 | public_deps = [] 754 | if (is_component_ffmpeg) { 755 | sources += [ "$root_out_dir/libffmpeg.dylib" ] 756 | public_deps += [ "//third_party/ffmpeg:ffmpeg" ] 757 | } 758 | outputs = [ 759 | "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", 760 | ] 761 | } 762 | } else { 763 | group("electron_framework_libraries") { 764 | } 765 | } 766 | if (use_egl) { 767 | # Add the ANGLE .dylibs in the Libraries directory of the Framework. 768 | bundle_data("electron_angle_binaries") { 769 | sources = [ 770 | "$root_out_dir/egl_intermediates/libEGL.dylib", 771 | "$root_out_dir/egl_intermediates/libGLESv2.dylib", 772 | ] 773 | outputs = [ 774 | "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", 775 | ] 776 | public_deps = [ 777 | "//ui/gl:angle_library_copy", 778 | ] 779 | } 780 | 781 | # Add the SwiftShader .dylibs in the Libraries directory of the Framework. 782 | bundle_data("electron_swiftshader_binaries") { 783 | sources = [ 784 | "$root_out_dir/egl_intermediates/libswiftshader_libEGL.dylib", 785 | "$root_out_dir/egl_intermediates/libswiftshader_libGLESv2.dylib", 786 | ] 787 | outputs = [ 788 | "{{bundle_contents_dir}}/Libraries/{{source_file_part}}", 789 | ] 790 | public_deps = [ 791 | "//ui/gl:swiftshader_library_copy", 792 | ] 793 | } 794 | } 795 | group("electron_angle_library") { 796 | if (use_egl) { 797 | deps = [ 798 | ":electron_angle_binaries", 799 | ] 800 | } 801 | } 802 | 803 | group("electron_swiftshader_library") { 804 | if (use_egl) { 805 | deps = [ 806 | ":electron_swiftshader_binaries", 807 | ] 808 | } 809 | } 810 | 811 | bundle_data("electron_crashpad_helper") { 812 | sources = [ 813 | "$root_out_dir/crashpad_handler", 814 | ] 815 | 816 | outputs = [ 817 | "{{bundle_resources_dir}}/{{source_file_part}}", 818 | ] 819 | 820 | public_deps = [ 821 | "//third_party/crashpad/crashpad/handler:crashpad_handler", 822 | ] 823 | } 824 | 825 | mac_framework_bundle("electron_framework") { 826 | output_name = electron_framework_name 827 | framework_version = electron_framework_version 828 | framework_contents = [ 829 | "Resources", 830 | "Libraries", 831 | ] 832 | public_deps = [ 833 | ":electron_lib", 834 | ] 835 | deps = [ 836 | ":electron_angle_library", 837 | ":electron_framework_libraries", 838 | ":electron_framework_resources", 839 | ":electron_swiftshader_library", 840 | ":electron_xibs", 841 | ] 842 | if (!is_mas_build) { 843 | deps += [ ":electron_crashpad_helper" ] 844 | } 845 | info_plist = "atom/common/resources/mac/Info.plist" 846 | 847 | extra_substitutions = [ 848 | "ATOM_BUNDLE_ID=$electron_mac_bundle_id.framework", 849 | "ELECTRON_VERSION=$electron_version", 850 | ] 851 | 852 | include_dirs = [ "." ] 853 | sources = filenames.framework_sources 854 | 855 | libs = [ 856 | "AVFoundation.framework", 857 | "Carbon.framework", 858 | "LocalAuthentication.framework", 859 | "QuartzCore.framework", 860 | "Quartz.framework", 861 | "Security.framework", 862 | "SecurityInterface.framework", 863 | "ServiceManagement.framework", 864 | "StoreKit.framework", 865 | ] 866 | 867 | if (enable_osr) { 868 | libs += [ "IOSurface.framework" ] 869 | } 870 | 871 | ldflags = [ 872 | "-F", 873 | rebase_path("external_binaries", root_build_dir), 874 | "-Wl,-install_name,@rpath/$output_name.framework/$output_name", 875 | "-rpath", 876 | "@loader_path/Libraries", 877 | ] 878 | if (is_component_build) { 879 | ldflags += [ 880 | "-rpath", 881 | "@executable_path/../../../../../..", 882 | ] 883 | } 884 | } 885 | 886 | template("electron_helper_app") { 887 | mac_app_bundle(target_name) { 888 | assert(defined(invoker.helper_name_suffix)) 889 | 890 | output_name = electron_helper_name + invoker.helper_name_suffix 891 | deps = [ 892 | ":electron_framework+link", 893 | ] 894 | if (!is_mas_build) { 895 | deps += [ "//sandbox/mac:seatbelt" ] 896 | } 897 | defines = [ "HELPER_EXECUTABLE" ] 898 | sources = filenames.app_sources 899 | sources += [ "atom/common/atom_constants.cc" ] 900 | include_dirs = [ "." ] 901 | info_plist = "atom/renderer/resources/mac/Info.plist" 902 | extra_substitutions = [ "ATOM_BUNDLE_ID=$electron_mac_bundle_id.helper" ] 903 | ldflags = [ 904 | "-rpath", 905 | "@executable_path/../../..", 906 | ] 907 | if (is_component_build) { 908 | ldflags += [ 909 | "-rpath", 910 | "@executable_path/../../../../../..", 911 | ] 912 | } 913 | } 914 | } 915 | 916 | foreach(helper_params, content_mac_helpers) { 917 | _helper_target = helper_params[0] 918 | _helper_bundle_id = helper_params[1] 919 | _helper_suffix = helper_params[2] 920 | electron_helper_app("electron_helper_app_${_helper_target}") { 921 | helper_name_suffix = _helper_suffix 922 | } 923 | } 924 | 925 | bundle_data("electron_app_framework_bundle_data") { 926 | sources = [ 927 | "$root_out_dir/$electron_framework_name.framework", 928 | ] 929 | if (!is_mas_build) { 930 | sources += [ 931 | "external_binaries/Mantle.framework", 932 | "external_binaries/ReactiveCocoa.framework", 933 | "external_binaries/Squirrel.framework", 934 | ] 935 | } 936 | outputs = [ 937 | "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}", 938 | ] 939 | public_deps = [ 940 | ":electron_framework+link", 941 | ] 942 | 943 | foreach(helper_params, content_mac_helpers) { 944 | sources += 945 | [ "$root_out_dir/${electron_helper_name}${helper_params[2]}.app" ] 946 | public_deps += [ ":electron_helper_app_${helper_params[0]}" ] 947 | } 948 | } 949 | 950 | mac_app_bundle("electron_login_helper") { 951 | output_name = electron_login_helper_name 952 | sources = filenames.login_helper_sources 953 | include_dirs = [ "." ] 954 | libs = [ "AppKit.framework" ] 955 | info_plist = "atom/app/resources/mac/loginhelper-Info.plist" 956 | extra_substitutions = 957 | [ "ATOM_BUNDLE_ID=$electron_mac_bundle_id.loginhelper" ] 958 | } 959 | 960 | bundle_data("electron_login_helper_app") { 961 | public_deps = [ 962 | ":electron_login_helper", 963 | ] 964 | sources = [ 965 | "$root_out_dir/$electron_login_helper_name.app", 966 | ] 967 | outputs = [ 968 | "{{bundle_contents_dir}}/Library/LoginItems/{{source_file_part}}", 969 | ] 970 | } 971 | 972 | action("electron_app_lproj_dirs") { 973 | outputs = [] 974 | 975 | foreach(locale, locales_as_mac_outputs) { 976 | outputs += [ "$target_gen_dir/app_infoplist_strings/$locale.lproj" ] 977 | } 978 | script = "build/mac/make_locale_dirs.py" 979 | args = rebase_path(outputs) 980 | } 981 | 982 | foreach(locale, locales_as_mac_outputs) { 983 | bundle_data("electron_app_strings_${locale}_bundle_data") { 984 | sources = [ 985 | "$target_gen_dir/app_infoplist_strings/$locale.lproj", 986 | ] 987 | outputs = [ 988 | "{{bundle_resources_dir}}/$locale.lproj", 989 | ] 990 | public_deps = [ 991 | ":electron_app_lproj_dirs", 992 | ] 993 | } 994 | } 995 | group("electron_app_strings_bundle_data") { 996 | public_deps = [] 997 | foreach(locale, locales_as_mac_outputs) { 998 | public_deps += [ ":electron_app_strings_${locale}_bundle_data" ] 999 | } 1000 | } 1001 | 1002 | bundle_data("electron_app_resources") { 1003 | public_deps = [ 1004 | ":default_app_asar", 1005 | ":electron_app_strings_bundle_data", 1006 | ":electron_asar", 1007 | ] 1008 | sources = [ 1009 | "$root_out_dir/resources/default_app.asar", 1010 | "$root_out_dir/resources/electron.asar", 1011 | "atom/browser/resources/mac/electron.icns", 1012 | ] 1013 | outputs = [ 1014 | "{{bundle_resources_dir}}/{{source_file_part}}", 1015 | ] 1016 | } 1017 | 1018 | mac_app_bundle("electron_app") { 1019 | output_name = electron_product_name 1020 | sources = filenames.app_sources 1021 | sources += [ "atom/common/atom_constants.cc" ] 1022 | include_dirs = [ "." ] 1023 | deps = [ 1024 | ":electron_app_framework_bundle_data", 1025 | ":electron_app_resources", 1026 | ] 1027 | if (is_mas_build) { 1028 | deps += [ ":electron_login_helper_app" ] 1029 | } 1030 | info_plist = "atom/browser/resources/mac/Info.plist" 1031 | extra_substitutions = [ "ATOM_BUNDLE_ID=$electron_mac_bundle_id" ] 1032 | ldflags = [ 1033 | "-rpath", 1034 | "@executable_path/../Frameworks", 1035 | ] 1036 | } 1037 | 1038 | if (enable_dsyms) { 1039 | extract_symbols("electron_framework_syms") { 1040 | binary = "$root_out_dir/$electron_framework_name.framework/Versions/$electron_framework_version/$electron_framework_name" 1041 | symbol_dir = "$root_out_dir/breakpad_symbols" 1042 | dsym_file = "$root_out_dir/$electron_framework_name.dSYM/Contents/Resources/DWARF/$electron_framework_name" 1043 | deps = [ 1044 | ":electron_framework", 1045 | ] 1046 | } 1047 | 1048 | foreach(helper_params, content_mac_helpers) { 1049 | _helper_target = helper_params[0] 1050 | _helper_bundle_id = helper_params[1] 1051 | _helper_suffix = helper_params[2] 1052 | extract_symbols("electron_helper_syms_${_helper_target}") { 1053 | binary = "$root_out_dir/$electron_helper_name${_helper_suffix}.app/Contents/MacOS/$electron_helper_name${_helper_suffix}" 1054 | symbol_dir = "$root_out_dir/breakpad_symbols" 1055 | dsym_file = "$root_out_dir/$electron_helper_name${_helper_suffix}.dSYM/Contents/Resources/DWARF/$electron_helper_name${_helper_suffix}" 1056 | deps = [ 1057 | ":electron_helper_app_${_helper_target}", 1058 | ] 1059 | } 1060 | } 1061 | 1062 | extract_symbols("electron_app_syms") { 1063 | binary = "$root_out_dir/$electron_product_name.app/Contents/MacOS/$electron_product_name" 1064 | symbol_dir = "$root_out_dir/breakpad_symbols" 1065 | dsym_file = "$root_out_dir/$electron_product_name.dSYM/Contents/Resources/DWARF/$electron_product_name" 1066 | deps = [ 1067 | ":electron_app", 1068 | ] 1069 | } 1070 | 1071 | extract_symbols("swiftshader_egl_syms") { 1072 | binary = "$root_out_dir/libswiftshader_libEGL.dylib" 1073 | symbol_dir = "$root_out_dir/breakpad_symbols" 1074 | dsym_file = "$root_out_dir/libswiftshader_libEGL.dylib.dSYM/Contents/Resources/DWARF/libswiftshader_libEGL.dylib" 1075 | deps = [ 1076 | "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL", 1077 | ] 1078 | } 1079 | 1080 | extract_symbols("swiftshader_gles_syms") { 1081 | binary = "$root_out_dir/libswiftshader_libGLESv2.dylib" 1082 | symbol_dir = "$root_out_dir/breakpad_symbols" 1083 | dsym_file = "$root_out_dir/libswiftshader_libGLESv2.dylib.dSYM/Contents/Resources/DWARF/libswiftshader_libGLESv2.dylib" 1084 | deps = [ 1085 | "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2", 1086 | ] 1087 | } 1088 | 1089 | extract_symbols("crashpad_handler_syms") { 1090 | binary = "$root_out_dir/crashpad_handler" 1091 | symbol_dir = "$root_out_dir/breakpad_symbols" 1092 | dsym_file = "$root_out_dir/crashpad_handler.dSYM/Contents/Resources/DWARF/crashpad_handler" 1093 | deps = [ 1094 | "//third_party/crashpad/crashpad/handler:crashpad_handler", 1095 | ] 1096 | } 1097 | 1098 | group("electron_symbols") { 1099 | deps = [ 1100 | ":crashpad_handler_syms", 1101 | ":electron_app_syms", 1102 | ":electron_framework_syms", 1103 | ":swiftshader_egl_syms", 1104 | ":swiftshader_gles_syms", 1105 | ] 1106 | 1107 | foreach(helper_params, content_mac_helpers) { 1108 | _helper_target = helper_params[0] 1109 | deps += [ ":electron_helper_syms_${_helper_target}" ] 1110 | } 1111 | } 1112 | } else { 1113 | group("electron_symbols") { 1114 | } 1115 | } 1116 | } else { 1117 | windows_manifest("electron_app_manifest") { 1118 | sources = [ 1119 | "atom/browser/resources/win/disable_window_filtering.manifest", 1120 | "atom/browser/resources/win/dpi_aware.manifest", 1121 | as_invoker_manifest, 1122 | common_controls_manifest, 1123 | default_compatibility_manifest, 1124 | ] 1125 | } 1126 | 1127 | executable("electron_app") { 1128 | output_name = electron_project_name 1129 | sources = filenames.app_sources 1130 | include_dirs = [ "." ] 1131 | deps = [ 1132 | ":default_app_asar", 1133 | ":electron_app_manifest", 1134 | ":electron_asar", 1135 | ":electron_lib", 1136 | ":packed_resources", 1137 | "//content:sandbox_helper_win", 1138 | "//electron/buildflags", 1139 | "//ui/strings", 1140 | ] 1141 | 1142 | data = [] 1143 | 1144 | data += [ "$root_out_dir/resources.pak" ] 1145 | data += [ "$root_out_dir/chrome_100_percent.pak" ] 1146 | if (enable_hidpi) { 1147 | data += [ "$root_out_dir/chrome_200_percent.pak" ] 1148 | } 1149 | foreach(locale, locales) { 1150 | data += [ "$root_out_dir/locales/$locale.pak" ] 1151 | } 1152 | 1153 | if (!is_mac) { 1154 | data += [ "$root_out_dir/resources/default_app.asar" ] 1155 | data += [ "$root_out_dir/resources/electron.asar" ] 1156 | } 1157 | 1158 | public_deps = [ 1159 | "//tools/v8_context_snapshot:v8_context_snapshot", 1160 | ] 1161 | 1162 | if (is_win) { 1163 | sources += [ 1164 | # TODO: we should be generating our .rc files more like how chrome does 1165 | "atom/browser/resources/win/atom.ico", 1166 | "atom/browser/resources/win/atom.rc", 1167 | "atom/browser/resources/win/resource.h", 1168 | ] 1169 | 1170 | libs = [ 1171 | "comctl32.lib", 1172 | "uiautomationcore.lib", 1173 | "wtsapi32.lib", 1174 | ] 1175 | 1176 | configs += [ "//build/config/win:windowed" ] 1177 | 1178 | ldflags = [ 1179 | # Windows 7 doesn't have these DLLs. 1180 | # TODO: are there other DLLs we need to list here to be win7 1181 | # compatible? 1182 | "/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll", 1183 | "/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll", 1184 | ] 1185 | 1186 | # This is to support renaming of electron.exe. node-gyp has hard-coded 1187 | # executable names which it will recognise as node. This module definition 1188 | # file claims that the electron executable is in fact named "node.exe", 1189 | # which is one of the executable names that node-gyp recognizes. 1190 | # See https://github.com/nodejs/node-gyp/commit/52ceec3a6d15de3a8f385f43dbe5ecf5456ad07a 1191 | ldflags += [ "/DEF:" + rebase_path("build/electron.def", root_build_dir) ] 1192 | inputs = [ 1193 | "build/electron.def", 1194 | ] 1195 | } 1196 | if (is_linux) { 1197 | ldflags = [ "-pie" ] 1198 | 1199 | if (!is_component_build && is_component_ffmpeg) { 1200 | configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] 1201 | } 1202 | } 1203 | } 1204 | 1205 | if (is_official_build) { 1206 | if (is_linux) { 1207 | _target_executable_suffix = "" 1208 | _target_shared_library_suffix = ".so" 1209 | } else if (is_win) { 1210 | _target_executable_suffix = ".exe" 1211 | _target_shared_library_suffix = ".dll" 1212 | } 1213 | 1214 | extract_symbols("electron_app_symbols") { 1215 | binary = "$root_out_dir/$electron_project_name$_target_executable_suffix" 1216 | symbol_dir = "$root_out_dir/breakpad_symbols" 1217 | deps = [ 1218 | ":electron_app", 1219 | ] 1220 | } 1221 | 1222 | extract_symbols("swiftshader_egl_symbols") { 1223 | binary = "$root_out_dir/swiftshader/libEGL$_target_shared_library_suffix" 1224 | symbol_dir = "$root_out_dir/breakpad_symbols" 1225 | deps = [ 1226 | "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL", 1227 | ] 1228 | } 1229 | 1230 | extract_symbols("swiftshader_gles_symbols") { 1231 | binary = 1232 | "$root_out_dir/swiftshader/libGLESv2$_target_shared_library_suffix" 1233 | symbol_dir = "$root_out_dir/breakpad_symbols" 1234 | deps = [ 1235 | "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2", 1236 | ] 1237 | } 1238 | 1239 | group("electron_symbols") { 1240 | deps = [ 1241 | ":electron_app_symbols", 1242 | ":swiftshader_egl_symbols", 1243 | ":swiftshader_gles_symbols", 1244 | ] 1245 | } 1246 | } 1247 | } 1248 | 1249 | template("dist_zip") { 1250 | _runtime_deps_target = "${target_name}__deps" 1251 | _runtime_deps_file = 1252 | "$root_out_dir/gen.runtime/" + get_label_info(target_name, "dir") + "/" + 1253 | get_label_info(target_name, "name") + ".runtime_deps" 1254 | 1255 | group(_runtime_deps_target) { 1256 | forward_variables_from(invoker, 1257 | [ 1258 | "deps", 1259 | "data_deps", 1260 | "data", 1261 | "testonly", 1262 | ]) 1263 | write_runtime_deps = _runtime_deps_file 1264 | } 1265 | 1266 | action(target_name) { 1267 | script = "//electron/build/zip.py" 1268 | deps = [ 1269 | ":$_runtime_deps_target", 1270 | ] 1271 | forward_variables_from(invoker, 1272 | [ 1273 | "outputs", 1274 | "testonly", 1275 | ]) 1276 | args = rebase_path(outputs + [ _runtime_deps_file ], root_build_dir) + [ 1277 | target_cpu, 1278 | target_os, 1279 | ] 1280 | } 1281 | } 1282 | 1283 | copy("electron_license") { 1284 | sources = [ 1285 | "LICENSE", 1286 | ] 1287 | outputs = [ 1288 | "$root_build_dir/{{source_file_part}}", 1289 | ] 1290 | } 1291 | copy("chromium_licenses") { 1292 | deps = [ 1293 | "//components/resources:about_credits", 1294 | ] 1295 | sources = [ 1296 | "$root_gen_dir/components/resources/about_credits.html", 1297 | ] 1298 | outputs = [ 1299 | "$root_build_dir/LICENSES.chromium.html", 1300 | ] 1301 | } 1302 | 1303 | group("licenses") { 1304 | data_deps = [ 1305 | ":electron_license", 1306 | ":chromium_licenses", 1307 | ] 1308 | } 1309 | 1310 | copy("electron_version") { 1311 | sources = [ 1312 | "ELECTRON_VERSION", 1313 | ] 1314 | outputs = [ 1315 | "$root_build_dir/version", 1316 | ] 1317 | } 1318 | 1319 | dist_zip("electron_dist_zip") { 1320 | data_deps = [ 1321 | ":electron_app", 1322 | ":licenses", 1323 | ":electron_version", 1324 | ] 1325 | if (is_linux) { 1326 | data_deps += [ "//sandbox/linux:chrome_sandbox" ] 1327 | } 1328 | outputs = [ 1329 | "$root_build_dir/dist.zip", 1330 | ] 1331 | } 1332 | 1333 | dist_zip("electron_ffmpeg_zip") { 1334 | data_deps = [ 1335 | "//third_party/ffmpeg", 1336 | ] 1337 | outputs = [ 1338 | "$root_build_dir/ffmpeg.zip", 1339 | ] 1340 | } 1341 | 1342 | dist_zip("electron_chromedriver_zip") { 1343 | testonly = true 1344 | data_deps = [ 1345 | "//chrome/test/chromedriver", 1346 | ":licenses", 1347 | ] 1348 | outputs = [ 1349 | "$root_build_dir/chromedriver.zip", 1350 | ] 1351 | } 1352 | 1353 | dist_zip("electron_mksnapshot_zip") { 1354 | data_deps = [ 1355 | #"//v8:mksnapshot($v8_snapshot_toolchain)", 1356 | #"//tools/v8_context_snapshot:v8_context_snapshot_generator", 1357 | #":licenses", 1358 | ] 1359 | outputs = [ 1360 | "$root_build_dir/mksnapshot.zip", 1361 | ] 1362 | } 1363 | 1364 | group("electron") { 1365 | public_deps = [ 1366 | ":electron_app", 1367 | ] 1368 | } 1369 | -------------------------------------------------------------------------------- /buildFiles/electron/src/electron/build/args/release.gn: -------------------------------------------------------------------------------- 1 | import("all.gn") 2 | is_component_build = false 3 | is_official_build = true 4 | 5 | # This may be guarded behind is_chrome_branded alongside 6 | # proprietary_codecs https://webrtc-review.googlesource.com/c/src/+/36321, 7 | # explicitly override here to build OpenH264 encoder/FFmpeg decoder. 8 | # The initialization of the decoder depends on whether ffmpeg has 9 | # been built with H.264 support. 10 | rtc_use_h264 = proprietary_codecs 11 | 12 | # By default, Electron builds ffmpeg with proprietary codecs enabled. In order 13 | # to facilitate users who don't want to ship proprietary codecs in ffmpeg, or 14 | # who have an LGPL requirement to ship ffmpeg as a dynamically linked library, 15 | # we build ffmpeg as a shared library. 16 | is_component_ffmpeg = true 17 | 18 | 19 | is_debug = false 20 | symbol_level = 0 21 | blink_symbol_level = 0 22 | is_component_build = false 23 | enable_resource_whitelist_generation = false 24 | 25 | target_cpu = "arm64" 26 | is_official_build = true 27 | use_jumbo_build = true 28 | v8_enable_future = true 29 | v8_enable_debugging_features = false 30 | enable_nacl = false 31 | enable_remoting = false 32 | 33 | angle_enable_d3d11 = true 34 | angle_enable_d3d9 = true 35 | 36 | enable_hevc_demuxing = true 37 | enable_mpeg_h_audio_demuxing = true 38 | enable_mse_mpeg2ts_stream_parser = true 39 | enable_swiftshader = true 40 | ffmpeg_branding = "Chrome" 41 | proprietary_codecs = true 42 | 43 | optimize_webui = true 44 | 45 | # Embed resource.pak into binary to simplify deployment. 46 | headless_use_embedded_resources = true 47 | -------------------------------------------------------------------------------- /buildFiles/vscode/.yarnrc: -------------------------------------------------------------------------------- 1 | disturl "https://atom.io/download/electron" 2 | target "6.0.1" 3 | runtime "electron" 4 | -------------------------------------------------------------------------------- /buildFiles/vscode/build/gulpfile.vscode.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | 'use strict'; 7 | 8 | const gulp = require('gulp'); 9 | const fs = require('fs'); 10 | const os = require('os'); 11 | const cp = require('child_process'); 12 | const path = require('path'); 13 | const es = require('event-stream'); 14 | const azure = require('gulp-azure-storage'); 15 | const electron = require('gulp-atom-electron'); 16 | const vfs = require('vinyl-fs'); 17 | const rename = require('gulp-rename'); 18 | const replace = require('gulp-replace'); 19 | const filter = require('gulp-filter'); 20 | const json = require('gulp-json-editor'); 21 | const _ = require('underscore'); 22 | const util = require('./lib/util'); 23 | const task = require('./lib/task'); 24 | const buildfile = require('../src/buildfile'); 25 | const common = require('./lib/optimize'); 26 | const root = path.dirname(__dirname); 27 | const commit = util.getVersion(root); 28 | const packageJson = require('../package.json'); 29 | const product = require('../product.json'); 30 | const crypto = require('crypto'); 31 | const i18n = require('./lib/i18n'); 32 | const deps = require('./dependencies'); 33 | const getElectronVersion = require('./lib/electron').getElectronVersion; 34 | const createAsar = require('./lib/asar').createAsar; 35 | const minimist = require('minimist'); 36 | const { compileBuildTask } = require('./gulpfile.compile'); 37 | const { compileExtensionsBuildTask } = require('./gulpfile.extensions'); 38 | 39 | const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname)); 40 | // @ts-ignore 41 | const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n)); 42 | const nodeModules = ['electron', 'original-fs'] 43 | // @ts-ignore JSON checking: dependencies property is optional 44 | .concat(Object.keys(product.dependencies || {})) 45 | .concat(_.uniq(productionDependencies.map(d => d.name))) 46 | .concat(baseModules); 47 | 48 | // Build 49 | const vscodeEntryPoints = _.flatten([ 50 | buildfile.entrypoint('vs/workbench/workbench.main'), 51 | buildfile.base, 52 | buildfile.serviceWorker, 53 | buildfile.workbench, 54 | buildfile.code 55 | ]); 56 | 57 | const vscodeResources = [ 58 | 'out-build/main.js', 59 | 'out-build/cli.js', 60 | 'out-build/driver.js', 61 | 'out-build/bootstrap.js', 62 | 'out-build/bootstrap-fork.js', 63 | 'out-build/bootstrap-amd.js', 64 | 'out-build/bootstrap-window.js', 65 | 'out-build/paths.js', 66 | 'out-build/vs/**/*.{svg,png,html}', 67 | '!out-build/vs/code/browser/**/*.html', 68 | 'out-build/vs/base/common/performance.js', 69 | 'out-build/vs/base/node/languagePacks.js', 70 | 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}', 71 | 'out-build/vs/base/browser/ui/octiconLabel/octicons/**', 72 | 'out-build/vs/workbench/browser/media/*-theme.css', 73 | 'out-build/vs/workbench/contrib/debug/**/*.json', 74 | 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt', 75 | 'out-build/vs/workbench/contrib/webview/browser/pre/*.js', 76 | 'out-build/vs/workbench/contrib/webview/electron-browser/pre/*.js', 77 | 'out-build/vs/**/markdown.css', 78 | 'out-build/vs/workbench/contrib/tasks/**/*.json', 79 | 'out-build/vs/workbench/contrib/welcome/walkThrough/**/*.md', 80 | 'out-build/vs/platform/files/**/*.exe', 81 | 'out-build/vs/platform/files/**/*.md', 82 | 'out-build/vs/code/electron-browser/workbench/**', 83 | 'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js', 84 | 'out-build/vs/code/electron-browser/issue/issueReporter.js', 85 | 'out-build/vs/code/electron-browser/processExplorer/processExplorer.js', 86 | '!**/test/**' 87 | ]; 88 | 89 | const optimizeVSCodeTask = task.define('optimize-vscode', task.series( 90 | util.rimraf('out-vscode'), 91 | common.optimizeTask({ 92 | src: 'out-build', 93 | entryPoints: vscodeEntryPoints, 94 | resources: vscodeResources, 95 | loaderConfig: common.loaderConfig(nodeModules), 96 | out: 'out-vscode', 97 | bundleInfo: undefined 98 | }) 99 | )); 100 | gulp.task(optimizeVSCodeTask); 101 | 102 | const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`; 103 | const minifyVSCodeTask = task.define('minify-vscode', task.series( 104 | optimizeVSCodeTask, 105 | util.rimraf('out-vscode-min'), 106 | () => { 107 | const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js'); 108 | const contents = fs.readFileSync(fullpath).toString(); 109 | const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules)); 110 | fs.writeFileSync(fullpath, newContents); 111 | }, 112 | common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`) 113 | )); 114 | gulp.task(minifyVSCodeTask); 115 | 116 | // Package 117 | 118 | // @ts-ignore JSON checking: darwinCredits is optional 119 | const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8')); 120 | 121 | function darwinBundleDocumentType(extensions, icon) { 122 | return { 123 | name: product.nameLong + ' document', 124 | role: 'Editor', 125 | ostypes: ["TEXT", "utxt", "TUTX", "****"], 126 | extensions: extensions, 127 | iconFile: icon 128 | }; 129 | } 130 | 131 | const config = { 132 | version: getElectronVersion(), 133 | productAppName: product.nameLong, 134 | companyName: 'Microsoft Corporation', 135 | copyright: 'Copyright (C) 2019 Microsoft. All rights reserved', 136 | darwinIcon: 'resources/darwin/code.icns', 137 | darwinBundleIdentifier: product.darwinBundleIdentifier, 138 | darwinApplicationCategoryType: 'public.app-category.developer-tools', 139 | darwinHelpBookFolder: 'VS Code HelpBook', 140 | darwinHelpBookName: 'VS Code HelpBook', 141 | darwinBundleDocumentTypes: [ 142 | darwinBundleDocumentType(["bat", "cmd"], 'resources/darwin/bat.icns'), 143 | darwinBundleDocumentType(["bowerrc"], 'resources/darwin/bower.icns'), 144 | darwinBundleDocumentType(["c", "h"], 'resources/darwin/c.icns'), 145 | darwinBundleDocumentType(["config", "editorconfig", "gitattributes", "gitconfig", "gitignore", "ini"], 'resources/darwin/config.icns'), 146 | darwinBundleDocumentType(["cc", "cpp", "cxx", "hh", "hpp", "hxx"], 'resources/darwin/cpp.icns'), 147 | darwinBundleDocumentType(["cs", "csx"], 'resources/darwin/csharp.icns'), 148 | darwinBundleDocumentType(["css"], 'resources/darwin/css.icns'), 149 | darwinBundleDocumentType(["go"], 'resources/darwin/go.icns'), 150 | darwinBundleDocumentType(["asp", "aspx", "cshtml", "htm", "html", "jshtm", "jsp", "phtml", "shtml"], 'resources/darwin/html.icns'), 151 | darwinBundleDocumentType(["jade"], 'resources/darwin/jade.icns'), 152 | darwinBundleDocumentType(["jav", "java"], 'resources/darwin/java.icns'), 153 | darwinBundleDocumentType(["js", "jscsrc", "jshintrc", "mjs"], 'resources/darwin/javascript.icns'), 154 | darwinBundleDocumentType(["json"], 'resources/darwin/json.icns'), 155 | darwinBundleDocumentType(["less"], 'resources/darwin/less.icns'), 156 | darwinBundleDocumentType(["markdown", "md", "mdoc", "mdown", "mdtext", "mdtxt", "mdwn", "mkd", "mkdn"], 'resources/darwin/markdown.icns'), 157 | darwinBundleDocumentType(["php"], 'resources/darwin/php.icns'), 158 | darwinBundleDocumentType(["ps1", "psd1", "psm1"], 'resources/darwin/powershell.icns'), 159 | darwinBundleDocumentType(["py"], 'resources/darwin/python.icns'), 160 | darwinBundleDocumentType(["gemspec", "rb"], 'resources/darwin/ruby.icns'), 161 | darwinBundleDocumentType(["scss"], 'resources/darwin/sass.icns'), 162 | darwinBundleDocumentType(["bash", "bash_login", "bash_logout", "bash_profile", "bashrc", "profile", "rhistory", "rprofile", "sh", "zlogin", "zlogout", "zprofile", "zsh", "zshenv", "zshrc"], 'resources/darwin/shell.icns'), 163 | darwinBundleDocumentType(["sql"], 'resources/darwin/sql.icns'), 164 | darwinBundleDocumentType(["ts"], 'resources/darwin/typescript.icns'), 165 | darwinBundleDocumentType(["tsx", "jsx"], 'resources/darwin/react.icns'), 166 | darwinBundleDocumentType(["vue"], 'resources/darwin/vue.icns'), 167 | darwinBundleDocumentType(["ascx", "csproj", "dtd", "wxi", "wxl", "wxs", "xml", "xaml"], 'resources/darwin/xml.icns'), 168 | darwinBundleDocumentType(["eyaml", "eyml", "yaml", "yml"], 'resources/darwin/yaml.icns'), 169 | darwinBundleDocumentType(["clj", "cljs", "cljx", "clojure", "code-workspace", "coffee", "ctp", "dockerfile", "dot", "edn", "fs", "fsi", "fsscript", "fsx", "handlebars", "hbs", "lua", "m", "makefile", "ml", "mli", "pl", "pl6", "pm", "pm6", "pod", "pp", "properties", "psgi", "pug", "r", "rs", "rt", "svg", "svgz", "t", "txt", "vb", "xcodeproj", "xcworkspace"], 'resources/darwin/default.icns') 170 | ], 171 | darwinBundleURLTypes: [{ 172 | role: 'Viewer', 173 | name: product.nameLong, 174 | urlSchemes: [product.urlProtocol] 175 | }], 176 | darwinForceDarkModeSupport: true, 177 | darwinCredits: darwinCreditsTemplate ? Buffer.from(darwinCreditsTemplate({ commit: commit, date: new Date().toISOString() })) : undefined, 178 | linuxExecutableName: product.applicationName, 179 | winIcon: 'resources/win32/code.ico', 180 | token: process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined, 181 | 182 | // @ts-ignore JSON checking: electronRepository is optional 183 | repo: product.electronRepository || undefined 184 | }; 185 | 186 | function getElectron(arch) { 187 | return () => { 188 | const electronOpts = _.extend({}, config, { 189 | platform: process.platform, 190 | arch, 191 | ffmpegChromium: true, 192 | keepDefaultApp: true 193 | }); 194 | 195 | return gulp.src('package.json') 196 | .pipe(json({ name: product.nameShort })) 197 | .pipe(electron(electronOpts)) 198 | .pipe(filter(['**', '!**/app/package.json'])) 199 | .pipe(vfs.dest('.build/electron')); 200 | }; 201 | } 202 | 203 | gulp.task(task.define('electron', task.series(util.rimraf('.build/electron'), getElectron(process.arch)))); 204 | gulp.task(task.define('electron-ia32', task.series(util.rimraf('.build/electron'), getElectron('ia32')))); 205 | gulp.task(task.define('electron-x64', task.series(util.rimraf('.build/electron'), getElectron('x64')))); 206 | gulp.task(task.define('electron-arm', task.series(util.rimraf('.build/electron'), getElectron('armv7l')))); 207 | gulp.task(task.define('electron-arm64', task.series(util.rimraf('.build/electron'), getElectron('arm64')))); 208 | 209 | /** 210 | * Compute checksums for some files. 211 | * 212 | * @param {string} out The out folder to read the file from. 213 | * @param {string[]} filenames The paths to compute a checksum for. 214 | * @return {Object} A map of paths to checksums. 215 | */ 216 | function computeChecksums(out, filenames) { 217 | var result = {}; 218 | filenames.forEach(function (filename) { 219 | var fullPath = path.join(process.cwd(), out, filename); 220 | result[filename] = computeChecksum(fullPath); 221 | }); 222 | return result; 223 | } 224 | 225 | /** 226 | * Compute checksum for a file. 227 | * 228 | * @param {string} filename The absolute path to a filename. 229 | * @return {string} The checksum for `filename`. 230 | */ 231 | function computeChecksum(filename) { 232 | var contents = fs.readFileSync(filename); 233 | 234 | var hash = crypto 235 | .createHash('md5') 236 | .update(contents) 237 | .digest('base64') 238 | .replace(/=+$/, ''); 239 | 240 | return hash; 241 | } 242 | 243 | function packageTask(platform, arch, sourceFolderName, destinationFolderName, opts) { 244 | opts = opts || {}; 245 | 246 | const destination = path.join(path.dirname(root), destinationFolderName); 247 | platform = platform || process.platform; 248 | 249 | return () => { 250 | const out = sourceFolderName; 251 | 252 | const checksums = computeChecksums(out, [ 253 | 'vs/workbench/workbench.main.js', 254 | 'vs/workbench/workbench.main.css', 255 | 'vs/code/electron-browser/workbench/workbench.html', 256 | 'vs/code/electron-browser/workbench/workbench.js' 257 | ]); 258 | 259 | const src = gulp.src(out + '/**', { base: '.' }) 260 | .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); })) 261 | .pipe(util.setExecutableBit(['**/*.sh'])); 262 | 263 | const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true }); 264 | 265 | const sources = es.merge(src, extensions) 266 | .pipe(filter(['**', '!**/*.js.map'], { dot: true })); 267 | 268 | let version = packageJson.version; 269 | const quality = product.quality; 270 | 271 | if (quality && quality !== 'stable') { 272 | version += '-' + quality; 273 | } 274 | 275 | const name = product.nameShort; 276 | const packageJsonUpdates = { name, version }; 277 | 278 | // for linux url handling 279 | if (platform === 'linux') { 280 | packageJsonUpdates.desktopName = `${product.applicationName}-url-handler.desktop`; 281 | } 282 | 283 | const packageJsonStream = gulp.src(['package.json'], { base: '.' }) 284 | .pipe(json(packageJsonUpdates)); 285 | 286 | const date = new Date().toISOString(); 287 | const productJsonUpdate = { commit, date, checksums }; 288 | 289 | if (shouldSetupSettingsSearch()) { 290 | productJsonUpdate.settingsSearchBuildId = getSettingsSearchBuildId(packageJson); 291 | } 292 | 293 | const productJsonStream = gulp.src(['product.json'], { base: '.' }) 294 | .pipe(json(productJsonUpdate)); 295 | 296 | const license = gulp.src(['LICENSES.chromium.html', product.licenseFileName, 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.', allowEmpty: true }); 297 | 298 | // TODO the API should be copied to `out` during compile, not here 299 | const api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts')); 300 | 301 | const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true }); 302 | 303 | const root = path.resolve(path.join(__dirname, '..')); 304 | const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`])); 305 | 306 | const deps = gulp.src(dependenciesSrc, { base: '.', dot: true }) 307 | .pipe(filter(['**', '!**/package-lock.json'])) 308 | .pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore'))) 309 | .pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar')); 310 | 311 | console.log(process.cwd()) 312 | console.log(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar')) 313 | 314 | 315 | let all = es.merge( 316 | packageJsonStream, 317 | productJsonStream, 318 | license, 319 | api, 320 | telemetry, 321 | sources, 322 | deps 323 | ); 324 | 325 | if (platform === 'win32') { 326 | all = es.merge(all, gulp.src([ 327 | 'resources/win32/bower.ico', 328 | 'resources/win32/c.ico', 329 | 'resources/win32/config.ico', 330 | 'resources/win32/cpp.ico', 331 | 'resources/win32/csharp.ico', 332 | 'resources/win32/css.ico', 333 | 'resources/win32/default.ico', 334 | 'resources/win32/go.ico', 335 | 'resources/win32/html.ico', 336 | 'resources/win32/jade.ico', 337 | 'resources/win32/java.ico', 338 | 'resources/win32/javascript.ico', 339 | 'resources/win32/json.ico', 340 | 'resources/win32/less.ico', 341 | 'resources/win32/markdown.ico', 342 | 'resources/win32/php.ico', 343 | 'resources/win32/powershell.ico', 344 | 'resources/win32/python.ico', 345 | 'resources/win32/react.ico', 346 | 'resources/win32/ruby.ico', 347 | 'resources/win32/sass.ico', 348 | 'resources/win32/shell.ico', 349 | 'resources/win32/sql.ico', 350 | 'resources/win32/typescript.ico', 351 | 'resources/win32/vue.ico', 352 | 'resources/win32/xml.ico', 353 | 'resources/win32/yaml.ico', 354 | 'resources/win32/code_70x70.png', 355 | 'resources/win32/code_150x150.png' 356 | ], { base: '.' })); 357 | } else if (platform === 'linux') { 358 | all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' })); 359 | } else if (platform === 'darwin') { 360 | const shortcut = gulp.src('resources/darwin/bin/code.sh') 361 | .pipe(rename('bin/code')); 362 | 363 | all = es.merge(all, shortcut); 364 | } 365 | 366 | let result = all 367 | .pipe(util.skipDirectories()) 368 | .pipe(util.fixWin32DirectoryPermissions()) 369 | //.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true }))) 370 | .pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true })); 371 | 372 | result = es.merge(result, gulp.src('resources/completions/bash/code', { base: '.' }) 373 | .pipe(replace('@@APPNAME@@', product.applicationName)) 374 | .pipe(rename(function (f) { f.basename = product.applicationName; }))); 375 | result = es.merge(result, gulp.src('resources/completions/zsh/_code', { base: '.' }) 376 | .pipe(replace('@@APPNAME@@', product.applicationName)) 377 | .pipe(rename(function (f) { f.basename = '_' + product.applicationName; }))); 378 | 379 | if (platform === 'win32') { 380 | result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32', allowEmpty: true })); 381 | 382 | result = es.merge(result, gulp.src('resources/win32/bin/code.cmd', { base: 'resources/win32' }) 383 | .pipe(replace('@@NAME@@', product.nameShort)) 384 | .pipe(rename(function (f) { f.basename = product.applicationName; }))); 385 | 386 | result = es.merge(result, gulp.src('resources/win32/bin/code.sh', { base: 'resources/win32' }) 387 | .pipe(replace('@@NAME@@', product.nameShort)) 388 | .pipe(replace('@@PRODNAME@@', product.nameLong)) 389 | .pipe(replace('@@VERSION@@', version)) 390 | .pipe(replace('@@COMMIT@@', commit)) 391 | .pipe(replace('@@APPNAME@@', product.applicationName)) 392 | .pipe(replace('@@DATAFOLDER@@', product.dataFolderName)) 393 | .pipe(replace('@@QUALITY@@', quality)) 394 | .pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; }))); 395 | 396 | result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' }) 397 | .pipe(rename(product.nameShort + '.VisualElementsManifest.xml'))); 398 | } else if (platform === 'linux') { 399 | result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' }) 400 | .pipe(replace('@@PRODNAME@@', product.nameLong)) 401 | .pipe(replace('@@NAME@@', product.applicationName)) 402 | .pipe(rename('bin/' + product.applicationName))); 403 | } 404 | 405 | // submit all stats that have been collected 406 | // during the build phase 407 | if (opts.stats) { 408 | result.on('end', () => { 409 | const { submitAllStats } = require('./lib/stats'); 410 | submitAllStats(product, commit).then(() => console.log('Submitted bundle stats!')); 411 | }); 412 | } 413 | 414 | return result.pipe(vfs.dest(destination)); 415 | }; 416 | } 417 | 418 | const buildRoot = path.dirname(root); 419 | 420 | const BUILD_TARGETS = [ 421 | { platform: 'win32', arch: 'ia32' }, 422 | { platform: 'win32', arch: 'x64' }, 423 | { platform: 'win32', arch: 'arm64' }, 424 | { platform: 'darwin', arch: null, opts: { stats: true } }, 425 | { platform: 'linux', arch: 'ia32' }, 426 | { platform: 'linux', arch: 'x64' }, 427 | { platform: 'linux', arch: 'arm' }, 428 | { platform: 'linux', arch: 'arm64' }, 429 | ]; 430 | BUILD_TARGETS.forEach(buildTarget => { 431 | const dashed = (str) => (str ? `-${str}` : ``); 432 | const platform = buildTarget.platform; 433 | const arch = buildTarget.arch; 434 | const opts = buildTarget.opts; 435 | 436 | ['', 'min'].forEach(minified => { 437 | const sourceFolderName = `out-vscode${dashed(minified)}`; 438 | const destinationFolderName = `VSCode${dashed(platform)}${dashed(arch)}`; 439 | 440 | const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series( 441 | util.rimraf(path.join(buildRoot, destinationFolderName)), 442 | packageTask(platform, arch, sourceFolderName, destinationFolderName, opts) 443 | )); 444 | gulp.task(vscodeTaskCI); 445 | 446 | const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series( 447 | compileBuildTask, 448 | compileExtensionsBuildTask, 449 | minified ? minifyVSCodeTask : optimizeVSCodeTask, 450 | vscodeTaskCI 451 | )); 452 | gulp.task(vscodeTask); 453 | }); 454 | }); 455 | 456 | // Transifex Localizations 457 | 458 | const innoSetupConfig = { 459 | 'zh-cn': { codePage: 'CP936', defaultInfo: { name: 'Simplified Chinese', id: '$0804', } }, 460 | 'zh-tw': { codePage: 'CP950', defaultInfo: { name: 'Traditional Chinese', id: '$0404' } }, 461 | 'ko': { codePage: 'CP949', defaultInfo: { name: 'Korean', id: '$0412' } }, 462 | 'ja': { codePage: 'CP932' }, 463 | 'de': { codePage: 'CP1252' }, 464 | 'fr': { codePage: 'CP1252' }, 465 | 'es': { codePage: 'CP1252' }, 466 | 'ru': { codePage: 'CP1251' }, 467 | 'it': { codePage: 'CP1252' }, 468 | 'pt-br': { codePage: 'CP1252' }, 469 | 'hu': { codePage: 'CP1250' }, 470 | 'tr': { codePage: 'CP1254' } 471 | }; 472 | 473 | const apiHostname = process.env.TRANSIFEX_API_URL; 474 | const apiName = process.env.TRANSIFEX_API_NAME; 475 | const apiToken = process.env.TRANSIFEX_API_TOKEN; 476 | 477 | gulp.task(task.define( 478 | 'vscode-translations-push', 479 | task.series( 480 | compileBuildTask, 481 | compileExtensionsBuildTask, 482 | optimizeVSCodeTask, 483 | function () { 484 | const pathToMetadata = './out-vscode/nls.metadata.json'; 485 | const pathToExtensions = './extensions/*'; 486 | const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}'; 487 | 488 | return es.merge( 489 | gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()), 490 | gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()), 491 | gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions()) 492 | ).pipe(i18n.findObsoleteResources(apiHostname, apiName, apiToken) 493 | ).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken)); 494 | } 495 | ) 496 | )); 497 | 498 | gulp.task(task.define( 499 | 'vscode-translations-export', 500 | task.series( 501 | compileBuildTask, 502 | compileExtensionsBuildTask, 503 | optimizeVSCodeTask, 504 | function () { 505 | const pathToMetadata = './out-vscode/nls.metadata.json'; 506 | const pathToExtensions = './extensions/*'; 507 | const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}'; 508 | 509 | return es.merge( 510 | gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()), 511 | gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()), 512 | gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions()) 513 | ).pipe(vfs.dest('../vscode-translations-export')); 514 | } 515 | ) 516 | )); 517 | 518 | gulp.task('vscode-translations-pull', function () { 519 | return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => { 520 | let includeDefault = !!innoSetupConfig[language.id].defaultInfo; 521 | return i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-translations-import/${language.id}/setup`)); 522 | })); 523 | }); 524 | 525 | gulp.task('vscode-translations-import', function () { 526 | var options = minimist(process.argv.slice(2), { 527 | string: 'location', 528 | default: { 529 | location: '../vscode-translations-import' 530 | } 531 | }); 532 | return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => { 533 | let id = language.transifexId || language.id; 534 | return gulp.src(`${options.location}/${id}/setup/*/*.xlf`) 535 | .pipe(i18n.prepareIslFiles(language, innoSetupConfig[language.id])) 536 | .pipe(vfs.dest(`./build/win32/i18n`)); 537 | })); 538 | }); 539 | 540 | // This task is only run for the MacOS build 541 | const generateVSCodeConfigurationTask = task.define('generate-vscode-configuration', () => { 542 | return new Promise((resolve, reject) => { 543 | const buildDir = process.env['AGENT_BUILDDIRECTORY']; 544 | if (!buildDir) { 545 | return reject(new Error('$AGENT_BUILDDIRECTORY not set')); 546 | } 547 | 548 | if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') { 549 | return resolve(); 550 | } 551 | 552 | const userDataDir = path.join(os.tmpdir(), 'tmpuserdata'); 553 | const extensionsDir = path.join(os.tmpdir(), 'tmpextdir'); 554 | const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app'; 555 | const appPath = path.join(buildDir, `VSCode-darwin/${appName}/Contents/Resources/app/bin/code`); 556 | const codeProc = cp.exec(`${appPath} --export-default-configuration='${allConfigDetailsPath}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`); 557 | 558 | const timer = setTimeout(() => { 559 | codeProc.kill(); 560 | reject(new Error('export-default-configuration process timed out')); 561 | }, 10 * 1000); 562 | 563 | codeProc.stdout.on('data', d => console.log(d.toString())); 564 | codeProc.stderr.on('data', d => console.log(d.toString())); 565 | 566 | codeProc.on('exit', () => { 567 | clearTimeout(timer); 568 | resolve(); 569 | }); 570 | 571 | codeProc.on('error', err => { 572 | clearTimeout(timer); 573 | reject(err); 574 | }); 575 | }); 576 | }); 577 | 578 | const allConfigDetailsPath = path.join(os.tmpdir(), 'configuration.json'); 579 | gulp.task(task.define( 580 | 'upload-vscode-configuration', 581 | task.series( 582 | generateVSCodeConfigurationTask, 583 | () => { 584 | if (!shouldSetupSettingsSearch()) { 585 | const branch = process.env.BUILD_SOURCEBRANCH; 586 | console.log(`Only runs on master and release branches, not ${branch}`); 587 | return; 588 | } 589 | 590 | if (!fs.existsSync(allConfigDetailsPath)) { 591 | throw new Error(`configuration file at ${allConfigDetailsPath} does not exist`); 592 | } 593 | 594 | const settingsSearchBuildId = getSettingsSearchBuildId(packageJson); 595 | if (!settingsSearchBuildId) { 596 | throw new Error('Failed to compute build number'); 597 | } 598 | 599 | return gulp.src(allConfigDetailsPath) 600 | .pipe(azure.upload({ 601 | account: process.env.AZURE_STORAGE_ACCOUNT, 602 | key: process.env.AZURE_STORAGE_ACCESS_KEY, 603 | container: 'configuration', 604 | prefix: `${settingsSearchBuildId}/${commit}/` 605 | })); 606 | } 607 | ) 608 | )); 609 | 610 | function shouldSetupSettingsSearch() { 611 | const branch = process.env.BUILD_SOURCEBRANCH; 612 | return branch && (/\/master$/.test(branch) || branch.indexOf('/release/') >= 0); 613 | } 614 | 615 | function getSettingsSearchBuildId(packageJson) { 616 | try { 617 | const branch = process.env.BUILD_SOURCEBRANCH; 618 | const branchId = branch.indexOf('/release/') >= 0 ? 0 : 619 | /\/master$/.test(branch) ? 1 : 620 | 2; // Some unexpected branch 621 | 622 | const out = cp.execSync(`git rev-list HEAD --count`); 623 | const count = parseInt(out.toString()); 624 | 625 | // 626 | // 1.25.1, 1,234,567 commits, master = 1250112345671 627 | return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId; 628 | } catch (e) { 629 | throw new Error('Could not determine build number: ' + e.toString()); 630 | } 631 | } 632 | 633 | -------------------------------------------------------------------------------- /buildFiles/vscode/build/gulpfile.vscode.win32.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | 'use strict'; 7 | 8 | const gulp = require('gulp'); 9 | const path = require('path'); 10 | const fs = require('fs'); 11 | const assert = require('assert'); 12 | const cp = require('child_process'); 13 | const _7z = require('7zip')['7z']; 14 | const util = require('./lib/util'); 15 | const task = require('./lib/task'); 16 | const pkg = require('../package.json'); 17 | const product = require('../product.json'); 18 | const vfs = require('vinyl-fs'); 19 | const rcedit = require('rcedit'); 20 | const mkdirp = require('mkdirp'); 21 | 22 | const repoPath = path.dirname(__dirname) + "\\" 23 | console.log(repoPath) 24 | const buildPath = arch => repoPath + "\\" + `VSCode-win32-${arch}`; 25 | console.log(buildPath('arm64')) 26 | const zipDir = arch => path.join(repoPath, '.build', `win32-${arch}`, 'archive'); 27 | const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`); 28 | const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`); 29 | const issPath = path.join(__dirname, 'win32', 'code.iss'); 30 | const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe'); 31 | const signPS1 = path.join(repoPath, 'build', 'azure-pipelines', 'win32', 'sign.ps1'); 32 | 33 | function packageInnoSetup(iss, options, cb) { 34 | options = options || {}; 35 | 36 | const definitions = options.definitions || {}; 37 | 38 | if (process.argv.some(arg => arg === '--debug-inno')) { 39 | definitions['Debug'] = 'true'; 40 | } 41 | 42 | if (process.argv.some(arg => arg === '--sign')) { 43 | definitions['Sign'] = 'true'; 44 | } 45 | 46 | const keys = Object.keys(definitions); 47 | 48 | keys.forEach(key => assert(typeof definitions[key] === 'string', `Missing value for '${key}' in Inno Setup package step`)); 49 | 50 | const defs = keys.map(key => `/d${key}=${definitions[key]}`); 51 | const args = [ 52 | iss, 53 | ...defs, 54 | `/sesrp=powershell.exe -ExecutionPolicy bypass ${signPS1} $f` 55 | ]; 56 | 57 | cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] }) 58 | .on('error', cb) 59 | .on('exit', () => cb(null)); 60 | } 61 | 62 | function buildWin32Setup(arch, target) { 63 | if (target !== 'system' && target !== 'user') { 64 | throw new Error('Invalid setup target'); 65 | } 66 | 67 | return cb => { 68 | const ia32AppId = target === 'system' ? product.win32AppId : product.win32UserAppId; 69 | const x64AppId = target === 'system' ? product.win32x64AppId : product.win32x64UserAppId; 70 | 71 | const sourcePath = buildPath(arch); 72 | const outputPath = setupDir(arch, target); 73 | mkdirp.sync(outputPath); 74 | console.log(sourcePath, outputPath) 75 | 76 | const originalProductJsonPath = path.join(sourcePath, 'resources/app/product.json'); 77 | const productJsonPath = path.join(outputPath, 'product.json'); 78 | const productJson = JSON.parse(fs.readFileSync(originalProductJsonPath, 'utf8')); 79 | productJson['target'] = target; 80 | fs.writeFileSync(productJsonPath, JSON.stringify(productJson, undefined, '\t')); 81 | 82 | const definitions = { 83 | NameLong: product.nameLong, 84 | NameShort: product.nameShort, 85 | DirName: product.win32DirName, 86 | Version: pkg.version, 87 | RawVersion: pkg.version.replace(/-\w+$/, ''), 88 | NameVersion: product.win32NameVersion + (target === 'user' ? ' (User)' : ''), 89 | ExeBasename: product.nameShort, 90 | RegValueName: product.win32RegValueName, 91 | ShellNameShort: product.win32ShellNameShort, 92 | AppMutex: product.win32MutexName, 93 | Arch: arch, 94 | AppId: arch === 'ia32' ? ia32AppId : x64AppId, 95 | IncompatibleTargetAppId: arch === 'ia32' ? product.win32AppId : product.win32x64AppId, 96 | IncompatibleArchAppId: arch === 'ia32' ? x64AppId : ia32AppId, 97 | AppUserId: product.win32AppUserModelId, 98 | ArchitecturesAllowed: arch === 'ia32' ? '' : 'x64', 99 | ArchitecturesInstallIn64BitMode: arch === 'ia32' ? '' : 'x64', 100 | SourceDir: sourcePath, 101 | RepoDir: repoPath, 102 | OutputDir: outputPath, 103 | InstallTarget: target, 104 | ProductJsonPath: productJsonPath 105 | }; 106 | 107 | packageInnoSetup(issPath, { definitions }, cb); 108 | }; 109 | } 110 | 111 | function defineWin32SetupTasks(arch, target) { 112 | const cleanTask = util.rimraf(setupDir(arch, target)); 113 | gulp.task(task.define(`vscode-win32-${arch}-${target}-setup`, task.series(cleanTask, buildWin32Setup(arch, target)))); 114 | } 115 | 116 | defineWin32SetupTasks('ia32', 'system'); 117 | defineWin32SetupTasks('x64', 'system'); 118 | defineWin32SetupTasks('ia32', 'user'); 119 | defineWin32SetupTasks('x64', 'user'); 120 | defineWin32SetupTasks('arm64', 'user'); 121 | 122 | function archiveWin32Setup(arch) { 123 | return cb => { 124 | const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '.', '-r']; 125 | 126 | cp.spawn(_7z, args, { stdio: 'inherit', cwd: buildPath(arch) }) 127 | .on('error', cb) 128 | .on('exit', () => cb(null)); 129 | }; 130 | } 131 | 132 | gulp.task(task.define('vscode-win32-ia32-archive', task.series(util.rimraf(zipDir('ia32')), archiveWin32Setup('ia32')))); 133 | gulp.task(task.define('vscode-win32-x64-archive', task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64')))); 134 | gulp.task(task.define('vscode-win32-arm64-archive', task.series(util.rimraf(zipDir('arm64')), archiveWin32Setup('arm64')))); 135 | 136 | function copyInnoUpdater(arch) { 137 | return () => { 138 | return gulp.src('build/win32/{inno_updater.exe,vcruntime140.dll}', { base: 'build/win32' }) 139 | .pipe(vfs.dest(path.join(buildPath(arch), 'tools'))); 140 | }; 141 | } 142 | 143 | function updateIcon(executablePath) { 144 | return cb => { 145 | const icon = path.join(repoPath, 'resources', 'win32', 'code.ico'); 146 | rcedit(executablePath, { icon }, cb); 147 | }; 148 | } 149 | 150 | gulp.task(task.define('vscode-win32-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), updateIcon(path.join(buildPath('ia32'), 'tools', 'inno_updater.exe'))))); 151 | gulp.task(task.define('vscode-win32-x64-inno-updater', task.series(copyInnoUpdater('x64'), updateIcon(path.join(buildPath('x64'), 'tools', 'inno_updater.exe'))))); 152 | 153 | gulp.task(task.define('vscode-win32-arm64-inno-updater', task.series(copyInnoUpdater('arm64'), updateIcon(path.join(buildPath('arm64'), 'tools', 'inno_updater.exe'))))); 154 | 155 | 156 | // CodeHelper.exe icon 157 | 158 | gulp.task(task.define('vscode-win32-ia32-code-helper', task.series(updateIcon(path.join(buildPath('ia32'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe'))))); 159 | gulp.task(task.define('vscode-win32-x64-code-helper', task.series(updateIcon(path.join(buildPath('x64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe'))))); 160 | -------------------------------------------------------------------------------- /buildFiles/vscode/build/npm/postinstall.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | const cp = require('child_process'); 7 | const path = require('path'); 8 | const fs = require('fs'); 9 | const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn'; 10 | 11 | /** 12 | * @param {string} location 13 | * @param {*} [opts] 14 | */ 15 | function yarnInstall(location, opts) { 16 | opts = opts || {}; 17 | opts.cwd = location; 18 | opts.stdio = 'inherit'; 19 | 20 | const raw = process.env['npm_config_argv'] || '{}'; 21 | const argv = JSON.parse(raw); 22 | const original = argv.original || []; 23 | const args = original.filter(arg => arg === '--ignore-optional' || arg === '--frozen-lockfile'); 24 | 25 | console.log(`Installing dependencies in ${location}...`); 26 | console.log(`$ yarn ${args.join(' ')}`); 27 | const result = cp.spawnSync(yarn, args, opts); 28 | 29 | if (result.error || result.status !== 0) { 30 | process.exit(1); 31 | } 32 | } 33 | 34 | yarnInstall('extensions'); // node modules shared by all extensions 35 | 36 | yarnInstall('remote'); // node modules used by vscode server 37 | 38 | yarnInstall('remote/web'); // node modules used by vscode web 39 | 40 | const allExtensionFolders = fs.readdirSync('extensions'); 41 | const extensions = allExtensionFolders.filter(e => { 42 | try { 43 | let packageJSON = JSON.parse(fs.readFileSync(path.join('extensions', e, 'package.json')).toString()); 44 | return packageJSON && (packageJSON.dependencies || packageJSON.devDependencies); 45 | } catch (e) { 46 | return false; 47 | } 48 | }); 49 | 50 | extensions.forEach(extension => yarnInstall(`extensions/${extension}`)); 51 | 52 | function yarnInstallBuildDependencies() { 53 | // make sure we install the deps of build/lib/watch for the system installed 54 | // node, since that is the driver of gulp 55 | //@ts-ignore 56 | const env = Object.assign({}, process.env); 57 | const watchPath = path.join(path.dirname(__dirname), 'lib', 'watch'); 58 | const yarnrcPath = path.join(watchPath, '.yarnrc'); 59 | 60 | const disturl = 'https://nodejs.org/download/release'; 61 | const target = process.versions.node; 62 | const runtime = 'node'; 63 | 64 | const yarnrc = `disturl "${disturl}" 65 | target "${target}" 66 | runtime "${runtime}"`; 67 | 68 | fs.writeFileSync(yarnrcPath, yarnrc, 'utf8'); 69 | yarnInstall(watchPath, { env }); 70 | } 71 | 72 | yarnInstall(`build`); // node modules required for build 73 | //yarnInstall('test/smoke'); // node modules required for smoketest 74 | yarnInstallBuildDependencies(); // node modules for watching, specific to host node version, not electron 75 | 76 | // Remove the windows process tree typings as this causes duplicate identifier errors in tsc builds 77 | const processTreeDts = path.join('node_modules', 'windows-process-tree', 'typings', 'windows-process-tree.d.ts'); 78 | if (fs.existsSync(processTreeDts)) { 79 | console.log('Removing windows-process-tree.d.ts'); 80 | fs.unlinkSync(processTreeDts); 81 | } -------------------------------------------------------------------------------- /buildFiles/vscode/build/npm/preinstall.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | let err = false; 7 | 8 | const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]); 9 | 10 | if (majorNodeVersion < 8 || majorNodeVersion > 12) { 11 | console.error('\033[1;31m*** Please use node >=8 and <=12.\033[0;0m'); 12 | err = true; 13 | } 14 | 15 | const cp = require('child_process'); 16 | const yarnVersion = cp.execSync('yarn -v', { encoding: 'utf8' }).trim(); 17 | const parsedYarnVersion = /^(\d+)\.(\d+)\./.exec(yarnVersion); 18 | const majorYarnVersion = parseInt(parsedYarnVersion[1]); 19 | const minorYarnVersion = parseInt(parsedYarnVersion[2]); 20 | 21 | if (majorYarnVersion < 1 || minorYarnVersion < 10) { 22 | console.error('\033[1;31m*** Please use yarn >=1.10.1.\033[0;0m'); 23 | err = true; 24 | } 25 | 26 | 27 | if (err) { 28 | console.error(''); 29 | process.exit(1); 30 | } -------------------------------------------------------------------------------- /buildFiles/vscode/build/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-oss-dev-build", 3 | "version": "1.0.0", 4 | "license": "MIT", 5 | "devDependencies": { 6 | "@types/ansi-colors": "^3.2.0", 7 | "@types/azure": "0.9.19", 8 | "@types/debounce": "^1.0.0", 9 | "@types/documentdb": "1.10.2", 10 | "@types/fancy-log": "^1.3.0", 11 | "@types/glob": "^7.1.1", 12 | "@types/gulp": "^4.0.5", 13 | "@types/gulp-concat": "^0.0.32", 14 | "@types/gulp-filter": "^3.0.32", 15 | "@types/gulp-json-editor": "^2.2.31", 16 | "@types/gulp-rename": "^0.0.33", 17 | "@types/gulp-sourcemaps": "^0.0.32", 18 | "@types/gulp-uglify": "^3.0.5", 19 | "@types/mime": "0.0.29", 20 | "@types/minimatch": "^3.0.3", 21 | "@types/minimist": "^1.2.0", 22 | "@types/mocha": "2.2.39", 23 | "@types/node": "^10.14.8", 24 | "@types/pump": "^1.0.1", 25 | "@types/request": "^2.47.0", 26 | "@types/rimraf": "^2.0.2", 27 | "@types/through": "^0.0.29", 28 | "@types/through2": "^2.0.34", 29 | "@types/uglify-es": "^3.0.0", 30 | "@types/underscore": "^1.8.9", 31 | "@types/xml2js": "0.0.33", 32 | "applicationinsights": "1.0.8", 33 | "azure-storage": "^2.1.0", 34 | "documentdb": "1.13.0", 35 | "github-releases": "^0.4.1", 36 | "gulp-bom": "^1.0.0", 37 | "gulp-sourcemaps": "^1.11.0", 38 | "iconv-lite": "0.4.23", 39 | "mime": "^1.3.4", 40 | "minimist": "^1.2.0", 41 | "request": "^2.85.0", 42 | "tslint": "^5.9.1", 43 | "vsce": "1.48.0", 44 | "vscode-telemetry-extractor": "1.5.3", 45 | "xml2js": "^0.4.17" 46 | }, 47 | "scripts": { 48 | "compile": "tsc -p tsconfig.build.json", 49 | "watch": "tsc -p tsconfig.build.json --watch", 50 | "postinstall": "npm run compile", 51 | "npmCheckJs": "tsc --noEmit" 52 | }, 53 | "dependencies": { 54 | "typescript": "^3.6.0-dev.20190810" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /buildFiles/vscode/extensions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-extensions", 3 | "version": "0.0.1", 4 | "description": "Dependencies shared by all extensions", 5 | "dependencies": { 6 | "vscode-sqlite3": "https://github.com/ljsabc/vscode-sqlite3.git", 7 | "native-watchdog": "https://github.com/ljsabc/node-native-watchdog.git", 8 | "typescript": "3.5.2" 9 | }, 10 | "scripts": { 11 | "postinstall": "node ./postinstall" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /buildFiles/vscode/extensions/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | nan@^2.14.0: 6 | version "2.14.0" 7 | resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 8 | integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw= 9 | 10 | "native-watchdog@https://github.com/ljsabc/node-native-watchdog.git": 11 | version "1.0.0" 12 | resolved "https://github.com/ljsabc/node-native-watchdog.git#901b8665e099dc41f71b8b3e472e0b9e4a9cc297" 13 | 14 | typescript@3.5.2: 15 | version "3.5.2" 16 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" 17 | integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== 18 | 19 | "vscode-sqlite3@https://github.com/ljsabc/vscode-sqlite3.git": 20 | version "4.0.9" 21 | resolved "https://github.com/ljsabc/vscode-sqlite3.git#0120cd82d8542a28f5235f2d8c8a87fd09476af4" 22 | dependencies: 23 | nan "^2.14.0" 24 | -------------------------------------------------------------------------------- /buildFiles/vscode/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-oss-dev", 3 | "version": "1.38.0", 4 | "distro": "fffc03749d2060757cd83580d67a15ded244c2af", 5 | "author": { 6 | "name": "Microsoft Corporation" 7 | }, 8 | "license": "MIT", 9 | "main": "./out/main", 10 | "private": true, 11 | "scripts": { 12 | "test": "mocha", 13 | "preinstall": "node build/npm/preinstall.js", 14 | "postinstall": "node build/npm/postinstall.js", 15 | "compile": "gulp compile --max_old_space_size=3600", 16 | "watch": "gulp watch --max_old_space_size=3600", 17 | "watch-client": "gulp watch-client --max_old_space_size=3600", 18 | "monaco-editor-test": "mocha --only-monaco-editor", 19 | "precommit": "node build/gulpfile.hygiene.js", 20 | "gulp": "gulp --max_old_space_size=3600", 21 | "7z": "7z", 22 | "update-grammars": "node build/npm/update-all-grammars.js", 23 | "update-localization-extension": "node build/npm/update-localization-extension.js", 24 | "smoketest": "cd test/smoke && node test/index.js", 25 | "download-builtin-extensions": "node build/lib/builtInExtensions.js", 26 | "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit", 27 | "strict-initialization-watch": "tsc --watch -p src/tsconfig.json --noEmit --strictPropertyInitialization", 28 | "update-distro": "node build/npm/update-distro.js" 29 | }, 30 | "dependencies": { 31 | "vscode-sqlite3": "https://github.com/ljsabc/vscode-sqlite3.git", 32 | "applicationinsights": "1.0.8", 33 | "graceful-fs": "^4.2.1", 34 | "gulp": "^4.0.2", 35 | "http-proxy-agent": "^2.1.0", 36 | "https-proxy-agent": "^2.2.1", 37 | "iconv-lite": "0.5.0", 38 | "jschardet": "1.6.0", 39 | "keytar": "^4.11.0", 40 | "native-is-elevated": "0.3.0", 41 | "native-keymap": "2.0.0", 42 | "native-watchdog": "https://github.com/ljsabc/node-native-watchdog.git", 43 | "node-pty": "0.9.0-beta19", 44 | "nsfw": "https://github.com/ljsabc/nsfw.git", 45 | "onigasm-umd": "^2.2.2", 46 | "semver-umd": "^5.5.3", 47 | "spdlog": "^0.9.0", 48 | "sudo-prompt": "9.0.0", 49 | "v8-inspect-profiler": "^0.0.20", 50 | "vscode-chokidar": "2.1.7", 51 | "vscode-minimist": "^1.2.1", 52 | "vscode-proxy-agent": "0.4.0", 53 | "vscode-ripgrep": "^1.5.6", 54 | "vscode-textmate": "^4.2.2", 55 | "xterm": "3.15.0-beta93", 56 | "xterm-addon-search": "0.2.0-beta3", 57 | "xterm-addon-web-links": "0.1.0-beta10", 58 | "yauzl": "^2.9.2", 59 | "yazl": "^2.4.3" 60 | }, 61 | "devDependencies": { 62 | "7zip": "0.0.6", 63 | "@types/keytar": "^4.4.0", 64 | "@types/mocha": "2.2.39", 65 | "@types/node": "^10.12.12", 66 | "@types/semver": "^5.5.0", 67 | "@types/sinon": "^1.16.36", 68 | "@types/webpack": "^4.4.10", 69 | "@types/winreg": "^1.2.30", 70 | "ansi-colors": "^3.2.3", 71 | "asar": "^0.14.0", 72 | "chromium-pickle-js": "^0.2.0", 73 | "copy-webpack-plugin": "^4.5.2", 74 | "coveralls": "^2.11.11", 75 | "cson-parser": "^1.3.3", 76 | "debounce": "^1.0.0", 77 | "documentdb": "^1.5.1", 78 | "eslint": "^4.18.2", 79 | "event-stream": "3.3.4", 80 | "express": "^4.13.1", 81 | "fancy-log": "^1.3.3", 82 | "fast-plist": "0.1.2", 83 | "glob": "^5.0.13", 84 | "gulp-atom-electron": "^1.22.0", 85 | "gulp-azure-storage": "^0.10.0", 86 | "gulp-buffer": "0.0.2", 87 | "gulp-concat": "^2.6.1", 88 | "gulp-cssnano": "^2.1.3", 89 | "gulp-eslint": "^5.0.0", 90 | "gulp-filter": "^5.1.0", 91 | "gulp-flatmap": "^1.0.2", 92 | "gulp-gunzip": "^1.0.0", 93 | "gulp-json-editor": "^2.5.0", 94 | "gulp-plumber": "^1.2.0", 95 | "gulp-remote-retry-src": "^0.6.0", 96 | "gulp-rename": "^1.2.0", 97 | "gulp-replace": "^0.5.4", 98 | "gulp-shell": "^0.6.5", 99 | "gulp-tsb": "2.0.7", 100 | "gulp-tslint": "^8.1.3", 101 | "gulp-uglify": "^3.0.0", 102 | "gulp-untar": "^0.0.7", 103 | "gulp-vinyl-zip": "^2.1.2", 104 | "http-server": "^0.11.1", 105 | "husky": "^0.13.1", 106 | "innosetup": "5.6.1", 107 | "is": "^3.1.0", 108 | "istanbul-lib-coverage": "^2.0.5", 109 | "istanbul-lib-instrument": "^3.3.0", 110 | "istanbul-lib-report": "^2.0.8", 111 | "istanbul-lib-source-maps": "^3.0.6", 112 | "istanbul-reports": "^2.2.6", 113 | "jsdom-no-contextify": "^3.1.0", 114 | "lazy.js": "^0.4.2", 115 | "merge-options": "^1.0.1", 116 | "mime": "^1.4.1", 117 | "minimatch": "^3.0.4", 118 | "mkdirp": "^0.5.0", 119 | "mocha": "^2.2.5", 120 | "mocha-junit-reporter": "^1.17.0", 121 | "opn": "^5.4.0", 122 | "optimist": "0.3.5", 123 | "p-all": "^1.0.0", 124 | "pump": "^1.0.1", 125 | "queue": "3.0.6", 126 | "rcedit": "^1.1.0", 127 | "rimraf": "^2.2.8", 128 | "sinon": "^1.17.2", 129 | "source-map": "^0.4.4", 130 | "ts-loader": "^4.4.2", 131 | "tslint": "^5.16.0", 132 | "typescript": "3.5.2", 133 | "typescript-formatter": "7.1.0", 134 | "uglify-es": "^3.0.18", 135 | "underscore": "^1.8.2", 136 | "vinyl": "^2.0.0", 137 | "vinyl-fs": "^3.0.0", 138 | "vsce": "1.48.0", 139 | "vscode-debugprotocol": "1.35.0", 140 | "vscode-nls-dev": "^3.3.1", 141 | "webpack": "^4.16.5", 142 | "webpack-cli": "^3.1.0", 143 | "webpack-stream": "^5.1.1" 144 | }, 145 | "repository": { 146 | "type": "git", 147 | "url": "https://github.com/Microsoft/vscode.git" 148 | }, 149 | "bugs": { 150 | "url": "https://github.com/Microsoft/vscode/issues" 151 | }, 152 | "optionalDependencies": { 153 | "vscode-windows-ca-certs": "0.1.0", 154 | "vscode-windows-registry": "1.0.2", 155 | "windows-foreground-love": "0.2.0", 156 | "windows-mutex": "0.3.0", 157 | "windows-process-tree": "0.2.4" 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /buildFiles/vscode/remote/.yarnrc: -------------------------------------------------------------------------------- 1 | disturl "http://nodejs.org/dist" 2 | target "12.8.0" 3 | runtime "node" 4 | -------------------------------------------------------------------------------- /buildFiles/vscode/remote/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-reh", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "applicationinsights": "1.0.8", 6 | "getmac": "1.4.1", 7 | "graceful-fs": "4.1.11", 8 | "http-proxy-agent": "^2.1.0", 9 | "https-proxy-agent": "^2.2.1", 10 | "iconv-lite": "0.5.0", 11 | "jschardet": "1.6.0", 12 | "node-pty": "0.9.0-beta19", 13 | "nsfw": "https://github.com/ljsabc/nsfw.git", 14 | "onigasm-umd": "^2.2.2", 15 | "semver-umd": "^5.5.3", 16 | "spdlog": "^0.9.0", 17 | "vscode-chokidar": "2.1.7", 18 | "vscode-minimist": "^1.2.1", 19 | "vscode-proxy-agent": "0.4.0", 20 | "vscode-ripgrep": "^1.5.5", 21 | "vscode-textmate": "^4.2.2", 22 | "xterm": "3.15.0-beta93", 23 | "xterm-addon-search": "0.2.0-beta3", 24 | "xterm-addon-web-links": "0.1.0-beta10", 25 | "yauzl": "^2.9.2", 26 | "yazl": "^2.4.3", 27 | "vscode-sqlite3": "https://github.com/ljsabc/vscode-sqlite3.git" 28 | }, 29 | "optionalDependencies": { 30 | "vscode-windows-ca-certs": "0.1.0", 31 | "vscode-windows-registry": "1.0.1" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /buildFiles/vscode/remote/web/.yarnrc: -------------------------------------------------------------------------------- 1 | disturl "http://nodejs.org/dist" 2 | target "12.8.0" 3 | runtime "node" 4 | -------------------------------------------------------------------------------- /buildFiles/vscode/remote/web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-web", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "onigasm-umd": "^2.2.2", 6 | "vscode-textmate": "^4.1.1", 7 | "xterm": "3.15.0-beta67", 8 | "xterm-addon-search": "0.2.0-beta2", 9 | "xterm-addon-web-links": "0.1.0-beta10", 10 | "semver-umd": "^5.5.3" 11 | } 12 | } -------------------------------------------------------------------------------- /buildFiles/vscode/remote/web/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | nan@^2.14.0: 6 | version "2.14.0" 7 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 8 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 9 | 10 | onigasm-umd@^2.2.2: 11 | version "2.2.2" 12 | resolved "https://registry.yarnpkg.com/onigasm-umd/-/onigasm-umd-2.2.2.tgz#b989d762df61f899a3052ac794a50bd93fe20257" 13 | integrity sha512-v2eMOJu7iE444L2iJN+U6s6s5S0y7oj/N0DAkrd6wokRtTVoq/v/yaDI1lIqFrTeJbNtqNzYvguDF5yNzW3Rvw== 14 | 15 | oniguruma@^7.2.0: 16 | version "7.2.0" 17 | resolved "https://registry.yarnpkg.com/oniguruma/-/oniguruma-7.2.0.tgz#c9a59c1ea7b9fe67e237a02e02139b638856f3af" 18 | integrity sha512-bh+ZLdykY1sdIx8jBp2zpLbVFDBc3XmKH4Ceo2lijNaN1WhEqtnpqFlmtCbRuDB17nJ58RAUStVwfW8e8uEbnA== 19 | dependencies: 20 | nan "^2.14.0" 21 | 22 | semver-umd@^5.5.3: 23 | version "5.5.3" 24 | resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.3.tgz#b64d7a2d4f5a717b369d56e31940a38e47e34d1e" 25 | integrity sha512-HOnQrn2iKnVe/xlqCTzMXQdvSz3rPbD0DmQXYuQ+oK1dpptGFfPghonQrx5JHl2O7EJwDqtQnjhE7ME23q6ngw== 26 | 27 | vscode-textmate@^4.1.1: 28 | version "4.2.2" 29 | resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-4.2.2.tgz#0b4dabc69a6fba79a065cb6b615f66eac07c8f4c" 30 | integrity sha512-1U4ih0E/KP1zNK/EbpUqyYtI7PY+Ccd2nDGTtiMR/UalLFnmaYkwoWhN1oI7B91ptBN8NdVwWuvyUnvJAulCUw== 31 | dependencies: 32 | oniguruma "^7.2.0" 33 | 34 | xterm-addon-search@0.2.0-beta2: 35 | version "0.2.0-beta2" 36 | resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.2.0-beta2.tgz#c3173f0a6f207ee9f1848849174ee5d6b6ce8262" 37 | integrity sha512-XEcwi2TeFGk2MuIFjiI/OpVXSNO5dGQBvHH3o+9KzqG3ooVqhhDqzwxs092QGNcNCGh8hGn/PWZiczaBBnKm/g== 38 | 39 | xterm-addon-web-links@0.1.0-beta10: 40 | version "0.1.0-beta10" 41 | resolved "https://registry.yarnpkg.com/xterm-addon-web-links/-/xterm-addon-web-links-0.1.0-beta10.tgz#610fa9773a2a5ccd41c1c83ba0e2dd2c9eb66a23" 42 | integrity sha512-xfpjy0V6bB4BR44qIgZQPoCMVakxb65gMscPkHpO//QxvUxKzabV3dxOsIbeZRFkUGsWTFlvz2OoaBLoNtv5gg== 43 | 44 | xterm@3.15.0-beta67: 45 | version "3.15.0-beta67" 46 | resolved "https://registry.yarnpkg.com/xterm/-/xterm-3.15.0-beta67.tgz#71973e174bdc08df620945eecd3f87912f1ac550" 47 | integrity sha512-qLfo9GHVlu/IxgDI3vRGObWZM7UL4eLhMfjZhprx2aXNMpzmrOW6l3JDRsCjUWm93EoVavbULtnDhGSiTlKitQ== 48 | -------------------------------------------------------------------------------- /buildFiles/vscode/remote/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | agent-base@4, agent-base@^4.1.0: 6 | version "4.2.0" 7 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" 8 | integrity sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg== 9 | dependencies: 10 | es6-promisify "^5.0.0" 11 | 12 | agent-base@~4.2.0: 13 | version "4.2.1" 14 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" 15 | integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== 16 | dependencies: 17 | es6-promisify "^5.0.0" 18 | 19 | applicationinsights@1.0.8: 20 | version "1.0.8" 21 | resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.8.tgz#db6e3d983cf9f9405fe1ee5ba30ac6e1914537b5" 22 | integrity sha512-KzOOGdphOS/lXWMFZe5440LUdFbrLpMvh2SaRxn7BmiI550KAoSb2gIhiq6kJZ9Ir3AxRRztjhzif+e5P5IXIg== 23 | dependencies: 24 | diagnostic-channel "0.2.0" 25 | diagnostic-channel-publishers "0.2.1" 26 | zone.js "0.7.6" 27 | 28 | arr-diff@^4.0.0: 29 | version "4.0.0" 30 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 31 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 32 | 33 | arr-flatten@^1.1.0: 34 | version "1.1.0" 35 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 36 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 37 | 38 | arr-union@^3.1.0: 39 | version "3.1.0" 40 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 41 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 42 | 43 | array-unique@^0.3.2: 44 | version "0.3.2" 45 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 46 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 47 | 48 | assign-symbols@^1.0.0: 49 | version "1.0.0" 50 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 51 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 52 | 53 | async-each@^1.0.1: 54 | version "1.0.3" 55 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" 56 | integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== 57 | 58 | atob@^2.1.1: 59 | version "2.1.2" 60 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 61 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 62 | 63 | base@^0.11.1: 64 | version "0.11.2" 65 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 66 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 67 | dependencies: 68 | cache-base "^1.0.1" 69 | class-utils "^0.3.5" 70 | component-emitter "^1.2.1" 71 | define-property "^1.0.0" 72 | isobject "^3.0.1" 73 | mixin-deep "^1.2.0" 74 | pascalcase "^0.1.1" 75 | 76 | binary-extensions@^1.0.0: 77 | version "1.10.0" 78 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" 79 | integrity sha1-muuabF6IY4qtFx4Wf1kAq+JINdA= 80 | 81 | bindings@^1.5.0: 82 | version "1.5.0" 83 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 84 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 85 | dependencies: 86 | file-uri-to-path "1.0.0" 87 | 88 | braces@^2.3.1, braces@^2.3.2: 89 | version "2.3.2" 90 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 91 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 92 | dependencies: 93 | arr-flatten "^1.1.0" 94 | array-unique "^0.3.2" 95 | extend-shallow "^2.0.1" 96 | fill-range "^4.0.0" 97 | isobject "^3.0.1" 98 | repeat-element "^1.1.2" 99 | snapdragon "^0.8.1" 100 | snapdragon-node "^2.0.1" 101 | split-string "^3.0.2" 102 | to-regex "^3.0.1" 103 | 104 | buffer-crc32@~0.2.3: 105 | version "0.2.13" 106 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 107 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 108 | 109 | cache-base@^1.0.1: 110 | version "1.0.1" 111 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 112 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 113 | dependencies: 114 | collection-visit "^1.0.0" 115 | component-emitter "^1.2.1" 116 | get-value "^2.0.6" 117 | has-value "^1.0.0" 118 | isobject "^3.0.1" 119 | set-value "^2.0.0" 120 | to-object-path "^0.3.0" 121 | union-value "^1.0.0" 122 | unset-value "^1.0.0" 123 | 124 | class-utils@^0.3.5: 125 | version "0.3.6" 126 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 127 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 128 | dependencies: 129 | arr-union "^3.1.0" 130 | define-property "^0.2.5" 131 | isobject "^3.0.0" 132 | static-extend "^0.1.1" 133 | 134 | collection-visit@^1.0.0: 135 | version "1.0.0" 136 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 137 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 138 | dependencies: 139 | map-visit "^1.0.0" 140 | object-visit "^1.0.0" 141 | 142 | component-emitter@^1.2.1: 143 | version "1.3.0" 144 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 145 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 146 | 147 | copy-descriptor@^0.1.0: 148 | version "0.1.1" 149 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 150 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 151 | 152 | core-util-is@~1.0.0: 153 | version "1.0.2" 154 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 155 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 156 | 157 | debug@3.1.0, debug@^3.1.0: 158 | version "3.1.0" 159 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 160 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 161 | dependencies: 162 | ms "2.0.0" 163 | 164 | debug@^2.2.0, debug@^2.3.3: 165 | version "2.6.9" 166 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 167 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 168 | dependencies: 169 | ms "2.0.0" 170 | 171 | decode-uri-component@^0.2.0: 172 | version "0.2.0" 173 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 174 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 175 | 176 | define-property@^0.2.5: 177 | version "0.2.5" 178 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 179 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 180 | dependencies: 181 | is-descriptor "^0.1.0" 182 | 183 | define-property@^1.0.0: 184 | version "1.0.0" 185 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 186 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 187 | dependencies: 188 | is-descriptor "^1.0.0" 189 | 190 | define-property@^2.0.2: 191 | version "2.0.2" 192 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 193 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 194 | dependencies: 195 | is-descriptor "^1.0.2" 196 | isobject "^3.0.1" 197 | 198 | diagnostic-channel-publishers@0.2.1: 199 | version "0.2.1" 200 | resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.2.1.tgz#8e2d607a8b6d79fe880b548bc58cc6beb288c4f3" 201 | integrity sha1-ji1geottef6IC1SLxYzGvrKIxPM= 202 | 203 | diagnostic-channel@0.2.0: 204 | version "0.2.0" 205 | resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz#cc99af9612c23fb1fff13612c72f2cbfaa8d5a17" 206 | integrity sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc= 207 | dependencies: 208 | semver "^5.3.0" 209 | 210 | eachr@^3.2.0: 211 | version "3.2.0" 212 | resolved "https://registry.yarnpkg.com/eachr/-/eachr-3.2.0.tgz#2c35e43ea086516f7997cf80b7aa64d55a4a4484" 213 | integrity sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ= 214 | dependencies: 215 | editions "^1.1.1" 216 | typechecker "^4.3.0" 217 | 218 | editions@^1.1.1, editions@^1.3.4: 219 | version "1.3.4" 220 | resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" 221 | integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== 222 | 223 | editions@^2.1.0, editions@^2.1.2: 224 | version "2.1.3" 225 | resolved "https://registry.yarnpkg.com/editions/-/editions-2.1.3.tgz#727ccf3ec2c7b12dcc652c71000f16c4824d6f7d" 226 | integrity sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw== 227 | dependencies: 228 | errlop "^1.1.1" 229 | semver "^5.6.0" 230 | 231 | errlop@^1.1.1: 232 | version "1.1.1" 233 | resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250" 234 | integrity sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw== 235 | dependencies: 236 | editions "^2.1.2" 237 | 238 | es6-promise@^4.0.3: 239 | version "4.2.4" 240 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" 241 | integrity sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ== 242 | 243 | es6-promisify@^5.0.0: 244 | version "5.0.0" 245 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 246 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 247 | dependencies: 248 | es6-promise "^4.0.3" 249 | 250 | expand-brackets@^2.1.4: 251 | version "2.1.4" 252 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 253 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 254 | dependencies: 255 | debug "^2.3.3" 256 | define-property "^0.2.5" 257 | extend-shallow "^2.0.1" 258 | posix-character-classes "^0.1.0" 259 | regex-not "^1.0.0" 260 | snapdragon "^0.8.1" 261 | to-regex "^3.0.1" 262 | 263 | extend-shallow@^2.0.1: 264 | version "2.0.1" 265 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 266 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 267 | dependencies: 268 | is-extendable "^0.1.0" 269 | 270 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 271 | version "3.0.2" 272 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 273 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 274 | dependencies: 275 | assign-symbols "^1.0.0" 276 | is-extendable "^1.0.1" 277 | 278 | extglob@^2.0.4: 279 | version "2.0.4" 280 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 281 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 282 | dependencies: 283 | array-unique "^0.3.2" 284 | define-property "^1.0.0" 285 | expand-brackets "^2.1.4" 286 | extend-shallow "^2.0.1" 287 | fragment-cache "^0.2.1" 288 | regex-not "^1.0.0" 289 | snapdragon "^0.8.1" 290 | to-regex "^3.0.1" 291 | 292 | extract-opts@^3.2.0: 293 | version "3.3.1" 294 | resolved "https://registry.yarnpkg.com/extract-opts/-/extract-opts-3.3.1.tgz#5abbedc98c0d5202e3278727f9192d7e086c6be1" 295 | integrity sha1-WrvtyYwNUgLjJ4cn+Rktfghsa+E= 296 | dependencies: 297 | eachr "^3.2.0" 298 | editions "^1.1.1" 299 | typechecker "^4.3.0" 300 | 301 | fd-slicer@~1.1.0: 302 | version "1.1.0" 303 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 304 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 305 | dependencies: 306 | pend "~1.2.0" 307 | 308 | file-uri-to-path@1.0.0: 309 | version "1.0.0" 310 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 311 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 312 | 313 | fill-range@^4.0.0: 314 | version "4.0.0" 315 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 316 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 317 | dependencies: 318 | extend-shallow "^2.0.1" 319 | is-number "^3.0.0" 320 | repeat-string "^1.6.1" 321 | to-regex-range "^2.1.0" 322 | 323 | for-in@^1.0.2: 324 | version "1.0.2" 325 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 326 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 327 | 328 | fragment-cache@^0.2.1: 329 | version "0.2.1" 330 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 331 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 332 | dependencies: 333 | map-cache "^0.2.2" 334 | 335 | fs-extra@^7.0.0: 336 | version "7.0.1" 337 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 338 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 339 | dependencies: 340 | graceful-fs "^4.1.2" 341 | jsonfile "^4.0.0" 342 | universalify "^0.1.0" 343 | 344 | get-value@^2.0.3, get-value@^2.0.6: 345 | version "2.0.6" 346 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 347 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 348 | 349 | getmac@1.4.1: 350 | version "1.4.1" 351 | resolved "https://registry.yarnpkg.com/getmac/-/getmac-1.4.1.tgz#cfefcb3ee7d7a73cba5292129cb100c19afbe17a" 352 | integrity sha512-mQp+8D+grQX0gG8EJn6VfH0PxE56ZKNsTguOMxPShAiVk9lvH8Ey36eXepG705Ac1HCsvaSrQ/6bPHZ0++F/Mg== 353 | dependencies: 354 | editions "^1.3.4" 355 | extract-opts "^3.2.0" 356 | 357 | glob-parent@^3.1.0: 358 | version "3.1.0" 359 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 360 | integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= 361 | dependencies: 362 | is-glob "^3.1.0" 363 | path-dirname "^1.0.0" 364 | 365 | graceful-fs@4.1.11, graceful-fs@^4.1.2: 366 | version "4.1.11" 367 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 368 | integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= 369 | 370 | graceful-fs@^4.1.11, graceful-fs@^4.1.6: 371 | version "4.2.0" 372 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" 373 | integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== 374 | 375 | has-value@^0.3.1: 376 | version "0.3.1" 377 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 378 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 379 | dependencies: 380 | get-value "^2.0.3" 381 | has-values "^0.1.4" 382 | isobject "^2.0.0" 383 | 384 | has-value@^1.0.0: 385 | version "1.0.0" 386 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 387 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 388 | dependencies: 389 | get-value "^2.0.6" 390 | has-values "^1.0.0" 391 | isobject "^3.0.0" 392 | 393 | has-values@^0.1.4: 394 | version "0.1.4" 395 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 396 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 397 | 398 | has-values@^1.0.0: 399 | version "1.0.0" 400 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 401 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 402 | dependencies: 403 | is-number "^3.0.0" 404 | kind-of "^4.0.0" 405 | 406 | http-proxy-agent@2.1.0, http-proxy-agent@^2.1.0: 407 | version "2.1.0" 408 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" 409 | integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== 410 | dependencies: 411 | agent-base "4" 412 | debug "3.1.0" 413 | 414 | https-proxy-agent@2.2.1, https-proxy-agent@^2.2.1: 415 | version "2.2.1" 416 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" 417 | integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== 418 | dependencies: 419 | agent-base "^4.1.0" 420 | debug "^3.1.0" 421 | 422 | iconv-lite@0.5.0: 423 | version "0.5.0" 424 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.0.tgz#59cdde0a2a297cc2aeb0c6445a195ee89f127550" 425 | integrity sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw== 426 | dependencies: 427 | safer-buffer ">= 2.1.2 < 3" 428 | 429 | inherits@^2.0.3: 430 | version "2.0.4" 431 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 432 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 433 | 434 | inherits@~2.0.3: 435 | version "2.0.3" 436 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 437 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 438 | 439 | ip@^1.1.5: 440 | version "1.1.5" 441 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" 442 | integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= 443 | 444 | is-accessor-descriptor@^0.1.6: 445 | version "0.1.6" 446 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 447 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 448 | dependencies: 449 | kind-of "^3.0.2" 450 | 451 | is-accessor-descriptor@^1.0.0: 452 | version "1.0.0" 453 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 454 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 455 | dependencies: 456 | kind-of "^6.0.0" 457 | 458 | is-binary-path@^1.0.0: 459 | version "1.0.1" 460 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 461 | integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 462 | dependencies: 463 | binary-extensions "^1.0.0" 464 | 465 | is-buffer@^1.0.2: 466 | version "1.1.4" 467 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 468 | integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys= 469 | 470 | is-buffer@^1.1.5: 471 | version "1.1.6" 472 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 473 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 474 | 475 | is-data-descriptor@^0.1.4: 476 | version "0.1.4" 477 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 478 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 479 | dependencies: 480 | kind-of "^3.0.2" 481 | 482 | is-data-descriptor@^1.0.0: 483 | version "1.0.0" 484 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 485 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 486 | dependencies: 487 | kind-of "^6.0.0" 488 | 489 | is-descriptor@^0.1.0: 490 | version "0.1.6" 491 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 492 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 493 | dependencies: 494 | is-accessor-descriptor "^0.1.6" 495 | is-data-descriptor "^0.1.4" 496 | kind-of "^5.0.0" 497 | 498 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 499 | version "1.0.2" 500 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 501 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 502 | dependencies: 503 | is-accessor-descriptor "^1.0.0" 504 | is-data-descriptor "^1.0.0" 505 | kind-of "^6.0.2" 506 | 507 | is-extendable@^0.1.0, is-extendable@^0.1.1: 508 | version "0.1.1" 509 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 510 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 511 | 512 | is-extendable@^1.0.1: 513 | version "1.0.1" 514 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 515 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 516 | dependencies: 517 | is-plain-object "^2.0.4" 518 | 519 | is-extglob@^2.1.0, is-extglob@^2.1.1: 520 | version "2.1.1" 521 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 522 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 523 | 524 | is-glob@^3.1.0: 525 | version "3.1.0" 526 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 527 | integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= 528 | dependencies: 529 | is-extglob "^2.1.0" 530 | 531 | is-glob@^4.0.0: 532 | version "4.0.1" 533 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 534 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 535 | dependencies: 536 | is-extglob "^2.1.1" 537 | 538 | is-number@^3.0.0: 539 | version "3.0.0" 540 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 541 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 542 | dependencies: 543 | kind-of "^3.0.2" 544 | 545 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 546 | version "2.0.4" 547 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 548 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 549 | dependencies: 550 | isobject "^3.0.1" 551 | 552 | is-windows@^1.0.2: 553 | version "1.0.2" 554 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 555 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 556 | 557 | isarray@1.0.0, isarray@~1.0.0: 558 | version "1.0.0" 559 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 560 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 561 | 562 | isobject@^2.0.0: 563 | version "2.1.0" 564 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 565 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 566 | dependencies: 567 | isarray "1.0.0" 568 | 569 | isobject@^3.0.0, isobject@^3.0.1: 570 | version "3.0.1" 571 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 572 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 573 | 574 | jschardet@1.6.0: 575 | version "1.6.0" 576 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" 577 | integrity sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ== 578 | 579 | jsonfile@^4.0.0: 580 | version "4.0.0" 581 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 582 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 583 | optionalDependencies: 584 | graceful-fs "^4.1.6" 585 | 586 | kind-of@^3.0.2: 587 | version "3.0.4" 588 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" 589 | integrity sha1-e47PGKThf4Jp1ztQHJ8jLJaIenQ= 590 | dependencies: 591 | is-buffer "^1.0.2" 592 | 593 | kind-of@^3.0.3, kind-of@^3.2.0: 594 | version "3.2.2" 595 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 596 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 597 | dependencies: 598 | is-buffer "^1.1.5" 599 | 600 | kind-of@^4.0.0: 601 | version "4.0.0" 602 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 603 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 604 | dependencies: 605 | is-buffer "^1.1.5" 606 | 607 | kind-of@^5.0.0: 608 | version "5.1.0" 609 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 610 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 611 | 612 | kind-of@^6.0.0, kind-of@^6.0.2: 613 | version "6.0.2" 614 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 615 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 616 | 617 | lodash.isinteger@^4.0.4: 618 | version "4.0.4" 619 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 620 | integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= 621 | 622 | lodash.isundefined@^3.0.1: 623 | version "3.0.1" 624 | resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" 625 | integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g= 626 | 627 | map-cache@^0.2.2: 628 | version "0.2.2" 629 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 630 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 631 | 632 | map-visit@^1.0.0: 633 | version "1.0.0" 634 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 635 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 636 | dependencies: 637 | object-visit "^1.0.0" 638 | 639 | micromatch@^3.1.10: 640 | version "3.1.10" 641 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 642 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 643 | dependencies: 644 | arr-diff "^4.0.0" 645 | array-unique "^0.3.2" 646 | braces "^2.3.1" 647 | define-property "^2.0.2" 648 | extend-shallow "^3.0.2" 649 | extglob "^2.0.4" 650 | fragment-cache "^0.2.1" 651 | kind-of "^6.0.2" 652 | nanomatch "^1.2.9" 653 | object.pick "^1.3.0" 654 | regex-not "^1.0.0" 655 | snapdragon "^0.8.1" 656 | to-regex "^3.0.2" 657 | 658 | minimist@0.0.8: 659 | version "0.0.8" 660 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 661 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 662 | 663 | mixin-deep@^1.2.0: 664 | version "1.3.2" 665 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 666 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 667 | dependencies: 668 | for-in "^1.0.2" 669 | is-extendable "^1.0.1" 670 | 671 | mkdirp@^0.5.1: 672 | version "0.5.1" 673 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 674 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 675 | dependencies: 676 | minimist "0.0.8" 677 | 678 | ms@2.0.0: 679 | version "2.0.0" 680 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 681 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 682 | 683 | nan@^2.12.1, nan@^2.13.2, nan@^2.14.0: 684 | version "2.14.0" 685 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 686 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 687 | 688 | "nan@https://github.com/nodejs/nan.git": 689 | version "2.14.0" 690 | resolved "https://github.com/nodejs/nan.git#0bdcb89f0d07a57aadc82b2f7a6f36bd0ec31403" 691 | 692 | nanomatch@^1.2.9: 693 | version "1.2.13" 694 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 695 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 696 | dependencies: 697 | arr-diff "^4.0.0" 698 | array-unique "^0.3.2" 699 | define-property "^2.0.2" 700 | extend-shallow "^3.0.2" 701 | fragment-cache "^0.2.1" 702 | is-windows "^1.0.2" 703 | kind-of "^6.0.2" 704 | object.pick "^1.3.0" 705 | regex-not "^1.0.0" 706 | snapdragon "^0.8.1" 707 | to-regex "^3.0.1" 708 | 709 | node-addon-api@1.6.2: 710 | version "1.6.2" 711 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.2.tgz#d8aad9781a5cfc4132cc2fecdbdd982534265217" 712 | integrity sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA== 713 | 714 | node-pty@0.9.0-beta19: 715 | version "0.9.0-beta19" 716 | resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.9.0-beta19.tgz#0fd381b2006f4665c4c2ee0509219e591842371a" 717 | integrity sha512-MkKEvBnauGnzgXNr/oaoWQLVXm1gheIKZs4YQp8883ZiETmbEnpSvD0FU3bELcPXG5VFPRqIGsQJ4KUMBLzkPA== 718 | dependencies: 719 | nan "^2.13.2" 720 | 721 | normalize-path@^3.0.0: 722 | version "3.0.0" 723 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 724 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 725 | 726 | "nsfw@https://github.com/ljsabc/nsfw.git": 727 | version "1.2.5" 728 | resolved "https://github.com/ljsabc/nsfw.git#c3f943d45d6f6af1f31f1eac4b4ec18bb161eaf9" 729 | dependencies: 730 | fs-extra "^7.0.0" 731 | lodash.isinteger "^4.0.4" 732 | lodash.isundefined "^3.0.1" 733 | nan "https://github.com/nodejs/nan.git" 734 | 735 | object-copy@^0.1.0: 736 | version "0.1.0" 737 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 738 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 739 | dependencies: 740 | copy-descriptor "^0.1.0" 741 | define-property "^0.2.5" 742 | kind-of "^3.0.3" 743 | 744 | object-visit@^1.0.0: 745 | version "1.0.1" 746 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 747 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 748 | dependencies: 749 | isobject "^3.0.0" 750 | 751 | object.pick@^1.3.0: 752 | version "1.3.0" 753 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 754 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 755 | dependencies: 756 | isobject "^3.0.1" 757 | 758 | onigasm-umd@^2.2.2: 759 | version "2.2.2" 760 | resolved "https://registry.yarnpkg.com/onigasm-umd/-/onigasm-umd-2.2.2.tgz#b989d762df61f899a3052ac794a50bd93fe20257" 761 | integrity sha512-v2eMOJu7iE444L2iJN+U6s6s5S0y7oj/N0DAkrd6wokRtTVoq/v/yaDI1lIqFrTeJbNtqNzYvguDF5yNzW3Rvw== 762 | 763 | oniguruma@^7.2.0: 764 | version "7.2.0" 765 | resolved "https://registry.yarnpkg.com/oniguruma/-/oniguruma-7.2.0.tgz#c9a59c1ea7b9fe67e237a02e02139b638856f3af" 766 | integrity sha512-bh+ZLdykY1sdIx8jBp2zpLbVFDBc3XmKH4Ceo2lijNaN1WhEqtnpqFlmtCbRuDB17nJ58RAUStVwfW8e8uEbnA== 767 | dependencies: 768 | nan "^2.14.0" 769 | 770 | pascalcase@^0.1.1: 771 | version "0.1.1" 772 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 773 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 774 | 775 | path-dirname@^1.0.0: 776 | version "1.0.2" 777 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 778 | integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= 779 | 780 | path-is-absolute@^1.0.0: 781 | version "1.0.1" 782 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 783 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 784 | 785 | pend@~1.2.0: 786 | version "1.2.0" 787 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 788 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 789 | 790 | picomatch@^2.0.4: 791 | version "2.0.7" 792 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" 793 | integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== 794 | 795 | posix-character-classes@^0.1.0: 796 | version "0.1.1" 797 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 798 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 799 | 800 | process-nextick-args@~1.0.6: 801 | version "1.0.7" 802 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 803 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= 804 | 805 | readable-stream@^2.0.2: 806 | version "2.3.3" 807 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 808 | integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== 809 | dependencies: 810 | core-util-is "~1.0.0" 811 | inherits "~2.0.3" 812 | isarray "~1.0.0" 813 | process-nextick-args "~1.0.6" 814 | safe-buffer "~5.1.1" 815 | string_decoder "~1.0.3" 816 | util-deprecate "~1.0.1" 817 | 818 | readdirp@^2.2.1: 819 | version "2.2.1" 820 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 821 | integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== 822 | dependencies: 823 | graceful-fs "^4.1.11" 824 | micromatch "^3.1.10" 825 | readable-stream "^2.0.2" 826 | 827 | regex-not@^1.0.0, regex-not@^1.0.2: 828 | version "1.0.2" 829 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 830 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 831 | dependencies: 832 | extend-shallow "^3.0.2" 833 | safe-regex "^1.1.0" 834 | 835 | repeat-element@^1.1.2: 836 | version "1.1.2" 837 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 838 | integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= 839 | 840 | repeat-string@^1.6.1: 841 | version "1.6.1" 842 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 843 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 844 | 845 | resolve-url@^0.2.1: 846 | version "0.2.1" 847 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 848 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 849 | 850 | ret@~0.1.10: 851 | version "0.1.15" 852 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 853 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 854 | 855 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 856 | version "5.1.1" 857 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 858 | integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== 859 | 860 | safe-regex@^1.1.0: 861 | version "1.1.0" 862 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 863 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 864 | dependencies: 865 | ret "~0.1.10" 866 | 867 | "safer-buffer@>= 2.1.2 < 3": 868 | version "2.1.2" 869 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 870 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 871 | 872 | semver-umd@^5.5.3: 873 | version "5.5.3" 874 | resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.3.tgz#b64d7a2d4f5a717b369d56e31940a38e47e34d1e" 875 | integrity sha512-HOnQrn2iKnVe/xlqCTzMXQdvSz3rPbD0DmQXYuQ+oK1dpptGFfPghonQrx5JHl2O7EJwDqtQnjhE7ME23q6ngw== 876 | 877 | semver@^5.3.0: 878 | version "5.6.0" 879 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 880 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 881 | 882 | semver@^5.6.0: 883 | version "5.7.0" 884 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" 885 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== 886 | 887 | set-value@^2.0.0, set-value@^2.0.1: 888 | version "2.0.1" 889 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 890 | integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 891 | dependencies: 892 | extend-shallow "^2.0.1" 893 | is-extendable "^0.1.1" 894 | is-plain-object "^2.0.3" 895 | split-string "^3.0.1" 896 | 897 | smart-buffer@^4.0.1: 898 | version "4.0.1" 899 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" 900 | integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg== 901 | 902 | snapdragon-node@^2.0.1: 903 | version "2.1.1" 904 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 905 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 906 | dependencies: 907 | define-property "^1.0.0" 908 | isobject "^3.0.0" 909 | snapdragon-util "^3.0.1" 910 | 911 | snapdragon-util@^3.0.1: 912 | version "3.0.1" 913 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 914 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 915 | dependencies: 916 | kind-of "^3.2.0" 917 | 918 | snapdragon@^0.8.1: 919 | version "0.8.2" 920 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 921 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 922 | dependencies: 923 | base "^0.11.1" 924 | debug "^2.2.0" 925 | define-property "^0.2.5" 926 | extend-shallow "^2.0.1" 927 | map-cache "^0.2.2" 928 | source-map "^0.5.6" 929 | source-map-resolve "^0.5.0" 930 | use "^3.1.0" 931 | 932 | socks-proxy-agent@4.0.1: 933 | version "4.0.1" 934 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" 935 | integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== 936 | dependencies: 937 | agent-base "~4.2.0" 938 | socks "~2.2.0" 939 | 940 | socks@~2.2.0: 941 | version "2.2.1" 942 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" 943 | integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w== 944 | dependencies: 945 | ip "^1.1.5" 946 | smart-buffer "^4.0.1" 947 | 948 | source-map-resolve@^0.5.0: 949 | version "0.5.2" 950 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 951 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 952 | dependencies: 953 | atob "^2.1.1" 954 | decode-uri-component "^0.2.0" 955 | resolve-url "^0.2.1" 956 | source-map-url "^0.4.0" 957 | urix "^0.1.0" 958 | 959 | source-map-url@^0.4.0: 960 | version "0.4.0" 961 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 962 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 963 | 964 | source-map@^0.5.6: 965 | version "0.5.7" 966 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 967 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 968 | 969 | spdlog@^0.9.0: 970 | version "0.9.0" 971 | resolved "https://registry.yarnpkg.com/spdlog/-/spdlog-0.9.0.tgz#c85dd9d0b9cd385f6f3f5b92dc9d2e1691092b5c" 972 | integrity sha512-AeLWPCYjGi4w5DfpXFKb9pCdgMe4gFBMroGfgwXiNfzwmcNYGoFQkIuD1MChZBR1Iwrx0nGhsTSHFslt/qfTAQ== 973 | dependencies: 974 | bindings "^1.5.0" 975 | mkdirp "^0.5.1" 976 | nan "^2.14.0" 977 | 978 | split-string@^3.0.1, split-string@^3.0.2: 979 | version "3.1.0" 980 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 981 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 982 | dependencies: 983 | extend-shallow "^3.0.0" 984 | 985 | static-extend@^0.1.1: 986 | version "0.1.2" 987 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 988 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 989 | dependencies: 990 | define-property "^0.2.5" 991 | object-copy "^0.1.0" 992 | 993 | string_decoder@~1.0.3: 994 | version "1.0.3" 995 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 996 | integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== 997 | dependencies: 998 | safe-buffer "~5.1.0" 999 | 1000 | to-object-path@^0.3.0: 1001 | version "0.3.0" 1002 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 1003 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 1004 | dependencies: 1005 | kind-of "^3.0.2" 1006 | 1007 | to-regex-range@^2.1.0: 1008 | version "2.1.1" 1009 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 1010 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 1011 | dependencies: 1012 | is-number "^3.0.0" 1013 | repeat-string "^1.6.1" 1014 | 1015 | to-regex@^3.0.1, to-regex@^3.0.2: 1016 | version "3.0.2" 1017 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 1018 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 1019 | dependencies: 1020 | define-property "^2.0.2" 1021 | extend-shallow "^3.0.2" 1022 | regex-not "^1.0.2" 1023 | safe-regex "^1.1.0" 1024 | 1025 | typechecker@^4.3.0: 1026 | version "4.7.0" 1027 | resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-4.7.0.tgz#5249f427358f45b7250c4924fd4d01ed9ba435e9" 1028 | integrity sha512-4LHc1KMNJ6NDGO+dSM/yNfZQRtp8NN7psYrPHUblD62Dvkwsp3VShsbM78kOgpcmMkRTgvwdKOTjctS+uMllgQ== 1029 | dependencies: 1030 | editions "^2.1.0" 1031 | 1032 | union-value@^1.0.0: 1033 | version "1.0.1" 1034 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 1035 | integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== 1036 | dependencies: 1037 | arr-union "^3.1.0" 1038 | get-value "^2.0.6" 1039 | is-extendable "^0.1.1" 1040 | set-value "^2.0.1" 1041 | 1042 | universalify@^0.1.0: 1043 | version "0.1.2" 1044 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1045 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1046 | 1047 | unset-value@^1.0.0: 1048 | version "1.0.0" 1049 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 1050 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 1051 | dependencies: 1052 | has-value "^0.3.1" 1053 | isobject "^3.0.0" 1054 | 1055 | upath@^1.1.1: 1056 | version "1.1.2" 1057 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" 1058 | integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== 1059 | 1060 | urix@^0.1.0: 1061 | version "0.1.0" 1062 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 1063 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 1064 | 1065 | use@^3.1.0: 1066 | version "3.1.1" 1067 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 1068 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 1069 | 1070 | util-deprecate@~1.0.1: 1071 | version "1.0.2" 1072 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1073 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1074 | 1075 | vscode-anymatch@3.0.3: 1076 | version "3.0.3" 1077 | resolved "https://registry.yarnpkg.com/vscode-anymatch/-/vscode-anymatch-3.0.3.tgz#5a79101e6df7e659a1f070367bc42f190eb4ae76" 1078 | integrity sha512-qQgfbzJJ5nNShh4jjC3BBekY4d8emcxHFgnqcXwsB/PUKvJPCg7AZYXM7hqS7EDnKrX9tsIFwFMihZ7yut92Qg== 1079 | dependencies: 1080 | normalize-path "^3.0.0" 1081 | picomatch "^2.0.4" 1082 | 1083 | vscode-chokidar@2.1.7: 1084 | version "2.1.7" 1085 | resolved "https://registry.yarnpkg.com/vscode-chokidar/-/vscode-chokidar-2.1.7.tgz#c5b31eb87402f4779bb4170915245bdcb6f7854b" 1086 | integrity sha512-uSNEQetPjAlgIAHmcF9E6M+KCw0f842rsEnJ64aamUAV6TO7gkXNCvLSzb4MuLsPU7ZQyCa++DrLQFjvciK5dg== 1087 | dependencies: 1088 | async-each "^1.0.1" 1089 | braces "^2.3.2" 1090 | glob-parent "^3.1.0" 1091 | inherits "^2.0.3" 1092 | is-binary-path "^1.0.0" 1093 | is-glob "^4.0.0" 1094 | normalize-path "^3.0.0" 1095 | path-is-absolute "^1.0.0" 1096 | readdirp "^2.2.1" 1097 | upath "^1.1.1" 1098 | vscode-anymatch "3.0.3" 1099 | optionalDependencies: 1100 | vscode-fsevents "1.2.12" 1101 | 1102 | vscode-fsevents@1.2.12: 1103 | version "1.2.12" 1104 | resolved "https://registry.yarnpkg.com/vscode-fsevents/-/vscode-fsevents-1.2.12.tgz#01a71a01f90ee95ca822c34427aba437a17c03a7" 1105 | integrity sha512-bH/jRdDpSesGpqiVLjp6gHLSKUOh7oNvppzZ17JIrdbRYCcDmV7dIWR5gQc27DFy0RD9JDT+t+ixMid94MkM1A== 1106 | dependencies: 1107 | nan "^2.14.0" 1108 | 1109 | vscode-minimist@^1.2.1: 1110 | version "1.2.1" 1111 | resolved "https://registry.yarnpkg.com/vscode-minimist/-/vscode-minimist-1.2.1.tgz#e63d3f4a9bf3680dcb8f9304eed612323fd6926a" 1112 | integrity sha512-cmB72+qDoiCFJ1UKnGUBdGYfXzdpJ3bQM/D/+XhkVk5v7uZgLbYiCz5JcwVyk7NC7hSi5VGtQ4wihzmi12NeXw== 1113 | 1114 | vscode-proxy-agent@0.4.0: 1115 | version "0.4.0" 1116 | resolved "https://registry.yarnpkg.com/vscode-proxy-agent/-/vscode-proxy-agent-0.4.0.tgz#574833e65405c6333f350f1b9fef9909deccb6b5" 1117 | integrity sha512-L+WKjDOXRPxpq31Uj1Wr3++jaNNmhykn8JnGoYcwepbTnUwJKCbyyXRgb/hlBx0LXsF+k3BsnXt+r+5Q8rm97g== 1118 | dependencies: 1119 | debug "3.1.0" 1120 | http-proxy-agent "2.1.0" 1121 | https-proxy-agent "2.2.1" 1122 | socks-proxy-agent "4.0.1" 1123 | 1124 | vscode-ripgrep@^1.5.5: 1125 | version "1.5.5" 1126 | resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.5.tgz#24c0e9cb356cf889c98e15ecb58f9cf654a1d961" 1127 | integrity sha512-OrPrAmcun4+uZAuNcQvE6CCPskh+5AsjANod/Q3zRcJcGNxgoOSGlQN9RPtatkUNmkN8Nn8mZBnS1jMylu/dKg== 1128 | 1129 | "vscode-sqlite3@https://github.com/ljsabc/vscode-sqlite3.git": 1130 | version "4.0.9" 1131 | resolved "https://github.com/ljsabc/vscode-sqlite3.git#0120cd82d8542a28f5235f2d8c8a87fd09476af4" 1132 | dependencies: 1133 | nan "^2.14.0" 1134 | 1135 | vscode-textmate@^4.2.2: 1136 | version "4.2.2" 1137 | resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-4.2.2.tgz#0b4dabc69a6fba79a065cb6b615f66eac07c8f4c" 1138 | integrity sha512-1U4ih0E/KP1zNK/EbpUqyYtI7PY+Ccd2nDGTtiMR/UalLFnmaYkwoWhN1oI7B91ptBN8NdVwWuvyUnvJAulCUw== 1139 | dependencies: 1140 | oniguruma "^7.2.0" 1141 | 1142 | vscode-windows-ca-certs@0.1.0: 1143 | version "0.1.0" 1144 | resolved "https://registry.yarnpkg.com/vscode-windows-ca-certs/-/vscode-windows-ca-certs-0.1.0.tgz#d58eeb40b536130918cfde2b01e6dc7e5c1bd757" 1145 | integrity sha512-ZfZbfJIE09Q0dwGqmqTj7kuAq4g6lul9WPJvo0DkKjln8/FL+dY3wUKIKbYwWQp4x56SBTLBq3tJkD72xQ9Gqw== 1146 | dependencies: 1147 | node-addon-api "1.6.2" 1148 | 1149 | vscode-windows-registry@1.0.1: 1150 | version "1.0.1" 1151 | resolved "https://registry.yarnpkg.com/vscode-windows-registry/-/vscode-windows-registry-1.0.1.tgz#bc9f765563eb6dc1c9ad9a41f9eaacc84dfadc7c" 1152 | integrity sha512-q0aKXi9Py1OBdmXIJJFeJBzpPJMMUxMJNBU9FysWIXEwJyMQGEVevKzM2J3Qz/cHSc5LVqibmoUWzZ7g+97qRg== 1153 | dependencies: 1154 | nan "^2.12.1" 1155 | 1156 | xterm-addon-search@0.2.0-beta3: 1157 | version "0.2.0-beta3" 1158 | resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.2.0-beta3.tgz#710ce14658e269c5a4791f5a9e2f520883a2e62b" 1159 | integrity sha512-KzVdkEtGbKJe9ER2TmrI7XjF/wUq1lir9U63vPJi0t2ymQvIECl1V63f9QtOp1vvpdhbZiXBxO+vGTj+y0tRow== 1160 | 1161 | xterm-addon-web-links@0.1.0-beta10: 1162 | version "0.1.0-beta10" 1163 | resolved "https://registry.yarnpkg.com/xterm-addon-web-links/-/xterm-addon-web-links-0.1.0-beta10.tgz#610fa9773a2a5ccd41c1c83ba0e2dd2c9eb66a23" 1164 | integrity sha512-xfpjy0V6bB4BR44qIgZQPoCMVakxb65gMscPkHpO//QxvUxKzabV3dxOsIbeZRFkUGsWTFlvz2OoaBLoNtv5gg== 1165 | 1166 | xterm@3.15.0-beta93: 1167 | version "3.15.0-beta93" 1168 | resolved "https://registry.yarnpkg.com/xterm/-/xterm-3.15.0-beta93.tgz#ba1d5e4588f07be9bb36c70082a0e034f9bad565" 1169 | integrity sha512-MgzlwBOOwa/xYmWnLiTmqVOk3v/YRxzlPej940zpcp/chXW+ErsSPW6sehy68wedO9TWbR3oBUe8agfLH0uOuA== 1170 | 1171 | yauzl@^2.9.2: 1172 | version "2.10.0" 1173 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1174 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1175 | dependencies: 1176 | buffer-crc32 "~0.2.3" 1177 | fd-slicer "~1.1.0" 1178 | 1179 | yazl@^2.4.3: 1180 | version "2.4.3" 1181 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.4.3.tgz#ec26e5cc87d5601b9df8432dbdd3cd2e5173a071" 1182 | integrity sha1-7CblzIfVYBud+EMtvdPNLlFzoHE= 1183 | dependencies: 1184 | buffer-crc32 "~0.2.3" 1185 | 1186 | zone.js@0.7.6: 1187 | version "0.7.6" 1188 | resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.6.tgz#fbbc39d3e0261d0986f1ba06306eb3aeb0d22009" 1189 | integrity sha1-+7w50+AmHQmG8boGMG6zrrDSIAk= 1190 | -------------------------------------------------------------------------------- /electon_dist.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ljsabc/Code-OSS-Win32-arm64/4b9341ec307301f200372a47ac24b30d9c69771a/electon_dist.7z -------------------------------------------------------------------------------- /gn.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ljsabc/Code-OSS-Win32-arm64/4b9341ec307301f200372a47ac24b30d9c69771a/gn.exe -------------------------------------------------------------------------------- /node.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ljsabc/Code-OSS-Win32-arm64/4b9341ec307301f200372a47ac24b30d9c69771a/node.lib -------------------------------------------------------------------------------- /screenshot.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ljsabc/Code-OSS-Win32-arm64/4b9341ec307301f200372a47ac24b30d9c69771a/screenshot.jfif --------------------------------------------------------------------------------