| """ |
| Copyright 2020-present Open Networking Foundation |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| http://www.apache.org/licenses/LICENSE-2.0 |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| """ |
| |
| package(default_visibility = ["//:__subpackages__"]) |
| |
| load("@build_bazel_rules_nodejs//:index.bzl", "pkg_web") |
| load("@npm//history-server:index.bzl", "history_server") |
| load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") |
| load("@npm//@bazel/terser:index.bzl", "terser_minified") |
| load("@npm//@bazel/typescript:index.bzl", "ts_library") |
| |
| exports_files([ |
| "WEB-INF/web.xml", |
| "karma.conf.js", |
| ]) |
| |
| # We don't import from these, but the generated ngfactory code will |
| NG_FACTORY_ADDED_IMPORTS = [ |
| "@npm//@angular/animations", |
| "@npm//@angular/forms", |
| ] |
| |
| ts_library( |
| name = "gui2", |
| srcs = [ |
| "environments/environment.prod.ts", |
| "onos.dev.ts", |
| "onos.prod.ts", |
| ], |
| tsconfig = "//web/gui2:tsconfig.json", |
| use_angular_plugin = True, |
| deps = NG_FACTORY_ADDED_IMPORTS + [ |
| "//web/gui2/src/main/webapp/app:app", |
| "@npm//@angular/core", |
| "@npm//@angular/platform-browser", |
| "@npm//@angular/router", |
| ], |
| ) |
| |
| rollup_bundle( |
| name = "bundle-es2015", |
| config_file = "rollup.config.js", |
| entry_points = { |
| ":onos.prod.ts": "index", |
| }, |
| output_dir = True, |
| deps = [ |
| "//web/gui2/src/main/webapp:gui2", |
| "@npm//@rollup/plugin-commonjs", |
| "@npm//@rollup/plugin-node-resolve", |
| ], |
| ) |
| |
| terser_minified( |
| name = "bundle-es2015.min", |
| src = ":bundle-es2015", |
| config_file = "terser.config.json", |
| ) |
| |
| # Files that we serve in both development and production |
| _ASSETS = [ |
| # This label references an output of the "styles" sass_binary above. |
| ":onos.global.css", |
| "//web/gui:src/main/webapp/data", |
| "fonts/open-sans-v15-latin-300.woff", |
| "fonts/open-sans-v15-latin-300.woff2", |
| "fonts/open-sans-v15-latin-600.woff", |
| "fonts/open-sans-v15-latin-600.woff2", |
| "fonts/open-sans-v15-latin-700.woff", |
| "fonts/open-sans-v15-latin-700.woff2", |
| "error.html", |
| "login.html", |
| "nav.html", |
| "not-ready.html", |
| # We load zone.js outside the bundle. That's because it's a "pollyfill" |
| # which speculates that such features might be available in a browser. |
| # Also it's tricky to configure dead code elimination to understand that |
| # zone.js is used, given that we don't have any import statement that |
| # imports from it. |
| "@npm//:node_modules/zone.js/dist/zone.min.js", |
| ] |
| |
| pkg_web( |
| name = "prodapp", |
| srcs = _ASSETS + [ |
| ":bundle-es2015.min", |
| # Include polyfills that will be requested by old browsers |
| # "@npm//:node_modules/systemjs/dist/system.js", |
| # "@npm//:node_modules/core-js/client/core.min.js", |
| ":index.html", |
| ], |
| # In production mode we serve some polyfills with script tags that have hard-coded paths in the index.html |
| # so we must serve them at that path, by stripping a prefix |
| additional_root_paths = [ |
| "web/gui/src/main/webapp", |
| ], |
| ) |
| |
| history_server( |
| name = "prodserver", |
| data = [":prodapp"], |
| # '-a src/prodapp' will ask history-server to scan for all apps under the |
| # given folder this will result in the following auto-configuration: |
| # /example => src/prodapp/example |
| # / => src/prodapp |
| templated_args = [ |
| "-a", |
| "web/gui2/src/main/webapp/prodapp", |
| ], |
| ) |
| |
| filegroup( |
| name = "rxjs_umd_modules", |
| srcs = [ |
| ":rxjs_shims.js", |
| "@npm//:node_modules/rxjs/bundles/rxjs.umd.js", |
| ], |
| ) |
| |
| # Convert d3 to an AMD module so it can be loaded in the RequireJS test environment. |
| genrule( |
| name = "d3_requirejs", |
| srcs = [ |
| "@npm//:node_modules/d3/dist/d3.js", |
| ], |
| outs = [ |
| "d3.js", |
| ], |
| cmd = """echo "define('d3', function(require, exports, module) {" > $@ \ |
| && cat $< >> $@ \ |
| && echo '});' >> $@""", |
| ) |
| |
| ts_library( |
| name = "initialize_testbed", |
| testonly = 1, |
| srcs = [ |
| "initialize_testbed.ts", |
| ], |
| tsconfig = "//web/gui2:tsconfig.json", |
| deps = [ |
| "@npm//@angular/core", |
| "@npm//@angular/platform-browser-dynamic", |
| "@npm//@types", |
| ], |
| ) |