From 31910bc32c99a21aeaac151e34001f07d4bcbe5f Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 15 May 2024 16:54:44 -0700 Subject: [PATCH 01/95] Rewrite the frontend completely --- .eslintrc.js | 46 ++- babel.config.json | 5 +- binderhub/app.py | 4 +- binderhub/handlers/__init__.py | 0 binderhub/handlers/repoproviders.py | 15 + binderhub/main.py | 21 +- binderhub/repoproviders.py | 140 ++++---- binderhub/static/index.css | 314 ------------------ binderhub/static/js/components/builder.jsx | 176 ++++++++++ binderhub/static/js/components/header.jsx | 25 ++ binderhub/static/js/components/howitworks.jsx | 75 +++++ .../static/js/components/linkbuilder.jsx | 237 +++++++++++++ binderhub/static/js/components/progress.jsx | 56 ++++ binderhub/static/js/index.js | 253 -------------- binderhub/static/js/index.jsx | 67 ++++ binderhub/static/js/index.scss | 51 +++ binderhub/static/js/src/form.js | 46 --- binderhub/static/js/src/loading.js | 36 -- binderhub/static/js/src/log.js | 75 ----- binderhub/static/js/src/path.js | 27 -- binderhub/static/js/src/repo.js | 45 --- binderhub/static/js/src/urls.js | 39 --- binderhub/static/loading.css | 126 ------- binderhub/templates/index.html | 206 ------------ binderhub/templates/page.html | 64 +--- package.json | 16 +- webpack.config.js | 36 +- 27 files changed, 891 insertions(+), 1310 deletions(-) create mode 100644 binderhub/handlers/__init__.py create mode 100644 binderhub/handlers/repoproviders.py delete mode 100644 binderhub/static/index.css create mode 100644 binderhub/static/js/components/builder.jsx create mode 100644 binderhub/static/js/components/header.jsx create mode 100644 binderhub/static/js/components/howitworks.jsx create mode 100644 binderhub/static/js/components/linkbuilder.jsx create mode 100644 binderhub/static/js/components/progress.jsx delete mode 100644 binderhub/static/js/index.js create mode 100644 binderhub/static/js/index.jsx create mode 100644 binderhub/static/js/index.scss delete mode 100644 binderhub/static/js/src/form.js delete mode 100644 binderhub/static/js/src/loading.js delete mode 100644 binderhub/static/js/src/log.js delete mode 100644 binderhub/static/js/src/path.js delete mode 100644 binderhub/static/js/src/repo.js delete mode 100644 binderhub/static/js/src/urls.js delete mode 100644 binderhub/static/loading.css delete mode 100644 binderhub/templates/index.html diff --git a/.eslintrc.js b/.eslintrc.js index 6ebd4e25b..d3e0f4517 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,14 +1,40 @@ module.exports = { env: { browser: true, - jquery: true, - node: true, - es6: true, - "jest/globals": true, - }, - extends: ["eslint:recommended"], - ignorePatterns: ["**/dist"], - parser: "@babel/eslint-parser", - plugins: ["jest"], - rules: {}, + es2021: true, + }, + extends: ["eslint:recommended", "plugin:react/recommended"], + overrides: [ + { + env: { + node: true, + }, + files: [".eslintrc.{js,cjs}"], + parserOptions: { + sourceType: "script", + }, + }, + ], + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: ["react"], + rules: { + "react/react-in-jsx-scope": "off", + "react/jsx-uses-react": "off", + // Temporarily turn off prop-types + "react/prop-types": "off", + "no-unused-vars": ["error", { args: "after-used" }], + }, + ignorePatterns: [ + "jupyterhub_fancy_profiles/static/*.js", + "webpack.config.js", + "babel.config.js", + ], + settings: { + react: { + version: "detect", + }, + }, }; diff --git a/babel.config.json b/babel.config.json index 1320b9a32..08d007ea3 100644 --- a/babel.config.json +++ b/babel.config.json @@ -1,3 +1,6 @@ { - "presets": ["@babel/preset-env"] + "presets": [ + "@babel/preset-env", + ["@babel/preset-react", { "runtime": "automatic" }] + ] } diff --git a/binderhub/app.py b/binderhub/app.py index 5eb97aa9c..877c362e3 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -45,8 +45,8 @@ from .base import AboutHandler, Custom404, VersionHandler from .build import BuildExecutor, KubernetesBuildExecutor, KubernetesCleaner from .builder import BuildHandler -from .config import ConfigHandler from .events import EventLog +from .handlers.repoproviders import RepoProvidersHandlers from .health import HealthHandler, KubernetesHealthHandler from .launcher import Launcher from .log import log_request @@ -973,7 +973,6 @@ def initialize(self, *args, **kwargs): (r"/versions", VersionHandler), (r"/build/([^/]+)/(.+)", BuildHandler), (r"/health", self.health_handler_class, {"hub_url": self.hub_url_local}), - (r"/_config", ConfigHandler), ] if not self.enable_api_only_mode: # In API only mode the endpoints in the list below @@ -983,6 +982,7 @@ def initialize(self, *args, **kwargs): (r"/v2/([^/]+)/(.+)", ParameterizedMainHandler), (r"/", MainHandler), (r"/repo/([^/]+)/([^/]+)(/.*)?", LegacyRedirectHandler), + (r"/api/repoproviders", RepoProvidersHandlers), # for backward-compatible mybinder.org badge URLs # /assets/images/badge.svg ( diff --git a/binderhub/handlers/__init__.py b/binderhub/handlers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/binderhub/handlers/repoproviders.py b/binderhub/handlers/repoproviders.py new file mode 100644 index 000000000..7bfb3c94f --- /dev/null +++ b/binderhub/handlers/repoproviders.py @@ -0,0 +1,15 @@ +import json + +from ..base import BaseHandler + + +class RepoProvidersHandlers(BaseHandler): + """Serve config""" + + async def get(self): + config = [ + repo_provider_class.display_config + for repo_provider_class in self.settings["repo_providers"].values() + ] + self.set_header("Content-type", "application/json") + self.write(json.dumps(config)) diff --git a/binderhub/main.py b/binderhub/main.py index 2a2027598..a995e5b39 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -30,15 +30,20 @@ class MainHandler(BaseHandler): @authenticated def get(self): + repoproviders_display_config = [ + repo_provider_class.display_config + for repo_provider_class in self.settings["repo_providers"].values() + ] + page_config = { + "baseUrl": self.settings["base_url"], + "badgeBaseUrl": self.get_badge_base_url(), + "logoUrl": self.static_url("logo.svg"), + "logoWidth": "320px", + "repoProviders": repoproviders_display_config, + } self.render_template( - "index.html", - badge_base_url=self.get_badge_base_url(), - base_url=self.settings["base_url"], - submit=False, - google_analytics_code=self.settings["google_analytics_code"], - google_analytics_domain=self.settings["google_analytics_domain"], - extra_footer_scripts=self.settings["extra_footer_scripts"], - repo_providers=self.settings["repo_providers"], + "page.html", + page_config=page_config, ) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index a72cc9387..3e219d906 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -120,6 +120,8 @@ class RepoProvider(LoggingConfigurable): unresolved_ref = Unicode() + display_config = {} + git_credentials = Unicode( "", help=""" @@ -220,11 +222,17 @@ def is_valid_sha1(sha1): class FakeProvider(RepoProvider): """Fake provider for local testing of the UI""" - labels = { - "text": "Fake Provider", - "tag_text": "Fake Ref", - "ref_prop_disabled": True, - "label_prop_disabled": True, + display_config = { + "displayName": "Fake", + "id": "fake", + "enabled": False, + "repo": { + "label": "Fake Repo", + "placeholder": "", + }, + "ref": { + "enabled": False, + }, } async def get_resolved_ref(self): @@ -251,15 +259,18 @@ class ZenodoProvider(RepoProvider): name = Unicode("Zenodo") - display_name = "Zenodo DOI" - - labels = { - "text": "Zenodo DOI (10.5281/zenodo.3242074)", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": True, - "label_prop_disabled": True, + display_config = { + "displayName": "Zenodo DOI", + "id": "zenodo", + "repo": { + "label": "Zenodo DOI", + "placeholder": "example: 10.5281/zenodo.3242074", + }, + "ref": {"enabled": False}, } + display_name = "Zenodo DOI" + async def get_resolved_ref(self): client = AsyncHTTPClient() req = HTTPRequest(f"https://doi.org/{self.spec}", user_agent="BinderHub") @@ -300,15 +311,18 @@ class FigshareProvider(RepoProvider): display_name = "Figshare DOI" - url_regex = re.compile(r"(.*)/articles/([^/]+)/([^/]+)/(\d+)(/)?(\d+)?") - - labels = { - "text": "Figshare DOI (10.6084/m9.figshare.9782777.v1)", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": True, - "label_prop_disabled": True, + display_config = { + "displayName": "FigShare DOI", + "id": "figshare", + "repo": { + "label": "FigShare DOI", + "placeholder": "example: 10.6084/m9.figshare.9782777.v1", + }, + "ref": {"enabled": False}, } + url_regex = re.compile(r"(.*)/articles/([^/]+)/([^/]+)/(\d+)(/)?(\d+)?") + async def get_resolved_ref(self): client = AsyncHTTPClient() req = HTTPRequest(f"https://doi.org/{self.spec}", user_agent="BinderHub") @@ -351,11 +365,11 @@ class DataverseProvider(RepoProvider): display_name = "Dataverse DOI" - labels = { - "text": "Dataverse DOI (10.7910/DVN/TJCLKP)", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": True, - "label_prop_disabled": True, + display_config = { + "displayName": "Dataverse DOI", + "id": "dataverse", + "repo": {"label": "FigShare DOI", "placeholder": "example: 10.7910/DVN/TJCLKP"}, + "ref": {"enabled": False}, } async def get_resolved_ref(self): @@ -418,15 +432,15 @@ class HydroshareProvider(RepoProvider): display_name = "Hydroshare resource" - url_regex = re.compile(r".*([0-9a-f]{32}).*") - - labels = { - "text": "Hydroshare resource id or URL", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": True, - "label_prop_disabled": True, + display_config = { + "displayName": "Hydroshare resource", + "id": "hydroshare", + "repo": {"label": "Hydroshare resource id or URL", "placeholder": ""}, + "ref": {"enabled": False}, } + url_regex = re.compile(r".*([0-9a-f]{32}).*") + def _parse_resource_id(self, spec): match = self.url_regex.match(spec) if not match: @@ -495,11 +509,14 @@ class GitRepoProvider(RepoProvider): display_name = "Git repository" - labels = { - "text": "Arbitrary git repository URL (http://git.example.com/repo)", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": False, - "label_prop_disabled": False, + display_config = { + "displayName": "Git repository", + "id": "git", + "repo": { + "label": "Arbitrary git repository URL", + "placeholder": "example: http://git.example.com/repo", + }, + "ref": {"enabled": True, "default": "HEAD"}, } allowed_protocols = Set( @@ -599,6 +616,17 @@ class GitLabRepoProvider(RepoProvider): display_name = "GitLab.com" + display_config = { + "displayName": "GitLab", + "id": "gl", + "detect": {"regex": "^(https?://gitlab.com/)?(?.*)"}, + "repo": { + "label": "GitLab repository name or URL", + "placeholder": "example: https://gitlab.com/mosaik/examples/mosaik-tutorials-on-binder or mosaik/examples/mosaik-tutorials-on-binder", + }, + "ref": {"enabled": True, "default": "HEAD"}, + } + hostname = Unicode( "gitlab.com", config=True, @@ -655,13 +683,6 @@ def _default_git_credentials(self): return rf"username=binderhub\npassword={self.private_token}" return "" - labels = { - "text": "GitLab.com repository or URL", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": False, - "label_prop_disabled": False, - } - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.quoted_namespace, unresolved_ref = self.spec.split("/", 1) @@ -722,6 +743,17 @@ class GitHubRepoProvider(RepoProvider): name = Unicode("GitHub") + display_config = { + "displayName": "GitHub", + "id": "gh", + "detect": {"regex": "^(https?://github.com/)?(?.*)"}, + "repo": { + "label": "GitHub repository name or URL", + "placeholder": "example: yuvipanda/requirements or https://github.com/yuvipanda/requirements", + }, + "ref": {"enabled": True, "default": "HEAD"}, + } + display_name = "GitHub" # shared cache for resolved refs @@ -808,13 +840,6 @@ def _default_git_credentials(self): return rf"username={self.access_token}\npassword=x-oauth-basic" return "" - labels = { - "text": "GitHub repository name or URL", - "tag_text": "Git ref (branch, tag, or commit)", - "ref_prop_disabled": False, - "label_prop_disabled": False, - } - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.user, self.repo, self.unresolved_ref = tokenize_spec(self.spec) @@ -993,6 +1018,14 @@ class GistRepoProvider(GitHubRepoProvider): display_name = "Gist" + display_config = { + "displayName": "Gist", + "id": "gist", + "detect": {"regex": "^(https?://gist.github.com/)?(?.*)"}, + "repo": {"label": "Gist ID (username/gistId) or URL", "placeholder": ""}, + "ref": {"enabled": True, "default": "HEAD"}, + } + hostname = Unicode("gist.github.com") allow_secret_gist = Bool( @@ -1001,13 +1034,6 @@ class GistRepoProvider(GitHubRepoProvider): help="Flag for allowing usages of secret Gists. The default behavior is to disallow secret gists.", ) - labels = { - "text": "Gist ID (username/gistId) or URL", - "tag_text": "Git commit SHA", - "ref_prop_disabled": False, - "label_prop_disabled": False, - } - def __init__(self, *args, **kwargs): # We dont need to initialize entirely the same as github super(RepoProvider, self).__init__(*args, **kwargs) diff --git a/binderhub/static/index.css b/binderhub/static/index.css deleted file mode 100644 index 31021457f..000000000 --- a/binderhub/static/index.css +++ /dev/null @@ -1,314 +0,0 @@ -/* custom fonts we are going to be using. */ - -@font-face { - font-family: ClearSans-Thin; - src: url("../static/fonts/clearsans/WOFF/ClearSans-Thin.woff"); -} - -@font-face { - font-family: ClearSans-Light; - src: url("../static/fonts/clearsans/WOFF/ClearSans-Light.woff"); -} - -@font-face { - font-family: ClearSans-Bold; - src: url("../static/fonts/clearsans/WOFF/ClearSans-Bold.woff"); -} - -.hidden { - display: none; -} - -body { - font-family: "ClearSans-Thin", sans-serif; -} - -form { - font-family: "ClearSans-Light", sans-serif; -} - -p > a { - cursor: pointer; - color: rgb(120, 120, 120); - border-bottom: dotted 2px rgb(120, 120, 120); - transition: all 0.1s; - text-decoration: non; -} - -p > a:hover { - color: rgb(30, 30, 30); - border-bottom: dotted 2px rgb(30, 30, 30); - text-decoration: none; -} - -#build-form { - color: rgb(50, 50, 50); - background: rgb(235, 236, 237); - padding: 55px; - padding-top: 25px; - padding-bottom: 20px; -} - -#banner-container { - text-align: left; - color: black; - padding: 16px; - width: 100%; - background-color: rgb(235, 236, 237); - position: relative; -} - -#logo-container { - text-align: center; - color: black; - padding: 16px; -} - -#logo { - padding: 8px; - padding-bottom: 22px; - padding-top: 10px; -} - -#header { - margin-left: 5%; - width: 90%; - padding-bottom: 24px; -} - -.btn-submit { - background-color: rgb(223, 132, 41); - box-shadow: 1px 1px rgba(0, 0, 0, 0.075); - color: white; - border: none; - height: 35px; - width: 100%; - border-radius: 4px; -} - -.jumbotron { - background: rgb(235, 236, 237); -} - -h3 { - color: rgb(70, 70, 70); - font-size: 42px; - line-height: 1.3; -} - -h4 { - font-size: 20px; - color: rgb(70, 70, 70); -} - -#form-header { - padding-bottom: 5px; -} - -#build-progress { - font-family: ClearSans-Bold, sans-serif; - font-size: 16px; - height: 28px; - text-shadow: black 1px 1px 1px; -} - -#build-progress .progress-bar { - padding-top: 4px; -} - -#explanation { - color: rgb(40, 40, 40); - font-size: 20px; - line-height: 1.5; - font-weight: bold; -} - -#log-container .panel-body { - /* match color of terminal! */ - background-color: black; -} - -#launch-buttons { - margin-top: 24px; - width: 100%; -} - -#log { - height: 400px; -} - -#log .terminal { - font-family: "Roboto Mono", monospace; -} - -.url, -.badges { - background-color: #ffffff; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - border: 1px solid #ccc; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - border-radius: 4px; - display: flex; - flex-direction: column; - align-items: flex-end; -} - -.url { - margin-bottom: 20px; -} - -.badges { - margin-bottom: 40px; -} - -.dropdownmenu { - background-color: #dddddd; - border-radius: 3px 3px 0px 0px; - height: 35px; - width: 100%; -} - -.dropdownmenu label { - color: black; - padding: 6px 12px; - margin: 0px; - width: 95%; -} - -.badge-snippet-row, -.url-row { - width: 100%; - display: flex; - flex-direction: reverse; - border-bottom: 1px #ccc solid; - padding: 10px; -} - -.badge-snippet-row .icon, -.url-row .icon { - order: 0; - max-width: 30px; - max-height: 40px; - padding: 3px; - /* margin-top: 13px; */ - /*margin-left: 4px; */ -} - -.input-group-btn .btn { - border: solid #ccc 1px; -} - -.badge-snippet-row pre, -.url-row pre { - order: 1; - margin: 0; - flex-grow: 1; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -#how-it-works { - line-height: 1.5; - font-weight: bold; - font-size: 18px; -} - -#how-it-works div.row { - margin: 32px; - display: flex; - flex-direction: row; - align-items: baseline; -} - -.point { - border-radius: 50%; - border-width: 5px; - border-style: solid; - width: 40px; - height: 40px; - padding: 2px 9px; - font-weight: 800; - font-family: "ClearSans-Bold"; -} - -.point-container { - padding-top: 4px; -} - -.point-orange { - border-color: rgb(247, 144, 42); - color: rgb(247, 144, 42); -} - -.point-red { - border-color: rgb(204, 67, 101); - color: rgb(204, 67, 101); -} - -.point-blue { - border-color: rgb(41, 124, 184); - color: rgb(41, 124, 184); -} - -/*reduce font size of h1 and h2 so the initial design when h3 and h4 tags were used respectively is retained*/ -h1 { - font-size: 1.25em; -} - -h2 { - font-size: 1.125em; -} - -span.front-em { - font-size: 1.5em; -} - -div.front { - font-size: 0.9em; -} - -h4.logo-subtext { - margin-top: -60px; -} - -.form-row .form-group:first-child { - padding-left: 0; -} - -.form-row .form-group:last-child { - padding-right: 0; -} - -#badge-snippets { - width: 100%; -} - -/**/ - -@media (max-width: 991px) { - .form-row .form-group { - padding: 0; - } - - #launch-buttons { - margin-top: inherit; - } -} - -/*Clipboard styling*/ - -img.icon.clipboard { - order: 1; - border: thin solid silver; - border-radius: 5px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - border-left: none; -} -img.icon.clipboard:hover { - background: #f5f5f5; -} - -img.icon.clipboard:active { - background: #ddd; -} diff --git a/binderhub/static/js/components/builder.jsx b/binderhub/static/js/components/builder.jsx new file mode 100644 index 000000000..fa5f6aa99 --- /dev/null +++ b/binderhub/static/js/components/builder.jsx @@ -0,0 +1,176 @@ +import { BinderRepository } from "@jupyterhub/binderhub-client"; +import { useEffect, useRef, useState } from "react"; +import { Terminal } from "xterm"; +import { FitAddon } from "xterm-addon-fit"; +import "../../../node_modules/xterm/css/xterm.css"; +import { Progress, PROGRESS_STATES } from "./progress.jsx"; + +function redirectToRunningServer(serverUrl, token, urlPath) { + // Make sure urlPath doesn't start with a `/` + urlPath = urlPath.replace(/^\//, ""); + const redirectUrl = new URL(urlPath, serverUrl); + redirectUrl.searchParams.append("token", token); + window.location.href = redirectUrl; +} + +async function buildImage( + baseUrl, + provider, + repo, + ref, + term, + fitAddon, + urlPath, + setIsLaunching, + setProgressState, + setEnsureLogsVisible, +) { + const providerSpec = `${provider.id}/${repo}/${ref}`; + const buildEndPointURL = new URL("build/", baseUrl); + const image = new BinderRepository(providerSpec, buildEndPointURL); + // Clear the last line written, so we start from scratch + term.write("\x1b[2K\r"); + fitAddon.fit(); + for await (const data of image.fetch()) { + // Write message to the log terminal if there is a message + if (data.message !== undefined) { + // Write out all messages to the terminal! + term.write(data.message); + // Resize our terminal to make sure it fits messages appropriately + fitAddon.fit(); + } else { + console.log(data); + } + + switch (data.phase) { + case "failed": { + image.close(); + setIsLaunching(false); + setProgressState(PROGRESS_STATES.FAILED); + setEnsureLogsVisible(true); + break; + } + case "ready": { + // Close the EventStream when the image has been built + image.close(); + redirectToRunningServer(data.url, data.token, urlPath); + console.log(data); + break; + } + case "building": { + setProgressState(PROGRESS_STATES.BUILDING); + break; + } + case "waiting": { + setProgressState(PROGRESS_STATES.WAITING); + break; + } + case "pushing": { + setProgressState(PROGRESS_STATES.PUSHING); + break; + } + case "built": { + setProgressState(PROGRESS_STATES.PUSHING); + break; + } + case "launching": { + setProgressState(PROGRESS_STATES.LAUNCHING); + break; + } + default: { + console.log("Unknown phase in response from server"); + console.log(data); + break; + } + } + } +} + +function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { + const toggleLogsButton = useRef(); + useEffect(() => { + async function setup() { + const term = new Terminal({ + convertEol: true, + disableStdin: true, + }); + const fitAddon = new FitAddon(); + term.loadAddon(fitAddon); + term.open(document.getElementById("terminal")); + fitAddon.fit(); + setTerm(term); + setFitAddon(fitAddon); + term.write("Logs will appear here when image is being built"); + } + setup(); + }, []); + + return ( +
+
+ Build Logs + +
+
+
+
+
+ ); +} +export function ImageBuilder({ + baseUrl, + selectedProvider, + repo, + reference, + urlPath, + isLaunching, + setIsLaunching, +}) { + const [term, setTerm] = useState(null); + const [fitAddon, setFitAddon] = useState(null); + const [progressState, setProgressState] = useState(null); + const [logsVisible, setLogsVisible] = useState(false); + useEffect(() => { + async function setup() { + if (isLaunching) { + await buildImage( + baseUrl, + selectedProvider, + repo, + reference, + term, + fitAddon, + urlPath, + setIsLaunching, + setProgressState, + setLogsVisible, + ); + } + } + setup(); + }, [isLaunching]); + return ( +
+ + +
+ ); +} diff --git a/binderhub/static/js/components/header.jsx b/binderhub/static/js/components/header.jsx new file mode 100644 index 000000000..7717ad2d7 --- /dev/null +++ b/binderhub/static/js/components/header.jsx @@ -0,0 +1,25 @@ +export function Header({ logoUrl, logoWidth }) { + return ( + <> +
+ +
Turn a Git repo into a collection of interactive notebooks
+

+ Have a repository full of Jupyter notebooks? With Binder, open those + notebooks in an executable environment, making your code immediately + reproducible by anyone, anywhere. +

+

+ New to Binder? Get started with a{" "} + + Zero-to-Binder tutorial + {" "} + in Julia, Python, or R. +

+
+ + ); +} diff --git a/binderhub/static/js/components/howitworks.jsx b/binderhub/static/js/components/howitworks.jsx new file mode 100644 index 000000000..e6091d758 --- /dev/null +++ b/binderhub/static/js/components/howitworks.jsx @@ -0,0 +1,75 @@ +export function HowItWorks() { + return ( +
+

How it works

+ +
+
+ + 1 + +
+
+

Enter your repository information

+ Provide in the above form a URL or a GitHub repository that contains + Jupyter notebooks, as well as a branch, tag, or commit hash. Launch + will build your Binder repository. If you specify a path to a notebook + file, the notebook will be opened in your browser after building. +
+
+ +
+
+ + 2 + +
+
+

We build a Docker image of your repository

+ Binder will search for a dependency file, such as requirements.txt or + environment.yml, in the repository's root directory ( + + more details on more complex dependencies in documentation + + ). The dependency files will be used to build a Docker image. If an + image has already been built for the given repository, it will not be + rebuilt. If a new commit has been made, the image will automatically + be rebuilt. +
+
+ +
+
+ + 3 + +
+
+

Interact with your notebooks in a live environment!

{" "} + JupyterHub{" "} + server will host your repository's contents. We offer you a reusable + link and badge to your live repository that you can easily share with + others. +
+
+
+ ); +} diff --git a/binderhub/static/js/components/linkbuilder.jsx b/binderhub/static/js/components/linkbuilder.jsx new file mode 100644 index 000000000..48271ac75 --- /dev/null +++ b/binderhub/static/js/components/linkbuilder.jsx @@ -0,0 +1,237 @@ +import { useEffect, useState } from "react"; +import copy from "copy-to-clipboard"; + +function ProviderSelector({ + providers, + selectedProvider, + setSelectedProvider, +}) { + return ( + <> +
+ + +
+ + ); +} + +function UrlSelector({ setUrlPath }) { + const KINDS = [ + { + id: "file", + displayName: "File", + placeholder: "eg. index.ipynb", + label: "File to open (in JupyterLab)", + // Using /doc/tree as that opens documents *and* notebook files + getUrlPath: (input) => `/doc/tree/${input}`, + }, + { + id: "url", + displayName: "URL", + placeholder: "eg. /rstudio", + label: "URL to open", + getUrlPath: (input) => input, + }, + ]; + + const [kind, setKind] = useState(KINDS[0]); + const [path, setPath] = useState(""); + + useEffect(() => { + if (path) { + setUrlPath(kind.getUrlPath(path)); + } else { + setUrlPath(""); + } + }, [kind, path]); + return ( + <> + +
+ setPath(e.target.value)} + /> + + +
+ + ); +} + +export function LinkGenerator({ + providers, + publicBaseUrl, + selectedProvider, + setSelectedProvider, + repo, + setRepo, + reference, + setReference, + urlPath, + setUrlPath, + isLaunching, + setIsLaunching, +}) { + // uh, so react doesn't like it when your prop is named 'ref' + const [ref, setRef] = [reference, setReference]; + const [launchUrl, setLaunchUrl] = useState(""); + + useEffect(() => { + if (selectedProvider.ref.enabled && ref === "") { + setRef(selectedProvider.ref.default); + } else { + setRef(""); + } + }, [selectedProvider]); + + useEffect(() => { + let url; + if (repo !== "" && (!selectedProvider.ref.enabled || ref !== "")) { + const processedRepo = selectedProvider.repo.preProcess + ? selectedProvider.repo.preProcess(repo) + : repo; + url = new URL( + `v2/${selectedProvider.id}/${processedRepo}/${ref}`, + publicBaseUrl, + ); + if (urlPath) { + url.searchParams.set("urlpath", urlPath); + } + setLaunchUrl(url.toString()); + } else { + setLaunchUrl(""); + } + }, [repo, ref, urlPath, selectedProvider]); + return ( + <> +
+

Build and launch a repository

+
+ +
+ + { + let repo = e.target.value; + if (selectedProvider.detect && selectedProvider.detect.regex) { + // repo value *must* be detected by this regex, or it is not valid yet + const re = new RegExp(selectedProvider.detect.regex); + const results = re.exec(repo); + if ( + results !== null && + results.groups && + results.groups.repo + ) { + setRepo(results.groups.repo); + } + } else { + setRepo(e.target.value); + } + }} + /> +
+
+ +
+
+ +
+ setRef(e.target.value)} + /> +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+ + ); +} diff --git a/binderhub/static/js/components/progress.jsx b/binderhub/static/js/components/progress.jsx new file mode 100644 index 000000000..fbc3a0042 --- /dev/null +++ b/binderhub/static/js/components/progress.jsx @@ -0,0 +1,56 @@ +export const PROGRESS_STATES = {}; +PROGRESS_STATES.WAITING = { + precursors: [], + widthPercent: "10", + label: "Waiting", + className: "text-bg-danger", +}; +PROGRESS_STATES.BUILDING = { + precursors: [PROGRESS_STATES.WAITING], + widthPercent: "50", + label: "Building", + className: "text-bg-warning", +}; +PROGRESS_STATES.PUSHING = { + precursors: [PROGRESS_STATES.WAITING, PROGRESS_STATES.BUILDING], + widthPercent: "30", + label: "Pushing", + className: "text-bg-info", +}; +PROGRESS_STATES.LAUNCHING = { + precursors: [ + PROGRESS_STATES.WAITING, + PROGRESS_STATES.BUILDING, + PROGRESS_STATES.PUSHING, + ], + widthPercent: "10", + label: "Launching", + className: "text-bg-success", +}; +PROGRESS_STATES.FAILED = { + precursors: [], + widthPercent: "100", + label: "Failed", + className: "text-bg-danger", +}; + +export function Progress({ state }) { + return ( +
+ {state === null + ? "" + : state.precursors.concat([state]).map((s) => ( +
+ {s.label} +
+ ))} +
+ ); +} diff --git a/binderhub/static/js/index.js b/binderhub/static/js/index.js deleted file mode 100644 index dbd9639ab..000000000 --- a/binderhub/static/js/index.js +++ /dev/null @@ -1,253 +0,0 @@ -/* If this file gets over 200 lines of code long (not counting docs / comments), start using a framework - */ -import ClipboardJS from "clipboard"; - -import { BinderRepository } from "@jupyterhub/binderhub-client"; -import { updatePathText } from "./src/path"; -import { nextHelpText } from "./src/loading"; -import { updateFavicon } from "./src/favicon"; - -import "xterm/css/xterm.css"; - -// Include just the bootstrap components we use -import "bootstrap/js/dropdown"; -import "bootstrap/dist/css/bootstrap.min.css"; -import "bootstrap/dist/css/bootstrap-theme.min.css"; - -import "../index.css"; -import { setUpLog } from "./src/log"; -import { updateUrls } from "./src/urls"; -import { getBuildFormValues } from "./src/form"; -import { updateRepoText } from "./src/repo"; - -/** - * @type {URL} - * Base URL of this binderhub installation. - * - * Guaranteed to have a leading & trailing slash by the binderhub python configuration. - */ -const BASE_URL = new URL( - document.getElementById("base-url").dataset.url, - document.location.origin, -); - -const badge_base_url = document.getElementById("badge-base-url").dataset.url; -/** - * @type {URL} - * Base URL to use for both badge images as well as launch links. - * - * If not explicitly set, will default to BASE_URL. Primarily set up different than BASE_URL - * when used as part of a federation - */ -const BADGE_BASE_URL = badge_base_url - ? new URL(badge_base_url, document.location.origin) - : BASE_URL; - -async function build(providerSpec, log, fitAddon, path, pathType) { - updateFavicon(new URL("favicon_building.ico", BASE_URL)); - // split provider prefix off of providerSpec - const spec = providerSpec.slice(providerSpec.indexOf("/") + 1); - // Update the text of the loading page if it exists - if ($("div#loader-text").length > 0) { - $("div#loader-text p.launching").text( - "Starting repository: " + decodeURIComponent(spec), - ); - } - - $("#build-progress .progress-bar").addClass("hidden"); - log.clear(); - - $(".on-build").removeClass("hidden"); - - const buildToken = $("#build-token").data("token"); - const apiToken = $("#api-token").data("token"); - const buildEndpointUrl = new URL("build", BASE_URL); - const image = new BinderRepository(providerSpec, buildEndpointUrl, { - apiToken, - buildToken, - }); - - for await (const data of image.fetch()) { - // Write message to the log terminal if there is a message - if (data.message !== undefined) { - log.writeAndStore(data.message); - fitAddon.fit(); - } else { - console.log(data); - } - - switch (data.phase) { - case "waiting": { - $("#phase-waiting").removeClass("hidden"); - break; - } - case "building": { - $("#phase-building").removeClass("hidden"); - log.show(); - break; - } - case "pushing": { - $("#phase-pushing").removeClass("hidden"); - break; - } - case "failed": { - $("#build-progress .progress-bar").addClass("hidden"); - $("#phase-failed").removeClass("hidden"); - - $("#loader").addClass("paused"); - - // If we fail for any reason, show an error message and logs - updateFavicon(new URL("favicon_fail.ico", BASE_URL)); - log.show(); - if ($("div#loader-text").length > 0) { - $("#loader").addClass("error"); - $("div#loader-text p.launching").html( - "Error loading " + spec + "!
See logs below for details.", - ); - } - image.close(); - break; - } - case "built": { - $("#phase-already-built").removeClass("hidden"); - $("#phase-launching").removeClass("hidden"); - updateFavicon(new URL("favicon_success.ico", BASE_URL)); - break; - } - case "ready": { - image.close(); - // If data.url is an absolute URL, it'll be used. Else, it'll be interpreted - // relative to current page's URL. - const serverUrl = new URL(data.url, window.location.href); - // user server is ready, redirect to there - window.location.href = image.getFullRedirectURL( - serverUrl, - data.token, - path, - pathType, - ); - break; - } - default: { - console.log("Unknown phase in response from server"); - console.log(data); - break; - } - } - } - return image; -} - -function indexMain() { - const [log, fitAddon] = setUpLog(); - - // setup badge dropdown and default values. - updateUrls(BADGE_BASE_URL); - - $("#provider_prefix_sel li").click(function (event) { - event.preventDefault(); - - $("#provider_prefix-selected").text($(this).text()); - $("#provider_prefix").val($(this).attr("value")); - updateRepoText(BASE_URL); - updateUrls(BADGE_BASE_URL); - }); - - $("#url-or-file-btn") - .find("a") - .click(function (evt) { - evt.preventDefault(); - - $("#url-or-file-selected").text($(this).text()); - updatePathText(); - updateUrls(BADGE_BASE_URL); - }); - updatePathText(); - updateRepoText(BASE_URL); - - $("#repository").on("keyup paste change", function () { - updateUrls(BADGE_BASE_URL); - }); - - $("#ref").on("keyup paste change", function () { - updateUrls(BADGE_BASE_URL); - }); - - $("#filepath").on("keyup paste change", function () { - updateUrls(BADGE_BASE_URL); - }); - - $("#toggle-badge-snippet").on("click", function () { - const badgeSnippets = $("#badge-snippets"); - if (badgeSnippets.hasClass("hidden")) { - badgeSnippets.removeClass("hidden"); - $("#badge-snippet-caret").removeClass("glyphicon-triangle-right"); - $("#badge-snippet-caret").addClass("glyphicon-triangle-bottom"); - } else { - badgeSnippets.addClass("hidden"); - $("#badge-snippet-caret").removeClass("glyphicon-triangle-bottom"); - $("#badge-snippet-caret").addClass("glyphicon-triangle-right"); - } - - return false; - }); - - $("#build-form").submit(async function (e) { - e.preventDefault(); - const formValues = getBuildFormValues(); - updateUrls(BADGE_BASE_URL, formValues); - await build( - formValues.providerPrefix + "/" + formValues.repo + "/" + formValues.ref, - log, - fitAddon, - formValues.path, - formValues.pathType, - ); - }); -} - -async function loadingMain(providerSpec) { - const [log, fitAddon] = setUpLog(); - // retrieve (encoded) filepath/urlpath from URL - // URLSearchParams.get returns the decoded value, - // that is good because it is the real value and '/'s will be trimmed in `launch` - const params = new URL(location.href).searchParams; - let pathType, path; - path = params.get("urlpath"); - if (path) { - pathType = "url"; - } else { - path = params.get("labpath"); - if (path) { - pathType = "lab"; - } else { - path = params.get("filepath"); - if (path) { - pathType = "file"; - } - } - } - await build(providerSpec, log, fitAddon, path, pathType); - - // Looping through help text every few seconds - const launchMessageInterval = 6 * 1000; - setInterval(nextHelpText, launchMessageInterval); - - // If we have a long launch, add a class so we display a long launch msg - const launchTimeout = 120 * 1000; - setTimeout(() => { - $("div#loader-links p.text-center").addClass("longLaunch"); - nextHelpText(); - }, launchTimeout); - - return false; -} - -// export entrypoints -window.loadingMain = loadingMain; -window.indexMain = indexMain; - -// Load the clipboard after the page loads so it can find the buttons it needs -window.onload = function () { - new ClipboardJS(".clipboard"); -}; diff --git a/binderhub/static/js/index.jsx b/binderhub/static/js/index.jsx new file mode 100644 index 000000000..499b311b6 --- /dev/null +++ b/binderhub/static/js/index.jsx @@ -0,0 +1,67 @@ +import { createRoot } from "react-dom/client"; +import { LinkGenerator } from "./components/linkbuilder.jsx"; +import { Header } from "./components/header.jsx"; +import { ImageBuilder } from "./components/builder.jsx"; +import { HowItWorks } from "./components/howitworks.jsx"; +import { useState } from "react"; + +import "bootstrap/js/dist/dropdown.js"; + +import "./index.scss"; +import "@fontsource/clear-sans/100.css"; +import "@fontsource/clear-sans/300.css"; +import "@fontsource/clear-sans/400.css"; + +const PAGE_CONFIG = window.pageConfig; +const PROVIDERS = PAGE_CONFIG.repoProviders; +const baseUrl = new URL(PAGE_CONFIG.baseUrl, window.location.href); +const publicBaseUrl = PAGE_CONFIG.publicBaseUrl + ? new URL(baseUrl) + : new URL(PAGE_CONFIG.baseUrl, window.location.href); + +export default function BinderHomePage() { + const defaultProvider = PROVIDERS[0]; + const [selectedProvider, setSelectedProvider] = useState(defaultProvider); + const [repo, setRepo] = useState(""); + const [ref, setRef] = useState(""); + const [urlPath, setUrlPath] = useState(""); + const [isLaunching, setIsLaunching] = useState(false); + return ( +
+
+
+ + + +
+
+ ); +} + +const root = createRoot(document.getElementById("root")); +console.log(root); +root.render(); diff --git a/binderhub/static/js/index.scss b/binderhub/static/js/index.scss new file mode 100644 index 000000000..f02696195 --- /dev/null +++ b/binderhub/static/js/index.scss @@ -0,0 +1,51 @@ +@import "bootstrap/scss/functions"; + +// Theming overrides +$primary: rgb(223, 132, 41); +$custom-colors: ( + "primary": $primary, +); + +// Import these after theming overrides so they pick up these variables +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/root"; +@import "bootstrap/scss/reboot"; + +// Merge the maps +$theme-colors: map-merge($theme-colors, $custom-colors); + +@import "bootstrap/scss/bootstrap"; + +// Font choices + +body { + font-family: "Clear Sans"; + font-weight: 300; +} + +form { + font-weight: 400; +} + +.btn-primary, +.btn-primary:hover { + color: $white; +} + +a { + text-decoration: none; +} + +// Could not replicate this style with just utility classes unfortunately +.circle-point { + border: 5px solid; + padding: 2px 9px; + border-radius: 50%; + font-weight: bold; +} + +@import "bootstrap-icons/font/bootstrap-icons.css"; diff --git a/binderhub/static/js/src/form.js b/binderhub/static/js/src/form.js deleted file mode 100644 index cc00d7b45..000000000 --- a/binderhub/static/js/src/form.js +++ /dev/null @@ -1,46 +0,0 @@ -import { getPathType } from "./path"; - -/** - * Parse current values in form and return them with appropriate URL encoding - * @typedef FormValues - * @prop {string} providerPrefix prefix denoting what provider was selected - * @prop {string} repo repo to build - * @prop {[string]} ref optional ref in this repo to build - * @prop {string} path Path to launch after this repo has been built - * @prop {string} pathType Type of thing to open path with (raw url, notebook file, lab, etc) - * @returns {} - */ -export function getBuildFormValues() { - const providerPrefix = $("#provider_prefix").val().trim(); - let repo = $("#repository").val().trim(); - if (providerPrefix !== "git") { - repo = repo.replace(/^(https?:\/\/)?gist.github.com\//, ""); - repo = repo.replace(/^(https?:\/\/)?github.com\//, ""); - repo = repo.replace(/^(https?:\/\/)?gitlab.com\//, ""); - } - // trim trailing or leading '/' on repo - repo = repo.replace(/(^\/)|(\/?$)/g, ""); - // git providers encode the URL of the git repository as the repo - // argument. - if (repo.includes("://") || providerPrefix === "gl") { - repo = encodeURIComponent(repo); - } - - let ref = $("#ref").val().trim() || $("#ref").attr("placeholder"); - if ( - providerPrefix === "zenodo" || - providerPrefix === "figshare" || - providerPrefix === "dataverse" || - providerPrefix === "hydroshare" - ) { - ref = ""; - } - const path = $("#filepath").val().trim(); - return { - providerPrefix: providerPrefix, - repo: repo, - ref: ref, - path: path, - pathType: getPathType(), - }; -} diff --git a/binderhub/static/js/src/loading.js b/binderhub/static/js/src/loading.js deleted file mode 100644 index 3f0d3beaf..000000000 --- a/binderhub/static/js/src/loading.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * List of help messages we will cycle through randomly in the loading page - */ -const helpMessages = [ - 'New to Binder? Check out the Binder Documentation for more information.', - 'You can learn more about building your own Binder repositories in the Binder community documentation.', - 'We use the repo2docker tool to automatically build the environment in which to run your code.', - 'Take a look at the full list of configuration files supported by repo2docker.', - 'Need more than just a Jupyter notebook? You can customize the user interface.', - 'Take a look at our gallery of example repositories.', - "If a repository takes a long time to launch, it is usually because Binder needs to create the environment for the first time.", - 'The tool that powers this page is called BinderHub. It is an open source tool that you can deploy yourself.', - 'The Binder team has a site reliability guide that talks about what it is like to run a BinderHub.', - 'You can connect with the Binder community in the Jupyter community forum.', - "Empty log? Notebook not loading? Maybe your ad blocker is interfering. Consider adding this site to the list of trusted sources.", - "Your launch may take longer the first few times a repository is used. This is because our machine needs to create your environment.", - 'Read our advice for speeding up your Binder launch.', -]; - -/** - * Display a randomly picked help message in the loading page - */ -export function nextHelpText() { - const text = $("div#loader-links p.text-center"); - let msg; - if (text !== null) { - if (!text.hasClass("longLaunch")) { - // Pick a random help message and update - msg = helpMessages[Math.floor(Math.random() * helpMessages.length)]; - } else { - msg = - "Your session is taking longer than usual to start!
Check the log messages below to see what is happening."; - } - text.html(msg); - } -} diff --git a/binderhub/static/js/src/log.js b/binderhub/static/js/src/log.js deleted file mode 100644 index f37ed5078..000000000 --- a/binderhub/static/js/src/log.js +++ /dev/null @@ -1,75 +0,0 @@ -import { Terminal } from "xterm"; -import { FitAddon } from "xterm-addon-fit"; - -/** - * Set up a read only xterm.js based terminal, augmented with some additional methods, to display log lines - * - * @returns Array of the xterm.js instance to write to, and a FitAddon instance to use for resizing the xterm appropriately - */ -export function setUpLog() { - const log = new Terminal({ - convertEol: true, - disableStdin: true, - }); - - const fitAddon = new FitAddon(); - log.loadAddon(fitAddon); - const logMessages = []; - - log.open(document.getElementById("log"), false); - fitAddon.fit(); - - $(window).resize(function () { - fitAddon.fit(); - }); - - const $panelBody = $("div.panel-body"); - - /** - * Show the log terminal - */ - log.show = function () { - $("#toggle-logs button.toggle").text("hide"); - $panelBody.removeClass("hidden"); - }; - - /** - * Hide the log terminal - */ - log.hide = function () { - $("#toggle-logs button.toggle").text("show"); - $panelBody.addClass("hidden"); - }; - - /** - * Toggle visibility of the log terminal - */ - log.toggle = function () { - if ($panelBody.hasClass("hidden")) { - log.show(); - } else { - log.hide(); - } - }; - - $("#view-raw-logs").on("click", function (ev) { - const blob = new Blob([logMessages.join("")], { type: "text/plain" }); - this.href = window.URL.createObjectURL(blob); - // Prevent the toggle action from firing - ev.stopPropagation(); - }); - - $("#toggle-logs").click(log.toggle); - - /** - * Write message to xterm and store it in the download buffer - * - * @param {string} msg Message to write to the terminal & add to message buffer - */ - log.writeAndStore = function (msg) { - logMessages.push(msg); - log.write(msg); - }; - - return [log, fitAddon]; -} diff --git a/binderhub/static/js/src/path.js b/binderhub/static/js/src/path.js deleted file mode 100644 index 618ed9561..000000000 --- a/binderhub/static/js/src/path.js +++ /dev/null @@ -1,27 +0,0 @@ -export function getPathType() { - // return path type. 'file' or 'url' - const element = document.getElementById("url-or-file-selected"); - let pathType = element.innerText.trim().toLowerCase(); - if (pathType === "file") { - // selecting a 'file' in the form opens with jupyterlab - // avoids backward-incompatibility with old `filepath` urls, - // which still open old UI - pathType = "lab"; - } - return pathType; -} - -export function updatePathText() { - const pathType = getPathType(); - let text; - if (pathType === "file" || pathType === "lab") { - text = "Path to a notebook file (optional)"; - } else { - text = "URL to open (optional)"; - } - const filePathElement = document.getElementById("filepath"); - filePathElement.setAttribute("placeholder", text); - - const filePathElementLabel = document.querySelector("label[for=filepath]"); - filePathElementLabel.innerText = text; -} diff --git a/binderhub/static/js/src/repo.js b/binderhub/static/js/src/repo.js deleted file mode 100644 index 17a3524b2..000000000 --- a/binderhub/static/js/src/repo.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Dict holding cached values of API request to _config endpoint - */ -let configDict = {}; - -function setLabels() { - const provider = $("#provider_prefix").val(); - const text = configDict[provider]["text"]; - const tagText = configDict[provider]["tag_text"]; - const refPropDisabled = configDict[provider]["ref_prop_disabled"]; - const labelPropDisabled = configDict[provider]["label_prop_disabled"]; - const placeholder = "HEAD"; - - $("#ref").attr("placeholder", placeholder).prop("disabled", refPropDisabled); - $("label[for=ref]").text(tagText).prop("disabled", labelPropDisabled); - $("#repository").attr("placeholder", text); - $("label[for=repository]").text(text); -} - -/** - * Update labels for various inputboxes based on user selection of repo provider - * - * @param {URL} baseUrl Base URL to use for constructing path to _config endpoint - */ -export function updateRepoText(baseUrl) { - if (Object.keys(configDict).length === 0) { - const xsrf = $("#xsrf-token").data("token"); - const apiToken = $("#api-token").data("token"); - const configUrl = new URL("_config", baseUrl); - const headers = {}; - if (apiToken && apiToken.length > 0) { - headers["Authorization"] = `Bearer ${apiToken}`; - } else if (xsrf && xsrf.length > 0) { - headers["X-Xsrftoken"] = xsrf; - } - fetch(configUrl, { headers }).then((resp) => { - resp.json().then((data) => { - configDict = data; - setLabels(); - }); - }); - } else { - setLabels(); - } -} diff --git a/binderhub/static/js/src/urls.js b/binderhub/static/js/src/urls.js deleted file mode 100644 index 698ccfdb6..000000000 --- a/binderhub/static/js/src/urls.js +++ /dev/null @@ -1,39 +0,0 @@ -import { getBuildFormValues } from "./form"; -import { - makeShareableBinderURL, - makeBadgeMarkup, -} from "@jupyterhub/binderhub-client"; - -/** - * Update the shareable URL and badge snippets in the UI based on values user has entered in the form - */ -export function updateUrls(publicBaseUrl, formValues) { - if (typeof formValues === "undefined") { - formValues = getBuildFormValues(); - } - if (formValues.repo) { - const url = makeShareableBinderURL( - publicBaseUrl, - formValues.providerPrefix, - formValues.repo, - formValues.ref, - formValues.path, - formValues.pathType, - ); - - // update URLs and links (badges, etc.) - $("#badge-link").attr("href", url); - $("#basic-url-snippet").text(url); - $("#markdown-badge-snippet").text( - makeBadgeMarkup(publicBaseUrl, url, "markdown"), - ); - $("#rst-badge-snippet").text(makeBadgeMarkup(publicBaseUrl, url, "rst")); - } else { - ["#basic-url-snippet", "#markdown-badge-snippet", "#rst-badge-snippet"].map( - function (item) { - const el = $(item); - el.text(el.attr("data-default")); - }, - ); - } -} diff --git a/binderhub/static/loading.css b/binderhub/static/loading.css deleted file mode 100644 index d267b113a..000000000 --- a/binderhub/static/loading.css +++ /dev/null @@ -1,126 +0,0 @@ -/*CSS to generate rotating concentric circles for a loading screen. Thanks to -https://ihatetomatoes.net for initial code templates.*/ - -#loader { - display: block; - position: relative; - left: 50%; - top: 50%; - width: 150px; - height: 150px; - margin: -20px 0 0 -75px; - border-radius: 50%; - border: 7px solid transparent; - border-top-color: #f5a252; - animation: spin 2s linear infinite; - z-index: 1001; -} - -#loader:before { - content: ""; - position: absolute; - top: 5px; - left: 5px; - right: 5px; - bottom: 5px; - border-radius: 50%; - border: 7px solid transparent; - border-top-color: #579aca; - animation: spin 3s linear infinite; -} - -#loader:after { - content: ""; - position: absolute; - top: 15px; - left: 15px; - right: 15px; - bottom: 15px; - border-radius: 50%; - border: 7px solid transparent; - border-top-color: #e66581; - animation: spin 1.5s linear infinite; -} - -@keyframes spin { - 0% { - transform: rotateZ(0deg); - } - 100% { - transform: rotateZ(360deg); - } -} - -.error, -.error:after, -.error:before { - border-top-color: red !important; -} - -.error { - animation: spin 30s linear infinite !important; -} - -.error:after { - animation: spin 10s linear infinite !important; -} - -.error:before { - animation: spin 20s linear infinite !important; -} - -.paused, -.paused:after, -.paused:before { - animation-play-state: paused !important; -} - -#demo-content { - padding-top: 100px; -} - -div#loader-text { - min-height: 3em; -} - -#loader-text p { - z-index: 1002; - max-width: 750px; - text-align: center; - margin: 0px auto 10px auto; -} - -#loader-text p.launching { - font-size: 2em; -} - -div#loader-links { - min-height: 6em; -} - -#loader-links p { - font-size: 1.5em; - text-align: center; - max-width: 700px; - margin: 0px auto 10px auto; -} - -div#log-container { - width: 80%; - margin: 0% 10%; -} - -.hidden { - display: none; -} - -.preview { - margin-top: 40px; - width: 70%; -} - -#nbviewer-preview > iframe { - width: 100%; - height: 80vh; - border: 1px solid #aaa; -} diff --git a/binderhub/templates/index.html b/binderhub/templates/index.html deleted file mode 100644 index cc55b89a7..000000000 --- a/binderhub/templates/index.html +++ /dev/null @@ -1,206 +0,0 @@ -{% extends "page.html" %} - -{% block head %} - - - - - -{{ super() }} -{% endblock head %} - -{% block main %} -
-
-
- {% block header %} - -
-

New to Binder? Get started with a Zero-to-Binder tutorial in Julia, Python, or R.

-
- {% endblock header %} - - {% block form %} -
-

Build and launch a repository

- -
- -
-
- - -
- -
-
-
-
- - -
-
- -
- -
- - -
-
-
- -
-
- -
-
-
- - -
- -
-
Fill in the fields to see a URL for sharing your Binder.
- Copy to clipboard -
-
- -
- - -
- - - - -
- {% endblock form %} -
-
- {% block how_it_works %} -
-

How it works

- -
-
- 1 -
-
- Enter your repository information
Provide in the above form a URL or a GitHub repository that contains Jupyter notebooks, as well as a branch, tag, or commit hash. Launch will build your Binder repository. If you specify a path to a notebook file, the notebook will be opened in your browser after building. -
-
- -
-
- 2 -
-
- We build a Docker image of your repository
Binder will search for a dependency file, such as requirements.txt or environment.yml, in the repository's root directory (more details on more complex dependencies in documentation). The dependency files will be used to build a Docker image. If an image has already been built for the given repository, it will not be rebuilt. If a new commit has been made, the image will automatically be rebuilt. -
-
- -
-
- 3 -
-
- Interact with your notebooks in a live environment!
A JupyterHub server will host your repository's contents. We offer you a reusable link and badge to your live repository that you can easily share with others. -
-
-
- {% endblock how_it_works %} -
-{% endblock main %} - -{% block footer %} -{{ super () }} - -{% endblock footer %} diff --git a/binderhub/templates/page.html b/binderhub/templates/page.html index 5b62e83f9..41598728d 100644 --- a/binderhub/templates/page.html +++ b/binderhub/templates/page.html @@ -16,65 +16,15 @@ {% block head %} - {% endblock head %} - - - {% block body %} - - {% if banner %} - - {% endif %} - - {% block logo %} -
-
-
- -
-
-
- {% endblock logo %} - - {% block main %} - {% endblock main %} - - {% block footer %} -
-
-

questions?
join the discussion, read the docs, see the code

-
-
- {% endblock footer %} - {% if google_analytics_code %} - {% endif %} - {% if extra_footer_scripts %} - {% for script in extra_footer_scripts|dictsort %} - - {% endfor %} - {% endif %} - {% endblock body %} + + {% endblock head %} + + +
+ diff --git a/package.json b/package.json index 916d542cf..944b194fa 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,14 @@ "name": "binderhub", "description": "BinderHub's web user interface involves javascript built by this node package.", "dependencies": { - "bootstrap": "^3.4.1", + "@fontsource/clear-sans": "^5.0.11", + "bootstrap": "^5.3.3", + "bootstrap-icons": "^1.11.3", "clipboard": "^2.0.11", + "copy-to-clipboard": "^3.3.3", "jquery": "^3.6.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", "xterm": "^5.1.0", "xterm-addon-fit": "^0.7.0" }, @@ -13,16 +18,23 @@ "@babel/core": "^7.21.4", "@babel/eslint-parser": "^7.22.15", "@babel/preset-env": "^7.21.4", + "@babel/preset-react": "^7.24.1", "@types/jest": "^29.5.5", "@whatwg-node/fetch": "^0.9.17", + "autoprefixer": "^10.4.19", "babel-jest": "^29.7.0", "babel-loader": "^9.1.2", - "css-loader": "^6.7.3", + "css-loader": "^6.11.0", "eslint": "^8.38.0", "eslint-plugin-jest": "^27.4.2", + "eslint-plugin-react": "^7.34.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "mini-css-extract-plugin": "^2.7.5", + "postcss-loader": "^8.1.1", + "sass": "^1.77.1", + "sass-loader": "^14.2.1", + "style-loader": "^4.0.0", "webpack": "^5.78.0", "webpack-cli": "^5.0.1" }, diff --git a/webpack.config.js b/webpack.config.js index ba73e76a6..549291111 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,12 +1,13 @@ const webpack = require("webpack"); const path = require("path"); +const autoprefixer = require("autoprefixer"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = { - mode: "production", + mode: "development", context: path.resolve(__dirname, "binderhub/static"), - entry: "./js/index.js", + entry: "./js/index.jsx", output: { path: path.resolve(__dirname, "binderhub/static/dist/"), filename: "bundle.js", @@ -24,13 +25,10 @@ module.exports = { module: { rules: [ { - test: /\.js$/, + test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, use: { loader: "babel-loader", - options: { - presets: ["@babel/preset-env"], - }, }, }, { @@ -48,6 +46,32 @@ module.exports = { "css-loader", ], }, + { + test: /\.(scss)$/, + use: [ + { + // Adds CSS to the DOM by injecting a ` \ No newline at end of file diff --git a/binderhub/static/images/clipboard.svg b/binderhub/static/images/clipboard.svg deleted file mode 100644 index 80c2cb91a..000000000 --- a/binderhub/static/images/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/binderhub/static/images/copy-icon-black.svg b/binderhub/static/images/copy-icon-black.svg deleted file mode 100644 index a15cf49c6..000000000 --- a/binderhub/static/images/copy-icon-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/binderhub/static/images/copy-icon-white.svg b/binderhub/static/images/copy-icon-white.svg deleted file mode 100644 index db97266b1..000000000 --- a/binderhub/static/images/copy-icon-white.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/binderhub/static/js/index.jsx b/binderhub/static/js/App.jsx similarity index 92% rename from binderhub/static/js/index.jsx rename to binderhub/static/js/App.jsx index 4f53608c1..936e320d1 100644 --- a/binderhub/static/js/index.jsx +++ b/binderhub/static/js/App.jsx @@ -1,6 +1,6 @@ import { createRoot } from "react-dom/client"; -import { LoadingPage } from "./Loading.jsx"; +import { LoadingPage } from "./pages/LoadingPage.jsx"; import { createBrowserRouter, RouterProvider, Route } from "react-router-dom"; import "bootstrap/js/dist/dropdown.js"; @@ -8,7 +8,7 @@ import "./index.scss"; import "@fontsource/clear-sans/100.css"; import "@fontsource/clear-sans/300.css"; import "@fontsource/clear-sans/400.css"; -import { BinderHomePage } from "./HomePage.jsx"; +import { HomePage } from "./pages/HomePage.jsx"; import { createRoutesFromElements } from "react-router"; export const PAGE_CONFIG = window.pageConfig; @@ -24,7 +24,7 @@ const router = createBrowserRouter( ); } -export function ImageBuilder({ +export function BuilderLauncher({ baseUrl, spec, urlPath, diff --git a/binderhub/static/js/components/FaviconUpdater.jsx b/binderhub/static/js/components/FaviconUpdater.jsx index df9c350ab..1ee1e184f 100644 --- a/binderhub/static/js/components/FaviconUpdater.jsx +++ b/binderhub/static/js/components/FaviconUpdater.jsx @@ -2,7 +2,7 @@ import ProgressIcon from "../../images/favicon/progress.ico"; import FailIcon from "../../images/favicon/fail.ico"; import SuccessIcon from "../../images/favicon/success.ico"; -import { PROGRESS_STATES } from "./progress.jsx"; +import { PROGRESS_STATES } from "./Progress.jsx"; import { useEffect } from "react"; import { updateFavicon } from "../src/favicon"; diff --git a/binderhub/static/js/components/linkbuilder.jsx b/binderhub/static/js/components/LinkGenerator.jsx similarity index 99% rename from binderhub/static/js/components/linkbuilder.jsx rename to binderhub/static/js/components/LinkGenerator.jsx index 4c2548eb4..5f00b7665 100644 --- a/binderhub/static/js/components/linkbuilder.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -227,7 +227,7 @@ export function LinkGenerator({ onClick={() => copy(launchUrl)} disabled={launchUrl === ""} > - + diff --git a/binderhub/static/js/components/loader.css b/binderhub/static/js/components/LoadingIndicator.css similarity index 100% rename from binderhub/static/js/components/loader.css rename to binderhub/static/js/components/LoadingIndicator.css diff --git a/binderhub/static/js/components/loader.jsx b/binderhub/static/js/components/LoadingIndicator.jsx similarity index 95% rename from binderhub/static/js/components/loader.jsx rename to binderhub/static/js/components/LoadingIndicator.jsx index 1c1db6607..716408ff7 100644 --- a/binderhub/static/js/components/loader.jsx +++ b/binderhub/static/js/components/LoadingIndicator.jsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import "./loader.css"; -import { PROGRESS_STATES } from "./progress.jsx"; +import "./LoadingIndicator.css"; +import { PROGRESS_STATES } from "./Progress.jsx"; /** * List of help messages we will cycle through randomly in the loading page */ @@ -20,7 +20,7 @@ const HELP_MESSAGES = [ 'Read our advice for speeding up your Binder launch.', ]; -export function Loader({ progressState }) { +export function LoadingIndicator({ progressState }) { const [currentMessage, setCurrentMessage] = useState(HELP_MESSAGES[0]); useEffect(() => { diff --git a/binderhub/static/js/components/nbviewer.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx similarity index 100% rename from binderhub/static/js/components/nbviewer.jsx rename to binderhub/static/js/components/NBViewerIFrame.jsx diff --git a/binderhub/static/js/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx similarity index 88% rename from binderhub/static/js/HomePage.jsx rename to binderhub/static/js/pages/HomePage.jsx index b3cf6c8d7..85e5e4c2a 100644 --- a/binderhub/static/js/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -1,10 +1,10 @@ -import { LinkGenerator } from "./components/linkbuilder.jsx"; -import { ImageBuilder } from "./components/builder.jsx"; -import { HowItWorks } from "./components/howitworks.jsx"; +import { LinkGenerator } from "./components/LinkGenerator.jsx"; +import { BuilderLauncher } from "./components/BuilderLauncher.jsx"; +import { HowItWorks } from "./components/HowItWorks.jsx"; import { useEffect, useState } from "react"; import { FaviconUpdater } from "./components/FaviconUpdater.jsx"; -export function BinderHomePage({ providers, publicBaseUrl, baseUrl }) { +export function HomePage({ providers, publicBaseUrl, baseUrl }) { const defaultProvider = providers[0]; const [selectedProvider, setSelectedProvider] = useState(defaultProvider); const [repo, setRepo] = useState(""); @@ -52,7 +52,7 @@ export function BinderHomePage({ providers, publicBaseUrl, baseUrl }) { isLaunching={isLaunching} setIsLaunching={setIsLaunching} /> - - - + - - - - - - -{% endblock meta_social %} - -{% block head %} - - - - - -{{ super() }} - - -{% endblock head %} - -{% block main %} -
-
-

Launching your Binder...

-
- - - - -{% block preview %} -{% if nbviewer_url %} -
-

-Here's a non-interactive preview on -nbviewer -while we start a server for you. -Your binder will open automatically when it is ready. -

-
- -
-
-{% endif %} -{% endblock preview %} - -{% endblock main %} - -{% block footer %} - -{% endblock footer %} diff --git a/webpack.config.js b/webpack.config.js index 26d1b68f6..9f11cf9ac 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,7 +7,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = { mode: "development", context: path.resolve(__dirname, "binderhub/static"), - entry: "./js/index.jsx", + entry: "./js/App.jsx", output: { path: path.resolve(__dirname, "binderhub/static/dist/"), filename: "bundle.js", From abbf8644adf53414947c21def4232e49653f82d6 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 17 May 2024 21:57:52 -0700 Subject: [PATCH 08/95] Add more type annotations --- binderhub/static/js/App.jsx | 29 +++++++++++- .../static/js/components/BuilderLauncher.jsx | 45 ++++++++++++++++++- .../static/js/components/FaviconUpdater.jsx | 40 ++++++++++------- .../static/js/components/LinkGenerator.jsx | 10 ++++- .../static/js/components/LoadingIndicator.jsx | 5 +++ .../static/js/components/NBViewerIFrame.jsx | 7 +++ binderhub/static/js/components/progress.jsx | 32 ++++++++----- binderhub/static/js/pages/HomePage.jsx | 15 +++++-- binderhub/static/js/pages/LoadingPage.jsx | 14 ++++-- binderhub/static/js/src/favicon.js | 17 ------- binderhub/static/js/src/favicon.test.js | 35 --------------- package.json | 3 ++ tsconfig.json | 15 +++++++ webpack.config.js | 7 ++- 14 files changed, 179 insertions(+), 95 deletions(-) delete mode 100644 binderhub/static/js/src/favicon.js delete mode 100644 binderhub/static/js/src/favicon.test.js create mode 100644 tsconfig.json diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 936e320d1..022cb4e8d 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -12,8 +12,34 @@ import { HomePage } from "./pages/HomePage.jsx"; import { createRoutesFromElements } from "react-router"; export const PAGE_CONFIG = window.pageConfig; + +/** + * @typedef {object} RepoConfig + * @prop {string} label + * @prop {string} placeholder + * + * @typedef {object} DetectConfig + * @prop {string} regex + * + * @typedef {object} RefConfig + * @prop {boolean} enabled + * @prop {string} [default] + * + * @typedef {object} Provider + * @prop {string} displayName + * @prop {string} id + * @prop {DetectConfig} [detect] + * @prop {RepoConfig} repo + * @prop {RefConfig} ref + * + */ +/** + * @type {Array} + */ export const PROVIDERS = PAGE_CONFIG.repoProviders; + export const BASE_URL = new URL(PAGE_CONFIG.baseUrl, window.location.href); + export const PUBLIC_BASE_URL = PAGE_CONFIG.publicBaseUrl ? new URL(BASE_URL) : new URL(PAGE_CONFIG.baseUrl, window.location.href); @@ -35,14 +61,13 @@ const router = createBrowserRouter( } + element={} /> ))} , ), ); function App() { - console.log(router); return (
diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index c72b556f6..dae61517c 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -5,14 +5,31 @@ import { FitAddon } from "xterm-addon-fit"; import "xterm/css/xterm.css"; import { Progress, PROGRESS_STATES } from "./Progress.jsx"; +/** + * + * @param {string} serverUrl + * @param {string} token + * @param {string} urlPath + */ function redirectToRunningServer(serverUrl, token, urlPath) { // Make sure urlPath doesn't start with a `/` urlPath = urlPath.replace(/^\//, ""); const redirectUrl = new URL(urlPath, serverUrl); redirectUrl.searchParams.append("token", token); - window.location.href = redirectUrl; + window.location.href = redirectUrl.toString(); } +/** + * + * @param {URL} baseUrl + * @param {string} spec + * @param {Terminal} term + * @param {FitAddon} fitAddon + * @param {string} urlPath + * @param {(l: boolean) => void} setIsLaunching + * @param {(p: PROGRESS_STATES) => void} setProgressState + * @param {(e: boolean) => void} setEnsureLogsVisible + */ async function buildImage( baseUrl, spec, @@ -83,6 +100,16 @@ async function buildImage( } } +/** + * @typedef {object} ImageLogsProps + * @prop {(t: Terminal) => void} setTerm + * @prop {(f: FitAddon) => void} setFitAddon + * @prop {boolean} logsVisible + * @prop {(l: boolean) => void} setLogsVisible + * + * @param {ImageLogsProps} props + * @returns + */ function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { const toggleLogsButton = useRef(); useEffect(() => { @@ -127,6 +154,20 @@ function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) {
); } + +/** + * @typedef {object} BuildLauncherProps + * @prop {URL} baseUrl + * @prop {string} spec + * @prop {string} urlPath + * @prop {boolean} isLaunching + * @prop {(l: boolean) => void} setIsLaunching + * @prop {PROGRESS_STATES} progressState + * @prop {(p: PROGRESS_STATES) => void} setProgressState + * + * @param {BuildLauncherProps} props + * @returns + */ export function BuilderLauncher({ baseUrl, spec, @@ -158,7 +199,7 @@ export function BuilderLauncher({ }, [isLaunching]); return (
- + { - switch (progressState) { - case PROGRESS_STATES.FAILED: { - updateFavicon(FailIcon); - break; - } - case PROGRESS_STATES.SUCCESS: { - updateFavicon(SuccessIcon); - break; - } - case PROGRESS_STATES.BUILDING: - case PROGRESS_STATES.PUSHING: - case PROGRESS_STATES.LAUNCHING: { - updateFavicon(ProgressIcon); - break; - } + let icon; + switch (progressState) { + case PROGRESS_STATES.FAILED: { + icon = FailIcon; + break; } - }, [progressState]); + case PROGRESS_STATES.SUCCESS: { + icon = SuccessIcon; + break; + } + case PROGRESS_STATES.BUILDING: + case PROGRESS_STATES.PUSHING: + case PROGRESS_STATES.LAUNCHING: { + icon = ProgressIcon; + break; + } + } + + return ; } diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 5f00b7665..30748b503 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -1,7 +1,15 @@ import { useEffect, useState } from "react"; import copy from "copy-to-clipboard"; -import CopyIcon from "../copy.svg"; +/** + * @typedef {object} ProviderSelectorProps + * @prop {import("../App").Provider[]} providers + * @prop {import("../App").Provider} selectedProvider + * @prop {(p: import("../App").Provider) => void} setSelectedProvider + * + * @param {ProviderSelectorProps} props + * @returns + */ function ProviderSelector({ providers, selectedProvider, diff --git a/binderhub/static/js/components/LoadingIndicator.jsx b/binderhub/static/js/components/LoadingIndicator.jsx index 716408ff7..1886a69e4 100644 --- a/binderhub/static/js/components/LoadingIndicator.jsx +++ b/binderhub/static/js/components/LoadingIndicator.jsx @@ -20,6 +20,11 @@ const HELP_MESSAGES = [ 'Read our advice for speeding up your Binder launch.', ]; +/** + * @typedef {object} LoadingIndicatorProps + * @prop {PROGRESS_STATES} progressState + * @param {LoadingIndicatorProps} props + */ export function LoadingIndicator({ progressState }) { const [currentMessage, setCurrentMessage] = useState(HELP_MESSAGES[0]); diff --git a/binderhub/static/js/components/NBViewerIFrame.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx index 2d61a4ac0..9021b787e 100644 --- a/binderhub/static/js/components/NBViewerIFrame.jsx +++ b/binderhub/static/js/components/NBViewerIFrame.jsx @@ -1,3 +1,10 @@ +/** + * @typedef {object} NBViewerIFrameProps + * @prop {string} spec + * @prop {string} urlPath + * @param {NBViewerIFrameProps} props + * @returns + */ export function NBViewerIFrame({ spec, urlPath }) { // We only support GitHub links as preview right now if (!spec.startsWith("gh/")) { diff --git a/binderhub/static/js/components/progress.jsx b/binderhub/static/js/components/progress.jsx index 3cb5a9307..d5896f79f 100644 --- a/binderhub/static/js/components/progress.jsx +++ b/binderhub/static/js/components/progress.jsx @@ -1,3 +1,6 @@ +/** + * @enum {string} + */ export const PROGRESS_STATES = { WAITING: "Waiting", BUILDING: "Building", @@ -49,24 +52,31 @@ progressDisplay[PROGRESS_STATES.FAILED] = { className: "text-bg-danger", }; -export function Progress({ state }) { +/** + * @typedef {object} ProgressProps + * @prop {PROGRESS_STATES} progressState + * @param {ProgressProps} props + */ +export function Progress({ progressState }) { return (
- {state === null + {progressState === null ? "" - : progressDisplay[state].precursors.concat([state]).map((s) => ( -
- {progressDisplay[s].label} -
- ))} + : progressDisplay[progressState].precursors + .concat([progressState]) + .map((s) => ( +
+ {progressDisplay[s].label} +
+ ))}
); } diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 85e5e4c2a..e3f3f81b6 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -1,9 +1,16 @@ -import { LinkGenerator } from "./components/LinkGenerator.jsx"; -import { BuilderLauncher } from "./components/BuilderLauncher.jsx"; -import { HowItWorks } from "./components/HowItWorks.jsx"; +import { LinkGenerator } from "../components/LinkGenerator.jsx"; +import { BuilderLauncher } from "../components/BuilderLauncher.jsx"; +import { HowItWorks } from "../components/HowItWorks.jsx"; import { useEffect, useState } from "react"; -import { FaviconUpdater } from "./components/FaviconUpdater.jsx"; +import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; +/** + * @typedef {object} HomePageProps + * @prop {import("../App.jsx").Provider[]} providers + * @prop {URL} publicBaseUrl + * @prop {URL} baseUrl + * @param {HomePageProps} props + */ export function HomePage({ providers, publicBaseUrl, baseUrl }) { const defaultProvider = providers[0]; const [selectedProvider, setSelectedProvider] = useState(defaultProvider); diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index c58e0eb5c..2e3bbf6c0 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -1,11 +1,17 @@ import { useEffect, useState } from "react"; -import { BuilderLauncher } from "./components/BuilderLauncher.jsx"; +import { BuilderLauncher } from "../components/BuilderLauncher.jsx"; import { useParams } from "react-router"; import { useSearchParams } from "react-router-dom"; -import { NBViewerIFrame } from "./components/NBViewerIFrame.jsx"; -import { LoadingIndicator } from "./components/LoadingIndicator.jsx"; -import { FaviconUpdater } from "./components/FaviconUpdater.jsx"; +import { NBViewerIFrame } from "../components/NBViewerIFrame.jsx"; +import { LoadingIndicator } from "../components/LoadingIndicator.jsx"; +import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; +/** + * @typedef {object} LoadingPageProps + * @prop {URL} baseUrl + * @param {LoadingPageProps} props + * @returns + */ export function LoadingPage({ baseUrl }) { const [progressState, setProgressState] = useState(null); diff --git a/binderhub/static/js/src/favicon.js b/binderhub/static/js/src/favicon.js deleted file mode 100644 index ae6592cfa..000000000 --- a/binderhub/static/js/src/favicon.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Dynamically set current page's favicon. - * - * @param {URL} href Path to Favicon to use - */ -function updateFavicon(href) { - let link = document.querySelector("link[rel*='icon']"); - if (!link) { - link = document.createElement("link"); - document.getElementsByTagName("head")[0].appendChild(link); - } - link.type = "image/x-icon"; - link.rel = "shortcut icon"; - link.href = href; -} - -export { updateFavicon }; diff --git a/binderhub/static/js/src/favicon.test.js b/binderhub/static/js/src/favicon.test.js deleted file mode 100644 index c73cab495..000000000 --- a/binderhub/static/js/src/favicon.test.js +++ /dev/null @@ -1,35 +0,0 @@ -import { updateFavicon } from "./favicon"; - -afterEach(() => { - // Clear out HEAD after each test run, so our DOM is clean. - // Jest does *not* clear out the DOM between test runs on the same file! - document.querySelector("head").innerHTML = ""; -}); - -test("Setting favicon when there is none works", () => { - expect(document.querySelector("link[rel*='icon']")).toBeNull(); - - updateFavicon("https://example.com/somefile.png"); - - expect(document.querySelector("link[rel*='icon']").href).toBe( - "https://example.com/somefile.png", - ); -}); - -test("Setting favicon multiple times works without leaking link tags", () => { - expect(document.querySelector("link[rel*='icon']")).toBeNull(); - - updateFavicon("https://example.com/somefile.png"); - - expect(document.querySelector("link[rel*='icon']").href).toBe( - "https://example.com/somefile.png", - ); - expect(document.querySelectorAll("link[rel*='icon']").length).toBe(1); - - updateFavicon("https://example.com/some-other-file.png"); - - expect(document.querySelector("link[rel*='icon']").href).toBe( - "https://example.com/some-other-file.png", - ); - expect(document.querySelectorAll("link[rel*='icon']").length).toBe(1); -}); diff --git a/package.json b/package.json index e476aff86..f908f64e1 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "BinderHub's web user interface involves javascript built by this node package.", "dependencies": { "@fontsource/clear-sans": "^5.0.11", + "@types/react": "^18.3.2", "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", "clipboard": "^2.0.11", @@ -37,6 +38,8 @@ "sass": "^1.77.1", "sass-loader": "^14.2.1", "style-loader": "^4.0.0", + "ts-loader": "^9.5.1", + "typescript": "^5.4.5", "webpack": "^5.78.0", "webpack-cli": "^5.0.1" }, diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..078712a52 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": false, + "noEmit": false, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "noImplicitAny": false, + "module": "es6", + "target": "es5", + "jsx": "react-jsx", + "moduleResolution": "node" + }, + "include": ["binderhub/static/js/"] +} diff --git a/webpack.config.js b/webpack.config.js index 9f11cf9ac..db0d44a93 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -22,13 +22,16 @@ module.exports = { filename: "styles.css", }), ], + resolve: { + extensions: [".tsx", ".ts", ".js", ".jsx"], + }, module: { rules: [ { - test: /\.jsx?$/, + test: /\.(t|j)sx?$/, exclude: /(node_modules|bower_components)/, use: { - loader: "babel-loader", + loader: "ts-loader", }, }, { From 5661f17a79f0bfcc425cbe23f1a4caf4cd3e403f Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 17 May 2024 22:02:26 -0700 Subject: [PATCH 09/95] Fix a few more typescript detected errors --- binderhub/static/js/components/FaviconUpdater.jsx | 2 -- binderhub/static/js/index.d.ts | 2 ++ tsconfig.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 binderhub/static/js/index.d.ts diff --git a/binderhub/static/js/components/FaviconUpdater.jsx b/binderhub/static/js/components/FaviconUpdater.jsx index 10c81f318..5ad040a83 100644 --- a/binderhub/static/js/components/FaviconUpdater.jsx +++ b/binderhub/static/js/components/FaviconUpdater.jsx @@ -3,8 +3,6 @@ import FailIcon from "../../images/favicon/fail.ico"; import SuccessIcon from "../../images/favicon/success.ico"; import { PROGRESS_STATES } from "./Progress.jsx"; -import { useEffect } from "react"; -import { updateFavicon } from "../src/favicon"; /** * @typedef {object} FaviconUpdaterProps diff --git a/binderhub/static/js/index.d.ts b/binderhub/static/js/index.d.ts new file mode 100644 index 000000000..427887634 --- /dev/null +++ b/binderhub/static/js/index.d.ts @@ -0,0 +1,2 @@ +// Tell typescript to be quiet about .ico files we use for favicons +declare module "*.ico"; diff --git a/tsconfig.json b/tsconfig.json index 078712a52..7bc4e502f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "allowJs": true, - "checkJs": false, + "checkJs": true, "noEmit": false, "allowSyntheticDefaultImports": true, "skipLibCheck": true, From b02256eac2e8be2d44fd421be310cec2bdba7875 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 17 May 2024 22:06:01 -0700 Subject: [PATCH 10/95] Don't enforce strict type checks yet --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 7bc4e502f..078712a52 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "allowJs": true, - "checkJs": true, + "checkJs": false, "noEmit": false, "allowSyntheticDefaultImports": true, "skipLibCheck": true, From ffb38849bdeb05f76fff8d4702139dac7b471f78 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 18 May 2024 00:13:27 -0700 Subject: [PATCH 11/95] Create a central spec class --- .../static/js/components/BuilderLauncher.jsx | 20 ++++---- .../static/js/components/NBViewerIFrame.jsx | 13 ++--- binderhub/static/js/pages/HomePage.jsx | 6 +-- binderhub/static/js/pages/LoadingPage.jsx | 28 +++-------- binderhub/static/js/spec.js | 49 +++++++++++++++++++ tsconfig.json | 3 +- 6 files changed, 78 insertions(+), 41 deletions(-) create mode 100644 binderhub/static/js/spec.js diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index dae61517c..ae3688317 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -4,6 +4,7 @@ import { Terminal } from "xterm"; import { FitAddon } from "xterm-addon-fit"; import "xterm/css/xterm.css"; import { Progress, PROGRESS_STATES } from "./Progress.jsx"; +import { Spec } from "../spec.js"; /** * @@ -12,8 +13,6 @@ import { Progress, PROGRESS_STATES } from "./Progress.jsx"; * @param {string} urlPath */ function redirectToRunningServer(serverUrl, token, urlPath) { - // Make sure urlPath doesn't start with a `/` - urlPath = urlPath.replace(/^\//, ""); const redirectUrl = new URL(urlPath, serverUrl); redirectUrl.searchParams.append("token", token); window.location.href = redirectUrl.toString(); @@ -22,10 +21,9 @@ function redirectToRunningServer(serverUrl, token, urlPath) { /** * * @param {URL} baseUrl - * @param {string} spec + * @param {Spec} spec * @param {Terminal} term * @param {FitAddon} fitAddon - * @param {string} urlPath * @param {(l: boolean) => void} setIsLaunching * @param {(p: PROGRESS_STATES) => void} setProgressState * @param {(e: boolean) => void} setEnsureLogsVisible @@ -35,13 +33,12 @@ async function buildImage( spec, term, fitAddon, - urlPath, setIsLaunching, setProgressState, setEnsureLogsVisible, ) { const buildEndPointURL = new URL("build/", baseUrl); - const image = new BinderRepository(spec, buildEndPointURL); + const image = new BinderRepository(spec.buildSpec, buildEndPointURL); // Clear the last line written, so we start from scratch term.write("\x1b[2K\r"); fitAddon.fit(); @@ -67,7 +64,11 @@ async function buildImage( case "ready": { setProgressState(PROGRESS_STATES.SUCCESS); image.close(); - redirectToRunningServer(data.url, data.token, urlPath); + redirectToRunningServer( + data.url, + data.token, + spec.runtimeParams.urlPath, + ); console.log(data); break; } @@ -158,8 +159,7 @@ function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { /** * @typedef {object} BuildLauncherProps * @prop {URL} baseUrl - * @prop {string} spec - * @prop {string} urlPath + * @prop {Spec} spec * @prop {boolean} isLaunching * @prop {(l: boolean) => void} setIsLaunching * @prop {PROGRESS_STATES} progressState @@ -171,7 +171,6 @@ function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { export function BuilderLauncher({ baseUrl, spec, - urlPath, isLaunching, setIsLaunching, progressState, @@ -188,7 +187,6 @@ export function BuilderLauncher({ spec, term, fitAddon, - urlPath, setIsLaunching, setProgressState, setLogsVisible, diff --git a/binderhub/static/js/components/NBViewerIFrame.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx index 9021b787e..b4f073711 100644 --- a/binderhub/static/js/components/NBViewerIFrame.jsx +++ b/binderhub/static/js/components/NBViewerIFrame.jsx @@ -1,19 +1,20 @@ +import { Spec } from "../spec"; + /** * @typedef {object} NBViewerIFrameProps - * @prop {string} spec - * @prop {string} urlPath + * @prop {Spec} spec * @param {NBViewerIFrameProps} props * @returns */ -export function NBViewerIFrame({ spec, urlPath }) { +export function NBViewerIFrame({ spec }) { // We only support GitHub links as preview right now - if (!spec.startsWith("gh/")) { + if (!spec.buildSpec.startsWith("gh/")) { return; } - const [_, org, repo, ref] = spec.split("/"); + const [_, org, repo, ref] = spec.buildSpec.split("/"); - urlPath = decodeURI(urlPath); + let urlPath = decodeURI(spec.urlPath); // Handle cases where urlPath starts with a `/` urlPath = urlPath.replace(/^\//, ""); let filePath = ""; diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index e3f3f81b6..6b761a35d 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -3,6 +3,7 @@ import { BuilderLauncher } from "../components/BuilderLauncher.jsx"; import { HowItWorks } from "../components/HowItWorks.jsx"; import { useEffect, useState } from "react"; import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; +import { Spec, RuntimeParams } from "../spec.js"; /** * @typedef {object} HomePageProps @@ -22,8 +23,8 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { const [progressState, setProgressState] = useState(null); useEffect(() => { - setSpec(`${selectedProvider.id}/${repo}/${ref}`); - }, [selectedProvider, repo, ref]); + setSpec(new Spec(`${selectedProvider.id}/${repo}/${ref}`, rtp)); + }, [selectedProvider, repo, ref, urlPath]); return ( <> @@ -62,7 +63,6 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { { // Start launching after the DOM has fully loaded setTimeout(() => setIsLaunching(true), 1); @@ -50,7 +39,6 @@ export function LoadingPage({ baseUrl }) { - + ); } diff --git a/binderhub/static/js/spec.js b/binderhub/static/js/spec.js new file mode 100644 index 000000000..757c33ebd --- /dev/null +++ b/binderhub/static/js/spec.js @@ -0,0 +1,49 @@ +export class RuntimeParams { + /** + * + * @param {string} urlPath + */ + constructor(urlPath) { + this.urlPath = urlPath; + // Ensure no leading / here + this.urlPath = this.urlPath.replace(/^\/*/, ""); + } + + /** + * + * @param {URLSearchParams} searchParams + * + * @returns {RuntimeParams} + */ + static fromSearchParams(searchParams) { + let urlPath = searchParams.get("urlpath"); + if (urlPath === null) { + urlPath = ""; + } + + // Handle legacy parameters for opening URLs after launching + // labpath and filepath + if (searchParams.has("labpath")) { + // Trim trailing / on file paths + const filePath = searchParams.get("labpath").replace(/(\/$)/g, ""); + urlPath = `doc/tree/${encodeURI(filePath)}`; + } else if (searchParams.has("filepath")) { + // Trim trailing / on file paths + const filePath = searchParams.get("filepath").replace(/(\/$)/g, ""); + urlPath = `tree/${encodeURI(filePath)}`; + } + + return new RuntimeParams(urlPath); + } +} + +export class Spec { + /** + * @param {string} buildSpec + * @param {RuntimeParams} runtimeParams + */ + constructor(buildSpec, runtimeParams) { + this.buildSpec = buildSpec; + this.runtimeParams = runtimeParams; + } +} diff --git a/tsconfig.json b/tsconfig.json index 078712a52..4a56b9984 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,8 @@ "module": "es6", "target": "es5", "jsx": "react-jsx", - "moduleResolution": "node" + "moduleResolution": "node", + "sourceMap": true }, "include": ["binderhub/static/js/"] } From d6b549f53a1f9735b40f1419f1504bb1fd19fae6 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 22 May 2024 18:26:30 -0700 Subject: [PATCH 12/95] Document & rename spec class to be better --- .../static/js/components/BuilderLauncher.jsx | 6 +---- binderhub/static/js/pages/HomePage.jsx | 2 +- binderhub/static/js/pages/LoadingPage.jsx | 7 ++---- binderhub/static/js/spec.js | 25 +++++++++++++------ 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index ae3688317..8a6baf868 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -64,11 +64,7 @@ async function buildImage( case "ready": { setProgressState(PROGRESS_STATES.SUCCESS); image.close(); - redirectToRunningServer( - data.url, - data.token, - spec.runtimeParams.urlPath, - ); + redirectToRunningServer(data.url, data.token, spec.launchSpec.urlPath); console.log(data); break; } diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 6b761a35d..837a5e141 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -3,7 +3,7 @@ import { BuilderLauncher } from "../components/BuilderLauncher.jsx"; import { HowItWorks } from "../components/HowItWorks.jsx"; import { useEffect, useState } from "react"; import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; -import { Spec, RuntimeParams } from "../spec.js"; +import { Spec, LaunchSpec } from "../spec.js"; /** * @typedef {object} HomePageProps diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index 1e67f2a20..99468cdd4 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -5,7 +5,7 @@ import { useSearchParams } from "react-router-dom"; import { NBViewerIFrame } from "../components/NBViewerIFrame.jsx"; import { LoadingIndicator } from "../components/LoadingIndicator.jsx"; import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; -import { RuntimeParams, Spec } from "../spec.js"; +import { LaunchSpec, Spec } from "../spec.js"; /** * @typedef {object} LoadingPageProps @@ -23,10 +23,7 @@ export function LoadingPage({ baseUrl }) { const [isLaunching, setIsLaunching] = useState(false); - const spec = new Spec( - buildSpec, - RuntimeParams.fromSearchParams(searchParams), - ); + const spec = new Spec(buildSpec, LaunchSpec.fromSearchParams(searchParams)); useEffect(() => { // Start launching after the DOM has fully loaded diff --git a/binderhub/static/js/spec.js b/binderhub/static/js/spec.js index 757c33ebd..f02c4702c 100644 --- a/binderhub/static/js/spec.js +++ b/binderhub/static/js/spec.js @@ -1,7 +1,7 @@ -export class RuntimeParams { +export class LaunchSpec { /** * - * @param {string} urlPath + * @param {string} urlPath Path inside the Jupyter server to redirect the user to after launching */ constructor(urlPath) { this.urlPath = urlPath; @@ -10,10 +10,13 @@ export class RuntimeParams { } /** + * Create a LaunchSpec from given query parameters in the URL + * + * Handles backwards compatible parameters as needed. * * @param {URLSearchParams} searchParams * - * @returns {RuntimeParams} + * @returns {LaunchSpec} */ static fromSearchParams(searchParams) { let urlPath = searchParams.get("urlpath"); @@ -33,17 +36,23 @@ export class RuntimeParams { urlPath = `tree/${encodeURI(filePath)}`; } - return new RuntimeParams(urlPath); + return new LaunchSpec(urlPath); } } +/** + * A full binder specification + * + * Includes a *build* specification (determining what is built), and a + * *launch* specification (determining what is launched). + */ export class Spec { /** - * @param {string} buildSpec - * @param {RuntimeParams} runtimeParams + * @param {string} buildSpec Build specification, passed directly to binderhub API + * @param {LaunchSpec} launchSpec Launch specification, determining what is launched */ - constructor(buildSpec, runtimeParams) { + constructor(buildSpec, launchSpec) { this.buildSpec = buildSpec; - this.runtimeParams = runtimeParams; + this.launchSpec = launchSpec; } } From 5da41118d1e25a9a36c7677a4336c81009219e78 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 23 May 2024 08:30:02 -0700 Subject: [PATCH 13/95] Pass launchSpec correctly --- .../static/js/components/{progress.jsx => Progress.jsx} | 0 binderhub/static/js/pages/HomePage.jsx | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) rename binderhub/static/js/components/{progress.jsx => Progress.jsx} (100%) diff --git a/binderhub/static/js/components/progress.jsx b/binderhub/static/js/components/Progress.jsx similarity index 100% rename from binderhub/static/js/components/progress.jsx rename to binderhub/static/js/components/Progress.jsx diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 837a5e141..36dea703a 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -23,7 +23,12 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { const [progressState, setProgressState] = useState(null); useEffect(() => { - setSpec(new Spec(`${selectedProvider.id}/${repo}/${ref}`, rtp)); + setSpec( + new Spec( + `${selectedProvider.id}/${repo}/${ref}`, + new LaunchSpec(urlPath), + ), + ); }, [selectedProvider, repo, ref, urlPath]); return ( From 23e491e1b2dda1a9406a5735afbd465d1457595a Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 23 May 2024 13:40:19 -0700 Subject: [PATCH 14/95] Remove GA code, add back extra_footer_scripts Let's no longer special case Google Analytics --- binderhub/app.py | 19 +++++++++++++++++-- binderhub/base.py | 2 -- binderhub/main.py | 1 + binderhub/templates/page.html | 9 +++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/binderhub/app.py b/binderhub/app.py index 50cf2dfec..279678385 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -106,6 +106,11 @@ def _log_level(self): None, allow_none=True, help=""" + ..deprecated:: + + No longer supported. If you want to use Google Analytics, use :attr:`extra_footer_scripts` + to load JS from Google Analytics. + The Google Analytics code to use on the main page. Note that we'll respect Do Not Track settings, despite the fact that GA does not. @@ -117,6 +122,11 @@ def _log_level(self): google_analytics_domain = Unicode( "auto", help=""" + ..deprecated:: + + No longer supported. If you want to use Google Analytics, use :attr:`extra_footer_scripts` + to load JS from Google Analytics. + The Google Analytics domain to use on the main page. By default this is set to 'auto', which sets it up for current domain and all @@ -125,6 +135,13 @@ def _log_level(self): config=True, ) + @observe("google_analytics_domain", "google_analytics_code") + def _google_analytics_deprecation(self, change): + if change.new: + raise ValueError( + f"Setting {change.owner.__class__.__name__}.{change.name} is no longer supported. Use {change.owner.__class__.__name__}.extra_footer_scripts to load Google Analytics JS directly" + ) + about_message = Unicode( "", help=""" @@ -943,8 +960,6 @@ def initialize(self, *args, **kwargs): "registry": registry, "traitlets_config": self.config, "traitlets_parent": self, - "google_analytics_code": self.google_analytics_code, - "google_analytics_domain": self.google_analytics_domain, "about_message": self.about_message, "banner_message": self.banner_message, "extra_footer_scripts": self.extra_footer_scripts, diff --git a/binderhub/base.py b/binderhub/base.py index 5f198c401..4a3d9f759 100644 --- a/binderhub/base.py +++ b/binderhub/base.py @@ -239,8 +239,6 @@ async def get(self): submit=False, binder_version=binder_version, message=self.settings["about_message"], - google_analytics_code=self.settings["google_analytics_code"], - google_analytics_domain=self.settings["google_analytics_domain"], extra_footer_scripts=self.settings["extra_footer_scripts"], ) diff --git a/binderhub/main.py b/binderhub/main.py index f19288660..4f733d326 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -27,6 +27,7 @@ def get(self): self.render_template( "page.html", page_config=page_config, + extra_footer_scripts=self.settings["extra_footer_scripts"], ) diff --git a/binderhub/templates/page.html b/binderhub/templates/page.html index 749fc1604..212d61ef5 100644 --- a/binderhub/templates/page.html +++ b/binderhub/templates/page.html @@ -25,4 +25,13 @@ + +{% if extra_footer_scripts %} +{% for script in extra_footer_scripts|dictsort %} + +{% endfor %} +{% endif %} + From b5c1c38ef4e7da1ff5997c82f51b6b60b4d5b8ac Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 23 May 2024 18:16:30 -0700 Subject: [PATCH 15/95] Move redirect calculation to Spec object --- .../static/js/components/BuilderLauncher.jsx | 18 +++++------------- binderhub/static/js/spec.js | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index 8a6baf868..bcb8439f5 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -6,18 +6,6 @@ import "xterm/css/xterm.css"; import { Progress, PROGRESS_STATES } from "./Progress.jsx"; import { Spec } from "../spec.js"; -/** - * - * @param {string} serverUrl - * @param {string} token - * @param {string} urlPath - */ -function redirectToRunningServer(serverUrl, token, urlPath) { - const redirectUrl = new URL(urlPath, serverUrl); - redirectUrl.searchParams.append("token", token); - window.location.href = redirectUrl.toString(); -} - /** * * @param {URL} baseUrl @@ -64,7 +52,11 @@ async function buildImage( case "ready": { setProgressState(PROGRESS_STATES.SUCCESS); image.close(); - redirectToRunningServer(data.url, data.token, spec.launchSpec.urlPath); + const serverUrl = new URL(data.url); + window.location.href = spec.launchSpec.getJupyterServerRedirectUrl( + serverUrl, + data.token, + ); console.log(data); break; } diff --git a/binderhub/static/js/spec.js b/binderhub/static/js/spec.js index f02c4702c..28520838e 100644 --- a/binderhub/static/js/spec.js +++ b/binderhub/static/js/spec.js @@ -9,6 +9,20 @@ export class LaunchSpec { this.urlPath = this.urlPath.replace(/^\/*/, ""); } + /** + * Return a URL to redirect user to for use with this launch specification + * + * @param {URL} serverUrl Fully qualified URL to a running Jupyter Server + * @param {string} token Authentication token to pass to the Jupyter Server + * + * @returns {URL} + */ + getJupyterServerRedirectUrl(serverUrl, token) { + const redirectUrl = new URL(this.urlPath, serverUrl); + redirectUrl.searchParams.append("token", token); + return redirectUrl; + } + /** * Create a LaunchSpec from given query parameters in the URL * From 1bc530adbed093a40e1ea926f6ba0f42943bf4e4 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 23 May 2024 18:29:12 -0700 Subject: [PATCH 16/95] Remove unused static font This is handled by npm now --- .../static/fonts/clearsans/LICENSE-2.0.txt | 202 ------------------ .../fonts/clearsans/WOFF/ClearSans-Bold.woff | Bin 116584 -> 0 bytes .../clearsans/WOFF/ClearSans-BoldItalic.woff | Bin 128760 -> 0 bytes .../clearsans/WOFF/ClearSans-Italic.woff | Bin 126128 -> 0 bytes .../fonts/clearsans/WOFF/ClearSans-Light.woff | Bin 121346 -> 0 bytes .../clearsans/WOFF/ClearSans-Medium.woff | Bin 137305 -> 0 bytes .../WOFF/ClearSans-MediumItalic.woff | Bin 141040 -> 0 bytes .../clearsans/WOFF/ClearSans-Regular.woff | Bin 130846 -> 0 bytes .../fonts/clearsans/WOFF/ClearSans-Thin.woff | Bin 119542 -> 0 bytes 9 files changed, 202 deletions(-) delete mode 100644 binderhub/static/fonts/clearsans/LICENSE-2.0.txt delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Bold.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-BoldItalic.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Italic.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Light.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Medium.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-MediumItalic.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Regular.woff delete mode 100644 binderhub/static/fonts/clearsans/WOFF/ClearSans-Thin.woff diff --git a/binderhub/static/fonts/clearsans/LICENSE-2.0.txt b/binderhub/static/fonts/clearsans/LICENSE-2.0.txt deleted file mode 100644 index d64569567..000000000 --- a/binderhub/static/fonts/clearsans/LICENSE-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/binderhub/static/fonts/clearsans/WOFF/ClearSans-Bold.woff b/binderhub/static/fonts/clearsans/WOFF/ClearSans-Bold.woff deleted file mode 100644 index bda6eb27a530f5b6fdc943ca0daa97f65fe991e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116584 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≫EJ;-}`yTM>IBGHCyp6u*Azb76| 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

mmYExGA&%+su5N24%Z=K&t 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 DMFr5- diff --git a/binderhub/static/fonts/clearsans/WOFF/ClearSans-BoldItalic.woff b/binderhub/static/fonts/clearsans/WOFF/ClearSans-BoldItalic.woff deleted file mode 100644 index 4dee91c2949147db7ca54b14548a61dee14af348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128760 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

2zg4(5XFYP#dkfNQp>%)Y#4=Wp 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%0AvC(I5 zA=_mHYTiXS@08FJNfU{@rCh00B~IE+66iIgmE}=t3=zGJd4$=P%M}o6kRw+DssQ+R z5|PD>n2auyDLr|kj;i$N?66~1PrU;y+4#svrQ4L)eEcW-_nuoCbep4Vj{VbTT8lQ^ zlE|;=Z*@__?fcux+mnvOhVx${Ph{4dTHg8Nb$?|4?^84DZacHI?MLfh0%boOynb>1 zgB^*^N^^4S^Y_7Chr1%_#!+@}UPBm-09rt$zj7Vi;N)sVo~f2#7)w5=K2frD;p7M* z66vnlSl2dGW7eIxeo9dmu{B!M8ehY_s-`~j=aab_Pq0ib5o$`tG1Ev}-dp4vW7HxU zA{(O+%LpZvDsQYO;b=yL9K_U3JY#yEXYBHC`2vzBK$^9J6s8%Yt?Uk-W(-U{gR=GD z=!MX_Z7@Q6m{FK?Mz!1Jvib{eQfMje#FpZ5*pu8I6wMoe)(H0> zfGUu6BB@v+F%UYT0#;xG=iDVdXB4X#u^;X@Yufg&>ouwYt<-id-*wmFme(Gqt=Hch zIRD*eSGG0Ixp472-#DFz4}s5Xg3k}YwWk}g#Kr8b2CWvjvqr>s(@nPO2*tq}6|vZi z`s5g?D=V92tLO6jQdhY1vn%MlnXe?nYi<*V49w$;6joT#bW7BYt5b$g1k7ZCJw#p& z54NrDtuZ-5o_Mw4_3(RbTgyG=hN}L?_@d4Vhf(8GX*GXUS43RaNX|2~cXpZDmkAAy zb$17Y)$2NTLxYii2U`*zK z!lx$u4yRKq_xppg@Ii^BN^6EQO{0wqIdfMq!vRhn!P=KZ-4^F@k^=lGJ!iFxy>LLG z8-vfAyrnsj^z*tzw$5?eF69>XKerpoJ?z`MGLK!d)l%C~Z}qwQmaeI$E{1=58$(x? z>%%&OL@5`IZb{XV&dFC79c}ja_RR^Ac3Pn^D88?9nAH=LtjVWIg~SpRZ+#xF)CfJn zN<1lt)EWhFryiHfV^)F2uY@V+N>ic!ozmZcV2sT^y{Ujf z!_BOg7aU9PpV+tkiP37KufkNZbjzW+i|V<8-)E*@JcM^xlZc89|ql^NX+ znl#Kw@Fz0>}r!CyJ$TXuhb8w?HD@ptsok`-EG*Jq zTEm{ZouT^-37x#+_E_Uk&Mp#f>WTHwsL^}tF5E$Wg&Lat)DSfEi6!4L=)84(@kqU! zRH*bO$x}{@XotMU5%`|vL?myNo%EWFgxaXHS|h|5+>Oeav0%|5=PAiBhmNqn^X!J9 zR4GOsoY$XRe}JOY{@Tdy^Fg^vN|EHJj8v)iY<~FX+cz8^4lAHnFr;ysEtO@)??0Uy z8SZn|cRHNwTUs9Mdi2fv@>K)dS`&@PTIpnWGikVH`*EaYZazZTK|J9zHR#JU8Z9Vm zXdn_G9RwmXoP0`e^UhxM zVYI8hO0RS1<+B&DyTK;KjL{PoA|SXEtRjCEwol_?Mdrb%`{qBVOh+Ne!qtWH*_Gjr-f z%2xIv_G54yz(MdUB$A6Vol>H$?90Cg&Q1=nTgs~a8j0kRT(6XvQvLNHhS}AK^-v!k zV_rZ!9Ql~TUX?iMG*y9^ra%sy0Q6HCaRR}F% ztFR|N34=WUlJ221e$EYyYL`@2%RgZ>+I?Rm8KSr|tOh`PR$P zS(&rTqtWtmJCU>5bNY;(qUt>Q8&0Bi!fRmgr41KW zQoM}56^{1Y{o}1;r%a7c?OJhopxjp3+`BOGCqz-un5mrGnKL%94RTpWef4l_DCDC< zi{9Mw|fxGr>ipS<%xbS4}?75M_dshHI`$l>&v2bDIwkOt& z{Co+DYGt5RKZ)?5xbqJ<`jdnZ?Ha+?akPtAUnOLX?Ji`E6(eR?x)2*f*AL_CxM%V8 zA92^oM~i12H{cNWd=9SgIIff546lF6tc4z5OWtE8Ntaq<*8!)CQX5GtusPgDw@o7P z0;kiq*ItCKnBd}?+`Mc0iNG%4rwWK$0=%am*GhP)-Pc-P+wt_CCVSJmv#;G(l|QgH zzk1`l2iQM-^n8kZh2F!y9GZV9AsWGJ|V^qJJI`=3}jH6^!Ic*?ha<>z}!Af}twFKDqybs{pAo_vuk zKuy1uTiO=94%CUA2k&W{dumH-0a7~9x;Sf$nywi`S^-yDsCL4q6&YfhQ=89=-XcT- zUJfA=kW=TUu81FpV;hDx$xuF~RH>@XDXX>GtUV^tS05#G&{LvJCbQC-ss-8Vrqow-rvEtb!srot?=RnF zk6*h>p)<+eP$`FA1Rd{#7;6m8J+R2x+R|j5yS2juj@oh_U(%~#H+B*nc8hovqojpV z)YL)f;qIe#9yRK0CW>%4>`rJj*t8bC*#K4C?$nz0nYG3;XtzWS`;5E^%0m`$gz2Ri zEh!Floh!2`Z7`3(j(ET*sszxHe*NX`PvQp3{iuO#>M)zUhePyT3x2Z}m>(Ya>Fq~6 zQkA}9W}4c2L)*y1lRKHUtP%WW(hHk6hi@rjqkwbdR~TocGampatX9(rnszDeIs(pR z#XhCduH7${`W$Yz4G?fL@8c#jMhYkfaVB`M8O(tW3IKZOs6q&xh{W847L$7#=b!CZ zbYM=v+Rwh*Ay=uqHIbQznhvn<{_Q7lN~hqQe$A{apS87n?k08*=&PCMDNDK47VYE{ za9+PBoCikn%zlHP*%yS>iW$e(U*}h`Q&_{_hBJN~)jWVd;j`x35ziY&0l3Btz}Cx& z);#QPAUVe9WFm@?(m=|{fJ81=lKapZrbsN7FoH!DFP_y*a3`8qaEYH6j~X|2bQL?E zW8bS~55NJ^{T00Z0noA6fQVW9*%^BEE$7)h2J}_)Zn_VSG zAX)oq+G*z?vUnJYT&^_POn^zjkXZU6KlIKctOx|ChpHy`kgZ$iC(4@U z#(&jM^?m2k?ccw12DA3<>#MEVh0V!&w~XC?%L%)%o}$lqJte2M!`@5b>NqnoD<2{h z3MnwDbXqYbRVvLgt=P1mQ~~)ug#wUbiqOa;605p^9B$5GIs!C5aPb9qewoDCSd=~m z*8&|}{!{o#m zjQswy{j45{;QNhzm3{wDKWM%AG#^@)s8(kLzI~2Zo==8VHo}$3R2m#*I!R3>r8m^< z%c-(i`#uNM`f%80i|?(hbQq{INlq%Q^WRw}OmK4!hpEx5#x?O=pc-@fa8uypR4&Twt)#f!4Q&)C4uFtdT}&zkwPwk%B~e}1F)sxI?Yl=;RyKBqGz|NpL>KPL zkL+RJ-P2#Ya?Q4G_RaQ9oA=E2)kdrU*h#tG<_VhD>;wiXWvJ@k_wB9c-u~(`d-<+! zy>;^Rf85_T`5ZYT^AEp&^3>bk+7+@dKl`Vz?fUM%zL=IwBjgacYdj5i!x~~{-mg-t zy)|%~Na@4Sd$W0I=(MS7B$Z*6s>WDZR#r>Y6ih6<%Ik6hgLg4758b7b^B!;3EBuHI zYUrkNYAP;a(SFUdcmAwB3*wq^N0$9FG@#4-8bjV(Pjux|i&m`xs)w&$33aY+3N%J7 zE57-MJGXpe`z$LMA6ikCUz7>d1oiLOQr%VI+Mu?f{?)ej=Py={ES_c2#`E*i8!z0E zkIY)vB%I!(tN|%el{Z6$)FEZ{jIQ*U1P7Sl#t0hj(yG>whz2_2sF(cLoPLqLIHBg&SU08x}kG^3WPhhuNz4> zc7)VOeKh5>+Rp4jn+3CW@0 zD-=eHPJK+ICyW#@7>sggAsMYE6GC_*j3s-$aHx-Wd44&Xc5{b4NcpGV!q>z8eE;L= z_v&k>>Ajzm7gET;xjA2h|NT+CVx25lxrIy%ULK!sBb3UUb0E06fi=bscSk>Awdw&h zhHQF?9@r4d6QC>>(gy7w8`K@AeXs3vXssto!9;m3Yt$|Lp;Q)l$@AcGkeYPXk1Su8 z_jYu&x%TU06(O}XT9NYk*^l5P|2g^f&rU7c*kF)qOv=~gI;B_@YR_b;OE@><73K}* z6tu>p(5hXKj{w4x)@m!%t|(Daq4uae>2xxx)@ZbPz$RjZ42?`#X@&+Z7NdwJ?;(0KeEcs&5}`ZJk0#~jpuHP7-wFXTwCBQTO6iEY zd)Ys}7IKe#xzbZ+PW9ITa`2wYP;}Ln*kxtg#;=UH7c5^LKX^pmJ)y+CLv!6B=mgJ!m`Y({bbwxj z?+~W*ufWK@{@*OuDJ!6b^8p~~)z?l7y~2$Iey*CBpO30kay%4LI2H<-l0i>HAX##? zQmK;fqX~&bd-Is+a)nV5l#_p(8%F1*5#nBE6@0-D&TeG?Gbg+e{5myx9gY==>Svhq zn1{`e>@7D*5}u=aospnOH}F^`l7ImKqX)+;`GP#%4X1)Pc`C^CD|J?WOFp?4n(U+4 zCxIsW3wzki-`G*=SJHxG@&K~QZ!py9y_1F#H-y6DX21xNUikCOe9#HaRG-cTy)bCl zQIwN(1@`&OQXk>pCv}yTg;4jo2w@C$CFC0ja;&gAqkj8bKMSo( z6?q!qJ4k~4k6YSM>PWFaL3wVxb$f_!2Ra3Ztw3$yT40t+{Wrch-`7G{f8pEy-8cQh zH$<3j&;oi9T0qrAKJN*f2nHE05TGZjtK%maI#5lNg(QSI63JN10+|+C9B+*X;4=}E zwiuc(Eb<6;(VM9*oFgAj?L1Nv5BSBNRgc`U!1a+S*)%(y->{&?V$@9jbB0Wjf&9F9 z?ef9774%r`(zd{L_QS-^gI{jN@qmt%4JUMZ&Rju02Cwiu4Wf{pn)PE3 zHHBk_rCF-e6cW?-9e!?0Qgm%M=c(@bP;S+RZa?v(UE40**%q{iHa+qi_Hj$~y!y^< zi&~5}>zZAStLC&g^iIBtIGdZCfHupIf=HD*A{PbOH?w(nCPt~)3WlmRh{;Hdz+_uq|FbPXT{{l6bUwmYgC~~SnH{DD7gwh znnY)k)JE(Vu7;mKU_Kxara(6D$ee_$_Jg62Cw5X}^0*OTcEp_;mq_X(`hsi7TVlnn zqyTA;_Ul6C8eNtZtC-?0Q-s_CFU&>5G_S-Lk8ObiY;Zj4k>$Dx%mbno)u$mqtZ!*~DrE#HPa?{C}i#GQ+q zL-JP?)?m7CBl~alhljUr8R%^J>b#+OA+sHwc%b|OD{UnV(1NKT8uG5F+pVaO8wr;} zO+);$+C zu*4hSCj)mas949I9a&-uR9c>o59Jo+eYWJx#8WvkC-bIfCTHEbxSF<_(*yZAW3JYE zXV4_Q!e$NO#;7-9m9p<)t7Ga4^)j6$8ej{YVVTU5Nv9pjoXHA}W``yX4PdXg$zrv} z2?48VqToFhp_zDOaeVqx9Fb7z2yzFNqEfWfN-`kUxhG*dx-FA9eOdspabo^pRZUY^5nEIq?oV~E z3fQ794fX2$+ncOPv&Zm^yUM4n-~Wqyzs3G_<;df^T5HxFAFdwz@;!C4<_0GB&KtUG zwC&sL4CZvqGk@typ$1qBZK2%Dj5cgI$`~gVh>kZ=EaO+@jNIw9UERS+kZ9#K4$VCR>)Ms)GJ^ z`50Fq%WW^Y;*Xq%$|WWu)IInEu4|6p6lCRUl)S~_O%W;fb4Pqd@Cv%5Xi?x?GWp?h~naSP1FxTgwqfc8SGwUne8o9G7=uF$f zo;f)rYHr!Ka<1p{`uYP057Z@hc0k#FUD}#o*j6S+8T8InuUxV#BxMw7O{|!EIG50bni7f1Le)IZ zBpNJM(PO+8uBLw!L=O1ccLqz>f2E3E)H^me1zp;lTYHvO1Rtg}fZE&@0lwlRAl z6%Qq9T@lDUZiq3ELX5$WV+?*hcxP~NxNFX`JW$mS&tH(OZ3`J>*A#|Od)@xwYrmtd z>@x50xdZ#YwY9_UUNrXY&7_un|dGTKH1Rig$6wb~f5l=&e;H=g|TxqtucZEA??Go}r`mjY>tjHVeNHj<2-k*FDo zjH0FE5>$vQ5tDL-LM7rz;!${r%aFp85xFGX9E@Y4Xgz>i3_^DUUV8PLXW0i2KlaG) ze+Lv#g1yk$f0wm^KTR57XVKugFlvW!eqA)V2m=68i*w%LCD7Ba-~EhqQ@8^ zv+jxz{7ngn>0VT6i*o9`@asG~%q|39$U^RyA2jg3u1iz@8)DACcOt(G)3 zRYQrPp?*g++P`K@tKAqVE9)Pt=D(FfjC5b%6% zWc(4AK>K8}+2Z*y=KA3B{eh4>#A#rvgd|8LW>&kiwqQ-UO%k3t-r2daD`-j2-En5c ztPN4Ku5tD8HJ!Id=Oy}s-LuukxrZ7$Z|@2^Yv*sickcY{$&jvo-gGNk8WzIskww;l2p=3XCRmCU$b_(f7u{n5YYvkI*yiT* zVly7sML41|#9qT1>LvQ~5nzL}*W+;#M&oJPWLK&Qo6Y5NIK6I<$3Et8_?2TSm0F=Y zC@q2UN@|L5Jt(-+1gE%g5|}PY_PGhWD}|=^yBnTcJ{?%sGv}7Sm3ws2$n@Y`*T2p- zLRTN<^}*H*;J1e>kIZT{sMUnts3FvP#sD{8s9AoT{o`d^#gvIFg$ztwKFBTqHvsIQ zcPs9#zr3E8NYviyfT^La&AIm48`pXRy=Prisyf&g*c9(;|`^1{+#Uk5`qJ6Y*^J0**IdOoXOF=|Sv`SUWejkmtNF#oYO1 zOfIV|ceZuT^dD!({7P$H~W0Z?M;JZ{&!*`DUNb zT?V_M+!TP_5=E)y3D_Gsb(zEA@wmLWQ=&SZ4|R&$4|jR4SL$-8S8C|-^bNg&Rk5^N zxS#mm;cL4&4gEX4gEYXO{$KUbGv}85sdn%3iT_udu&)Sv1P$LONUHHE>_@Z= zd$I@->0`Xlnu&_M(L@k(v&<-0D+t{kmag{s1$DCfiFc2fqU(Q;aCBBIgq2Pus!N)QI8AG*;oBTo;O(8Vp&fSj>!x3WfsCF~IPi#n>OH&ZPa=SV%Q8T-V+NkH$G;WH0&WA!tP` z{=GWUKD7PFf`9o}jy!PlBg-oQp($^x&JJ~E{5nIlHQu*-P8jT!o8>HAXxUlW&1;5Q zf`9xsjyDivqjhE7@mVX@tqP~+HTo7Gy@(k6pyo#5$ioc;j*E*1P)F62QKL|+>2Y8b z6DpNbOxb`^>EI!A@WCSoZ+sE^I|43RcPw9e|B^~*4G!xEaTSlv9+AgX=FL#X*ZT z&hsr0;$WmI4zyn&zVQl}6F5mPEu?7*i2X(G8}^g>k*DV$JysRT-E;2Qb*&qh&i3n^ zMn!#-y}fTi1xJ3vUR^Nz(Qocx|7-unKi}V~cuCi|{%bpG_w88a?`klFa%Je$47OQ? zbH+a5Fr;v_gSQM}o9pu~pWCe^VzCHxc1>op?Ln=^6N9tdWQw~3d?D9#IaCv+C0wOR z*<@+@R3=Lu2`#&QSJURRD`Pj&(x&IPRcXO*!fc%6xoJ;9Wwana@&*RlU{im^vnq?6 z*chL5qlrMv=2?LC@i9A9fHF@#K-9d^A$!yq1CEoCY4dI zR%_&1Xb&1pa-B}5A2S$CGMUN&*L816-B%IwpjcGE9q916fP6YsVJ9lMG?d_0)80$4 z6(@eQg6$b$cdmlVQ$IM|&+cw~I6T-1TST6|^T^s0%VOYlHUJl*{ouglPuVNlaC>!A zOz?M@m*MEWgGU+r%UHK3Io*y;gRV!k{%670!5;T8=W+iF_T6~PSWa~0%Zk1mA*IJq z644l!MKp%9h{l98B7q))KcKn710x`2XPifbTt~r|yO_J4W1srn^&fyopJ7oB5!%|Q z#e7Zy{g`M4Vjaqx7}yr-n1~|9(7+Ti#9jadY$hQi9HBhpd|wXl&P&|~%%hXy?T|C~Y&hWY2 zGsgC#yfk*a1Vcs)c9H~#eF?80!q|Xq+;uL~n9E}m_ZKi{Zrf8t$|MD(OlpI`Q!8p0 zzgEE2TuK}ga5b4tqQeF0x&KeN^Z63#WhiT}aPLC}>3IfTnz?|{COPTlCDMNtJzbEV zFYxO!GbDY5w_dToaA&chAUnXl2WX_Txcy3fWLhXYfm|^C6^0-6~@}r$zOlIB=5YR zmxtQpEm&DtdpbGoQ3$ecV1#&lZ>onlTNvR@7$KfxnOrXua)16G)*kN8OLKyz?ZKMH z-FYrqe2b#&vRLsg4i#kQ>4f_(!FtBYF0T^qE5cgF$<8lure4EZ#>uWI*pLrlE#qVd z427O6WZ;LuO2n^va}O5m(Snwdsba1-?ne%T_O=HFn`RU4M{L7T8>Rp!&5rY|XBGTt zC^&>8b{yM49A}*f?A(mAq}XwsRVA<~?c|v3h&K2}U3g6UOIHLQ;kLhkaC;kZq!3H& z!f(^hjcSUQ7R7MiC%JLj$jdUP@i=j^bKS)|7iE|2F5dT0L3W;1kbM}B6DPa8a9Q?2c$_%dfl#403i!QfoL=I_skB!L6&XRqRDWaNh$e7`ax3ne z&La9Ra|zoa9IrQr(|WUX2l3Lh(yfM~bbmp*q~D=5DM**}`vjUzymZeE_f`nfV10mZ zH9{a4q)S_i(7Ji)VmlAR>yKd#tKsFn+^GfZ9dwGpWB)?=$BJ0NSZ8YZcYm}5E0`>t za%|}2rNwv*Ks(oqfDoib1nw7}=Q=f=bO-UvX{9-~dQQ5(AYJk%P?{8^Z+Mg8f^-ki zlt?QCX@RwZ9Y@dH4+C^{WK0MYtYEDigdL+P#O@AC8wF?voK zJ@xUDyZ7_*aLw=+q;ZdPR_=zs6=jEodqZtGQoJ`_dpV|p^_W#L4UUj6k@rC>TZ8Q^ z8F+&Fl-!PS_b`4X$q)!QhR3i(pj@&j^+FUp@zP7Yy!h(hlNVp$wOvTg%iRrgp*mzC!89&CtL#6PCQps1Tv-Uxk_n@Fbcz@OXU0oPw@3 zSKx_*d#|{h{zZ`=h8infqEteyGWE7~Hc*EX>)Lt`CZhAY8}w9V%+~3QB^%NEU!dY} z9UUi3gefmo7-&MJQlNt)1b9y1f_|>p*bkleA`T$g<3>+;E{LA8Laj2+h7Vy>@FBCt z6VdtbA)-O_j4JeusaM$7!Ddj!J;R{T-S`aTSx@&2u=%EE^tN|4JU87V0C63*VjgUT z4I=|fX{$nOpeTnOd!)$;9-uK;yt&aJE+&HdL6zAhl4uvr@2wMQyP8Q-qB6*zqTIMRW@q=1Dubq!RIO9^Nhr@e5F(-)2dXAf+X~M_-q9&S1Z&? zrCDS!5O6gkXq7~w)k>wbo}vgk&eKMvgtLeVzPu`h!8f=$%^j9uH4jjJJ$f^}@Ol9X z{s-P|d1njzSPaaI_ps;UU|#coZU#ef_Cl-&EJ|eAA@I22O%w0{r}+;?@HjhU{DYZ& zll`OVP1sw{fOp7C6vE!ud|%BFgi!{EHBQ7|x*3GlMUt1w+n1y>OJW z-$^f?QC>b{aXPyMeP4o3f|pHwD5jwXA!Oe)QJ&YQB08@{rxxjS_AaAD61(nt^x4E-Ur8LcH?`$HUyy^3K{=Wh;Y!iyV&mlHIul1|MZTYN+rZdr#yLb0%m$$a|YYF1++w}bzJpfTH z{mACwPC%}!D>qRDQMZ|r9y5`h)V_UROG)v>H*>W^6UBdA2xX#hE?OG>V?YW}rP)x0 zT-cBRNFd}Sn!xAC@rV%I2?ds9zF4y4mZxdUe}4AX`32iM-BOK7RsG!Y!QI^+gR4yI zp1ELkIM`xWSoMmkXk><6VN^?Ev~Ek0AE-Jvk5 zBr$6IbM9QuiCgf!kubb>mU;PFoJ^H>-_};vH+N3p$O9E~wsl4~tXtx$=}j1)j?`Lb z4b1n?%;Y+~J+o%m+p?2Yrn7e6c<%GZ69E3pf(2CU2ea)xi+eNP*NbjYsv1_}ZO^`~LkuW{f?z zHEPkSto_ZM4Jx^DPG?68FvLy&P1A$`@hvW*Npg)V&eH7^g@&zU>NcW~qBM{J#Q z7KHCR_$a$tmubk`qcvV-OGj!`b$QyYz*w0h=1oFID2dvZjTiI;FzgmY65dpY>(|;sb;uLPfoAd0AJ09QecLt$}Oo ztAC?Hk3RZ1shj-xJa~qMJqe$?lX?X{7ux4}x5?*o+iZ*r(`~x!z-4#a>^7N0PY~r+ zxr|Fun@AM{&0LhVkdz_pPo>Fsu;<{E6MOm09_r!xt=}B&-Z9i{{*z%wU7|f^tgmb8 zGG9DT4u;t6A#-asH!?Fyz1n+VIAyMAD&G=~8~ibAvchX1iOUhlg$ELLu{$~=TxqtVLLM92)7fvzdvXjw)0q`Q!+wX19(%OHT2QE&M9DWE)OIs}o{j4(5Qyh)&|lPvdTUW9*iUcK3FZU#)uy|4 zuM2i!op{LYnzcx8__%xDaOw$LB;%;bh~#Q%CW3Y1EP0rEj@b{_s&w8;D3p|1CR2!Y zG+etBwAt)bK|5Biz`ICN$k5~xWha`rwY!kCj$s^m9mg<^`v)YFa(8%f`^d{*`Hd#C zyS)}}*nk$TCJ%$tfvh3qtgL2Ds%k|DP7SN~;G9L6-`H(`Y z(P~vd!Z1LkqXG0mWGJRV6B+;%8l_65k*d`S4VMYPn|;tO)}S;~?l`z$459^B&kuM%1G=UGRS#=CFgxLu{`;PzdFc_siV_Ejq|9*Ai{P_ul!ir+j%mFx8 zSLKro3ExZNf?8@eyCia*zpO0eqNV;yDrVLhDT_s3=J!_-BvfgMTCHIiIdW1kGw?)8 z!1*wvwYfku%@M04izKoJe3p*^QIH$%&!(V)!2gSIt$cpD(JLmqL|`buK4@%;kv~jb zSHxS^dCrBNAjwmq(V2&Tx~uz3tNZ;|O`GR8E~7`JSxumpT+ zm#f0k)!p6O(NSSB>((R^=@t44M(^=#woop$dURB_#kkp2vv_U`kyzvLy8ZBtRY7G~ zw%KBlt!bgn-HW|lUE54%Ze=SN_n0>s&lBvs2~1>Mwi$2lqh8~efdVUU0ThiZ2`Ne8 z*ZWmmxi>0rG2g5qu_{ZR zX=0oH8vW}!hNjqsORJ>-AbCLgdV4Vz>r6$!$rRpYTk{+yqVLH~@PT!6_21=Qs?pIA6oV zl~175uxtu*hWhzrV!)w`715>;Vn?4j))Hy|$+kHMV^Q{lAkZ7G8OB57e}3CA=ZU_) zFAY?XtU8jcaaC@JnL`eB`+RqMd$VJ59@Q7Rei78Q9Ui-*dckl_`Zt%BExYvDQ>z<0 zLi5JJi#nf8lc=}PoVy@0w+AKrvcs5DS~v9;{SGq*`)6@J=CH!1co>tuCYNJ^fq*Bf zhvt}up$#^DAehZrtDW+oQzolRrt~%Z)KBIFem!k2c@s8s$^6%sLL-TaYk|;o9#1Wu z#tQ>n9^Ub;JO1Nc1Bcf3*k9L0a$Skr?x_OL^|Fg43I?2<$v(1tFf+fqGyL87y1l1{ zcYI?_|CuSyhL~2kMicEgc}aL!(z3mJs!K)ti>3iUK7_zueCpLQWj@gdQ<>X4Pa?EaqxS zQY7K^1w(pq6DhuWKL3~a^}uxp{2HM%+czw<{jH5X&i>!(CBgj{LgyXlX}S)C-x#SAFhrn8 z5fFhQ)hb|%R@A1}Mo`37EfUev)}qhyc$TWAK5NBFEA8vAKVM)j|8vg0Gnueh|Nr*A z|4e2w_uO;O`M&Rb%UQnj9eqi5cBMzJS88>-bib0!pGvzj$V6t+zgpT@o22LX^j2yd z_lV3F84oSX$db{j=_C#5neL9RZhzDKsw~9jtge6Bhh3(+xf^FxcJQXWhTet!p>h=; z$erokmrT)av4p%WN(Q16o&DQmiWtg=xry z!v6HqGP)#Eh?GHLI$i82W0>-yL}+)ZM^G+~1jUeqIJivBgqc1MKD6aVa{?1M50ayd za6|^ShkB+M8G=13YrdoMg(W|DSgy0_%U|31?MH9l4`w&DPV+2Zb-&PUsi|*rHcj%E6s@nUskFv> z=?^Zu+5XGD^pj*q|6|kvZa+Dt#sKC;i_!toH;4#I)M6T~4h2kD zi!6!>@scJjJzb+kszy>5m`lu(Q?GPdtGJ<;SQ*SrWKtEz3ZWF_fQAmw)1}!2B}{N@4!&JjIzf6Kv@qR5~Dtm*nf3M z=X=XFB^sU1m8Ok6Sf+D52pCP8w!9>Cccr$nEZu&0Nh!-Vl$M2fX)gs<5+CAl802)2 z5BadT*9b$GvNabOdK~pk3ePXa100XxPoutoG@eCSXwSWGY^u&IsPY7sSIhs(3#M4< zJg+;PCR4H$WuM$zQ`Rx1%&M_j46+P;ntO6ECRq6|vjz<)l}2MJ(w#yj#at)MVEWl>4g!7Frk>a|9k9?D+nHZ$y?Z zL+v>C$|r0d^967r?kmoPAhq& zVi(tm&b(4TN9%-38;AQk@4da(r_a@g`tLrlaL4Zsbb6;Qx%bIA_kZ-A7$sbEw)e~_ zUi8BTG^`sCIvSetTbI2!=)NZ9{x*D{ z`tJ94rrd8&xo^Y%9^xIqQ3p{y5F7&sWVQ4PG+GWu4M1(w>42K$fK6@FXzV(pkqsqR zazwL&4Ggl49E8gAN12 zv8>vPL*(;hg&4zClcIMB%SLztfYD2!)4H_;u>JLm+*2zGE1TSX4aF^1YqfjCU2QF$ z%Y0njADFr7&d$J+npU$fU0Yxq8)a*(0j;wTq|hb{6h}>(EDaKYECf+jmd2#l%VgOG zwMOJBkwl|X$e}RlMTw*^N{3w#GC50~B4F$j)r$*)iz+G>1v2vQsEoQK zg%Bh)5@_ToR}6{RY$9;z79kqlhX~YEc`bq9f$IKX=bZ@xX)^*gwq|TpB+xj0NN^CZtL@Z=W$!H|Gf&@ax`IK$n z$HQc49z)AtkCbAX`&uq!1(Awv6G-gI&=%M)Qz8payM{ffS%?R-+KR3vyvUo^@N5dN z7K5450AdYuF6uv+bMpfMb*3XbTa81os&&PgnYk);KxX!swd&m5Y@j80^0>!&Je=TT zKCx_i^|~1pQ8QlEc4n;@L!tCqrl)!^Dy>D^nnadgRF4qhTQL8$7KwsTF*VuFupTw0 z)@N>AdkYo>L=Y?pj&k~vtw5{wm|H9RgELpHni;@1JV-+9NaOCmA}5&RvFZG1sJsk; zV(}pswD<}`A&u3UlcTW$i$$X=wOV~@&7_db;{TC3Gk07Fo6cwGH?nN z$idDjbbv@55n5Q=iW~aeNn$ivtu0|wCVo7!hS=AHsX-2^DQ2Y9J@D`=1M?qW9i6xD zm03mIO=TI#B=6i3SsARzZ0MLB9(?KUI^j*j?DoprV!XMa+E=xtvzi`!>G0~GJ=j^f z{K1|F-rqCTlv`}G6dLY*$eH!*y=71&O|&Qo!{9E1+u-g#I1E0xySw{9{S&r`dV+}Ec-46&VZj}puJm`q)bD83(H4Hu4I}oRv5ksA3VDg*??SB8 zvVZ2R)+W|qf#@W)^eQ3jawOgfJ69Vprpq3RD%)Des&gT#IJ^pnnC6t;Fe9LG?jK6= zMw-}1ydwpZ3@1ypqgJQ8iI2Y#4f<^`F&`O{p7_zOC| zBdbl>hpw=ZYhXHt&x;iDS#5Y*;2R_b%10BI@g;e5t?ed-$r){|V4}t?HOt1i<=uHs zZXhkIxg#6!QNPL+BT6;`PN+T~BXK#o1ARFEMt$U`P{$sW&!pZjWpEum&u*~Pu-GT^ z5nvjcZ*)|18|F??RcBmYCe~}DIWV{7X4GAsYxQ<|vT{*!aav4~8jYPSDEofk8CO|+ zT-;%3l0X^dfV8(cr}%v$tG3?3d2$bz#ItJBM$h zwzS^cN#3e+*nnhm?BLYrJ+ww3)1k-RiwL5QQA)Os^bHzc5&=qc(P(J6ZPH4&Ic9a- zj@YDWn-g)a!lPbN7=ow3O3`A9mdF>vh=u6Eqi^T9nrBRCL$ZVsgpMp3s@$Rx+s3=6 ziSKk}|LZ;a&&x-x$>A}QR_{gG?;^1U#D-cSo72tvAgzbDwn5BkYd0*f!FT>y-otjMSr38Rx*IiW?0z`GtBDct=*8c93B7OHtX_%?nsBLk(v=hkO&tb%=> z#cSubVAk5^LU&^h4lqM^Svl3!29DPPwL{w?U9B|RFJLn@xqUErM&U-X2eHL<-DC=< z(-U$gpM`%{tsMVB!NJjZVe507bZqI3c=I3Od-I&5znqpCC)%ZckcMe^6%R;CiuVQ#}=D7rkPujuwmm|*(GXKFt$ z=;z>750zMj5N^Xk+9Mul*pTy*U{nPoi+@2$6wR<0 zw_j?7;}A_N-MSX^0xj3itvd9R9|kW5cjwAh28eOW#jem` z8&?}~z!>eZ5lu`T$sIVV)@J8=0#!@y zz!v#0LS}0jltL2nQJs%O=igsB$9GFJ+BWY5Vfi6QpB{PHibXOg*L$>GOX1nsDK+!} z=B99J^t_8jgftEkkyOg+<@;rapDgosn4A)1h(vVDWIEf82YW|kR14wf)6DPM?6gi> z72>I0lGy4C=Lo|6=73@dJyW!xSJ#2-v!k@!H%>DNA6_ZDXdz)(GnG-Tb2Ohqlo0XH zXILQ_St~pke!`%>O`W2(Gk8@x>-s`0S@!5?*?6RV2~~HSWlT^J`5Xax>O#E{5-gpN za8A!*>u%6lk>n!&~K!h9PI!Sfq^Q3_Co@pgB8kX+6}Dtufs1^E8W(^= z5jE09u;RuW3JAdp((}RijwUQl7>%*KWMJZ)DanGSTtR(hh>Oz9FG_j$(>Du2yAL4^ z1r=RJcO^a;B02w4SE>47DK0dfL~NuIS$1&>!mr3*R|zt*J>oK0y?r4V&x#s?Ap&PK zo#~cxb5&ABCT9=?UV01+qbSnYl(t^x6uvNVd|NaHm(YD>!Caa>=ms>79J&eY`lvU` zi20~`cMM+gdu#A(QKX87CnE_3L7pP;rAfy0abf{VtdZw(i^HjrKPL1Ee|qmZL;u=W zl17l?Ep6@@`PwH@gu7^991WoP^|^DKMhyNZuq%WZiQJjxf%KQ6F)zo3P?@kkmKH~A zmP#H$WwY^&wV+dW=I)VYV|U5g@hOP{GjRocK+e#8_%^3X(ohkM za$oN)(7H=;(`=18o`bEZ+XBd?`JAM2f1YYRR+Ywuv*cr^82(~Wr$YydsP|6)F5--r zwln&a8C;8Q65Zu#?SIjNR0;v$_Fb&6D>E6EfJ+;vTVtyUvm^|xCFHCnY^+5(?wI3} zH_Wm$lYT&_rL2_ePMFHZkIdxZ<$jk9!?*gkXtEAs^S6A%6q_Nq7Gk*(pW_IAm0+Cy2t#s zwl2uN68tUxjokcKg9^{`Oc~#5T0t{rTV?|{#&IwM#)Py)zcUT2VnAs=8e@P2Wom}Z z%#LX!^B|cNA8Z%>p0rmOjbMS-k?FCeD)Nj7^!@HI+TPnmBZ;utB~P$lER;9!0Bs`S2Jm{XtEDempy zOnTX+--5k)TrrIQE&qO%ML%~JF;~N(r*OQ2Kj1ke2M_164yGoX{s?Z z(W0U;3(;oEJ&v-?s&ZZ^8Z?}eV^y|Di3~;o@_wmN+|DH)W0Q{p2!uTLtCTavR|VqR z6k=3IS%z{{TI|J5*l8jT9C>C9FcRkRRx_4{Q$=_IW0vCBeR8y%UO|C{{s9LK9Cp)N zh2B4{+)X%Y>2hu1D@R%iX`SV5i!Hy43u3=W-$HxBaLT@Fge8h9d?7Awn#q)OJViSd zZNZ;qnD#4BM{7}$R4fS}Rfx`0XSt*_`w2Z7CPBD(Am;k?Lk2Pada5}oPGZeuDE+rS z-K1o8tBBx9-=pT4+)T0DNEp71Y~e|3``Fl3!Fi?Z^Oy`ss<{9L6=wWT5E+#6b_Rvkg>^rMiv zaA_VXjBR>4>(40#XHWAcFBm`c+zm|)uKxdm~b1aO$f!o9x zuLla9n)>QqWGvnd&e82tz)D+sr^lZi)8*K@k%s%OL964C{GsBii&Yq!m3@>O#>(P= zi(LIxAbNH23Ne=4(%K{x4hIz-JH6IQ}6}y zfXjr9MA58ymHyomj&F!Wwagx-Qc+{a^m&4y?U=)|h7>m#^C>KJE9~gzrO{@$x6x+w zGA=aqz0SQdo|A)uCp0vz@Ti*ztlxfLz1s?QUY{dK0xg16m*BK*7wB?JKsJnW6yGP|PVfs_yA z?p@vD@WknWoeYTUq26M@;_YPc+P^`>nMC!we%Z_=c|Y>#{w4&tczXb%c0ZgNI+JyCPoy_+` zMBK3mI}0Gi^PoaeEPbGlEJx?Zcrfd=ODw_|g3*)!T-isKG7VHZnhJ$|1t+3iO zR1;Q`A!EVl5O3V5Cl>5SBZjqp&GE3>o)5;ba%>3y*WKyn9{TDN-`l#2k*GE?;AzfJ zb?#Rvii?;Z9w@#y0gLijq2~7+&AUq#e($;^)s^ig^J1vrTT|b>3h&dVRQ>l|3#;RK z&SvB@zdalWFCQZIuCAw}D8EPXvJBl?*X01oO|RAcoQ3zs7@z<+m&B>APHJ;!81?aCwzag)aYCp_G*f{I)IjNn#14R5wiu)HBhIg(vVp5bBg~LLrP7k&>ol?cw5NTUZxsY z0OA?cCgdixLf~Z(NnrmL^p(jKCJVv_gb-{=&$lfk9z;P1lEAp$k}ZWT=Bvu1=UADAZBaKM8@ahJ{LMnY+Dqen-BYN1b-v-&H=;A|6hj zMAR;$49~1yv?LmzW@xWgEOp_x7|J_5AT8j)fzTKB-50r<$PD0PgQ$nHC{w3GIhpSS;Rm=V4(o(lm&*^?`uvmwtjnn6yJKhHG{UznkkWGq>@$ zi_17RlJBy<4}H%ef>iAE)TvKBc}g`kfj$6>LkbS@$8`r^Fv+2x+jeD?%sR6#$bk7m zU$;N)&oa|N788f{!Gz~LuGPZsV@cW-_#RobdfRV*NA1T+h-VlMb2tnuCUwpn|ESH{ zgFC^~94c{4Qd{-&)zGQWngq~oW}*~rQ;lTV?Yfpmz}YPWz54TYQQZuv?(V4hr5t!S z_EP?|wEgv%bAdexP)S6n&CSz*4Howz-$#JwnIVTnVgwj%H%ZSlnQaZid~N-0xcWE=woZ^8(ca|I-7as#ii` zTqu8U82dKtW+kU3L=#)!63ZHe?SRYi*QA#(?y%*nxM~nYrlj9ljsMUHzY36!iDm!x z9lOBQ3A+AP4H)ShwU>OFP@?>tM9hN5mZT{b6FVU0FMoer%jE9OkB0h-&r#RcJ>)i; z7!zVTiN6rjMoDpv9yAJab{|}_cBgJ>Bj)JpZXzxXS<7t6s3ksWXb9{KSx41$g3jzm zTy)OZ(R4*E(Eo$bE=Rdub43CN;z>!uY$p`S4J0=>(+T6C-BJN#p)FQ9c{W4xA?U z#jNH*4f?w3BZ{&naekHQ%MHhag_&H_yvf;!4wyYt!c7Kgk9kZqK7XQ>kFyFR*ENs!pHWg5g z_PVu5OIVSOz-n2goGRUS~-wUCd#{^>!Fek6P3t?~l>xj*R(n zox@i;w&XV*&~ID;2@8z@>SiFfZ%Y@Qe~7ORwv#jqoqOuKUNNIf}S{)a_6ftS+@80 z*KQUGTxt*tXJM}?)i(?2JpzNT$kH{CR8diw$)eOP2(vDUOWCVNf|!ZS8R8KrLCSmb@F~* zbZ}Uyb(1j=t8%2+o1~pdJHu<48ele>y;#3kJeUwe$`HNeM}us9OlotqZy<}L(bf5J z7-Vf=cT8bWQ_eBsbeBjtlM?4_)s3Bw#~Id70rTUd>XA%4hLNm{Y{%prVz|#Lnc%nz zH^oLY1^$)kwZ$u^FEDVri-u}82A<+p>ULaO8T$>x9GLl#;r(Dg@Pen2RVPt}IOngm zr7+F;;oOs-N}G(A#4NO_#=(n0TjkWEdw%}YtGt*BKl?XuWQ3lXj)}=5gZ*xjznhq5 z&zYr6mp0K%F<~^(rjIJ>dv4<84X@ZoG`XbN(Vd=Nx+)KrwKW}GE=O7MNN(yOgJ{u5 z@T&RE85xF%wkwq^VIGrj!jJ78;9h9!saNK<)p3RrAp_I#@bC7MZJVwUd`m97P;)Db zklFBuZBaZdpPoj0yRYX#g5juz%!4H}VrTxitnC9tQQ|xpbs`Sw*cTCQSi;=QfTMkO zR|y1p%p8@E0B`TsD<`MaVISG$1}O*0OamSrr1Pqp)e-oxE!Ux~o%O!quSf76z%=w* z+ciyr=7s$+rwN_<){E2Aii3qV0==6>+nu&xbnU}E7bEquDy;~`5q1B73z>2@? z&0vAcXwtK|+-4qF4fzw1&&#aOCspT4!{bFkx(wtSsS@*p0VS7JL=&{Pn%)X;%bhQC zRvhH7ogBVcN@hhGbhx20M^F34Le;7PlB^AYf9Udw!YC zYB6G$s960SW5a!wDH5W{_G7ZM9P~y+`|+ziw2sZGMTs%+hvo#=D>=WN!zNk@Cll~4wIv;@DD{~ z5Mj<<1P%VNrPa!aHbEk#O{+gEa85eh8?_m)7)DjCZ!L*pYJC~ji%U={R7ZtcYuTg-lJz>YGUgNA(8`6>Q2BD}kc z2T^(1t~R}Qp8fSbrL3NasEEpj@0;E8*2(eHdniCZA*D!fX=VrLU@-3sTaEm&k7cN5 zG}$v@U-EZG(Bg@rRa$3VCxKJIPh|h(-ipJlw$0P8%4xpg_+yKSjQtRA+!DfR_J@Z$ z)0jia@~DxRo8$BIPev3md%ohiA^KdF!f<85_%HLg?EX1W68H&p3Pc#x5L0Og+v8r8 zFH}ad0O|=dbolPQgg!gyoX;ABIHt0HMaH6H@`f&SRV)GY<#nuANRyKXMR3ZI~nhQ+c z3{-N!t}Tqyo`|rlW8Ua^3?|-NM900R<8snMV@OW#q#cnJvCDgb%-tWW*W%;koAlZ9 zI1lEvzupg3{9fISV`{B8=I3KS_Z673o8q#fu87}=383`1B8w~BHgqfW!-&XVQ93== zOiExX#6cY>qZY(5d$IuiW}RX3KQ1C5B;1frUIRV>Ig2m-s3E$jxS98_>TZr_ z)n2US+F%6?@z3UpntCRJ1L+uP(Z&K#7WJ0(vB${uyIy*#d_duQbe%hb9)|6 z^-~rY-ekAmzjn8P8zuoPtyGSd%s_vOHbI)RIL*WOt(FMvK1lrf4Fp(F< znp<1dT~s3_rZKrt&H5PgKJp&OUHe|~J*4ep*+W25A<_?tAKOmehqGgr4&xKm*< z@lp9)Ro4$y&rf{JFH4t1@`*X& z1$Ok#-4$H2_l~*uZ14Jp(CT~5j9PH7-#=GW}prUXG_zV@4MaYCs zJfxpM15QgKQKp6DkoIlfkUsZ$=r$yujB}<}x=5tqhUK3|QsoIoGF4K5AtjQFTD21I zwyk@@|FYG;jdzzc1>T*F?{3LWjEjzsRMHa2%3_VL%bMnh3}SGnIAr;(TSvjaEUFs8 z+b72TgZIVnm418f@WqT?QX)7ET`GJqG|e~EXtR|Srs3sS#M1DY6=n-ceqwIK9FiJz z1Y=#uDiHMpIN}(%XR3uOD{1V290Xee7{ks$Z2+7Wv;|rwP!H!b!~GU2+1GhK5pDc_ zab_Fz^_xn`7NJ{3TVxDMT>p~hhNp!_0_||7$;>w~E&o8PGwNHs3logoMGQ4_zHHsL zN%MY@pDKqZU7}Zdba{&D8GlQ#Mw8kO#xmF*ZwGAbQ&~;NJoXPQu*^gG1Ga+c#la9b z`9cRw8#F85Hc;W91WzDIaGpSMO7C9x)zRAOkqzY5%!S(7z2%%TMd%Rq(yr4<1=sQJ z3gtffk;*-#vjtI29-AF)jH%ucRoVEZ@CSJ_+6zO0KarbL+OqbG@U(tni|3P{S+yxN zK`M>J(*8DC9(PrZ`jMVD6?~QW3q2vED5i)9*C@B}c_G75C7@SHp#5NBLkP5=lU0B~ z?J={-**K*`qV_mY3dGSENlwV$<)UOzkmi znPh7y>%q~r>G3f+2l=i=<&5;pI}^VJesk_`19sHy-eZO8O7FO>pV*|{HO~wtrx1$R zXd{d;ILXPky#C2i2Pte)7Bq0QK92SMy=zYXg;BktB>+ie0m8fiZnr-O%3KwgORQ}5iI$3k7z{QxYbuxBR&(06$ zpd{(f%6}WQw5Uq7t+C|j(noFY$A-TCuu7`I1tp@Tx#$C8Nabov>^%pG6B z;#Etf-OE3j|1%5%I+jSlIZnAyuQ4X+ z74Jlj4QU=1$;a#Qt2WYTGhNisLboJ^~M)Br5JdBor zf+#0!*UP8U!S7SfjJR>8MWW7N{Iq_D8`Fuc8|UNu)c3`ueUG4i)|>yH42Rzb`G_rh zd7ZPdUL~iwl5f`d=Z((G`usX2)8X$=jf1i^mSRbS32KnA_y&vO=K#SGZtS*o^*nLx z4-b`>r>xto=xG1VOVU}mvUutiw0?QgZparsM1I>BWx=_>Wh0y|q&J?7vKjnZv&1Wh zqEfu;`(~w9@m&Ff;}D6%jFe3?VcvwgUgmAH>8GIQ_|fq}F3kGChS4yRxAK(PAl%f9 zVpTk9O<=?#NW}J86RIg=^7ZvrR5rhvlxN#|Kh8JUBSvrlY3f^xSa8@)&0@z)n%(Ua zY4Y&^z4CFXWZ&-+>pfM=TI7T+%w4&SktNhvL1?kSxU|PCe>F-KIgV#%P{w*l!?Eb6 z;+Zs)4&o*Fw79QnPK2OO1I)`=3*~O@KJT9ldQvYrmu{do0t5ZC)t_#z{bhm$S@%EE zYhM||rNeW8m63ik5dtnq@=1|yJ3m&`Y#^%CKsP$Eqv2odZ9-S7t8_Oz0x6;`x$qVV zTPO@R)ZDv_8JH1{(Jl-a>fF$U6HJ3LctPA}SUcff$a_L>x%-RmsSKcj7ZzSEkc6a< zE=?enqk1W$dmzW;)8gDcQ1eFI4wRCbZ>KHeHjrU*7U+pHAZ}A-ifcM%hrJIjlhKAanTRXCNT;1V9Wsv!{%2Gg5$!7MU1pe$sOTl18qp42AukU^+ zcT?PB$YATJuB#Ty>0C;$*Zto=>fRno1~OtRY~e%QFp$7(QSUc6c`=%|HX@Ig(WgB< zPH>?PV88k!Stn}e!8LJe<%T1T0H)mBh9fm><7quky%qxuDa~7f@Lzt3m(QC`N8SyT zO9fFKX|!6m&yiMT*l#E1xR2%7KJfxWNF(~9?y%lQCQ-3xvBSH-zo@u`C_+sf+zm&I z(-XAP1I0q|1(|nJIH@viyp+(Zcd$N$tO-oX(?)VcL~#bPO>YACxNot9U^cSwTD@tD zV*z5RbV8{VLVVj*PJ`Yizhj>Fnb8$3aY_vWSUHr{cz;{VF z`1om;(Ui=*p=~s)cU0S_)EV73js~^P`!7;V_}2u$0>HR!3GCGcRfhsf1zv&i3@?gR zD%QlWtk(Fx6+MN-o;d207)O+sn+S6RVY;52qPP*h_b+!!kjBJCy-ZwjY*EX}Y~wxk zxb*4NY1;Rc11c${%JiufR*WcqEP^=wiKIT_*gt8TI8NUG)t-O z8>y=eExr`>68wD_GEixux+JPpMx8h_FUY%8P zS{V!b2$2hfu-JnFao4}K5M)K9BuA6BETyz(JtTf98QYXrkY^Z?%{I99HCUo@Wtb=| z3f)~rJ9Mo1$;-1gyH9GJ{^YB$8};e*09g16Gi^RqPN<|PFi-Iz*rux?Gj4q06}d zK|n#kLwx#o1cYaniJ__CR@%b@0~D0UfKX2N-X78ZMR;ZNhx5S6R2wI6*dQ~jg} zC9#G#FUBvVtto%gQcA&VcoQ0nq1PHSF2R7&;LF0l&=(Op2a{?hkYb4c309;C|MK;7 zD-3!*S#KzZ6kORJj|^OID5+!(nMfpIAmMjgGy=d|*Ydh&tGJwOGV12?@>ApGgg1Lh zL^-_Qy;ClJWa+nt11y!yNktVAfggM!s`fau8RaEhYCxxXh5kw0m{rb>a@%t8+|rc; zuZFne==nU%4wI29CRZ`)am|N3B}K~fBIco%PgLLCSSNzL%BFcI>%B6`VvE&>i%g!8 zzPobfe4{xSsBOabEf3|10FhaTk=cLS$d6I^QR%g@=yuyG9o$NlErLHo>xDJbP|p3> z)+PSnmX&(OP%_`727Nw@$x$4!%Ao}>@Pk@J6GthVcKGP`8QCJPpdiFxH z{<5Bgj+GF@`BVO_k{Xt})<*5@TrElZlUrimiBeX$P-U%KkRj5ootW{Z}4bHNbqCslwz%~(~ z6E?4`M0xbPo{dzFX(LV}wbK5X+(j{h+j`((TN+9Dx^D{`kj4jAMQ`4$nqIRzt^Gy+GtR50*|4hd<k08n3pa^uJNC^4qcixYEgYPCDm&bNMe3qDlz6y%bAAkIES5f;0OUf?Cmz^I?Rr;WhFM}oB}0typPyPd&V8jWSqu+)NV>8q ziJvrjG3(AgZz5i^Tq`AP1PTpY)})?Emc(ffQkgpxJ<7)ix$!!rdtQob?X<$ zPa;2JJT11Otd6yQeJj$xUPq^6ZRHe+@rvx?a(j46xDeOZzuu_O@zu{MY_VDly~YJf z$0oY-BwEKf$SbA#_T03^7wdv96cXkT_9$Fc2$;N+FEbGN)FLK$KHMb|?I}8qWp6U0-u(GH1 zYGPvA5cM~ZCR}6~ZxRoGR;R=sY2`R)WdA};m>o|KO>-(Sbm6U6K5|KEQ`|fg zEHbASt+fAahrge-_rn9%gd@)(KKJnLDQe)I2R7XUVh*H7G2#i$YV zPFITXb$}a{4?#Db0$Aa>?a5nc;_qMCm;F(wdEj?gYyC-h=S7icQGGzj*!ri|9kdHr zn6)@Tkx9+Z_09?bfg1D%mN8Y3~h>6}5gUSR$z8fc!?$C@bxjVg2Df4&`k` zUPj&~i|T>sq>%pEDVO&OO&5~fI6OZCJz}D zSJ|JvR)@r`3L`#?YZWkM({DjuQ(Zvm88xD9rPi?hLY(Mg*A=E|tF?J^&-L_LSpGog zssj_sPLBf7i*`R9utCl2B$5(@GqBYE<}^@ISlz|4{~0Y9D%n9IGZz3OjJM)mc%Fx5 zo!`$ijeR64*oj=;10mIafj-wvT1@BG{5m9@V<5Wh=Z@2Zpq8=8#Ho&Dk$IL1>|tKQ z^b-@C`UC5O(DnH;z+?+{Eo3vSDafG*M^GrR-4G5?QK*h86)2YXllrUZ? z6t_|{)cU}aZlqi8%^V$MHgDGTq(@sv*gSOSdD$0OZs#5?yStsYYvKj`1;yexZJyje zH@_}#z+lM!-W$jd*+Q}IousRl4SqXuH&3CLr${~m?iX4)z)2@H9BiolK>Fm28n0+Y z=lUsf2U_WgH+GjrskB1tM8R~Qt2O(8iQ6K&wK5M|4eLAHS2Rt22J9#_QB5YllU;V8 z>CW+mffjJ1`l)d9v|T>C>P?_s@TDEN{Bca0viYQse*<62ZI<^pTd-ZeZ}*OGnopjo zK>?3_Xle$SOrR??`}vw`Vu<*Oz|EHhmJc!F_kI|MJ0*_9Og-OQKD+Ql%R1rtaycSw z7GK%@FMOQqrPH%LK*yR-BHJ3W*Ezr~n&lwALTPxfiyp1PN}Wv_U2lAi{GRbG6jJZ!ekJz-O7qQ9sbZ+dlLHa~{y zr7s7>?K-eGLkm{i_IE}>88{!%cTz*e@m@E9pKbUzz|HB7=3wv_a0NIh7Vv+aBWzUY zoCIEWPdAAJLR~@`A#(P)c21VC{?4a>+|xJKE3yt;=D{zX$k;((3sZHI(dOjZK(#+c zM1Huw5A19amwqGM{Lyh+g^#!wed`|u8FmEM;$Um`Ggp^-EeQRvbNdfLG+n{WyY!EA zU7^*x1dmi*Ar8C8k8eH};_b{)>{p$h=6^=JKGHNYMcyqp^DHQA{_>pn;qB;o!g*@? zyG(v&{3o|dNwVqz*}B?6U?W0@5UjCT-}w+Fe7DSf(0wrsO9bY9`N*_e>+xU?Q$8xl zx!k;o&bj=+Ba~|>H0Y}y5e5n;XReLgUgdwc`O6 zhA(d8cMuE3aqpyF{e4vHz;ozz*m>A>nD+aYQWGeIUBCb)8A;zgl*@6^#Es@qgEZ0OyD; ztmD|lykEa>IbJ6B{318|WBA2Jb9f+~(VgHMZX+MNB^y9z%5;xG7XygO7u_+!OYYgJ zu=}L4qg8cs;k)54YCM!KXPz8iET+f3EdsX=LS5`VN{p)3VIxi0@&eqO`-bbXP~k+0eZ|+2L(MI&AbN{Z6x>3@OHdticw0TBq#MP(g>x0< ziRla79cnP_u+@C!w}f zE~eyy#IXQ={x5=fEj)n3;UIG|7oIh5CYIh=P}UVe$gYpYHiK@k><({!6M1!5`yjjTZ&XCqedsAYxxXb-# zOzdVXWpw4)nWD_zj^fU8{vRQj1D4B2M+ZN{z>?hr$D-|V$D)LKMif#^h^EyiW7tx1(J6F4gnOxK5vKk++{5cB?;x|qfB#80c)EW%-39dN zRrit6Jj{D~BnqV5u~wq7r6$vXukq+g`GW5r&`CECw)~Z9K)LG9;Ja?j;*;y#lTFRQ zA)9(lB2kfA} zO5N^qa&NJS&3zwBzA(S+?QB7P*o6eFalhjG1$7UGDr7D>$0+b^msNISuwfcf)Ck2L625hafnW=C?JuFV*+!VZy#O| zxkk(;xtE#DhJKTvsGZ9t57rmuj&a`9Zx*fO8rujRFdEz8;Q83+hPM`; zD-z#}Y~5zMqkV{9>d$VLaU{Sm-!rey(0=0S2Waffw_qT?+kCE$(O5BX1#rIb-P7o( z!grcBR9jS}UnQZRGuJqn`X#(k-v2mbuJ7)9r+cwE%Um|F*z9|UdC5G}`FUseisFmY z9oD?f_Zo0>*~6v|qGt7a03&h3Ou{?8wDxEoy4>dc+l*b`J%3;(lW zdZjqZ8=#nw@Jaq>qrPR>o}H=}PpQH1l&A7NGO%#p`Xt;q zLNXyVa&XTbW(LS+@$N~X+{7Y%V{ck(O$YKiqw7b5;63aQl<)UFKO$l@b`f+V77Zaa zo+i;du%pKGVhZ#1#?_i#=FfHAzG6p-P}~Z%M2LXF4I;586#`#(s08rV{K7 zLw(rs@e~sDN8JH}zJl*q1OwxCOdb(mxnDhA&CF%CnC`0`xi9|ncGlJE9@^Y;sLeOe zSaLo{jBQ?4sQq?UvJ9)Y&K^r>Ec91!+&9)I_>KSNziUve;5(QXo|hl@@b@}riD%8r zesCU$E@I4hHoL&i*#PkNqu-9-wgHVb*-CzD^ncyXAMibgdx}7|K+qfUz4!8E|HCfq zRgjWNek#%(rq`&YU-+BRz2p*!nP0Szxh=U5iAC<9V5UHnK&HSjw_o6!^gZuc>zT-X z$x^O4&;)3~Y{+bClk5}a6j6a2+3gmtF)hfvpm3y6=o0{LLlZjmYn?*B=s$V>A!#;#sk7H1PR2U$d!(y;)Zqblz34`hawOKxb-`wsQ&m3yHN8hnGPTJn7Uslij z4E@61;?6GXz!4v>kA> z3}A074=zvI(`t7Y9uIWM{Q+zadJZQHyH@lrd(e;tObigotB&B-l=~>%eu{nF@Mv8g zmg!<0A6Jbv4bRyZC5#B1#m?OKu?p)3EE*Dy;&JSSJ9CpOH7!qi~dD!;l_eUn?0_Bkdx4r_fQFmQDKj#h?K4Nr5 zS8r83;&;UkUm^3yI_$s$5EYEG261m)*)6e6re-JdTBAi2xP#0&Ul=$W} z!+{ATLvcIlwN=pu$f1^m=k?3=OZCgF_^6TnL1b5XOW$ZtP$HXyd_cs$Qw*bq;SC@^ z+TYB>g1H}xK*;3BlEtgPJ(BFnSvBxU|1e8QxBu|e$AWMg9|^>gWGraRGSF}Nk8lSX z4gU-lxq%BhK!=$iN6L`I<%nakBsQAj@5_4ui`2shU4UUHXp!2$BpmfDNAG@9um6LA z^e=<+U&ijgjE??)N1*=85c!vZ$@(mud0{7nqSIJYrN_oeZn?#@U!`68ckw8naK zM&}T>WH#^;?D^XCUhl*;RPz4xcKGPZ!8|wSYu{mWTp{jJMHEQ|v4Mfp9c+OwEpo0%;Ki@)>SV zng62&cTJ7lh>`;l*Jqhr!L3scZBw()q6(*o0+r0J4=qzZyP_V^i0kxBuBk0kZ`-0C zp@{34Os?D?oGnogf5i0{MvmgnskD1hlNH1mE9Pr@2Da;(k;f;p-NUGcsqYfR*myrR z_cSz3_lyz}!v4jT4E`IUVPLB3li+msA3gsEXE41ieY%I;3kOyn@mVWtv~E{(b7vgF zm!qDHW%80?QXH9Ka=h0?^i`MeBDSCt!X%sF0K9{yBYF$}Aew-)J?I&sz-(r4@k)P1 zxBp?a0@{B0Ah-AE4-$ir7wI~W9<4hjOA2GFk9}CL%r#u2$Ty9vUFInl|4Z&(>Rz^S z{g<%wPV!~mI3&2ZRD=4^-aagE!C=%~@<$rM&~8Nna448K#||fq`fc@-$J4Dw$I8S; zkhc@b#W2)kOT|0qJB(ixvaNAcu7WW^?sYfO{p?v#)dk*174!PD{Y!c zTUTK9j?E(<@r{8)O_mgmbRQ8(`zcc=r(L(Kn;=4Qyi%6~bm0J}tT;=^#&e-_8{u5>@_b%_#P>r|@* z8k88s2|Ik=vdeYH%GoCuin($6%A~%4=FL;y=0MBTe**wMz0U3Qv3v916g(o{TRHip zhUVBfwE&|JbuUJo4|PN6ukdw4$lo8dEvyalVWaQex{Q)KhukX7HhaPzf48;>9UwAZ z+GED zvd%v2MaLj^Q=*Nl`yZXz{K5E*CjozYgQRri&(F7=%#K>Y_D7$riSnw+vJiUY{DKtC zQG)iQUtF>4@94*?;(-C4F!HDO*ozfh(U}$~#BF~G>a@j6BOvNk-y1bnS|rk7?xumb zFSB^38f#x*SzrS~qXqjjy=iQ-f_}ZyQ zo~JP=!k9PF4=f08+*s3kCiRR&3aJo*?aK(_B{TS7SZ~^4>Ummcn4)CBD`RH2HXj&t=H;?#{1u1=b;{;-drJo z>3%x&ySdxwZCoRnilRGd2KclmjmW39Zg>L~I;9?2lQo*;sDDmN0D|XeLFR4Hm1lLt&(jg^jeXfpD3d6R`dEjzgEi1 z-PpPP)`O?!@gZx$X_?lJZW|M4d=Dw%v4lX6$j%}$+FR6%kdtUW?b@_jp;C40zEfwO zheR531od+=^rdE`*66*nGmyqZe!Kl-)K?-;t!LI5pcqO#n)|R9Uzi()o`2=#xlZbb z7s0+6N(csX&o$3V% z?9%Ll^IoW?Xx8lRvxLwEcKU;8+|G8GdfB3m*`3wxbX})&4`U*R`EqpxUuW%p|0;ON z{*>>F{hEV!MPzc2t?%XBA0ojD3(_t4G1X|awOn04=-m>p>iX&Pu-KkI%_>N=0Bg!e z-WEn{-C(LnSf~`>+pZwP+yb~`FgWFxPjmsp!EKKDjn|f zZK=Y>jZutaHsFiACt-V|r?tzTK` z>sKy8b|Zq;cdsZ9lw-?@>J)RD$Y}7)(LZS0_0tw2;LkK~KRRVUs$o5S#T?$LyX`#RoNS%Rdx4}dM-p?eK=@ny(A80ej(EDd=K>B^E2{moytSg7 zp`x6=qMWv(i<8C&I>be3k4W-EOkwa4kmZa1aD7XptQUmU*5ZfB9* z6;T9~lckL>ksF%}nnkY`=;I3HLbT-`O?CxLo-*5FQcJy|prnYwUccwmU?HKBesPefWE7v}8y0Yd_67R&~BQuM89TDz6dD{SXbT9yr zmf!vkNbp>|l_}oA6yLwi6c=xZA|HrNS@oYz$hpI(D2T`x) znYZa!Z$-nZ)IeV$+w7Hgf$`o_jTlm3V@fYr816>1Wloce^k+XT{Bb0dj*?yKqAGSM z<9LR{y-73?i;)QO_&VhuTA|u4ArM9*WxG~*%(xt62x-~bD9SFs`lQZWYdt}r|BKWiC{j-g(q3=pq7>z{6Wkp7_*11}kWeo0) z0fU2D5Ic@gD;8yJW5{N3`3AIZ3@SC>M;P2|e8?O6zx7u-65F}1`UeL>oZO*ivzRQoFs*nr{W82L3qJ4!p1m(J~e0{&aKR%1;< zoTNUi&0M7kS>F*!qBf2@Yd`{5*T-FzMdl2Ow7W7|G6=M-vq8~vR&us-mK;SMvl^yR zLDfY2ydogYO(k2pRX>gHS|J#-5=5+8Yp!}}(2PqeDyWkpI+%rRH9U5^4<#^VX!sBv zzT!E1VMSoYWMvs)92KM`CBpdEDYBvKj~_rVdxkJLt#XPellZmPq1@~2j`7j(MZ>W}uzS^DtoYQ8Mqofm1`e=75 z0L4zOAML0SwM`*6nqAYtZ$UTnf@KkP9>lE~hvYib0*s}toP>F8vHc@KDcg>VH}<$) z1FwYDuyhzTiw1e!vSa`=e_&-6){fwUP5vmfwdw##xt^h~028#Dlt?*DA&>jYwVmyv z9Xo1k42o;R>iAc6<|vQJos6tKuyjIsD_wzPJ4OJO@I1k~p>aUWZwQn z)7?eG4xtloPe_-KT2>~ocQpF9in2sh2oQ+KFPAhi3!6)t6>Q$Pj}LrF|Dj8iV_G;$ z2}MXN=F5e5Or0`OCX%1tG4W0=DGF&OLU-qv$7R;pTQ0rd%2`ke{O$^)0u{^@K=_6 zHd%GN1Kw;dEic`p)C2C-z0=J)sG{ih=+#g`sir7yENWA5a@c6UbN(LX-xD8kd(3J0 z)j+)eQVrd;@7+ZnfUckBdC_z`(dZ>7+x}5t^W)+Qb3Z^8W^R@w#Z~;>KhXn;Pw7pp zPUuV9hi#Q9`an=J&2Rgh$JKgd=r z!M1pSP2m8WyEt317~A50Hii9c?%%N$i?R)xpQx6y_ue`Oe=x%RqWZR%;mi4*|AX*5 z$45+>DgMB)lzhih@=~-MdH`7ALt74`%OfuCKeYM!s@p`YL~}X+oHFYu*y& z14Y*5za|tYV2j#~T8?B1iI1Nj*9>qAY6#`tDSq`(V0o`9rc!!afBa~!ZiMV#Xj zPw|7GYr&$UF&txo6c0!%`JY`G7Tg{)Ha49k6BhSrMFIOv#t`;ju9CWprBZlMrQ5`> z@<$qhj#}B&hbnCqA3uB;%$X4<#!Bo_5#_~NMG}hnh_VrTfnbNhDI#Sn0`D;!fxBX~ z_b6wEKQ?yralc?<2S=&EwZwvBLdV6eC_lp9y#A5#9aI31J82eqD!Ijjs0bFxh~Zs> z-Y@dH)-)Kf*OB#1zA)d1NZz(H`Mi8Z7q2x51nkXYIg`)ES0r|=$>is~dH*=`juF#J z6OAQlb7rt(uRsKmftY5(_{|F0MPay_#?~L!PB&coJ{uzeuqaSYa+r8t^I0D2F5c46 zM?4qah=mWHykL6Bf$g*#;;H13a1sz6>gH`;eWU`~hmXKQV(Ae}plpWNI`4brkBrl6 za<5^ZMa%xD{XrKx<-%7_%OigzoxU&k8WKAhaSW8bD%Qn&1M&N!kC_fl@-BCr_LT)n z&|?BnOdbG$xS94S8MKcSVFmpn?MLB~aW-1apXYtakC~^}q+i>`YDN4j(G+|3C*qq| zyIs|ge&!vjuJ>~J{pqVcuN_QG=90_-dVbX~ueaC1v(#jRE$Y=Xd*1XV)W|+v>#76( z&};SqeU9>RwcracnFW5x@A${)Y}VtSFWx@KHA)@54OK*l&-(t0dE_}Ve@=9?;_MlvkA`7F$(lt30nG=()%wW1Z4|Hn!|HqUMZ^JtpL*G z%Scr{rFS=~!1*ZDGmw}k7zrA=Mw{M-GgP*RiCTA6OI4hK83ftv>)Z;6HeL4P$94 z;tL}Pz8%P+a#2wZGdr0DHLU_1Nli+(&-heT_w*}I8mNWg`PK=}hT&f=h^CQYwIhOE z`5rPeW*usM#oeXDTy5#8sddVdwoK@Jx5>hVnQG~hm;3ZBVER7 z#NSw`h&af(ABSRyz@!3jfl(ezsCfl{7v&}4@gwzv#1%ACxG-_`c z*Z9-ond&%DB{OZw4T)))HswSAnwZ7S!rE$JZIQ4xGg#ZOe_OtP8^piutbd!6Uz>(s z+b+MhVc#~vIlajr^nf}P6fZLCSdEPvAjSERfRjDqDi`C77volmoV$}gv~%u7c6#EA z9zYhCLW~<&i1S&9<6nrYB*YmL;#TM5Qs$W#)oFk4MMRv}h1arrlTY+*AL~zM>DxZi zpM0Qio2fsUu5X*BKY3r@Hbs9jN#8b6fAXHbZM^9W>BifB4wrhh2fK0g}H9Um~}1LC7(QrUUr}D>$nEm5Z<(|9iCivPwn$VqkIVi zMg&d4nTd9Il2o+?eAc(J*xRSC#eB5FJ?SjH`uZY9B57IH#jLVJ&~Sbc9#dW8Ht{hU z2l7u+h7V6fNqPI=+Rfcl330uUB*^5KX%N z?awRKIm$_{e+|4BTv<8(B1m$0FS`CU;L1C|`8Cv+Y$Or;r>UY(FF)?bzv=%U3k*M& zoJVtcPljFL{PR>UFZovQz}M6K3YVh<=YK1q-Ze$Hg$ehtM)@G8lF1R#%)lIl($I|Z z@fGN3!q|6GPq)0g8WlEe{b()usn)?~F`Mj%w4Z~vGJ*J;N(YA=&X)BiJLSm_T(vHK zj{2cne)WR27(Q7#S3cI`Ed0&KN&#rXyz!PhZVB+vw`TsdloJKx*U$Rr4yN2Q$4KyYYz;(b03>K+(%H=(v>#?coTg!XzC4THT?m|YpT^7{(A7&8_sF^15nVk zt~dPkz@n$|py}(uskPeif24)7{RDVDKDeg(Z~B!5B<<-t?!#_}XFSOKz)og9SpC;* z>M>0A>cKAM8wg#}x%)1!A@P%+MQuZXW_9@Y6Z}S=|0t16iRT|C@gM(imVaFf?jOto zv%X=X^_G7_;b_9Yp^$&w<_)buRTlKM@N)e8)682s>)Gnl$8E|Emz+zv+3s}7HdSHh z-oTU2{}vJHa62SiA@fmZ&LM!E{mC{&LH*vq!%lV^uR|rLQiT6|M43-Ia}JYkv_tMI z0Bqo*D7!$ty8X9=2ec4oq#dSmh%x>^9{wR>pEmu#?O7ly_oHSr+2M)17umlG3NNxt zO?(wZADRfg_;s*V5hs_-53BE_u-T$OM+?ZeQ;58sk;rSdv|p(d>Hk`lm4ZYMb5UM( zo(t&c=e?8cag3x|vt16QPh5Pt7Htc!nuI;}*IJZ3SRb8r2jNOW*c4EUWJZPU2~%iPHh zL}NWD8Y0a}3pS9gpys{>PY4U9seIukjfKIu=cBlQo@LZA8jwE(OD4J6g5AT?0tn41 zl>M~rDDEts+E>J<-l`(YJS|zH81S1^!5CjV+$$~Q6J>dkIgVfNz%4mO$AZI5V<*UyL z$4k1N&8U+vnn@mc5BoEYmnW8)w2T|z` z`QyL^QK=94;}8!~X$$$|fJtGaq*wm@t3Vx3?q03+fD+O$OjcE*VDesVhk;Mb`e7fX zoOiuxafTjx7F{1A#onuj2b6NI_oc;|d$f;Ee8IizPm8nm(2MRmta?1>_ai=j_sets zI;1WhFYWPl$XR}KekM2l?Irc+IbJ3PntQVWoO_WGF2fZ1?aW4PyJQ`hTU38}(!k-) z(F9U_`>HOWAH1QdM5J#rM3f zW=?j-rHkmpAF5l~_v75*yMvd$E6w@d!64vG#+F>SjyDxH4#Nsc&M8${KiW{T6(AQk zTN`Ef1ZZuP!;>>gm$L5XUg&!B)Yjp$Vkz=_2Ux%x`j*`Ftrx4Oo_M`FclbzY$@hAO zx#?RkPV3D{-(@yj>^>7^H&AT@&)gRfKNl7I1oh)3>+D?l*Khc4I7A*}nkjn&Yc}xB z2F`Barul|5m`2>hPo~^75;OCGjjPw#z{?xx^h#_eD# zdVHq`6ahm|?>JVP`u()(F~CIAH;w@pHl1<|xaR4$W2GG%nK$n!mBF-*%`&s>s3SQU z7cW)s$`;dgND8>@Y{0x*$sW`E$4hbFPwO5pC44{abG(%L{dDf}Qq~jG1IJ6bP8?Bt z>?QW&+=&fqd8ISkz#Y^uW09#LOqKKe zjp5;*ipm@}4+Gp}2C7RlD%DSbx3Q&p!A%}wwo8=BPP<+3HM=Lm`?%%w`%PAveC$Kc zAJt`1(GhSQcDkZMO%@&tibd^;+kh9wfzwj#u8(phH>+&XzVR*e z^>$jefAzt+A*CBFa9wq;bAv^WuT4P*M?4K|fww6dEnBqlogZC8_*$kV6^TBU3MB$M z{*7I;F5|v-&L90{+cR%!3~an!O!H|?`S7Y$_2-v}ofZniScQGIag3LM`7#^De>rf` z2zD8BgK!y)nSwcSg3|}*w3Xg#dd9D0-d`%K(xn=l^R*kvUe7sLTj~7T`BMB!%KaCO zZ?bD2AFM66d%deUyPSOX{=?)Y_Do&Heev_0k|Uz$s}$328K}H>c75$Xb{*7No;Djn zR*WBKKT4Mix}#oapNS4(TR4dap%6j^uJ4%V16X}i;L&{uK2BOjD0Um44W_>MNe>3; zd3C+QAYw&&#c4&z3!*=oUH>Iu&14JK^! zTnDQk4K?0}OPUk2r7~_c$HT#|xecnYx_=A*Uowb+#``cyO=7lW#!^#!2KY6XfiG6~ zZ{hzt29eKLvcV4fkLf5XZSF^=X#eFxt!I8KPo@d5u%|=Ja!8#+IIk#>1L@YMM?mE?1M*WVv6uo(j2K{ zW%V3R13ES_I|1fiv!T+8{h!ZK_VIo&-!A`K*QT;qO8C~M>c069!H;Q}{roV7{X;b5pZ@!R zv@dm7;iwB3S4FC6#b}D4tGIJRSH;%yMLR)*G93GG*bbP8`{ajrL}Z7f{9NVc8`r`A z5Y%wOp3uptKShxiLE#s+|I+t7W?T>~glXcU@MJWVi(88dgSVY;ls@0WPZ5F0L65#Q zn$2R-judTHv^HNF@paIW|g~Wy3L6F4+S0B!~dAjSPKO zdkw`!*H-rcf>N;N=+Buga$`}H(=^Ue<_vz!kmv|jgbD-ahynICEfN8$rEpMUCmoH9Cme^%EAaMrf=~`_J&lHYcr2E`myuYP7OA@@kd}Nz;%u<6TwW0pdF5k%K`Ef z0*-`=*!%f)(mcef2Xh-N@Ja&iem-J@S1*jbLc8!2mEY~$)iDDsxk<@5z#EGe3ft>> zKQCkQSx)8j4Y=*@=AY$MPrrx%an`P4njh{PoR=~F?5kP2sJx`4 ztGr)mdZVSZCBKwWv%p*VdY-Z(E`IVPJJX`SQGVyL#HC_3kJjj^xteNnXHh)3{A!vK2)okD>uiexZ=6NA;dnQJC z@$a_)4#^emt1}Inuc=s5;VlH9O8WUH z@uk7!%SXT2yEkWtiY+;>R6YHC4z4I-yWV7?mqp#6AlrrSPsBPtxO3m@!V-8`=D6q6 zAC2307?euod$kd${wq|#Tbab?kuR@p9SIyTJsPj7Wz9S)2i|mr?xn;$Fh>CL?dKzP zByY|grhP+iU9@wR)QXWCi=c1~18*$ZRj|SW{D>06y!^bAcp>;hAx6(rG#tsNIDH5GDc!AeAkFJH_{L-r_ z{$^vB)1nn!4|X?@u|jDf5(p0MpG6yD##$D*z%oz)moR})WC9P^@y$ir^A~l^6i@y6 zx@ue;#q>siYQ}A@h0FQ48v*`DUKj+e;x9Kii?Z zGI4)8%IssaiT zStR#|S@&Xp)d57B6X<-Ioa9ha{9H%d%EWc*mtt$b==l^u%E~ETRuPY>`MSMW3XE#) zcLtlB(ZSLp67GmHsJHe*;c`Q?xcc{%7v4-IszmM{v9ubyo_3oT=U3w!2EMd+ zK4>xDYmAj@Drq(hS1)r-@P-vk7~+Hqx=SIW4>`6$8$`?<+qAE%2emEM_*h1XlqZNi}$)U~lU`0b=_5|nwdJ%=6 zSb|N*;+xPBpgLZnB=g-wv?~XF7_@$prcbmW7BtC)fp`d9j6pYW6mul*aSuvJrd@!% zgx1bitV_ri)NGBZ6DQh3Oo!d4-dJ`dST~6`5%!2mX`QE?Clcw;!j&}kBdn+16MJK^ z@$BhBDta1&i}Kibj#`tx~4YtJWi3`9>{ioO$$Im@v#QL8;f!^*i|tYc`K& z(rlj+7B2LNl}`|U)N3OrzxBbam-1Pl2{0J&5_qSH@qhkdMIsR?6S4St2LP- z@jYgak&?}7J4cmJMD?Je`g#=QYzLY%^X9ro6FwZxmFbf19U)gp6C=!5?MpL&cs>JH zfrG)54<8hbL98@}Mm-mvfrW1KhIbV3R4*=dbECOH;<6J1+(`5yIYQfYsxd%xAFOqe zBSKq@{*+>kjfv3SPtT^9@I&=zH#)SfW3(bN8__sk;7CmoU{9)kwW3aBiSYxXk ziY%nY2M(jS14nfh(`vy=-7`BZ4$zSm;qD!sf6z`!t8LB zU@eQEc?Yz*D6%eTghkZqF9RMxNIROkSgL@NIc zf7{?csUM^%cleb2S>WnWElT@0fKOo>YsY^o2om6_MB+eTfL*vt-6~jIwk`-X#fq(ep3Cj6!}#p=@K-u0O*B?-EpSYAxK~_-B~I zjZb!^Dmb+l{u!pNP@*w$m#Ko&pJ0ZFWY89!vHq7_L$+Om0BOmWo=f{c{#Fjv9dO~y z9sJ-|4{HPBn=dU`L1L8T_8OFSKUQIpD}fxeh%Q;!nHFVe)#3%`L=($BWKtwU1f?^9 z&q{1D3soNPdTaKsz_~?z;d~8S(%48v=Ne|k0#g(;0hWW;0SCL9eVRr=D)6m!o|?R@ zT2^ho!#{tTK#gZn_?%k^ZC)W7qP*IctML?n$j(fZ=orWIRdHfWGdeVro3Kw?5^6!) zf(X^FH?I(c1^X@F>C?PeP&hdpCIQu@6@xP=+$n^dJP=uWJLI{Y)wQ&Mn;~dDxAeeU zl&UPU-3+675gCpN&0o4EhuDGP?Awul*jJHdWXhvi%LRsC}7}- zMcf+;buDED*KEoG;vu3vk&oDhbt_A>iq0{DejI{Zua`*$zLje_0(WNzM&W+TTP}xj zD;Zq~8?)$klKd)rM%;q#TNmaM>rf z2P2Son9g}=OgL8Sn^ONR4%Bbotn7F?$Mw^YcGjv79Ub-I4j zrRR#fb8yT)tA5LT>}<{OT1k^(s9i+Cl7+CbxdcfiN^7GY_U;lI7uKO)Ts155-yAQI&gk;1fy#u<&1 zGI> zA;A+ji3f;3gMTs$MekF0X4WcPPH~(Jh)!i(5DG=s2!R7Ak19a5a4=Js6P|7agr@d&c~euU%^Op>h4ZgjSPp?4@*3p?AR3W zao~A@+sfzP@L(YAM2Tvkt;e>m$zAum_>ZM3+8?)j>D2udiptUx&NuIxN~t`$Eq>&0 z_}d2mdHq1G1fRcvuv?Li$lrA>4XIv2j-c4oeB-i9qr>}w-Ks1>8Z(hTQC(AV6Yn&n zI^@+|mi`6n;e;0&Qf=|-E=u>fi8mWk?epp`{gNd);WdU-(O%sp>7-Mv!-6Wn;-J2( zNrgo^Mp0O<{M}BoppX9`Gupt3o4}mrHi8m%F=JUf-Vwt;&Cu^G2dYU|l{%*Q1G>b8sMa$7Qm*0KdDjc9c z3nY|YXYX$0#Ds{}ag6IMSW|Y?@MsHzPb{2vWN8Vq@Hk-*&OZs>d45V&{U{XUcEVsJ zuBR|yV_k7b7}O#V2AhxV?OkM%8FrAZo(1V<2O zC}@lIZL*Di3p-4yT3S(zjzvZkBlr}BK)FQIR*5XYGL~go7Z~F%MC}C*@XMmL_+uuQ_TKAtqOP zeVYXj{2K2{XOpptV8IL9mbdWYNxw#Qi++z%2@hA2piqYfc#`ukY zezKEg2*r&kgE25$%RZ@c()U@he!MBgmO{acYR9UKwZ zPS4;gH&flAgKOg};N(TA=d*ZdG$$G~f7}*!WXBo<1HTY_3+YOVQCA^r5e+Opd!eh`^J|k5-=(^@Vy@~jt;BfkO|<9 zGgq;5wp#3iKQ`UcvbD<$U}87ALfs{f=H(ger*6Pk@R+wU(c%r4)Y>CgnWzqQ@jEBt z?oofO(NH$m{eVYE>7)!rsfL@e!=(|}c?L!%+hj==f)N0#3yki~Y+{7L8c)TJn+W*uA^163%CQ$Hva^j)jc;_YhlB!& zCcd$b?@z-Y^EMMkSy-F4sx5N2Xqf4X=QN3rnfP9)NJN1%R4nx6rlYQST-fLX6^X%0 zjitwm1I{^F3bGc~l`IHpaA2Z%2M4bM$Hdm(03ZIaEDpU83_=Mmpz7MjO?fOc`AYZji5%?5-JkqzL}`u9t)G)AXUpgkDqV5< z%^O=iuZ?Wrp76ciHzil1+a7w~ks;fvh{%OIuDpg2{9KO!E=np~cH>S%@5lUPQUXbZ zP2_Rbg;SKhG(PB-f@TApozq+iMU|!j{idLChN$mO-`U-=H8!N#S!MO84!!V_>z0gg z&qxud9y+x#hgw(;K8Db|)p%G_eBlS7Fyf7&OTO4k#!r?aTMm}FUaZhFAg0Y7)+8EF z0P^)6mm2V0Gh1+s>*tBa?s{mknc-;fv2-x6Y<)E`l_Epqr5T#prfTnF@MSjR7w{B) z8aG17*hf$#kWhy^+TC!L$hdInNSF$@9oEbVrg_dcJV)1nc1OaHM`ao@%iG@0w15nGQ!Wk7v{x0R&Ew52%lN9i1Hu` z%wnm;K#C>p5L8GzEVBXD#JCN7+ES42O%tVP6C>ORzQ{=Bu_$oI!w426Psv=ZlEV}7 zaeW@sMW*A%P0P0CdDH6tb#2~i2HuLyFq`d8$;~i3)*J7V9IvaP%aBB|6>exYZ$Prl1vcq3RB>=~|8@d4$-UT$mXK{|1e;(fYem*?S*&wG{%Dt*u?B5#LwYmoH`it;nmtDK- zUxYT-#9elO4a#=eb-4aDP**e5!B0<_38&{}d3fG}M|bzWs#N=L7gp)vzoh$F9$l|0 zC#TFjZoyTj?W4Pubnw5Bsr3n^JN~}d5Pv_Ma(&>}V@esv zz)_OBEpTVeKag%4B; z)FU!KRhcqd_z9Q%fB1J9;d1KZLFr!G|EV~C0_e+|1Y8b7MPBQ=C`&)fnhA0As9^Atxq>(cfu zJZ`_8;m3k|i@44Pde-E38F4wxn;n+RnX?xu^tST(VuD_p1x?QgQRaS1V(pRO$zX$R zD1%Vt%ZXuGc`1a9-qm^I^o?LT4MSRexpmTzC%85lWPGRmj&~X;tmk`@RD?{WIYb#H zgDx26TCssnsMEcIz!F;5+8QfH<93g?t0IeaYxv8X$j_a)38A+{-$2MGy1X|7!nzxn zEGR{cCq#|=bKLP4;ac%M0VdZ5NG;G8rf;|F5vL!#-kQMLJR=Ru#^0-3PITHnWcJg* zfze1)_U7j|xm&WT9&p;J^1eo$95nh-knM)`{+rU-Q9&Ne}2ais(4kO*vNv;|dzS9M+SsOs-jvststl zBM$LEZzqOXrYf^){$SxZ)mn!}x_!5>R&icsbU*uGD+@1h4!-)-+@u~YGbB}t+_Wr( zfr_Ird*#T}JKfS=*H*eS1X)>dwbjaoSB*VNk^XgR#N=V2XkCLb6Md1LEvu95jaW~* zS1tHdXJzp#p5w;FfCXt%n9|9s`ek9j7avDMRhJJ*3xjGOvtw#gzJNrqj^e4)ILPdB=>?4l{v7%thm1 z@*P8$*j|~3+r$Yi2^HJ=#(g9CM=yT3e>a`E8SCa{A!zpU%h>c@kcUlmZ}03?!xB?- z4`)xM>Vz^z*fU0(C!x%B>(G@Qp2H<-t`EU`N5dnCUXkQ93{M$9Jv`W@WMb&hYFXiW z#XAwA_rmDi)tf8C<9dka?nuw8CdEuwvf8ymaJuK)2<1D9ex^2AV89I#jBw6_^sSVe z6w6$0xtX9N11v0*wUe9FYu3P#H)hL5DcXJ!H=N|7WS$f?A1g~n@$~dt37DR>{-sbo zHR7-(kjP7f_foT!ooi7V?{B3;%sbH)q2jK7*C0tQ{fo*|bAn4NyY(o+{>YJm4N|Sz zWE$VjFHzOK*Vfb3rQFuWy4%HSB=SA%CNf=%B!~lByr;kOzDn<1qzJF4C&<+MkGwZD zoL|zH@?LwKpx(F_QSF{IT@fKN?+%%Nbf?;WOje+x<3d#jKN2AQq{@y;1VH-8>JDQ> z9w%}F*`aEVg#{#1Ko2D7y!K&?ttP*S>Kk+35&=aql8O(!^E!Hzj&6%9?29cA7B9;# zHiA@BoFn~e?=&Rc@lWBS+@zf!Hkq(6HMMN>$5L-vO2CV0-#BX7t2;^?3uzKHd?GO%nU6u zII9n_GQo27aQ010zo@uaN zx5QVS3iplAD0bM}@^?vRrPv%RiM0Kt(BthdfoV z`rAG~C5wUi@l3)ea$5${(7pQU0d?HWH$*~Qg|%+axUn!_3*#;ykFFz3?Zf0Y`7I`O zz$$590fgN|c>7L5aYJ?ff~-_c$1hp2nvTJ`bJ#Avk?xNQ@+$j;7UtnF{?JH{Ex`ja z4^T-TIY?%9SETU>UND{tv3AdNIXh2^YV$|PSE7{$RpE}1dsf$P zLABEh?ltPE=KlgTeIE;5ZMXata7*Mrx^txr8P0k2Lc9{rvbv3UkZ3!6+tf|anOy#AtL7Vz zTdkyrV`>ywSC`mSe3eSTaL*-QPjrKE~yvGv>QoZLtnF1kLmk zd=pA7Y@U~U&!h(}M>9SskW9s98l+%@i14mRQl;SKp5Q_qw>Dr;yUoE->p(Qu6~Ttl zW<%w1TN>Q3JY19;#^G(mDP@!8KVT0!KA03$R{09y^g>Q>uHy`~__x`xs^b^>4pt5B zD?=(Dedf(2bMw)obC+L)L67IopIa)?m2p`S%IL~yEE(X(%u2g>B`Orov`=ebKzdD^Ibwmw#Y7(rH=NG(GnDiu0ym zjf`|ZQ>G@)ly$dWwY$D4=5c@-UaQG)@sPmqz*)ux#<|wZ^wN3 z86Y5v>aOF)Qr&?6gGmP>%Uh7Rh2!ceO5w!DvjVqmnE5xbjGU=0Gg*8}k?$xsUDVX~ z3KivT$*H?J6P0Ju)TVIT4gnY&zM?%n^TpsLYp#Ikz65D?G%m(Q?c;)mGv`cLdo zKV-=&G5g?-@V&x7POqODqLGY*PVZI-AiT?9UnMX#3l++H#uXeA;<^Jj%-{>7JE4dk@rjgcmglj468Tm;?4cXT04)Lt!1VBPe znq%l^t}q@OP#Ldt{Lb%-X>ybaV_aIhB>^Qb-I`z}794S#X1s4#bP?JPS^3Fe%)`Q8 z9untYRXp=@AV9mc8(mw~2da%MxTBE?ud!XnnBcW4B6(8fpk@!cdb-i?uZWerU)t;Pu0MY~>cAx~at)G+Z$HtO6;CFyYGFQ!=M{0m2#G zpz@w^i@--Ts?l{;#)(BT?5HmoIsSu;9<7n;eKIx?gYG{grXZsC$!aBILhA{ zX|Tt%ASmUvSKMIe*nq6YHMu+CehM27Iuk)ZIR+>|P6W%{*(Jvg;Q=j8!^i#sdOBOy zjh4YkLHR-TjP3ZTpt~fyEeyVBG+RO-W$j`77RCX(BE6Z1eu-vC6GT{cosyrQtKYeT zwFGv;Jo>A78}^10$HCtsxIf<@p(0*i%t5HS2$#o{@P~U8LTJDh$<1F-iIblvRLT|} z)Y@-58OwsBJnmB zMG+nM5AilagOJlvQ2J?xHti8Z6#9y>3poV~W}FjVPd!2nqex=+8xH<9`SLvq`EAWJ zzDMD|t@*vO{=M?P{{4o1pJ|ZK-BbAYX{5Ph4m;tsdeth)MZ#DG!Qs_gq=?tSz7K2lrNg5zkjGQ0KKiW=G{)( z#iymE0ovsUMkPsc8I+3?3=;+!tBlR7)d?p1A2v(35<>d;v?_+%1v zR#u_ce;I(#r6E`~qE?>&I5-$?9OjKAx>mXssDk~DhM&QUZe5j~IvsYAU}=<##mefWO(rua0|KL!)nFSC z;o`ukFx|^YRP=32$THE=ACf#7as#><&$a&~FFl&i6MUt<(BoKs495(vag9=_rS-qa zs;mF13diMNR7el6f}S=33-JF*|IksphjAv3WAuoC*Zyc;;?4u-< z*{VD~4we=PX|aZcw?g|E>u?6uoI$Rp6TH_kgf%2)8HSu;d{!7jBZ}B&`?jvkY@vDv ztXI`R&95P43qid71)s$%i>lvc{z>Rlp?yK54W5Y@BZl%@M$|IQdi_gQ4TtnZ!Db>E zZxd+c-4sI2ntB1fI}b^k23YEY6_x-Z<2wB(A7NZPhQ23}up80=j4E|PbwVf)!hQ~X zvY-8au!_9^_JKN_qYAgi3;@AY^u%YCCw}TP=}?zlU&OFM#M6TM8ee7b8O>BGE_|zh z#*{N=WhQ!MhGP=1g&5kVVy+hWXW5ZbA{^qyVYQ}}^u-UKffzzza zjUX#fd0m$!=Mk?Gsp{74l5z5fj>!$O*v_R&M9D5YO2RIi-Y z|Muc8mF!UX7eGgP(=xAf?Kox9r*<`7d?enhxjXihspS`+W?dLH*IF?^)-vX9G0+M7 z7~o3DHnO)cN0{?DAi0escFv!8z6q3XZ_Ts<>Q>|L_XB=`hW?M|TC6&b9|c}WeTvSn z9!`?U_^wVO17!ca|J%VVHq~D8P=rSicNbrz#$rv1Ip@-myy)%y4{h@l=Q>yG+jitd zcjU`|owDF%J`d=uRF((FP|j?WTlN?)p7fA-SdH!x8xyliFF9#lObv+l)n6Y|^(!ZR z@-`@j5)UXRj0K$Pu#rySi1gUG6rX%#+|Ji^bQ_e&;}$a=0bM#r8h(V=$C60zm@Y`$ z$DN-?F~82(@_olcs(5YNxg@${vAFc2iZljrzv!V!`nsp2LE7FG>YF`$3;d*=JL!Mg z+^rH)LFe3c#6!FklP`s6_l{$kk1$W{r{&5drIdu;Czz*N9NOP(1pG)O)iIpxBv_^Q zAm*CJi`Y+FmDS3kDxLD~=VPc8*q9(EyuTcke)=;VujHzh7T=l8o7B4Jz#94a9nA4t z@7n}?#anwbQo{>OSD$1CrJAVFi}jlLk`ML>RoW;TN30%AH>AK5JE>9-y{sN*MZ4bb z*gK12jQ^$R*xdfqEub7d+3~L`M(h7lFgoL9JKvZcMaEfatL*yM3D+X0cm8Z5v29Yz zj*Ws=;5G3oDj|R+nw_w5eEd=GqC*!V(kBv1uPO#U3+#f{2=={xQ z97z9Xn=zV$q|6TU?!{fjuHML4dYC>)iR3%s>vCCgL!OVh2EE0>!y&@Ktzx1yIQ|5_ zd#(R(Zl*g1R=s0tIpk3KHOMyQGs-X0~A{NqqMh$)`s zU#eaG@z0d>fAs<;Oo%+XunXFaUL;>MvytvDD5997WpNlkC$M+hL2|H^oaBE|61g3L zY@mo~6B0>h-H+?i+-vLQ{-xcY48CmpPD-J>Osi^at3v@xVuKo@ZDva;OS0&eU7uy> zrjB=^L73KW_^rVoxeuxj(I*6z-IH$4tB}X|o4aA%oU{-Fy!dW!H}opx3Fz~Y{vses zH5l5BSXkYq^kuhvj5-cEIKHL$yZQUq56jV&QJ=;pInVERr8^k zyOI63s<_$)_%YxqCJ=O;M%}2V$EWC4nzdr9abfR{aSk1K!PBZ>J;?%tzIuCfeZ4)& zyxOCs%A=xpyCR0lYcRQO%=!674&5#q=RPXm`qk*HIt#c zn%pnVMI*c17GU$RMTu#A&Qb3XY2{qiUf^Q+Z36K0?NMHPo6QcpFI!A>dN1iac^3^b zBfKh4qXE~il-iK72SsvUg-S8YUG<70F-k()ZlH0kc|YGEX|ax9^=R{tGDE67s8b}? zdLI4il|Fp8xLz0Z-D=*v`9jkX7=HuItQyJL3s@}J;oODIL%NBfM0O$t0f2ut)AZ}x zS$EW%QA6E9z^JKXb(ee1C!(Z`A+Tc1-oqB^aA~r zwIotgMxaVFU8m3GiG8BP`=qHnIPX6XMK9pRWv815k4Tb_moQ73%7ru9)$&(8NEhjI z(X)^G=bL(8Uo|gWa9WXfTGLD50bhmEMp}TEYkl)xc_x@wD{zOlTF2OQLn|1!_TD-o=bJS zis#XJuX$Tj`+Ho7wDlnwoz|rxtJ)`80-x?&OwBiWo{@i3Cu3zMef4zpG%YL!tZ>{1 zMVw$WD8itR><4Ve|Hpu(okY1rx^X(Z+8(&!_n#iVm|NCH#wUK814|e&FUfQ3|E0;+(eh)9vSsCNqb4r}LolfsWKq0=#ev|EorowIz8}LjR5z9Rv3sqiKAyqNhO$dO{TFP5xEy4Ql zfk3arAh&Imoq<_9OLV$evTVQE@@LE#<`wR`-~H?z-QsU9Y4FhhaA@wawX~5a7f+u^ zgF8R6AF-9u`J<5U_E2o^CIZJ|@)eq_%7?s#6oyz5-r!d;z^`?_14!@FG<+$(86S#Q z#+`i0faia6`S-xS#STR)C85oyJ=L$pq19kc*e$-U&$xdY<-APm*P&R%TjeP6{y!Y{ zOcVV+e`_AMwRDy!mrfT+oRatrBn>9g;Tw-uym|K&68*Bixx9zh{sxi;&2zSvZW86P z=@aka8#*gl0d<=eUhb(73wLAei|2Mm#JQES_35F$<{wMZQL!mFMw3&@pr&FsHK9Eg z44vNtEdJNg(ti4}rLnr4WZWaaqUQ4BkzeE^JEN7H^*Wnm+2mionx`>5AzAdB>@4VOhr&`kb%U zJ9Psmi)a+F)&(k?qko8`El^n;)yO;!*XQ(D=hhAEDvFiE{zI}*pVNE&qi*16QLF-1 zuRvveR3q#750NXQy_v^p`kY?tHoAfEqF8yXc!A14Bz@MGbOUFKVimC-1uEO4y;;Zg z`ka4+TUzHVS&5kMX*P@sYuEyz6nhvbhUfFjnhKxJ#RAnUkVANp#2L^tpcksj-kx`91K z2stcEfy&aTL+0^2eds?V6|g1+DjTB?S;wXNQ1A6B-N5l8#2+EObOQ&A5b{|00+rR# z)y(5eeW=&^KO{E}vW-lKNZ9IQmX1hD{i=`OrI)RaPGnB$Ak=sG)odt0kLG>g?afgNt$dSs2GqRc&j{4 z+9Z`~DoJE2MQqneEK#=a{j$)q5UOPP1tw-akfYgXZZ-aXzJ$=;c1vo?;H$&A{(hf; z!?}SnVC7+_-5eKiE#3@OqSfCLfd12<0B4G59x0hcrHA#wcDGwPIpn!w`)n|&N~^Qr zb=hUNzQeDFegm<-gKpoDDV)i~J|Pes3ww1+QAT`Bs5Cw*!|UT5Fo>2FU_C(_XPix( z;2^S2K+I5tY^69PA5j;Zc?#p>6oWh_gyZ#aHW-01AvDnjmxw8_9i#I>tLj?{LbsB| z5)p}FajE@G{X)unf>UuiQwbA>#Fhi#O1do044?V~lH9B_cM~WS8!)J;8c^J*;;Zf* z=pF$|0Y&$slgi7%>+=ODa+a@;)g@96Po_f5`wWv~oAUg_Vw((9%v3Zid7(m3V|$I% zS1%oZ!ynMV+tE1n)o=Kv0U-6@6s4 z!Nb&;m%rhUXyCo}G&SZo{L(-fEZM1S2LPABODqaJ1tc31+~R1y#`Xig0=}UQ%jabU zXO@0#bv*x`E%T5X5fHZ8(z!Rc;D_F6_VJxlR6?_7|G&`z{XR#}(*a_K+j9vThL&7n z$%qt0e5!?#>57+yDnJF;ddE@}C|n-L5WC&|G2pP+sJU)g59`~>JyEZFx}}}|Eg2LH zxvpT_Hbq~ZD^`uM>F=b;lc4w^t5Un1%f0&twmkR+le!2t(ch9pC7 z5$_XZaYz&~j;IetIACGsL^m8{xm!@1!w@HjJH?>;U}BIv1Tq{AN;LtHqACixr($TN z)X4Pb&IobVlRD#Vk*b0Vg!+B^DCkzGa#pFaF0*j`IBg?R;zlgGa5it8A0$d!k1xuw2-}uw$|?7MNMf)xQklk4Fx10VJC!873H` zhS9@W<7ic}W|%sZ1`3AZP~j!k;Hy_5>R?^)U9cWl6Kn#005$~cfGxoKU~RA&Sc4EW zK~%%_5)ROPs>u*u;!Fgg0}JefVeqhnBV;{cT2Q;#$nORWU}Vtpx|r!P_FS>$Br#{* z4GDPz$^|9hX(7iSF}=1ArYWBXoP8noVT-)F<#jF7(7`>;>Gj?I<-KLfWfZ0xqlI4o zO9bGTmFmkUwudLhI7%3;iSmTHZ;E*=)2i$8y%x}Y1qO&%5?%y|o2SDGYP#lJ|B}n3Csxjzqp?0YCNZM4$e$&Hfy={)vDZXbO|<4K~+MQBTe+-8P9%Ge^%nMxKLN=)v9~&-;MuL5$w~X zJ4;#Y2W~runn=PktjDiZ{ign;gwb0QTKflS4A#FJ|D_^G_m;}r4~RR*n0Uc6Y{uED zR?>b`e^%ldJW^b!rm1mlK5+-K$XIiuG$o`~N)Vm?+x#Yu1Bv z-$!{F3;9Ov)A|!_&AUO_$j!{1guS{#TVk!j0yD{$X&3?!f|4mD(aXN7FZOVR2v7t zu@2^taqOx&WDd(@PD-%+>j0w@5IBNGHxN=bkUpm`CWz%5=z0PfniP$3q79*KJ_CEu zZ41*Cs2?5?C;?eG4#+r00SX2 zfhWYe4ZeB;#9Vb4OVb2S*x=mNR~3XjQfc^+by{EmT_?mg5qirY9aumkxOfBVdHS;a zfRsE1y}}~xh!QxZza*171ji&{p4*f!-^nyS9{FpKr|XvrRbIx0S#a)N)=>6@YsLoP^Lhb>kpA`&lw|QCWarUD zYJKY{w#r=9Or_x1j9RqBGUsLS`mtXb6n#uy2K;&KiGaj!Fa_W*PZ&3rHMI75&tk{Q z0$nL4>JJ*&%{P9mzH-mnsNLAGfK@9@1obHTHuSo^3jA9fbl<11sTeTd=HTr4 zR3f1gRKNK3t|%q$A+{bp*@*CQnO#+^-QHt2JH*9&J^}TP2e#U55L!6-`4+%PxG&7j zzL~VPVSH*5dX_5WCIaJtNx%eP3NRj+3`_*3 zB9o8_$P{GJ7neLi=nW`8^cM8VX^UN_!LMA?a`M=!zNzzG>bsQh%`+^?cJo}xJ23{p8AV9bkb;wv0AP8TPNv&4aMXK{CNH*tmd3Vgls$y^g}+IdjOeeRAb6(EkJ`qPp&&x^ldPN#wx2+XIhpK<2oCo~Kkei&*?t_eTmh zCEqU~U99i7KEc0t`+c744AK;mt?PS_62Taeg8n9@Td`klFmIK35MRA8u2ac@@<}$h zo+y+tQV0ag|~^$B@!*5zmnuiyJ-H6t``;d^=Uqm~~}>^*sq zH#p;HQi#zUa{*BkkoU&EO`tGP0Vowz4uawT<$21C5QOAD{l{@`JhH?R0y_p5h8_Mn z+AXQ|tIvCtocdL$7*Vxfg4vrYH!PSd?@#q5P+4vP82@P@$cemAkw1u zY|2#EjwJ~_h(1KXvUVBlCTuASA1?_uHX_Y?xDdP^aF0{P7qoVZh7IH(x^eTv*PYq4#gquKmlN;Gcz{eANGq?pJ^5%I{57x~l` z*@<#BYDiYZJ;k}orq#5UQrW+_?Hp{v3jbj>exXX{H}wyccwQqvnN_?bYR?N(kNU}97Gx7ms1ZD-Fz z>4uYx-}L{_nslfz9#mGuh6D<4+E{Z^o;;oG{Z0L6D4}sse912_6DkP3DHhLX+e|8n zNnTaz@ZwmIkKM`C@EznW`%9g<~*nW+^iE<2`$)2x8 z_RiP$%iJ6|B4l0h)2HSJC1XE}?2mO-P9OWt^&Vv3fO0|1Rcb&ry$2<3QNAv)W8H(^1BiNS5q_Fe2nleUK5;wv zDn_d3TuxOcPAFkWBlOtjUhIijYYluIIjK}j9A4kWz&fJsNaZ+VNHaoRVVRG_;loOw zwWaKq!@z)vB;0AhnA@^nGd`%LE(I4HFf9T3Ny?>x-hhf#U*JX(F|z@6$+-6ce+>J3+;VNZl#v1Ru(OZ-@E#J4Cf+@VmFl%0`lTGrvf&J6l9AvZfDM%@y#?Ghxm?p zGf?d8Js^MZ;LZ~@sdKmV@3YY}(B8c&d*>?MebcCjwlgNVj~KsYUcAUUe@haQJ8b?& zHUGYrQ@uv?)$_GYTif@vF5i#ogFhO&0@6FBN9=)L;lPMh(4Zd-xjMtT3x$ZCswQN+ zJKQfZV(t0B( zuW_iaIaHshi;mSPtZ72!a~qbf1Vp$i9#?z#Yihzw;q9Zaf>hj zO!Fw~EmE^SJ+JqiGUL$a*FKc$XGJKV>)nYuS4sZNEqBd!Pl^SQIM8F8o!!j-T*72l zHtPMoD1qv<#WDfBLddqhuSYRn9|iRnnD-XcDOd}*?wY?~PXZnCJ;ed#kZO_T%6ndq z`5`&@kzI+|y*1zT?Q9l%@C9mzc|YE4hwnDL%J$!F^3$8TOX0b@!i@uqH6|b0d}=HBjl!5$BB z1j9ztQ)IVP1DS)DqjD|1icE`6IiM(b8&_4!S0Yo1 zUu9L)0OFbdY)N^5kA`r(O~hQv&cTyrv2OH}W8rRxhQ|J_51!shdyg9MsCCg^vxX{^ zT%o%LInrPf!5~#sQ6ji+Y)xZ4Y0^L1dPSq(*Np|7T4K|{@>G=QnJH4R=DF8+Pg&>) z9HO{QPg?U{OFa3RU@Z8R0}s#$gF5w`apOQwAhfWjzQU8VG&@58_*U>DBoZCgrL;^4 z+e!}GiVAZiT(smwg=y>_GozKtR(p3V`*i)zF#!ru4szyOa3?ImJl4>^ba7VD+(=%( z+s#l(FQl&EXjwqx{mWqOQ?+Vk&Q^%_@a|Y zS++P3@hH+aB^&W=H*?B=&_y}+Fhkdh+IhJ!2S63*v|Kc-MipaO0kBlMytl&@TUNz6 zzIK?3`8?6@uQ+e)t6dVM0PrEH63z5-Mv(LdYi~HUV zKqj-2L(|jI;vyqr&B2||ftJpQW^1u#YZ$DkR~Cn>Tk%bl|FNv-n#cyzAF*$IA>-h- zgnHqCe1&A3n^{zJEitXbv>BmmRnD*Mv;T1OT9xr}m9&|5uNm0es-N6$-I79}hEJnkKJPN-ZoNKW^D%Jf{t4;H!19ZPI#MS5S7R}rH{11?pDQ|8 ziuyY!O@`hPls}e{ubH9l$d=cg-z~FuziQGRBpvl)-1sjI#_4zE_8`0Ef$)K^?`i+^ z6EDjxW5Z{+3B5x73Nx?EG4lp4cB}w@1Tcr#Gty+71i$LJ zi=!^y_>fJruoX9Z+F%YnVc!k$BQU*yNf{G+rmO>YDw<;C0=mpOJrJ~rn9ayryNU8^ zRoB?c^I=nmAqqm>vMMv_{!WH0GHzkSy$a|>p;rG7&nTEPOXO; zo^Pu7uC-IT^C#2>TQO|LE_bO^oEvq2BFi7_!zGWCN+VOLQ>4ib?TpV%plRZEL~>?s z3|)5(rHX$Ef8)R{U&9x^wrs)YKOAIdjX;im!zFU9p=Qam4>_)W3(@CZ8@aswZaMeh10m|* ztZ3CtDvwIZdH3Xy*wRK~Zh2Lp+ga}eY#G|=u`yC7E{N=ghKy@f)491XyJ>;!U(*AH z=0&HcHu>&uZ<;2~P6@{|It@f`qC#fh$6p`5RJD9TPP)lw<~kIGXWJc(+^bWI)c zJp(Rp8@t0slQ*3#_CVs{;9V!y((?ABrbyY)LdT21E8PoY)z|aqth0ej*=*9Qg(6I1 z4ZeL?PZ~ME{^r&W*%tHoZ2>zUL(UStLcnQOG_~6!VXUe(y+n44B z1_ztd{S+0?zdm85u_Eh3#O@2BsE*zkeZsTMyn!}@$T-@>Ea%<^?3AR|&C4|JVPs}P zRGUHct#930K$P2UNXu3#U^~omu0eceau>rsi3B~+laWy^xYas`pXz6I_t}sYgIqYQ z1s`Ile!8BbP&$Qfr%Nc2df4nfMrPBMGXTdsDns1Ih#c8B?O~Z*8OK?GqSe}e+R9Lh<*>1;=#bE-$MaKD}jLWirGc={g9>!YxWB5ahM$c!1%h6=< z=^vHYpFJlx!ChlCtN#+Fq5mK%*uLtr-_Y}v+k-C==_x5H5i4gYfIyzXxwzBb?jq)86m=hb@`C zkFEEsPn+4hy+L!^buj`}^Zc8kyC$;@uR7$MXf90V7?3GlI`)`U*t!s?B)#>B-cS&mM8#{Xhu7n!$j)BBNwEjs&6b!0qi^$3sr&60P|9x^A`YhmJSb-wV} zGKt&(-hG8~nk~@HU~+L&D(la^>n8_Vo)N~Wz6m@YJes~y&GRgH@A`;qW2no+kxvSy zL!lQh?9c3d75S0`Cr_}fIHk?WGr#+A_ieAK!-ASva}Q#z;8wCC#kDHj-DHZ)ekU1* z^|^E23|?6gyeG!VM5N`HHdzj$e)jc_?Q=N?*~U~H9X8()-)ywdmlhCfS;Id(8ADGq zVb5M^z;i}4eLEkLn+e9G#UbBH#c&#%bfid{%D=Va*)XYZRR|CZW*bajqcis1>_A7C zb>C~Hf#z#lWEa>be@V9KoSikEG5!IamUsBMc#Xq2uFO`L$FB$HT+32ryyl>3Rw=h6 zVC5&hl4$X{a$odkdZ+Vu8u|A;oMKap2?z^!rkg%y9ehI=$*&LO3gBBczM^DapERa` zq5c$s1((3%g=!Qa^o3hZtgGX$h9s+H_yV(kmombzMJYH zt?9Nh>BV@p^X8$`qj#fBdWxkHX~SpBwT;M*vuML!gh+h|B%6ElQQ~P?cnd2(vi} z*@*EI5B5MmvSI?$JH<~f%YEM*)f<5bIh=hh%eU$qAQ6i>e}A@^nNrOQsQ$$OZx`S`trWF8~0sA5cl+_F@}b^bhu zH5Uu64K_^&J^@Kd$-43_A<0f5FCZ>CJsr3KCq~F@H11{SP7S2DCv}YN;dws#_GjW zit!MvRp8_qnYYnaHk0RNLI$k7CePKr{cPntd7(CBw}QR;4jWzE+iQ6@$>^=PsyhxU z$Tlx3whvZNZeD(I`_d0<30v#Sk3t-W&W>1LfWI}l&8lEcy?MdQngbrjwn@FotPL^_4Ea}4)rl3pxIW&Tg$tj(NXvlWtOJ5sS&>e)F zTC3KRiH4FboRPao9V)iqTu-SccdnDUUHx4Lbcd;@;?jGMTlnbLAKj&5+AHg?m&Gi( zQ<>9GbkumTn=?&xVm-)?7{HxW9^5m`vh6w^k~3^|Z6Y2*GuP|dUwA0FhKVqT8H)#L zKC-?pDR-9dnUHI&;(Sa!{r0=2`LZ1q(CZg+m!>@=>^&~)b~{c6jd)xb>@tyKRb04G zPrEwrD#x_C0D>=U*Pmfpz^Z6&{ zp*)-25*hBY2MeC1RtzekfQk#oA3{#$UJJSNlywApsLpWGw2|%JP-3QOSKGa<#1`Ae zz00q3J+|FuS5Aoo&_=&|ONj;0uD>hgOEuRyvOwiaKljFG!P}Pt(I&Yoti+0F_u5rb z;uLG6+~sO!7Hikum1t%wZxh<(^kuM&o|sqNHEpIY@BKAB>?OAzvmK*mDz{$69o=S1 zbWgyJWit)BmtyBG=pr$MW{LZVUnMkliT>!;uj%n6e@$_VSfV^~1JMFIQg<0Z48YEb zUDcxttr2eR4M#Gq!RW<+BNgy#&P9zQaqt`HqQj9qI0(3Cd?XDHMlSjsDHC3+E&`4u z32$JFZbv{oJF!i5R}4Q*DCVNQz^djM>YD3?im)xKRA`T zBlMi-b8euc>JKRO2eP#r3Tf0iYHPO@GGjh)ukkBn#N^nl$th&(exP5wrI4G>QL#k`0jWK0m@8|6s zgIwQE&%g3bbA4krZ{&NPIw)-ZVf_V;Pw&?l>uI(N%+_QY*|&2Pf9f_yZRZF4v}}ys zE}-~%*FT)_fM$eypI=!$c7%S1Qdtu)JhFd9SsO9Dw}0-GH71yH?SX%UWxnxGL;q;Y z0^$(sK5xqdw@#CN>P#|+PT76Y7K+qPfqj+0Gpp^%?p%Qv3)@2AefB_r>QL-H{plmvQ29RVX)3rt^(Wvsiokf|aopA1yXWsee%p1CmXUUt zKbMO)<9-#hfO^F6vvEb2v9?X%`d-RkiAhv9h-Bcznh&_upVyTKc2RM|3lca#4Wonn+lS6Qyk zBf70;U%o~PJS$G)Rp@#tt_HtW)#WlQuo6DoWiAeYGs#yrJ-xvg`QTaQq}ryy0bM{8 z&oj=P2+?>Z@|-BwVeZI|tJ>WXdUP$h!jFdeQlcUYBQq-Q!B{ydK*sOaWNKHVwdU5hMAw9_?`5+)ils@5pdVfT)@1MQY3Y?O%%A3hC?9h{1U*ji z^IjPcw6wT)Yh$3G$)3O8>19ZJX~xskA-S=F&%FgNie-&soz)9g2IefIvpAq5as#q} z;VRaAZ^z`&+*8`kLY7Z&IHYd9Rgj|(mRx(B&RqP4y>#j^^O`%)hep2fb22czx12YU?fcejglhb(%OkUHkRJ(y%VZo>pU}O{e@v`Q#$j3zV6_J{P(Gn!$RGUSDFIYjqi9$Kl<)$ zYE^8{^yHGWPDon0b>-|Wm)16X?h9$Tw?QnXK&ZW&R*MCBw7rScbZ&@xIKvQ|8eAkJ z$WI+m&b#7l6h0O%|3IyJ8sb$Pn(OEs{p#qNv{&z4)!c@V@O8pIwtYXkeZSWft7how z2~tZ=U*|L`Hz$uxY`=_x92MQYsEY0x&vPNF8^kxoSBsIFa<5%WO`-yVH(E=#Gx zw{9}J`vZgVxChWI;2fc9_VwB|mGyGJy{qYZBQU2F$k-#FvAlN%+LSh#;_Yd+kHqs? zB;V09^GVc7)Qamqb8*Oor`cuZ-X6qzti(z}GI2|AP6vYAUT?bUFKX4zQSe_Kf?5&I z@A0Lnw&O3Y0B%Fx;OOE17G+Dgwa1sP`VFtS0+4_t;1c1`e}j5PxVBf2rrM1cSOJJb zB60d~=)XbP6QuSE(p3lWjw=93NCs{M4*h!y*@yqUJAbYrfP&(h@M9R1jIM+70?c$F z=&n%O=O4&@)A|?gYShlbMtK9X9o!ktF)n-HY*Z$O;HC@?LyD7e?5KdSm>qW z)dW>#LW8Zz~K8K z3_O!>fCL5KF$OE^hNf6SuWYS;{qz!jM_kK1SB>-Mq^p+8PL^v+8?lLLyRpwV!UtYz9C&RH95#Z!9ZmIuE>ICD+Vc(+3A&Nb0o^t8%@RRQ{7pQ_;6r z20zk@zlTmznG<9TRoYczuRMEfWoos`)0Rq7KtYcqyx$vjudD^4w zlkpD|k0k_6D*)vR4()FO7o5JDGU$)lJrS~bU+T-7{ZNOknzy*tSBZYSMEav~$y!K7 zR>ZQP`X^62V^;Q0E*hVtUUg)&Tp{CWX<|%B8Doln>XBh+)6T{(RMKC{&^hz@aZIC; zu_4W)6bf?ET>O}=AI{a3t0}xfk0Q5Q&UZ`RqUPN>SBL5*jCFv zHqb|SiYYdHWD2aSU86FwnUGp~-;`bB#iQFR3_bE?F~Ksrw#x_Sd+9g%rT|}{E4%Ay z*4&8l7#0~%h&Q}Kyi+bH9yco9sUBS!rkZT+r+ghcajf1KnD-%d z>%?HHRoXBk>vI=cu_*$<`AOy)&^B*IfBoEG?IN^u$^`FKIMB_hcM=7mYv?{Yr}M;d zYJE&7hSlq(fA+`k*oyVoQz|OL%yYtfAI>eW7_Z-Wdf6SULY}J3zG8nZt9)k;Ai; zMG}5C-|wpj&tg^}_nb#v5#c54F8lKhAgFuY@+E0=A#JwNEL`K7R`9Fsx-K)fbHnz% zwWpRN4$Xb?hq0Qz$}_tkHxfPWeO#w2j;b$FC>9lOcqOV`8sl~!Z1>=aIt3Nq_3xQ{ zxjYU?IRFEt?-9GiXZ&bL0i*khZ)Ql0w)Q=} ztGx)lDp!jZ@4YntDmW`I$6AiE3|Y5`v5(FAJum&Z79_y`&fSYO{BNEQ*QLEWp!&gB zQ)b8cvC?oTmkfr46R(g-?qYY>&_6)|d|8>t(TOAT{X$rZusp2D_aD5D-kolxu9;hJ z4-Nuzy*xsyD;^aK@m9PxgXIKV2#5&}3lK$zp9rQJcd>ZfWwznEE!Y)46c&=g z=%mH3)}hRwN%jUC^%N>QSHP1eD^OFowk2It=IWMbHexz$@TuW}x2#N&u5oZ*y_&S| zB>nR%e)pZjG<{z-g~;!+@&u)CTA^Dr70K!J@d^=cdY`=rL&n=uWU`Ndu#UH9-PK; zWrt~}70cEw&{c^`M~6CogUs0|rL^C-r%p_tDngR!RzRuAU5sy#Ko=v{YXqzSF zPe*bNUwlZJsIC0|evMeDTW-}zs@V4grInu^to@KP-%b0=rN6P+szj*!){9++huu;S z>m*a6Q@hr?w9rm?p2==cq0yTge#1nZDbLI1u8n45;q4zyPtzpc{3zCxI&4+YOo;aE zrAzT#vpA_FY*L#9C+HYtB+?rhWhWm>0emWL;*OzB{zXA&!7r_6_1h>u zM!N~Vag2~`=rFk8Ajxof5PFa4k{fj?k*|3hqW>D zr-!}`H^$mJPwNQyuoHAS*{ALa7X{}J;@(5NSIWD&6lA91V|9he z=ZzrE*K8rWFLCD>SWzA+-veaYYtL12Uonl&Q4~6F0GfY&YBX@h_hrM&xxUf^gkz+& zY4xVO=w!3&Ywm>(%+99JgRi>h=^r0q&n$ip+_*6DSx&abQ|6HPH0#hzQXb8+b3*Y> zBf!Rz3J|$bE5R6?P=DCq=Z6-&_MZOeOP}n!CA}*Zl`E6yY-}7_3{uT?5n^R!Vxd>& zFkeJev5a1V!*c|;gW5|1#Cb65RC0FTLCwObH*P6uxn`%5yZRZ2P?6iojQC9@YQS}{ zDea9LBe%|QEZhtL>>_x%%Dokv|)8$ScEwp2Qawc2h1m$DU3 S-h)T-ApQX2IS$Enj{gPhs%BUK diff --git a/binderhub/static/fonts/clearsans/WOFF/ClearSans-Italic.woff b/binderhub/static/fonts/clearsans/WOFF/ClearSans-Italic.woff deleted file mode 100644 index 56573d21d757c5809e61dab71cfe3f4554358260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126128 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

%rmE_XjId|Z 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

_iQlvT!~XsrxQ0FV08~Nk-RwEo4==FG z2^pbgyWqD{e@=ab_Cg`vavAN#3|f+I^lVa&xSoX6S>ayYUD`Kb6p@trukZ~F6Uo#+5^tvdmgrtj zwoI(M_FWtoA4O*!M|yG*rXaUMsk8)u)n)-jR;!QBqxJe?w}Q)S!p@VlyC5A2#MsMO zr$TBL#}AOcj939q%rcpb*h*!LWO(rI4W)T4dspi9y?a|-iH&!ytPCGHdVFT)_{_aw zb~3#B&Vlp&M}{KXLxXn=o?m%nO?2~J$G-K=m)vCbTFV+5USj5`^V%#per4jlwmtqy2`MWLXjd3nXaNArm~41a&~ z&!$HwipOvUjn^AXXP;qX1(Pa1A~p>$R~!l5cj)M$nd3)~g{lVb+ED6ho$Ax+R!+6% zm9D>gfSnvYe%FO>zMSWN>6_m=cGqTR?UCN|=!l{1k)b2~=Lhaw&1p|h5@XcIWSm%>)`W9rxfmBGq>LOsQJj=`viH84>cg|Qmit

lr0tzJ_xG^#WzWmK-wn9b@ySgBNj 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 v^u3ei!&Lvh$t?p}NC-KaiYb-K2z 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 diff --git a/binderhub/static/fonts/clearsans/WOFF/ClearSans-MediumItalic.woff b/binderhub/static/fonts/clearsans/WOFF/ClearSans-MediumItalic.woff deleted file mode 100644 index aecf7dfbc23ea2215066a850b48e2fdc79f6991d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141040 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 Zss)wNx3*WaxshZ#K2NgSdskl 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 V=F_$@*tVm)vG_T^58%D&^*^|5)sO%H diff --git a/binderhub/static/fonts/clearsans/WOFF/ClearSans-Regular.woff b/binderhub/static/fonts/clearsans/WOFF/ClearSans-Regular.woff deleted file mode 100644 index f4aacf79dac8d55cf0f07952716c81d23ddd8d70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130846 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

Fq?gwD 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 Date: Thu, 23 May 2024 18:30:02 -0700 Subject: [PATCH 17/95] Move about page to frontend rendering --- binderhub/app.py | 5 ++--- binderhub/base.py | 14 ------------- binderhub/main.py | 3 +++ binderhub/static/js/App.jsx | 11 ++++++++++ binderhub/static/js/pages/AboutPage.jsx | 17 ++++++++++++++++ binderhub/templates/about.html | 27 ------------------------- 6 files changed, 33 insertions(+), 44 deletions(-) create mode 100644 binderhub/static/js/pages/AboutPage.jsx delete mode 100644 binderhub/templates/about.html diff --git a/binderhub/app.py b/binderhub/app.py index 279678385..f202627ce 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -42,7 +42,7 @@ ) from traitlets.config import Application -from .base import AboutHandler, Custom404, VersionHandler +from .base import Custom404, VersionHandler from .build import BuildExecutor, KubernetesBuildExecutor, KubernetesCleaner from .builder import BuildHandler from .events import EventLog @@ -993,8 +993,7 @@ def initialize(self, *args, **kwargs): # In API only mode the endpoints in the list below # are unregistered as they don't make sense in a API only scenario handlers += [ - (r"/about", AboutHandler), - (r"/(?:v2/.*)?", MainHandler), + (r"/(?:v2/.*|about)?", MainHandler), (r"/repo/([^/]+)/([^/]+)(/.*)?", LegacyRedirectHandler), (r"/api/repoproviders", RepoProvidersHandlers), # for backward-compatible mybinder.org badge URLs diff --git a/binderhub/base.py b/binderhub/base.py index 4a3d9f759..51adc1fe4 100644 --- a/binderhub/base.py +++ b/binderhub/base.py @@ -229,20 +229,6 @@ def prepare(self): raise web.HTTPError(404) -class AboutHandler(BaseHandler): - """Serve the about page""" - - async def get(self): - self.render_template( - "about.html", - base_url=self.settings["base_url"], - submit=False, - binder_version=binder_version, - message=self.settings["about_message"], - extra_footer_scripts=self.settings["extra_footer_scripts"], - ) - - class VersionHandler(BaseHandler): """Serve information about versions running""" diff --git a/binderhub/main.py b/binderhub/main.py index 4f733d326..792d038e4 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -5,6 +5,7 @@ from tornado.httputil import url_concat from tornado.web import authenticated +from . import __version__ as binder_version from .base import BaseHandler @@ -23,6 +24,8 @@ def get(self): "logoUrl": self.static_url("logo.svg"), "logoWidth": "320px", "repoProviders": repoproviders_display_config, + "aboutMessage": self.settings["about_message"], + "binderVersion": binder_version, } self.render_template( "page.html", diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 022cb4e8d..42e3a74bb 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -10,6 +10,7 @@ import "@fontsource/clear-sans/300.css"; import "@fontsource/clear-sans/400.css"; import { HomePage } from "./pages/HomePage.jsx"; import { createRoutesFromElements } from "react-router"; +import { AboutPage } from "./pages/AboutPage.jsx"; export const PAGE_CONFIG = window.pageConfig; @@ -64,6 +65,16 @@ const router = createBrowserRouter( element={} /> ))} + + } + /> , ), ); diff --git a/binderhub/static/js/pages/AboutPage.jsx b/binderhub/static/js/pages/AboutPage.jsx new file mode 100644 index 000000000..9f1f37a65 --- /dev/null +++ b/binderhub/static/js/pages/AboutPage.jsx @@ -0,0 +1,17 @@ +export function AboutPage({ aboutMessage, binderVersion }) { + return ( +

+

BinderHub

+
+

+ This website is powered by{" "} + BinderHub v + {binderVersion} +

+ {aboutMessage && ( +

+ )} +
+
+ ); +} diff --git a/binderhub/templates/about.html b/binderhub/templates/about.html deleted file mode 100644 index b18f14b70..000000000 --- a/binderhub/templates/about.html +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "page.html" %} - -{% block main %} -
-
-
- {% block header %} - - {% endblock header %} -
-
-
-{% endblock main %} - -{% block footer %} -{% endblock footer %} From 5a6adac02f5afb8d0ee90eb009ae7c99d7e537f1 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 29 May 2024 13:36:49 -0700 Subject: [PATCH 18/95] Fix case of component file --- binderhub/static/js/components/{howitworks.jsx => HowItWorks.jsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename binderhub/static/js/components/{howitworks.jsx => HowItWorks.jsx} (100%) diff --git a/binderhub/static/js/components/howitworks.jsx b/binderhub/static/js/components/HowItWorks.jsx similarity index 100% rename from binderhub/static/js/components/howitworks.jsx rename to binderhub/static/js/components/HowItWorks.jsx From 354118a7ec7920d75caa8534984e52568d8f8857 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 29 May 2024 13:38:08 -0700 Subject: [PATCH 19/95] Remove remaining reference to `_config` --- binderhub/app.py | 1 - 1 file changed, 1 deletion(-) diff --git a/binderhub/app.py b/binderhub/app.py index f202627ce..279f6fb09 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -813,7 +813,6 @@ def _template_path_default(self): - /versions - /build/([^/]+)/(.+) - /health - - /_config - /* -> shows a 404 page """, config=True, From 484680b92dc58c0827af0f8b5e8a6656a6cbd4f6 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Mon, 1 Jul 2024 15:12:13 -0700 Subject: [PATCH 20/95] Support setting banner message --- binderhub/main.py | 1 + binderhub/static/js/App.jsx | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/binderhub/main.py b/binderhub/main.py index 792d038e4..e42ee8c2d 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -25,6 +25,7 @@ def get(self): "logoWidth": "320px", "repoProviders": repoproviders_display_config, "aboutMessage": self.settings["about_message"], + "bannerHtml": self.settings["banner_message"], "binderVersion": binder_version, } self.render_template( diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 42e3a74bb..14428e169 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -80,14 +80,22 @@ const router = createBrowserRouter( ); function App() { return ( -
-
-
- + <> + {PAGE_CONFIG.bannerHtml && ( +
+ )} +
+
+
+ +
+
-
-
+ ); } From 0ad93478c2b85f0c8609bdfe5c6055f3656f0570 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 11 Jul 2024 17:46:31 -0700 Subject: [PATCH 21/95] Remove unused functionality from binderhub-client UI related stuff like this goes into spec.js --- js/packages/binderhub-client/lib/index.js | 107 ------- .../binderhub-client/tests/index.test.js | 284 +----------------- 2 files changed, 1 insertion(+), 390 deletions(-) diff --git a/js/packages/binderhub-client/lib/index.js b/js/packages/binderhub-client/lib/index.js index f33f35600..ee474d895 100644 --- a/js/packages/binderhub-client/lib/index.js +++ b/js/packages/binderhub-client/lib/index.js @@ -208,111 +208,4 @@ export class BinderRepository { this.abortController = null; } } - - /** - * Get URL to redirect user to on a Jupyter Server to display a given path - - * @param {URL} serverUrl URL to the running jupyter server - * @param {string} token Secret token used to authenticate to the jupyter server - * @param {string} [path] The path of the file or url suffix to launch the user into - * @param {string} [pathType] One of "lab", "file" or "url", denoting what kinda path we are launching the user into - * - * @returns {URL} A URL to redirect the user to - */ - getFullRedirectURL(serverUrl, token, path, pathType) { - // Make a copy of the URL so we don't mangle the original - let url = new URL(serverUrl); - if (path) { - // Ensure there is a trailing / in serverUrl - if (!url.pathname.endsWith("/")) { - url.pathname += "/"; - } - // trim leading '/' from path to launch users into - path = path.replace(/(^\/)/g, ""); - - if (pathType === "lab") { - // The path is a specific *file* we should open with JupyterLab - // trim trailing / on file paths - path = path.replace(/(\/$)/g, ""); - - // /doc/tree is safe because it allows redirect to files - url = new URL("doc/tree/" + encodeURI(path), url); - } else if (pathType === "file") { - // The path is a specific file we should open with *classic notebook* - - // trim trailing / on file paths - path = path.replace(/(\/$)/g, ""); - - url = new URL("tree/" + encodeURI(path), url); - } else { - // pathType is 'url' and we should just pass it on - url = new URL(path, url); - } - } - - url.searchParams.append("token", token); - return url; - } -} - -/** - * Generate a shareable binder URL for given repository - * - * @param {URL} publicBaseUrl Base URL to use for making public URLs. Must end with a trailing slash. - * @param {string} providerPrefix prefix denoting what provider was selected - * @param {string} repository repo to build - * @param {string} ref optional ref in this repo to build - * @param {string} [path] Path to launch after this repo has been built - * @param {string} [pathType] Type of thing to open path with (raw url, notebook file, lab, etc) - * - * @returns {URL} A URL that can be shared with others, and clicking which will launch the repo - */ -export function makeShareableBinderURL( - publicBaseUrl, - providerPrefix, - repository, - ref, - path, - pathType, -) { - if (!publicBaseUrl.pathname.endsWith("/")) { - throw new Error( - `publicBaseUrl must end with a trailing slash, got ${publicBaseUrl}`, - ); - } - const url = new URL( - `v2/${providerPrefix}/${repository}/${ref}`, - publicBaseUrl, - ); - if (path && path.length > 0) { - url.searchParams.append(`${pathType}path`, path); - } - return url; -} - -/** - * Generate markup that people can put on their README or documentation to link to a specific binder - * - * @param {URL} publicBaseUrl Base URL to use for making public URLs - * @param {URL} url Link target URL that represents this binder installation - * @param {string} syntax Kind of markup to generate. Supports 'markdown' and 'rst' - * @returns {string} - */ -export function makeBadgeMarkup(publicBaseUrl, url, syntax) { - if (!publicBaseUrl.pathname.endsWith("/")) { - throw new Error( - `publicBaseUrl must end with a trailing slash, got ${publicBaseUrl}`, - ); - } - const badgeImageUrl = new URL("badge_logo.svg", publicBaseUrl); - - if (syntax === "markdown") { - return `[![Binder](${badgeImageUrl})](${url})`; - } else if (syntax === "rst") { - return `.. image:: ${badgeImageUrl}\n :target: ${url}`; - } else { - throw new Error( - `Only markdown or rst badges are supported, got ${syntax} instead`, - ); - } } diff --git a/js/packages/binderhub-client/tests/index.test.js b/js/packages/binderhub-client/tests/index.test.js index 04e35685b..6f1ed2408 100644 --- a/js/packages/binderhub-client/tests/index.test.js +++ b/js/packages/binderhub-client/tests/index.test.js @@ -10,7 +10,7 @@ import { parseEventSource, simpleEventSourceServer } from "./utils"; import { readFileSync } from "node:fs"; async function wrapFetch(resource, options) { - /* like fetch, but ignore signal input + /* like fetch, but ignore signal input // abort signal shows up as uncaught in tests, despite working fine */ if (options) { @@ -82,155 +82,6 @@ test("Build URL correctly built from Build Endpoint when used with token", () => ); }); -test("Get full redirect URL with correct token but no path", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something"), - "token", - ) - .toString(), - ).toBe("https://hub.test-binder.org/user/something?token=token"); -}); - -test("Get full redirect URL with urlpath", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something"), - "token", - "rstudio", - "url", - ) - .toString(), - ).toBe("https://hub.test-binder.org/user/something/rstudio?token=token"); -}); - -test("Get full redirect URL when opening a file with jupyterlab", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something"), - "token", - "index.ipynb", - "lab", - ) - .toString(), - ).toBe( - "https://hub.test-binder.org/user/something/doc/tree/index.ipynb?token=token", - ); -}); - -test("Get full redirect URL when opening a file with classic notebook (with file= path)", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something"), - "token", - "index.ipynb", - "file", - ) - .toString(), - ).toBe( - "https://hub.test-binder.org/user/something/tree/index.ipynb?token=token", - ); -}); - -test("Get full redirect URL and deal with excessive slashes (with pathType=url)", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - // Trailing slash should not be preserved here - new URL("https://hub.test-binder.org/user/something/"), - "token", - // Trailing slash should be preserved here, but leading slash should not be repeated - "/rstudio/", - "url", - ) - .toString(), - ).toBe("https://hub.test-binder.org/user/something/rstudio/?token=token"); -}); - -test("Get full redirect URL and deal with excessive slashes (with pathType=lab)", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something/"), - "token", - // Both leading and trailing slashes should be gone here. - "/directory/index.ipynb/", - "lab", - ) - .toString(), - ).toBe( - "https://hub.test-binder.org/user/something/doc/tree/directory/index.ipynb?token=token", - ); -}); - -test("Get full redirect URL and deal with missing trailing slash", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - // Missing trailing slash here should not affect target url - new URL("https://hub.test-binder.org/user/something"), - "token", - "/directory/index.ipynb/", - "lab", - ) - .toString(), - ).toBe( - "https://hub.test-binder.org/user/something/doc/tree/directory/index.ipynb?token=token", - ); -}); - -test("Get full redirect URL and deal with excessive slashes (with pathType=file)", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something/"), - "token", - // Both leading and trailing slashes should be gone here. - "/directory/index.ipynb/", - "file", - ) - .toString(), - ).toBe( - "https://hub.test-binder.org/user/something/tree/directory/index.ipynb?token=token", - ); -}); - describe("Iterate over full output from calling the binderhub API", () => { let closeServer, serverUrl; @@ -286,136 +137,3 @@ describe("Invalid eventsource response causes failure", () => { ]); }); }); - -test("Get full redirect URL and deal with query and encoded query (with pathType=url)", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something/"), - "token", - // url path here is already url encoded - "endpoint?a=1%2F2&b=3%3F%2F", - "url", - ) - .toString(), - ).toBe( - // url path here is exactly as encoded as passed in - not *double* encoded - "https://hub.test-binder.org/user/something/endpoint?a=1%2F2&b=3%3F%2F&token=token", - ); -}); - -test("Get full redirect URL with nbgitpuller URL", () => { - const br = new BinderRepository( - "gh/test/test", - new URL("https://test-binder.org/build"), - ); - expect( - br - .getFullRedirectURL( - new URL("https://hub.test-binder.org/user/something/"), - "token", - // urlpath is not actually url encoded - note that / is / not %2F - "git-pull?repo=https://github.com/alperyilmaz/jupyterlab-python-intro&urlpath=lab/tree/jupyterlab-python-intro/&branch=master", - "url", - ) - .toString(), - ).toBe( - // generated URL path here *is* url encoded - "https://hub.test-binder.org/user/something/git-pull?repo=https%3A%2F%2Fgithub.com%2Falperyilmaz%2Fjupyterlab-python-intro&urlpath=lab%2Ftree%2Fjupyterlab-python-intro%2F&branch=master&token=token", - ); -}); - -test("Make a shareable URL", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - ); - expect(url.toString()).toBe( - "https://test.binder.org/v2/gh/yuvipanda/requirements", - ); -}); - -test("Make a shareable path with URL", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - "url", - "git-pull?repo=https://github.com/alperyilmaz/jupyterlab-python-intro&urlpath=lab/tree/jupyterlab-python-intro/&branch=master", - ); - expect(url.toString()).toBe( - "https://test.binder.org/v2/gh/yuvipanda/requirements?git-pull%3Frepo%3Dhttps%3A%2F%2Fgithub.com%2Falperyilmaz%2Fjupyterlab-python-intro%26urlpath%3Dlab%2Ftree%2Fjupyterlab-python-intro%2F%26branch%3Dmasterpath=url", - ); -}); - -test("Making a shareable URL with base URL without trailing / throws error", () => { - expect(() => { - makeShareableBinderURL( - new URL("https://test.binder.org/suffix"), - "gh", - "yuvipanda", - "requirements", - ); - }).toThrow(Error); -}); - -test("Make a markdown badge", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - ); - const badge = makeBadgeMarkup( - new URL("https://test.binder.org"), - url, - "markdown", - ); - expect(badge).toBe( - "[![Binder](https://test.binder.org/badge_logo.svg)](https://test.binder.org/v2/gh/yuvipanda/requirements)", - ); -}); - -test("Make a rst badge", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - ); - const badge = makeBadgeMarkup(new URL("https://test.binder.org"), url, "rst"); - expect(badge).toBe( - ".. image:: https://test.binder.org/badge_logo.svg\n :target: https://test.binder.org/v2/gh/yuvipanda/requirements", - ); -}); - -test("Making a badge with an unsupported syntax throws error", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - ); - expect(() => { - makeBadgeMarkup(new URL("https://test.binder.org"), url, "docx"); - }).toThrow(Error); -}); - -test("Making a badge with base URL without trailing / throws error", () => { - const url = makeShareableBinderURL( - new URL("https://test.binder.org"), - "gh", - "yuvipanda", - "requirements", - ); - expect(() => { - makeBadgeMarkup(new URL("https://test.binder.org/suffix"), url, "markdown"); - }).toThrow(Error); -}); From ea9d565f7d4c9d503a83d0b91da7e88f40baa7f8 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 31 Jul 2024 16:33:52 -0700 Subject: [PATCH 22/95] Add functionality to view logs in raw form --- .../static/js/components/BuilderLauncher.jsx | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index bcb8439f5..73718662e 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -11,6 +11,7 @@ import { Spec } from "../spec.js"; * @param {URL} baseUrl * @param {Spec} spec * @param {Terminal} term + * @param {Array} logBuffer * @param {FitAddon} fitAddon * @param {(l: boolean) => void} setIsLaunching * @param {(p: PROGRESS_STATES) => void} setProgressState @@ -20,6 +21,7 @@ async function buildImage( baseUrl, spec, term, + logBuffer, fitAddon, setIsLaunching, setProgressState, @@ -29,12 +31,15 @@ async function buildImage( const image = new BinderRepository(spec.buildSpec, buildEndPointURL); // Clear the last line written, so we start from scratch term.write("\x1b[2K\r"); + logBuffer.length = 0; fitAddon.fit(); for await (const data of image.fetch()) { // Write message to the log terminal if there is a message if (data.message !== undefined) { // Write out all messages to the terminal! term.write(data.message); + // Keep a copy of the message in the logBuffer + logBuffer.push(data.message); // Resize our terminal to make sure it fits messages appropriately fitAddon.fit(); } else { @@ -94,12 +99,19 @@ async function buildImage( * @prop {(t: Terminal) => void} setTerm * @prop {(f: FitAddon) => void} setFitAddon * @prop {boolean} logsVisible + * @prop {Ref>} logBufferRef * @prop {(l: boolean) => void} setLogsVisible * * @param {ImageLogsProps} props * @returns */ -function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { +function ImageLogs({ + setTerm, + setFitAddon, + logsVisible, + setLogsVisible, + logBufferRef, +}) { const toggleLogsButton = useRef(); useEffect(() => { async function setup() { @@ -133,6 +145,21 @@ function ImageLogs({ setTerm, setFitAddon, logsVisible, setLogsVisible }) { > {logsVisible ? "hide" : "show"} +
{ async function setup() { if (isLaunching) { @@ -174,6 +202,7 @@ export function BuilderLauncher({ baseUrl, spec, term, + logBufferRef.current, fitAddon, setIsLaunching, setProgressState, @@ -191,6 +220,7 @@ export function BuilderLauncher({ setFitAddon={setFitAddon} logsVisible={logsVisible} setLogsVisible={setLogsVisible} + logBufferRef={logBufferRef} />
); From 2c9d89f3a0456bbb6932a10e2e7840b67dcbb6d4 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 31 Jul 2024 17:16:25 -0700 Subject: [PATCH 23/95] Kill some unnecessary useEffects --- .../static/js/components/LinkGenerator.jsx | 51 +++++++++---------- binderhub/static/js/pages/HomePage.jsx | 6 ++- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 30748b503..e3d73aa47 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -121,35 +121,24 @@ export function LinkGenerator({ setIsLaunching, }) { // uh, so react doesn't like it when your prop is named 'ref' - const [ref, setRef] = [reference, setReference]; - const [launchUrl, setLaunchUrl] = useState(""); + let launchUrl = ""; - useEffect(() => { - if (selectedProvider.ref.enabled && ref === "") { - setRef(selectedProvider.ref.default); - } else { - setRef(""); + let url; + const ref = reference || selectedProvider.ref.default; + if (repo !== "" && (!selectedProvider.ref.enabled || ref !== "")) { + const processedRepo = selectedProvider.repo.preProcess + ? selectedProvider.repo.preProcess(repo) + : repo; + url = new URL( + `v2/${selectedProvider.id}/${processedRepo}/${ref}`, + publicBaseUrl, + ); + if (urlPath) { + url.searchParams.set("urlpath", urlPath); } - }, [selectedProvider]); + launchUrl = url.toString(); + } - useEffect(() => { - let url; - if (repo !== "" && (!selectedProvider.ref.enabled || ref !== "")) { - const processedRepo = selectedProvider.repo.preProcess - ? selectedProvider.repo.preProcess(repo) - : repo; - url = new URL( - `v2/${selectedProvider.id}/${processedRepo}/${ref}`, - publicBaseUrl, - ); - if (urlPath) { - url.searchParams.set("urlpath", urlPath); - } - setLaunchUrl(url.toString()); - } else { - setLaunchUrl(""); - } - }, [repo, ref, urlPath, selectedProvider]); return ( <>
@@ -199,8 +188,14 @@ export function LinkGenerator({ type="text" name="ref" disabled={!selectedProvider.ref.enabled || isLaunching} - value={ref} - onChange={(e) => setRef(e.target.value)} + placeholder={ + (selectedProvider.ref.enabled && + selectedProvider.ref.default) || + "" + } + onChange={(e) => { + setReference(e.target.value); + }} />
diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 36dea703a..7a3dfe34e 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -23,9 +23,13 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { const [progressState, setProgressState] = useState(null); useEffect(() => { + let actualRef = ""; + if (selectedProvider.ref.enabled) { + actualRef = ref !== "" ? ref : selectedProvider.ref.default; + } setSpec( new Spec( - `${selectedProvider.id}/${repo}/${ref}`, + `${selectedProvider.id}/${repo}/${actualRef}`, new LaunchSpec(urlPath), ), ); From 7c5538355ba4a3202af98beaa95629e2c8c55e5c Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 1 Aug 2024 21:25:21 -0700 Subject: [PATCH 24/95] Add badge generator --- .../static/js/components/LinkGenerator.jsx | 115 ++++++++++++++++-- 1 file changed, 103 insertions(+), 12 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index e3d73aa47..d78194e23 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -106,6 +106,14 @@ function UrlSelector({ setUrlPath }) { ); } +function makeShareableUrl(publicBaseUrl, provider, repo, ref, urlPath) { + const url = new URL(`v2/${provider.id}/${repo}/${ref}`, publicBaseUrl); + if (urlPath) { + url.searchParams.set("urlpath", urlPath); + } + return url; +} + export function LinkGenerator({ providers, publicBaseUrl, @@ -120,28 +128,32 @@ export function LinkGenerator({ isLaunching, setIsLaunching, }) { - // uh, so react doesn't like it when your prop is named 'ref' + const [badgeType, setBadgeType] = useState("md"); // Options are md and rst + const [badgeVisible, setBadgeVisible] = useState(false); + let launchUrl = ""; + let badgeMarkup = ""; - let url; const ref = reference || selectedProvider.ref.default; if (repo !== "" && (!selectedProvider.ref.enabled || ref !== "")) { - const processedRepo = selectedProvider.repo.preProcess - ? selectedProvider.repo.preProcess(repo) - : repo; - url = new URL( - `v2/${selectedProvider.id}/${processedRepo}/${ref}`, + launchUrl = makeShareableUrl( publicBaseUrl, - ); - if (urlPath) { - url.searchParams.set("urlpath", urlPath); + selectedProvider, + repo, + ref, + urlPath, + ).toString(); + const badgeLogoUrl = new URL("badge_logo.svg", publicBaseUrl); + if (badgeType === "md") { + badgeMarkup = `[![Binder](${badgeLogoUrl})](${launchUrl})`; + } else { + badgeMarkup = `.. image:: ${badgeLogoUrl}\n :target: ${launchUrl}`; } - launchUrl = url.toString(); } return ( <> - +

Build and launch a repository

@@ -235,6 +247,85 @@ export function LinkGenerator({

+ +
+
+ Badges for your README + +
+
+
+
+
+ setBadgeType("md")} + > + + + setBadgeType("rst")} + > + +
+ + +
+
+
+
); From c46a6918165cb2a3851105a679c5567418c15e50 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 2 Aug 2024 19:00:28 -0700 Subject: [PATCH 25/95] Add OpenGraph social card support --- binderhub/app.py | 19 +++++++++++++++---- binderhub/main.py | 33 +++++++++++++++++++++++++++++++-- binderhub/templates/page.html | 4 ++-- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/binderhub/app.py b/binderhub/app.py index 50816a59f..2b5e34484 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -50,7 +50,7 @@ from .health import HealthHandler, KubernetesHealthHandler from .launcher import Launcher from .log import log_request -from .main import LegacyRedirectHandler, MainHandler +from .main import LegacyRedirectHandler, RepoLaunchUIHandler, UIHandler from .metrics import MetricsHandler from .quota import KubernetesLaunchQuota, LaunchQuota from .ratelimit import RateLimiter @@ -989,14 +989,24 @@ def initialize(self, *args, **kwargs): (r"/versions", VersionHandler), (r"/build/([^/]+)/(.+)", BuildHandler), (r"/health", self.health_handler_class, {"hub_url": self.hub_url_local}), + (r"/api/repoproviders", RepoProvidersHandlers), ] if not self.enable_api_only_mode: # In API only mode the endpoints in the list below - # are unregistered as they don't make sense in a API only scenario + # are not registered since they are primarily about providing UI + + for provider_id in self.repo_providers: + # Register launchable URLs for all our repo providers + # These render social previews, but otherwise redirect to UIHandler + handlers += [ + ( + rf"/v2/({provider_id})/(.+)", + RepoLaunchUIHandler, + {"repo_provider": self.repo_providers[provider_id]}, + ) + ] handlers += [ - (r"/(?:v2/.*|about)?", MainHandler), (r"/repo/([^/]+)/([^/]+)(/.*)?", LegacyRedirectHandler), - (r"/api/repoproviders", RepoProvidersHandlers), # for backward-compatible mybinder.org badge URLs # /assets/images/badge.svg ( @@ -1062,6 +1072,7 @@ def initialize(self, *args, **kwargs): ) }, ), + (r"/.*", UIHandler), ] # This needs to be the last handler in the list, because it needs to match "everything else" handlers.append((r".*", Custom404)) diff --git a/binderhub/main.py b/binderhub/main.py index e42ee8c2d..7d66c5303 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -9,8 +9,14 @@ from .base import BaseHandler -class MainHandler(BaseHandler): - """Main handler for requests""" +class UIHandler(BaseHandler): + """ + Responds to most UI Page Requests + """ + + def initialize(self): + self.opengraph_title = "The Binder Project" + return super().initialize() @authenticated def get(self): @@ -32,7 +38,30 @@ def get(self): "page.html", page_config=page_config, extra_footer_scripts=self.settings["extra_footer_scripts"], + opengraph_title=self.opengraph_title, + ) + + +class RepoLaunchUIHandler(UIHandler): + """ + Responds to /v2/ launch URLs only + + Forwards to UIHandler, but puts out an opengraph_title for social previews + """ + + def initialize(self, repo_provider): + self.repo_provider = repo_provider + return super().initialize() + + @authenticated + def get(self, provider_id, _escaped_spec): + prefix = "/v2/" + provider_id + spec = self.get_spec_from_request(prefix).rstrip("/") + + self.opengraph_title = ( + f"{self.repo_provider.display_config['displayName']}: {spec}" ) + return super().get() class LegacyRedirectHandler(BaseHandler): diff --git a/binderhub/templates/page.html b/binderhub/templates/page.html index 212d61ef5..6b6780d27 100644 --- a/binderhub/templates/page.html +++ b/binderhub/templates/page.html @@ -5,8 +5,8 @@ {% block title %}Binder{% endblock %} {% block meta_social %} {# Social media previews #} - - + + From f942938d91f69811de4b315627d3295ecd879e80 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 2 Aug 2024 19:20:22 -0700 Subject: [PATCH 26/95] Fix copy buttons --- binderhub/static/js/components/LinkGenerator.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index d78194e23..931cc9b62 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -242,7 +242,7 @@ export function LinkGenerator({ onClick={() => copy(launchUrl)} disabled={launchUrl === ""} > - + @@ -320,7 +320,7 @@ export function LinkGenerator({ onClick={() => copy(badgeMarkup)} disabled={badgeMarkup === ""} > - + From ab59cb1d55b54bd06583b64778f4d54f44e60488 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 2 Aug 2024 19:20:35 -0700 Subject: [PATCH 27/95] Tweak style of badge generator a little --- .../static/js/components/LinkGenerator.jsx | 101 +++++++++--------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 931cc9b62..3f47457f4 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -266,64 +266,59 @@ export function LinkGenerator({ className={`card-body ${badgeVisible ? "" : "d-none"}`} id="badge-container" > -
-
-
+
+ setBadgeType("md")} + > + - setBadgeType("rst")} - > - -
- + rST +
-
+
+                {badgeMarkup ||
+                  "Fill in the fields to see a badge markup for your README."}
+              
+ + From 97f1bfdd17031281bfae6ad0fa9b66f503b8de0d Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 21 Nov 2024 11:58:05 +1100 Subject: [PATCH 28/95] Fix lint --- .eslintrc.js | 11 +++++++++++ js/packages/binderhub-client/tests/index.test.js | 6 +----- package.json | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d3e0f4517..87ad864de 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,6 +4,7 @@ module.exports = { es2021: true, }, extends: ["eslint:recommended", "plugin:react/recommended"], + ignorePatterns: ["dist"], overrides: [ { env: { @@ -14,6 +15,16 @@ module.exports = { sourceType: "script", }, }, + { + "files": [ + "**/*.test.js", + "**/*.test.jsx" + ], + "env": { + "jest": true, + "node": true + } + } ], parserOptions: { ecmaVersion: "latest", diff --git a/js/packages/binderhub-client/tests/index.test.js b/js/packages/binderhub-client/tests/index.test.js index 6f1ed2408..3ca05d358 100644 --- a/js/packages/binderhub-client/tests/index.test.js +++ b/js/packages/binderhub-client/tests/index.test.js @@ -1,11 +1,7 @@ // fetch polyfill (only needed for node tests) import { fetch, TextDecoder } from "@whatwg-node/fetch"; -import { - BinderRepository, - makeShareableBinderURL, - makeBadgeMarkup, -} from "@jupyterhub/binderhub-client"; +import { BinderRepository } from "@jupyterhub/binderhub-client"; import { parseEventSource, simpleEventSourceServer } from "./utils"; import { readFileSync } from "node:fs"; diff --git a/package.json b/package.json index f908f64e1..115415803 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "scripts": { "webpack": "webpack", "webpack:watch": "webpack --watch", - "lint": "eslint .", + "lint": "eslint binderhub/static/js js", "test": "jest" }, "jest": { From e858fa8fd65f596d271b0ecc0453bb637f59396d Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 21 Nov 2024 12:02:29 +1100 Subject: [PATCH 29/95] Ignore spec.js in tests --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 115415803..514cf7b17 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "coverageReporters": [ "text", "cobertura" - ] + ], + "testPathIgnorePatterns": ["spec.js"] } } From a4733b4414ad61866f34fec040aa6fef53d87052 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 21 Nov 2024 12:03:49 +1100 Subject: [PATCH 30/95] gitignore coverage directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 19b482212..14863756b 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,7 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ +coverage # Translations *.mo From 6193fb152ab5b229241873a102c14ecbb5828528 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 01:04:13 +0000 Subject: [PATCH 31/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .eslintrc.js | 15 ++++++--------- package.json | 4 +++- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 87ad864de..36af8add3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -16,15 +16,12 @@ module.exports = { }, }, { - "files": [ - "**/*.test.js", - "**/*.test.jsx" - ], - "env": { - "jest": true, - "node": true - } - } + files: ["**/*.test.js", "**/*.test.jsx"], + env: { + jest: true, + node: true, + }, + }, ], parserOptions: { ecmaVersion: "latest", diff --git a/package.json b/package.json index 514cf7b17..9c8316646 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,8 @@ "text", "cobertura" ], - "testPathIgnorePatterns": ["spec.js"] + "testPathIgnorePatterns": [ + "spec.js" + ] } } From ae035cb69c5e35ca08f682135615467c484cd555 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 22 Nov 2024 12:06:32 +1100 Subject: [PATCH 32/95] Add basic link-generator tests --- .../static/js/components/BuilderLauncher.jsx | 1 - .../static/js/components/LinkGenerator.jsx | 49 +++++++++---------- binderhub/static/js/pages/HomePage.jsx | 1 + binderhub/static/js/pages/HomePage.test.jsx | 45 +++++++++++++++++ package.json | 11 +++++ setupTests.js | 34 +++++++++++++ 6 files changed, 115 insertions(+), 26 deletions(-) create mode 100644 binderhub/static/js/pages/HomePage.test.jsx create mode 100644 setupTests.js diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index 73718662e..6ed00461a 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -4,7 +4,6 @@ import { Terminal } from "xterm"; import { FitAddon } from "xterm-addon-fit"; import "xterm/css/xterm.css"; import { Progress, PROGRESS_STATES } from "./Progress.jsx"; -import { Spec } from "../spec.js"; /** * diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 3f47457f4..282442a2f 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -23,10 +23,12 @@ function ProviderSelector({ type="button" data-bs-toggle="dropdown" aria-expanded="false" + aria-controls="repository-type-dropdown" + aria-label="Select repository type" > {selectedProvider.displayName} -
    +
      {providers.map((p) => (
    • @@ -80,7 +83,8 @@ function UrlSelector({ setUrlPath }) { setPath(e.target.value)} /> @@ -156,7 +160,7 @@ export function LinkGenerator({

      Build and launch a repository

      - + {selectedProvider.repo.label}
      { let repo = e.target.value; if (selectedProvider.detect && selectedProvider.detect.regex) { @@ -211,9 +215,9 @@ export function LinkGenerator({ />
      -
      +
      -
      +
      +
      +
      + {launchUrl || "Fill in the fields to see a URL for sharing your Binder."}
      - + +
      @@ -255,6 +253,7 @@ export function LinkGenerator({ className="btn btn-link" type="button" aria-controls="badge-container" + aria-expanded={badgeVisible} onClick={() => { setBadgeVisible(!badgeVisible); }} diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 7a3dfe34e..8e087eb0d 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -49,6 +49,7 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { Zero-to-Binder tutorial {" "} diff --git a/binderhub/static/js/pages/HomePage.test.jsx b/binderhub/static/js/pages/HomePage.test.jsx new file mode 100644 index 000000000..399a5d866 --- /dev/null +++ b/binderhub/static/js/pages/HomePage.test.jsx @@ -0,0 +1,45 @@ +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; + +import { HomePage } from "./HomePage"; + +test("updates launch URL with file", async () => { + const user = userEvent.setup(); + + render(); + + expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); + const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); + await user.type(repositoryField, "org/repo"); + expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined")).toBeInTheDocument(); + + const fileField = screen.getByRole("textbox", {name: "File to open (in JupyterLab)"}); + await user.type(fileField, "test.py"); + expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined?urlpath=%2Fdoc%2Ftree%2Ftest.py")).toBeInTheDocument(); +}); + +test("updates launch URL with URL", async () => { + const user = userEvent.setup(); + + render(); + + expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); + const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); + await user.type(repositoryField, "org/repo"); + expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined")).toBeInTheDocument(); + + await(user.click(screen.getByRole("button", {name: "File"}))); + await(user.click(screen.getByText("URL"))); + + const fileField = screen.getByRole("textbox", {name: "URL to open"}); + await user.type(fileField, "http://example.com"); + expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined?urlpath=http%3A%2F%2Fexample.com")).toBeInTheDocument(); +}); diff --git a/package.json b/package.json index 9c8316646..92c0dcb9e 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,9 @@ "@babel/eslint-parser": "^7.22.15", "@babel/preset-env": "^7.21.4", "@babel/preset-react": "^7.24.1", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.0.1", + "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.5", "@whatwg-node/fetch": "^0.9.17", "autoprefixer": "^10.4.19", @@ -31,6 +34,7 @@ "eslint": "^8.38.0", "eslint-plugin-jest": "^27.4.2", "eslint-plugin-react": "^7.34.1", + "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "mini-css-extract-plugin": "^2.7.5", @@ -61,6 +65,13 @@ ], "testPathIgnorePatterns": [ "spec.js" + ], + "moduleNameMapper": { + "\\.css$": "identity-obj-proxy", + "\\.ico$": "identity-obj-proxy" + }, + "setupFilesAfterEnv": [ + "/setupTests.js" ] } } diff --git a/setupTests.js b/setupTests.js new file mode 100644 index 000000000..1b1834bc6 --- /dev/null +++ b/setupTests.js @@ -0,0 +1,34 @@ +import { jest } from "@jest/globals"; +import "@testing-library/jest-dom"; + +HTMLCanvasElement.prototype.getContext = () => {}; +Object.defineProperty(window, "matchMedia", { + writable: true, + value: jest.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // Deprecated + removeListener: jest.fn(), // Deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); + +window.pageConfig = { + repoProviders: [ + { + "displayName": "Fake", + "enabled": false, + "id": "fake", + "ref": { + "enabled": false + }, + "repo": { + "label": "Fake Repo", + "placeholder": "" + } + } + ] +} From 5b7329ad3e1739dab8fab097052a1cc4402a2239 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 22 Nov 2024 12:07:59 +1100 Subject: [PATCH 33/95] Fix repo-select input group layout --- .../static/js/components/LinkGenerator.jsx | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 282442a2f..f65723512 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -17,31 +17,29 @@ function ProviderSelector({ }) { return ( <> -
      - - -
      + + ); } From ce6a4bc10dbae7ae979a4964fbe8788f473bcc7a Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 22 Nov 2024 12:13:07 +1100 Subject: [PATCH 34/95] Fix label alignment --- binderhub/static/js/components/LinkGenerator.jsx | 8 ++++---- binderhub/static/js/index.scss | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index f65723512..bf4b86716 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -76,7 +76,7 @@ function UrlSelector({ setUrlPath }) { return ( <> - +
      -
      +
      - +
      -
      +
    • ))}
    @@ -97,9 +91,7 @@ function UrlSelector({ setUrlPath }) { diff --git a/binderhub/static/js/pages/HomePage.test.jsx b/binderhub/static/js/pages/HomePage.test.jsx index 399a5d866..f14ab3d47 100644 --- a/binderhub/static/js/pages/HomePage.test.jsx +++ b/binderhub/static/js/pages/HomePage.test.jsx @@ -36,7 +36,9 @@ test("updates launch URL with URL", async () => { await user.type(repositoryField, "org/repo"); expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined")).toBeInTheDocument(); - await(user.click(screen.getByRole("button", {name: "File"}))); + // TODO: There are two buttons name "File" in the DOM, so we need queryAllByRole here. + // Ideally, these buttons have distinct labels + await(user.click(screen.queryAllByRole("button", {name: "File"})[0])); await(user.click(screen.getByText("URL"))); const fileField = screen.getByRole("textbox", {name: "URL to open"}); From 729b56358d45b885c32e07f480ea868df81f1392 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 22 Nov 2024 15:22:30 +1100 Subject: [PATCH 36/95] Add Github and Zenodo test cases --- .../static/js/components/LinkGenerator.jsx | 5 +- binderhub/static/js/pages/HomePage.test.jsx | 66 +++++++++++++++++-- package.json | 1 + setupTests.js | 26 ++++++-- 4 files changed, 86 insertions(+), 12 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 99a797e87..8fe9465ea 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -186,12 +186,13 @@ export function LinkGenerator({
    -
    +
    -
    +
    diff --git a/binderhub/static/js/pages/HomePage.test.jsx b/binderhub/static/js/pages/HomePage.test.jsx index f14ab3d47..b5d287c69 100644 --- a/binderhub/static/js/pages/HomePage.test.jsx +++ b/binderhub/static/js/pages/HomePage.test.jsx @@ -3,6 +3,40 @@ import userEvent from "@testing-library/user-event"; import { HomePage } from "./HomePage"; +test("updates launch URL with git repo", async () => { + const user = userEvent.setup(); + + render(); + + expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); + const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); + await user.type(repositoryField, "org/repo"); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD")).toBeInTheDocument(); +}); + +test("updates launch URL with git ref", async () => { + const user = userEvent.setup(); + + render(); + + expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); + const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); + await user.type(repositoryField, "org/repo"); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD")).toBeInTheDocument(); + + const refField = screen.getByRole("textbox", {name: "Git ref (branch, tag, or commit)"}); + await user.type(refField, "main"); + expect(screen.getByText("http://local.com/v2/gh/org/repo/main")).toBeInTheDocument(); +}); + test("updates launch URL with file", async () => { const user = userEvent.setup(); @@ -15,11 +49,11 @@ test("updates launch URL with file", async () => { expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); await user.type(repositoryField, "org/repo"); - expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined")).toBeInTheDocument(); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD")).toBeInTheDocument(); const fileField = screen.getByRole("textbox", {name: "File to open (in JupyterLab)"}); await user.type(fileField, "test.py"); - expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined?urlpath=%2Fdoc%2Ftree%2Ftest.py")).toBeInTheDocument(); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD?urlpath=%2Fdoc%2Ftree%2Ftest.py")).toBeInTheDocument(); }); test("updates launch URL with URL", async () => { @@ -34,7 +68,7 @@ test("updates launch URL with URL", async () => { expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); await user.type(repositoryField, "org/repo"); - expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined")).toBeInTheDocument(); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD")).toBeInTheDocument(); // TODO: There are two buttons name "File" in the DOM, so we need queryAllByRole here. // Ideally, these buttons have distinct labels @@ -43,5 +77,29 @@ test("updates launch URL with URL", async () => { const fileField = screen.getByRole("textbox", {name: "URL to open"}); await user.type(fileField, "http://example.com"); - expect(screen.getByText("http://local.com/v2/fake/org/repo/undefined?urlpath=http%3A%2F%2Fexample.com")).toBeInTheDocument(); + expect(screen.getByText("http://local.com/v2/gh/org/repo/HEAD?urlpath=http%3A%2F%2Fexample.com")).toBeInTheDocument(); +}); + +test("change source type", async () => { + const user = userEvent.setup(); + + render(); + + expect(screen.getByText(/Fill in the fields to see a URL for sharing your Binder./)).toBeInTheDocument(); + user.click(screen.getByRole("button", { name: "GitHub" })); + + const zenodoButton = screen.getByRole("button", {name: "Zenodo DOI"}); + await expect(zenodoButton).toBeVisible(); + + await user.click(zenodoButton); + const refField = screen.getByRole("textbox", {name: "Git ref (branch, tag, or commit)"}); + expect(refField).toBeDisabled(); + + const repositoryField = screen.getByRole("textbox", {name: "Enter repository URL"}); + await user.type(repositoryField, "10.5282/zenodo.3242075"); + expect(screen.getByText("http://local.com/v2/zenodo/10.5282/zenodo.3242075/undefined")).toBeInTheDocument(); }); diff --git a/package.json b/package.json index 92c0dcb9e..aac5a05e5 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", "clipboard": "^2.0.11", + "configurable-http-proxy": "^4.6.2", "copy-to-clipboard": "^3.3.3", "jquery": "^3.6.4", "react": "^18.3.1", diff --git a/setupTests.js b/setupTests.js index 1b1834bc6..f85963af0 100644 --- a/setupTests.js +++ b/setupTests.js @@ -19,16 +19,30 @@ Object.defineProperty(window, "matchMedia", { window.pageConfig = { repoProviders: [ { - "displayName": "Fake", - "enabled": false, - "id": "fake", + "detect": { + "regex": "^(https?://github.com/)?(?.*)" + }, + "displayName": "GitHub", + "id": "gh", + "ref": { + "default": "HEAD", + "enabled": true + }, + "repo": { + "label": "GitHub repository name or URL", + "placeholder": "example: yuvipanda/requirements or https://github.com/yuvipanda/requirements" + } + }, + { + "displayName": "Zenodo DOI", + "id": "zenodo", "ref": { "enabled": false }, "repo": { - "label": "Fake Repo", - "placeholder": "" + "label": "Zenodo DOI", + "placeholder": "example: 10.5281/zenodo.3242074" } - } + } ] } From 1d6e8d48900bb8ef303b4c8f267b5d203e85457d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 04:24:21 +0000 Subject: [PATCH 37/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../static/js/components/LinkGenerator.jsx | 32 +++- binderhub/static/js/pages/HomePage.test.jsx | 178 ++++++++++++------ setupTests.js | 45 ++--- 3 files changed, 172 insertions(+), 83 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 8fe9465ea..8ae064159 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -27,10 +27,19 @@ function ProviderSelector({ > {selectedProvider.displayName} -
      +
        {providers.map((p) => (
      • - +
      • ))}
      @@ -70,7 +79,9 @@ function UrlSelector({ setUrlPath }) { return ( <> - +
      {KINDS.map((k) => (
    • - +
    • ))}
    @@ -187,7 +204,9 @@ export function LinkGenerator({
    - +
    - {launchUrl || "Fill in the fields to see a URL for sharing your Binder."} + {launchUrl || + "Fill in the fields to see a URL for sharing your Binder."}
    ); } - -const root = createRoot(document.getElementById("root")); -root.render(); diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx new file mode 100644 index 000000000..f5249fb17 --- /dev/null +++ b/binderhub/static/js/App.test.jsx @@ -0,0 +1,27 @@ +import { render, screen } from "@testing-library/react"; + +import { App } from "./App"; +import { MemoryRouter } from "react-router"; + +test("render Homepage", () => { + render( + + + , + ); + expect( + screen.queryByText( + /Turn a Git repo into a collection of interactive notebooks/, + ), + ).toBeInTheDocument(); +}); + +test("render About page", () => { + render( + + + , + ); + expect(screen.queryByText(/This is the about message/)).toBeInTheDocument(); + expect(screen.queryByText(/v123.456/)).toBeInTheDocument(); +}); diff --git a/binderhub/static/js/index.jsx b/binderhub/static/js/index.jsx new file mode 100644 index 000000000..69e7a5b4d --- /dev/null +++ b/binderhub/static/js/index.jsx @@ -0,0 +1,10 @@ +import { createRoot } from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import { App } from "./App"; + +const root = createRoot(document.getElementById("root")); +root.render( + + + , +); diff --git a/package.json b/package.json index aac5a05e5..8db0621a0 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ ], "moduleNameMapper": { "\\.css$": "identity-obj-proxy", + "\\.scss$": "identity-obj-proxy", "\\.ico$": "identity-obj-proxy" }, "setupFilesAfterEnv": [ diff --git a/setupTests.js b/setupTests.js index d0eb842f3..fd314cc30 100644 --- a/setupTests.js +++ b/setupTests.js @@ -17,6 +17,9 @@ Object.defineProperty(window, "matchMedia", { }); window.pageConfig = { + baseUrl: "/", + aboutMessage: "This is the about message", + binderVersion: "v123.456", repoProviders: [ { detect: { diff --git a/webpack.config.js b/webpack.config.js index db0d44a93..609148abb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,7 +7,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = { mode: "development", context: path.resolve(__dirname, "binderhub/static"), - entry: "./js/App.jsx", + entry: "./js/index.jsx", output: { path: path.resolve(__dirname, "binderhub/static/dist/"), filename: "bundle.js", From d8816cf41567975fa4e83660b43d7ce27ad9fb11 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Tue, 26 Nov 2024 22:28:37 -0800 Subject: [PATCH 41/95] Remove template based custom error and 404 pages --- binderhub/app.py | 4 +--- binderhub/base.py | 22 ---------------------- binderhub/templates/error.html | 16 ---------------- 3 files changed, 1 insertion(+), 41 deletions(-) delete mode 100644 binderhub/templates/error.html diff --git a/binderhub/app.py b/binderhub/app.py index 2b5e34484..c499fafea 100644 --- a/binderhub/app.py +++ b/binderhub/app.py @@ -42,7 +42,7 @@ ) from traitlets.config import Application -from .base import Custom404, VersionHandler +from .base import VersionHandler from .build import BuildExecutor, KubernetesBuildExecutor, KubernetesCleaner from .builder import BuildHandler from .events import EventLog @@ -1074,8 +1074,6 @@ def initialize(self, *args, **kwargs): ), (r"/.*", UIHandler), ] - # This needs to be the last handler in the list, because it needs to match "everything else" - handlers.append((r".*", Custom404)) handlers = self.add_url_prefix(self.base_url, handlers) if self.extra_static_path: handlers.insert( diff --git a/binderhub/base.py b/binderhub/base.py index 51adc1fe4..32920655d 100644 --- a/binderhub/base.py +++ b/binderhub/base.py @@ -2,7 +2,6 @@ import json import urllib.parse -from http.client import responses import jwt from jupyterhub.services.auth import HubOAuth, HubOAuthenticated @@ -204,31 +203,10 @@ def extract_message(self, exc_info): except Exception: return "" - def write_error(self, status_code, **kwargs): - exc_info = kwargs.get("exc_info") - message = "" - status_message = responses.get(status_code, "Unknown HTTP Error") - if exc_info: - message = self.extract_message(exc_info) - - self.render_template( - "error.html", - status_code=status_code, - status_message=status_message, - message=message, - ) - def options(self, *args, **kwargs): pass -class Custom404(BaseHandler): - """Raise a 404 error, rendering the error.html template""" - - def prepare(self): - raise web.HTTPError(404) - - class VersionHandler(BaseHandler): """Serve information about versions running""" diff --git a/binderhub/templates/error.html b/binderhub/templates/error.html deleted file mode 100644 index 093d4e3e6..000000000 --- a/binderhub/templates/error.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "page.html" %} - -{% block meta_social %} -{% endblock meta_social %} - -{% block main %} -
    -

    - {{status_code}}: {{status_message}} -

    - -

    - {{message}}. Note: Some errors disappear by refreshing the page. -

    -
    -{% endblock main %} From ddf6371f932732f68b56fddc52f8c552f46a4357 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Tue, 26 Nov 2024 22:38:53 -0800 Subject: [PATCH 42/95] Don't stop after only 2 test failures --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7c8b06471..144f60a94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ profile = "black" # ref: https://docs.pytest.org/en/stable/ # [tool.pytest.ini_options] -addopts = "--verbose --color=yes --durations=10 --maxfail=2" +addopts = "--verbose --color=yes --durations=10" asyncio_mode = "auto" testpaths = ["tests"] timeout = "60" From 54f6e04e10a71f8784e9bdeed6dca5ec25798b39 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 28 Nov 2024 11:24:01 +1100 Subject: [PATCH 43/95] Add Not Found page --- binderhub/static/js/App.jsx | 2 ++ binderhub/static/js/App.test.jsx | 9 +++++++++ binderhub/static/js/index.scss | 4 ++++ binderhub/static/js/pages/NotFoundPage.jsx | 20 ++++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 binderhub/static/js/pages/NotFoundPage.jsx diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 97f146e72..b56cbea2e 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -8,6 +8,7 @@ import "@fontsource/clear-sans/300.css"; import "@fontsource/clear-sans/400.css"; import { HomePage } from "./pages/HomePage.jsx"; import { AboutPage } from "./pages/AboutPage.jsx"; +import { NotFoundPage } from "./pages/NotFoundPage.jsx"; export const PAGE_CONFIG = window.pageConfig; @@ -83,6 +84,7 @@ export function App() { /> } /> + } />
    diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx index f5249fb17..dd8afd1fb 100644 --- a/binderhub/static/js/App.test.jsx +++ b/binderhub/static/js/App.test.jsx @@ -25,3 +25,12 @@ test("render About page", () => { expect(screen.queryByText(/This is the about message/)).toBeInTheDocument(); expect(screen.queryByText(/v123.456/)).toBeInTheDocument(); }); + +test("render Not Found page", () => { + render( + + + , + ); + expect(screen.queryByText(/Not Found/)).toBeInTheDocument(); +}); diff --git a/binderhub/static/js/index.scss b/binderhub/static/js/index.scss index 58bbf25f3..c6e0784d7 100644 --- a/binderhub/static/js/index.scss +++ b/binderhub/static/js/index.scss @@ -52,4 +52,8 @@ a { font-size: 1rem; } +.jumbotron { + margin-bottom: 100px; +} + @import "bootstrap-icons/font/bootstrap-icons.css"; diff --git a/binderhub/static/js/pages/NotFoundPage.jsx b/binderhub/static/js/pages/NotFoundPage.jsx new file mode 100644 index 000000000..8b361d975 --- /dev/null +++ b/binderhub/static/js/pages/NotFoundPage.jsx @@ -0,0 +1,20 @@ +export function NotFoundPage() { + return ( + <> +
    +

    + 404: Not Found +

    + +

    + Note: Some errors disappear by refreshing the page. +

    +
    +
    +
    +

    questions?
    join the discussion, read the docs, see the code

    +
    +
    + + ); +} From 7c2035a5580f54f8176a3e305c82f5cadf34e963 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 00:25:11 +0000 Subject: [PATCH 44/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- binderhub/static/js/pages/NotFoundPage.jsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/binderhub/static/js/pages/NotFoundPage.jsx b/binderhub/static/js/pages/NotFoundPage.jsx index 8b361d975..2a96651aa 100644 --- a/binderhub/static/js/pages/NotFoundPage.jsx +++ b/binderhub/static/js/pages/NotFoundPage.jsx @@ -2,9 +2,7 @@ export function NotFoundPage() { return ( <>
    -

    - 404: Not Found -

    +

    404: Not Found

    Note: Some errors disappear by refreshing the page. @@ -12,7 +10,15 @@ export function NotFoundPage() {

    -

    questions?
    join the discussion, read the docs, see the code

    +

    + questions? +
    + join the{" "} + discussion, + read the{" "} + docs, see + the code +

    From 2c87b24c67a4256481e227f02ad85cb6b7bfee00 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 5 Dec 2024 16:50:23 +1100 Subject: [PATCH 45/95] Run test_loading_page with Playwright --- .github/workflows/test.yml | 6 ++++++ binderhub/static/js/components/NBViewerIFrame.jsx | 2 +- binderhub/tests/test_main.py | 10 ++++------ conftest.py | 4 ++++ dev-requirements.txt | 2 ++ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 26cc61cbd..1b2f7f147 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -173,6 +173,9 @@ jobs: pip install --no-binary pycurl -r dev-requirements.txt -r helm-chart/images/binderhub/requirements.txt pip install -e . + - name: Install Playwright + run: playwright install + - name: Install JupyterHub chart for main tests if: matrix.test == 'main' run: | @@ -434,6 +437,9 @@ jobs: pip install ".[pycurl]" --no-binary pycurl pip install -e ".[pycurl]" --no-binary pycurl + - name: Install Playwright + run: playwright install + - name: Setup JupyterHub NPM dependencies run: npm install -g configurable-http-proxy diff --git a/binderhub/static/js/components/NBViewerIFrame.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx index b4f073711..025f88230 100644 --- a/binderhub/static/js/components/NBViewerIFrame.jsx +++ b/binderhub/static/js/components/NBViewerIFrame.jsx @@ -41,7 +41,7 @@ export function NBViewerIFrame({ spec }) { while we start a server for you.
    Your binder will open automatically when it is ready.

    - + ); } diff --git a/binderhub/tests/test_main.py b/binderhub/tests/test_main.py index f15396a20..9fd185d97 100644 --- a/binderhub/tests/test_main.py +++ b/binderhub/tests/test_main.py @@ -144,20 +144,18 @@ async def test_versions_handler(app): ), ], ) +@pytest.mark.playwright async def test_loading_page( - app, provider_prefix, repo, ref, path, path_type, status_code + app, provider_prefix, repo, ref, path, path_type, status_code, page ): - # repo = f'{org}/{repo_name}' spec = f"{repo}/{ref}" provider_spec = f"{provider_prefix}/{spec}" query = f"{path_type}path={path}" if path else "" uri = f"/v2/{provider_spec}?{query}" - r = await async_requests.get(app.url + uri) + r = page.goto(app.url + uri) assert r.status_code == status_code, f"{r.status_code} {uri}" if status_code == 200: - soup = BeautifulSoup(r.text, "html5lib") - assert soup.find(id="log-container") - nbviewer_url = soup.find(id="nbviewer-preview").find("iframe").attrs["src"] + nbviewer_url = page.get_by_test_id("log-container").get_attribute("src") r = await async_requests.get(nbviewer_url) assert r.status_code == 200, f"{r.status_code} {nbviewer_url}" diff --git a/conftest.py b/conftest.py index 92718736b..1f1eef5b2 100644 --- a/conftest.py +++ b/conftest.py @@ -3,6 +3,7 @@ options can only be defined here, not in binderhub/tests/conftest.py """ +import nest_asyncio def pytest_addoption(parser): @@ -12,3 +13,6 @@ def pytest_addoption(parser): default=False, help="Run tests marked with pytest.mark.helm", ) + +def pytest_configure(): + nest_asyncio.apply() diff --git a/dev-requirements.txt b/dev-requirements.txt index 0e39e1c36..80122bc23 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -12,3 +12,5 @@ pytest-cov pytest-timeout requests ruamel.yaml>=0.17.30 +pytest_playwright +nest-asyncio From cf1e6ccbb5a878200d725f720488f14d5913825e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 05:51:22 +0000 Subject: [PATCH 46/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- conftest.py | 2 ++ dev-requirements.txt | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/conftest.py b/conftest.py index 1f1eef5b2..78d7788fb 100644 --- a/conftest.py +++ b/conftest.py @@ -3,6 +3,7 @@ options can only be defined here, not in binderhub/tests/conftest.py """ + import nest_asyncio @@ -14,5 +15,6 @@ def pytest_addoption(parser): help="Run tests marked with pytest.mark.helm", ) + def pytest_configure(): nest_asyncio.apply() diff --git a/dev-requirements.txt b/dev-requirements.txt index 80122bc23..227babb56 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -6,11 +6,11 @@ jsonschema jupyter-repo2docker>=2021.08.0 jupyter_packaging>=0.10.4,<2 jupyterhub +nest-asyncio pytest pytest-asyncio pytest-cov pytest-timeout +pytest_playwright requests ruamel.yaml>=0.17.30 -pytest_playwright -nest-asyncio From cc4b55174985810fe6d237a04cccd65adc0d2f62 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 6 Dec 2024 14:09:42 -0800 Subject: [PATCH 47/95] s/status_code/status/ for playwright response object --- binderhub/tests/test_main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/tests/test_main.py b/binderhub/tests/test_main.py index 9fd185d97..801b74579 100644 --- a/binderhub/tests/test_main.py +++ b/binderhub/tests/test_main.py @@ -153,7 +153,7 @@ async def test_loading_page( query = f"{path_type}path={path}" if path else "" uri = f"/v2/{provider_spec}?{query}" r = page.goto(app.url + uri) - assert r.status_code == status_code, f"{r.status_code} {uri}" + assert r.status == status_code, f"{r.status} {uri}" if status_code == 200: nbviewer_url = page.get_by_test_id("log-container").get_attribute("src") r = await async_requests.get(nbviewer_url) From 22b83667a1daff32eeb3aadce1934eb0d33f1c27 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 6 Dec 2024 18:47:42 -0800 Subject: [PATCH 48/95] Remove excessive inline comments Makes the file hard to read. All these links are easily available via a web search + they may change over time and get out of date. --- pyproject.toml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 144f60a94..9327723e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,9 +8,6 @@ build-backend = "setuptools.build_meta" # black is used for autoformatting Python code -# -# ref: https://black.readthedocs.io/en/stable/ -# [tool.black] # target-version should be all supported versions, see # https://github.com/psf/black/issues/751#issuecomment-473066811 @@ -18,17 +15,11 @@ target-version = ["py38", "py39", "py310", "py311"] # isort is used for autoformatting Python code -# -# ref: https://pycqa.github.io/isort/ -# [tool.isort] profile = "black" # pytest is used for running Python based tests -# -# ref: https://docs.pytest.org/en/stable/ -# [tool.pytest.ini_options] addopts = "--verbose --color=yes --durations=10" asyncio_mode = "auto" @@ -36,9 +27,6 @@ testpaths = ["tests"] timeout = "60" # pytest-cov / coverage is used to measure code coverage of tests -# -# ref: https://coverage.readthedocs.io/en/stable/config.html -# [tool.coverage.run] omit = [ "binderhub/tests/*", From 74a71b73cd13515f2832729f7d470a23eeeceb11 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 6 Dec 2024 18:48:32 -0800 Subject: [PATCH 49/95] Remove unnecessary pytest mark --- binderhub/tests/test_main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/binderhub/tests/test_main.py b/binderhub/tests/test_main.py index 801b74579..0fa930f54 100644 --- a/binderhub/tests/test_main.py +++ b/binderhub/tests/test_main.py @@ -144,7 +144,6 @@ async def test_versions_handler(app): ), ], ) -@pytest.mark.playwright async def test_loading_page( app, provider_prefix, repo, ref, path, path_type, status_code, page ): From 26ec60fa4c278efdb4033e5063bc87e0d0ebb3dc Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 6 Dec 2024 18:49:03 -0800 Subject: [PATCH 50/95] Install firefox for tests, not chrome --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b2f7f147..38ff208f1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -173,8 +173,8 @@ jobs: pip install --no-binary pycurl -r dev-requirements.txt -r helm-chart/images/binderhub/requirements.txt pip install -e . - - name: Install Playwright - run: playwright install + - name: Install Playwright browser + run: playwright install firefox - name: Install JupyterHub chart for main tests if: matrix.test == 'main' @@ -437,8 +437,8 @@ jobs: pip install ".[pycurl]" --no-binary pycurl pip install -e ".[pycurl]" --no-binary pycurl - - name: Install Playwright - run: playwright install + - name: Install Playwright browser + run: playwright install firefox - name: Setup JupyterHub NPM dependencies run: npm install -g configurable-http-proxy From 422d38359323f7b04187e735d6e628ff316bae40 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 6 Dec 2024 19:44:43 -0800 Subject: [PATCH 51/95] Dynamically determine port binderhub listens on Allows using this in integration tests --- .../binderhub_config.py | 5 +---- .../jupyterhub_config.py | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/testing/local-binder-local-hub/binderhub_config.py b/testing/local-binder-local-hub/binderhub_config.py index 99efd1ee4..3deffcd43 100644 --- a/testing/local-binder-local-hub/binderhub_config.py +++ b/testing/local-binder-local-hub/binderhub_config.py @@ -33,14 +33,11 @@ 'See BinderHub on GitHub' ) -c.BinderHub.hub_url_local = "http://localhost:8000" - # Assert that we're running as a managed JupyterHub service # (otherwise c.BinderHub.hub_api_token is needed) assert os.getenv("JUPYTERHUB_API_TOKEN") c.BinderHub.base_url = os.getenv("JUPYTERHUB_SERVICE_PREFIX") -# JUPYTERHUB_BASE_URL may not include the host -# c.BinderHub.hub_url = os.getenv('JUPYTERHUB_BASE_URL') + c.BinderHub.hub_url = os.getenv("JUPYTERHUB_EXTERNAL_URL") or f"http://{hostip}:8000" if os.getenv("AUTH_ENABLED") == "1": diff --git a/testing/local-binder-local-hub/jupyterhub_config.py b/testing/local-binder-local-hub/jupyterhub_config.py index a45a8e8d6..f55110bb5 100644 --- a/testing/local-binder-local-hub/jupyterhub_config.py +++ b/testing/local-binder-local-hub/jupyterhub_config.py @@ -12,6 +12,16 @@ from binderhub.binderspawner_mixin import BinderSpawnerMixin + +def random_port() -> int: + """Get a single random port.""" + sock = socket.socket() + sock.bind(("", 0)) + port = sock.getsockname()[1] + sock.close() + return port + + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) hostip = s.getsockname()[0] @@ -60,12 +70,20 @@ class LocalContainerSpawner(BinderSpawnerMixin, DockerSpawner): binderhub_environment[env_var] = os.getenv(env_var) if auth_enabled: binderhub_environment["AUTH_ENABLED"] = "1" + +binderhub_port = random_port() + c.JupyterHub.services = [ { "name": binderhub_service_name, "admin": True, - "command": ["python", "-mbinderhub", f"--config={binderhub_config}"], - "url": "http://localhost:8585", + "command": [ + "python", + "-mbinderhub", + f"--config={binderhub_config}", + f"--port={binderhub_port}", + ], + "url": f"http://localhost:{binderhub_port}", "environment": binderhub_environment, } ] From 279e232040e0fd2cc8bc7738767319158ca84601 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 7 Dec 2024 18:26:07 -0800 Subject: [PATCH 52/95] Fix tests to match rewrite --- .../static/js/components/LinkGenerator.jsx | 5 ++++- .../static/js/components/NBViewerIFrame.jsx | 6 +++++- integration-tests/test_ui.py | 18 +++++++++--------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 8ae064159..2822408aa 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -241,7 +241,10 @@ export function LinkGenerator({
    -
    +
    {launchUrl || "Fill in the fields to see a URL for sharing your Binder."}
    diff --git a/binderhub/static/js/components/NBViewerIFrame.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx index 025f88230..2b35b10b6 100644 --- a/binderhub/static/js/components/NBViewerIFrame.jsx +++ b/binderhub/static/js/components/NBViewerIFrame.jsx @@ -41,7 +41,11 @@ export function NBViewerIFrame({ spec }) { while we start a server for you.
    Your binder will open automatically when it is ready.

    - +
    ); } diff --git a/integration-tests/test_ui.py b/integration-tests/test_ui.py index b613820fd..ec4887037 100644 --- a/integration-tests/test_ui.py +++ b/integration-tests/test_ui.py @@ -107,7 +107,7 @@ async def test_loading_page( r = page.goto(uri) assert r.status == status_code, f"{r.status} {uri}" if status_code == 200: - nbviewer_url = page.get_by_test_id("log-container").get_attribute("src") + nbviewer_url = page.get_by_test_id("nbviewer-iframe").get_attribute("src") r = await async_requests.get(nbviewer_url) assert r.status_code == 200, f"{r.status_code} {nbviewer_url}" @@ -134,7 +134,7 @@ async def test_loading_page( "master", "some file with spaces.ipynb", "file", - "v2/gh/binder-examples/requirements/master?labpath=some+file+with+spaces.ipynb", + "v2/gh/binder-examples/requirements/master?urlpath=%2Fdoc%2Ftree%2Fsome+file+with+spaces.ipynb", ), ( "binder-examples/requirements", @@ -151,24 +151,24 @@ async def test_main_page( resp = page.goto(local_hub_local_binder) assert resp.status == 200 - page.get_by_placeholder("GitHub repository name or URL").type(repo) + page.locator("[name='repository']").type(repo) if ref: - page.locator("#ref").type(ref) + page.locator("[name='ref']").type(ref) if path_type: - page.query_selector("#url-or-file-btn").click() + page.get_by_role("button", name="File").click() if path_type == "file": - page.locator("a:text-is('File')").click() + pass elif path_type == "url": - page.locator("a:text-is('URL')").click() + page.get_by_role("button", name="URL").click() else: raise ValueError(f"Unknown path_type {path_type}") if path: - page.locator("#filepath").type(path) + page.locator("[name='path']").type(path) assert ( - page.query_selector("#basic-url-snippet").inner_text() + page.get_by_test_id("launch-url").inner_text() == f"{local_hub_local_binder}{shared_url}" ) From 1965809f393511370c7f574f73b2a4aba7897343 Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Mon, 9 Dec 2024 14:42:10 +1100 Subject: [PATCH 53/95] Add handling for misconfigured specs --- binderhub/static/js/App.jsx | 2 +- binderhub/static/js/App.test.jsx | 18 ++++++++++++++ binderhub/static/js/components/ErrorPage.jsx | 26 ++++++++++++++++++++ binderhub/static/js/pages/LoadingPage.jsx | 22 ++++++++++++++--- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 binderhub/static/js/components/ErrorPage.jsx diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index b56cbea2e..4b50c372d 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -72,7 +72,7 @@ export function App() { } + element={} /> ))} { ); expect(screen.queryByText(/Not Found/)).toBeInTheDocument(); }); + +test("renders loading page", () => { + render( + + + , + ); + expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); +}); + +test("renders error for misconfigured repo", () => { + render( + + + , + ); + expect(screen.queryByText(/Spec is not of the form "user\/repo\/ref", provided: "userrepo\/main"/)).toBeInTheDocument(); +}); diff --git a/binderhub/static/js/components/ErrorPage.jsx b/binderhub/static/js/components/ErrorPage.jsx new file mode 100644 index 000000000..a9bd9c7f4 --- /dev/null +++ b/binderhub/static/js/components/ErrorPage.jsx @@ -0,0 +1,26 @@ +export function ErrorPage({ title, errorMessage }) { + return ( + <> +
    +

    { title }

    + +

    + {errorMessage} Note: Some errors disappear by refreshing the page. +

    +
    +
    +
    +

    + questions? +
    + join the{" "} + discussion, + read the{" "} + docs, see + the code +

    +
    +
    + + ); +} diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index 99468cdd4..91495ac61 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -6,6 +6,7 @@ import { NBViewerIFrame } from "../components/NBViewerIFrame.jsx"; import { LoadingIndicator } from "../components/LoadingIndicator.jsx"; import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; import { LaunchSpec, Spec } from "../spec.js"; +import { ErrorPage } from "../components/ErrorPage.jsx"; /** * @typedef {object} LoadingPageProps @@ -13,7 +14,7 @@ import { LaunchSpec, Spec } from "../spec.js"; * @param {LoadingPageProps} props * @returns */ -export function LoadingPage({ baseUrl }) { +export function LoadingPage({ baseUrl, provider }) { const [progressState, setProgressState] = useState(null); const params = useParams(); @@ -23,13 +24,26 @@ export function LoadingPage({ baseUrl }) { const [isLaunching, setIsLaunching] = useState(false); - const spec = new Spec(buildSpec, LaunchSpec.fromSearchParams(searchParams)); + const spec = new Spec(`${provider}/${buildSpec}`, LaunchSpec.fromSearchParams(searchParams)); + + const formatError = buildSpec.split("/").length !== 4; useEffect(() => { - // Start launching after the DOM has fully loaded - setTimeout(() => setIsLaunching(true), 1); + if (!formatError) { + // Start launching after the DOM has fully loaded + setTimeout(() => setIsLaunching(true), 1); + } }, []); + if (formatError) { + return ( + + ) + } + return ( <> From cc09f3633fcf046ef8853fe5d9a2265757eec12d Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Mon, 9 Dec 2024 14:43:50 +1100 Subject: [PATCH 54/95] Remove encoded url from loading-page test URL routing is now handled by React, so the page will always load with a 200 status --- integration-tests/test_ui.py | 1 - 1 file changed, 1 deletion(-) diff --git a/integration-tests/test_ui.py b/integration-tests/test_ui.py index ec4887037..e6c9003ad 100644 --- a/integration-tests/test_ui.py +++ b/integration-tests/test_ui.py @@ -53,7 +53,6 @@ async def local_hub_local_binder(request): ("provider_prefix", "repo", "ref", "path", "path_type", "status_code"), [ ("gh", "binderhub-ci-repos/requirements", "master", "", "", 200), - ("gh", "binderhub-ci-repos%2Frequirements", "master", "", "", 400), ("gh", "binderhub-ci-repos/requirements", "master/", "", "", 200), ( "gh", From cf6a2ee0abe6df59629e93145b6c5ef5e222121e Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Mon, 9 Dec 2024 16:28:59 +1100 Subject: [PATCH 55/95] Verify by matching URL --- binderhub/static/js/App.jsx | 2 +- binderhub/static/js/App.test.jsx | 9 +++++++++ binderhub/static/js/pages/LoadingPage.jsx | 7 +++---- integration-tests/test_ui.py | 4 ++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 4b50c372d..b56cbea2e 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -72,7 +72,7 @@ export function App() { } + element={} /> ))} { expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); +test("renders loading page with trailign slash", () => { + render( + + + , + ); + expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); +}); + test("renders error for misconfigured repo", () => { render( diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index 91495ac61..4a5aaafd5 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -14,7 +14,7 @@ import { ErrorPage } from "../components/ErrorPage.jsx"; * @param {LoadingPageProps} props * @returns */ -export function LoadingPage({ baseUrl, provider }) { +export function LoadingPage({ baseUrl }) { const [progressState, setProgressState] = useState(null); const params = useParams(); @@ -24,9 +24,8 @@ export function LoadingPage({ baseUrl, provider }) { const [isLaunching, setIsLaunching] = useState(false); - const spec = new Spec(`${provider}/${buildSpec}`, LaunchSpec.fromSearchParams(searchParams)); - - const formatError = buildSpec.split("/").length !== 4; + const spec = new Spec(buildSpec, LaunchSpec.fromSearchParams(searchParams)); + const formatError = buildSpec.split("/").filter(x => !!x).length !== 4; useEffect(() => { if (!formatError) { diff --git a/integration-tests/test_ui.py b/integration-tests/test_ui.py index e6c9003ad..684822159 100644 --- a/integration-tests/test_ui.py +++ b/integration-tests/test_ui.py @@ -107,8 +107,8 @@ async def test_loading_page( assert r.status == status_code, f"{r.status} {uri}" if status_code == 200: nbviewer_url = page.get_by_test_id("nbviewer-iframe").get_attribute("src") - r = await async_requests.get(nbviewer_url) - assert r.status_code == 200, f"{r.status_code} {nbviewer_url}" + expected_url = f"https://nbviewer.jupyter.org/github/{repo}/tree/{ref.replace("/", "")}" + assert nbviewer_url == expected_url @pytest.mark.parametrize( From 55d4318ec555b82af0e5df70cb04911ec324fc21 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 05:29:21 +0000 Subject: [PATCH 56/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- binderhub/static/js/App.test.jsx | 6 +++++- binderhub/static/js/components/ErrorPage.jsx | 2 +- binderhub/static/js/pages/LoadingPage.jsx | 4 ++-- integration-tests/test_ui.py | 4 +++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx index dd653d556..9e8768469 100644 --- a/binderhub/static/js/App.test.jsx +++ b/binderhub/static/js/App.test.jsx @@ -59,5 +59,9 @@ test("renders error for misconfigured repo", () => { , ); - expect(screen.queryByText(/Spec is not of the form "user\/repo\/ref", provided: "userrepo\/main"/)).toBeInTheDocument(); + expect( + screen.queryByText( + /Spec is not of the form "user\/repo\/ref", provided: "userrepo\/main"/, + ), + ).toBeInTheDocument(); }); diff --git a/binderhub/static/js/components/ErrorPage.jsx b/binderhub/static/js/components/ErrorPage.jsx index a9bd9c7f4..db6008ae9 100644 --- a/binderhub/static/js/components/ErrorPage.jsx +++ b/binderhub/static/js/components/ErrorPage.jsx @@ -2,7 +2,7 @@ export function ErrorPage({ title, errorMessage }) { return ( <>
    -

    { title }

    +

    {title}

    {errorMessage} Note: Some errors disappear by refreshing the page. diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index 4a5aaafd5..f75f5554a 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -25,7 +25,7 @@ export function LoadingPage({ baseUrl }) { const [isLaunching, setIsLaunching] = useState(false); const spec = new Spec(buildSpec, LaunchSpec.fromSearchParams(searchParams)); - const formatError = buildSpec.split("/").filter(x => !!x).length !== 4; + const formatError = buildSpec.split("/").filter((x) => !!x).length !== 4; useEffect(() => { if (!formatError) { @@ -40,7 +40,7 @@ export function LoadingPage({ baseUrl }) { title="400: Bad Request" errorMessage={`Spec is not of the form "user/repo/ref", provided: "${buildSpec.substring(buildSpec.indexOf("/") + 1)}".`} /> - ) + ); } return ( diff --git a/integration-tests/test_ui.py b/integration-tests/test_ui.py index 684822159..4b0215098 100644 --- a/integration-tests/test_ui.py +++ b/integration-tests/test_ui.py @@ -107,7 +107,9 @@ async def test_loading_page( assert r.status == status_code, f"{r.status} {uri}" if status_code == 200: nbviewer_url = page.get_by_test_id("nbviewer-iframe").get_attribute("src") - expected_url = f"https://nbviewer.jupyter.org/github/{repo}/tree/{ref.replace("/", "")}" + expected_url = ( + f"https://nbviewer.jupyter.org/github/{repo}/tree/{ref.replace("/", "")}" + ) assert nbviewer_url == expected_url From 3ee506989399ce1df29272f28745f690f5a4c635 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Mon, 9 Dec 2024 10:18:54 -0800 Subject: [PATCH 57/95] Remove 'some errors disappear' error I don't like it, because it doesn't tell you *what* errors will be fixed by refreshing the page --- binderhub/static/js/components/ErrorPage.jsx | 4 +--- binderhub/static/js/pages/NotFoundPage.jsx | 4 ---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/binderhub/static/js/components/ErrorPage.jsx b/binderhub/static/js/components/ErrorPage.jsx index db6008ae9..cfe01455d 100644 --- a/binderhub/static/js/components/ErrorPage.jsx +++ b/binderhub/static/js/components/ErrorPage.jsx @@ -4,9 +4,7 @@ export function ErrorPage({ title, errorMessage }) {

    {title}

    -

    - {errorMessage} Note: Some errors disappear by refreshing the page. -

    +

    {errorMessage}

    diff --git a/binderhub/static/js/pages/NotFoundPage.jsx b/binderhub/static/js/pages/NotFoundPage.jsx index 2a96651aa..9628c41f8 100644 --- a/binderhub/static/js/pages/NotFoundPage.jsx +++ b/binderhub/static/js/pages/NotFoundPage.jsx @@ -3,10 +3,6 @@ export function NotFoundPage() { <>

    404: Not Found

    - -

    - Note: Some errors disappear by refreshing the page. -

    From a6522be9c9a6008dc1270a03fb2738b4f227219e Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Mon, 9 Dec 2024 12:25:05 -0800 Subject: [PATCH 58/95] Add note about nbviewer URL --- binderhub/static/js/components/NBViewerIFrame.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/binderhub/static/js/components/NBViewerIFrame.jsx b/binderhub/static/js/components/NBViewerIFrame.jsx index 2b35b10b6..cf0c190ad 100644 --- a/binderhub/static/js/components/NBViewerIFrame.jsx +++ b/binderhub/static/js/components/NBViewerIFrame.jsx @@ -25,6 +25,7 @@ export function NBViewerIFrame({ spec }) { } let url; + // TODO: The nbviewer url should be configurable if (filePath) { url = `https://nbviewer.jupyter.org/github/${org}/${repo}/blob/${ref}/${filePath}`; } else { From d16f2ea946dfeaad91c81f13e37e543d64a4edfa Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Mon, 9 Dec 2024 13:26:54 -0800 Subject: [PATCH 59/95] Support build tokens --- binderhub/main.py | 20 ++++++++++++++++--- binderhub/static/js/App.jsx | 6 +++++- .../static/js/components/BuilderLauncher.jsx | 11 +++++++++- binderhub/static/js/pages/LoadingPage.jsx | 8 ++++++-- binderhub/tests/test_main.py | 17 +++++++++++----- 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/binderhub/main.py b/binderhub/main.py index 7d66c5303..9d5d20b83 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -2,6 +2,9 @@ Main handler classes for requests """ +import time + +import jwt from tornado.httputil import url_concat from tornado.web import authenticated @@ -16,6 +19,7 @@ class UIHandler(BaseHandler): def initialize(self): self.opengraph_title = "The Binder Project" + self.page_config = {} return super().initialize() @authenticated @@ -24,7 +28,7 @@ def get(self): repo_provider_class.display_config for repo_provider_class in self.settings["repo_providers"].values() ] - page_config = { + self.page_config |= { "baseUrl": self.settings["base_url"], "badgeBaseUrl": self.get_badge_base_url(), "logoUrl": self.static_url("logo.svg"), @@ -36,7 +40,7 @@ def get(self): } self.render_template( "page.html", - page_config=page_config, + page_config=self.page_config, extra_footer_scripts=self.settings["extra_footer_scripts"], opengraph_title=self.opengraph_title, ) @@ -54,10 +58,20 @@ def initialize(self, repo_provider): return super().initialize() @authenticated - def get(self, provider_id, _escaped_spec): + def get(self, provider_id, escaped_spec): prefix = "/v2/" + provider_id spec = self.get_spec_from_request(prefix).rstrip("/") + build_token = jwt.encode( + { + "exp": int(time.time()) + self.settings["build_token_expires_seconds"], + "aud": f"{provider_id}/{escaped_spec}", + "origin": self.token_origin(), + }, + key=self.settings["build_token_secret"], + algorithm="HS256", + ) + self.page_config["buildToken"] = build_token self.opengraph_title = ( f"{self.repo_provider.display_config['displayName']}: {spec}" ) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index b56cbea2e..77cdd5c16 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -43,6 +43,8 @@ export const PUBLIC_BASE_URL = PAGE_CONFIG.publicBaseUrl ? new URL(BASE_URL) : new URL(PAGE_CONFIG.baseUrl, window.location.href); +const BUILD_TOKEN = PAGE_CONFIG.buildToken; + export function App() { return ( <> @@ -72,7 +74,9 @@ export function App() { } + element={ + + } /> ))} } logBuffer @@ -18,6 +19,7 @@ import { Progress, PROGRESS_STATES } from "./Progress.jsx"; */ async function buildImage( baseUrl, + buildToken, spec, term, logBuffer, @@ -27,7 +29,11 @@ async function buildImage( setEnsureLogsVisible, ) { const buildEndPointURL = new URL("build/", baseUrl); - const image = new BinderRepository(spec.buildSpec, buildEndPointURL); + let options = {}; + if (buildToken) { + options.buildToken = buildToken; + } + const image = new BinderRepository(spec.buildSpec, buildEndPointURL, options); // Clear the last line written, so we start from scratch term.write("\x1b[2K\r"); logBuffer.length = 0; @@ -173,6 +179,7 @@ function ImageLogs({ /** * @typedef {object} BuildLauncherProps * @prop {URL} baseUrl + * @prop {string?} buildToken * @prop {Spec} spec * @prop {boolean} isLaunching * @prop {(l: boolean) => void} setIsLaunching @@ -184,6 +191,7 @@ function ImageLogs({ */ export function BuilderLauncher({ baseUrl, + buildToken, spec, isLaunching, setIsLaunching, @@ -199,6 +207,7 @@ export function BuilderLauncher({ if (isLaunching) { await buildImage( baseUrl, + buildToken, spec, term, logBufferRef.current, diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index f75f5554a..9286d61f1 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -11,10 +11,11 @@ import { ErrorPage } from "../components/ErrorPage.jsx"; /** * @typedef {object} LoadingPageProps * @prop {URL} baseUrl + * @prop {string?} buildToken * @param {LoadingPageProps} props * @returns */ -export function LoadingPage({ baseUrl }) { +export function LoadingPage({ baseUrl, buildToken }) { const [progressState, setProgressState] = useState(null); const params = useParams(); @@ -38,7 +39,9 @@ export function LoadingPage({ baseUrl }) { return ( ); } @@ -49,6 +52,7 @@ export function LoadingPage({ baseUrl }) { script") + page_config_str = ( + script_tag.string.strip().removeprefix("window.pageConfig = ").removesuffix(";") + ) + print(page_config_str) + page_config = json.loads(page_config_str) + print(page_config) + + assert "buildToken" in page_config + + build_token = page_config["buildToken"] payload = jwt.decode( build_token, audience=provider_spec, From aa19f64ff91f2e2dca4ad512e49e276ad7ffc6e2 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 11 Dec 2024 19:09:12 -0800 Subject: [PATCH 60/95] Handle situation where ref isn't enabled --- binderhub/static/js/components/LinkGenerator.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 2822408aa..c98c6303f 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -145,7 +145,9 @@ export function LinkGenerator({ let launchUrl = ""; let badgeMarkup = ""; - const ref = reference || selectedProvider.ref.default; + const ref = + reference || + (selectedProvider.ref.enabled ? selectedProvider.ref.default : ""); if (repo !== "" && (!selectedProvider.ref.enabled || ref !== "")) { launchUrl = makeShareableUrl( publicBaseUrl, From a947c82333bbff4dd5479d07056d2df861272f21 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Wed, 11 Dec 2024 19:19:46 -0800 Subject: [PATCH 61/95] Validate spec for each repo provider separately --- binderhub/repoproviders.py | 15 ++++++++++++++- binderhub/static/js/App.jsx | 11 +++++++++-- binderhub/static/js/pages/LoadingPage.jsx | 14 ++++++++------ 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index b91fde2e3..18983aa8a 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -226,6 +226,7 @@ class FakeProvider(RepoProvider): "displayName": "Fake", "id": "fake", "enabled": False, + "spec": {"validateRegex": ".*"}, "repo": { "label": "Fake Repo", "placeholder": "", @@ -262,6 +263,7 @@ class ZenodoProvider(RepoProvider): display_config = { "displayName": "Zenodo DOI", "id": "zenodo", + "spec": {"validateRegex": r"10\.\d+\/(.)+"}, "repo": { "label": "Zenodo DOI", "placeholder": "example: 10.5281/zenodo.3242074", @@ -314,6 +316,7 @@ class FigshareProvider(RepoProvider): display_config = { "displayName": "FigShare DOI", "id": "figshare", + "spec": {"validateRegex": r"10\.\d+\/(.)+"}, "repo": { "label": "FigShare DOI", "placeholder": "example: 10.6084/m9.figshare.9782777.v1", @@ -368,7 +371,11 @@ class DataverseProvider(RepoProvider): display_config = { "displayName": "Dataverse DOI", "id": "dataverse", - "repo": {"label": "FigShare DOI", "placeholder": "example: 10.7910/DVN/TJCLKP"}, + "spec": {"validateRegex": r"10\.\d+\/(.)+"}, + "repo": { + "label": "Dataverse DOI", + "placeholder": "example: 10.7910/DVN/TJCLKP", + }, "ref": {"enabled": False}, } @@ -435,6 +442,7 @@ class HydroshareProvider(RepoProvider): display_config = { "displayName": "Hydroshare resource", "id": "hydroshare", + "spec": {"validateRegex": r"[^/]+"}, "repo": {"label": "Hydroshare resource id or URL", "placeholder": ""}, "ref": {"enabled": False}, } @@ -501,6 +509,7 @@ class CKANProvider(RepoProvider): display_config = { "displayName": "CKAN dataset", "id": "ckan", + "spec": {"validateRegex": r"[^/]+"}, "repo": { "label": "CKAN dataset URL", "placeholder": "https://demo.ckan.org/dataset/sample-dataset-1", @@ -601,6 +610,7 @@ class GitRepoProvider(RepoProvider): display_config = { "displayName": "Git repository", "id": "git", + "spec": {"validateRegex": r"[^/]+/.+"}, "repo": { "label": "Arbitrary git repository URL", "placeholder": "example: http://git.example.com/repo", @@ -708,6 +718,7 @@ class GitLabRepoProvider(RepoProvider): display_config = { "displayName": "GitLab", "id": "gl", + "spec": {"validateRegex": r"[^/]+/.+"}, "detect": {"regex": "^(https?://gitlab.com/)?(?.*)"}, "repo": { "label": "GitLab repository name or URL", @@ -835,6 +846,7 @@ class GitHubRepoProvider(RepoProvider): display_config = { "displayName": "GitHub", "id": "gh", + "spec": {"validateRegex": r".+/.+/.+"}, "detect": {"regex": "^(https?://github.com/)?(?.*)"}, "repo": { "label": "GitHub repository name or URL", @@ -1110,6 +1122,7 @@ class GistRepoProvider(GitHubRepoProvider): display_config = { "displayName": "Gist", "id": "gist", + "spec": {"validateRegex": r".+/.+(/.+)"}, "detect": {"regex": "^(https?://gist.github.com/)?(?.*)"}, "repo": {"label": "Gist ID (username/gistId) or URL", "placeholder": ""}, "ref": {"enabled": True, "default": "HEAD"}, diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 77cdd5c16..65e81db9e 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -24,6 +24,9 @@ export const PAGE_CONFIG = window.pageConfig; * @prop {boolean} enabled * @prop {string} [default] * + * @typedef {object} SpecConfig + * @prop {string} validateRegex + * * @typedef {object} Provider * @prop {string} displayName * @prop {string} id @@ -73,9 +76,13 @@ export function App() { {PROVIDERS.map((p) => ( + } /> ))} diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index 9286d61f1..b79eeb858 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -12,21 +12,23 @@ import { ErrorPage } from "../components/ErrorPage.jsx"; * @typedef {object} LoadingPageProps * @prop {URL} baseUrl * @prop {string?} buildToken + * @prop {import("../App.jsx").Provider} provider * @param {LoadingPageProps} props * @returns */ -export function LoadingPage({ baseUrl, buildToken }) { +export function LoadingPage({ baseUrl, buildToken, provider }) { const [progressState, setProgressState] = useState(null); const params = useParams(); - const buildSpec = params["*"]; + const partialSpec = params["*"]; + const buildSpec = `${provider.id}/${partialSpec}`; const [searchParams, _] = useSearchParams(); const [isLaunching, setIsLaunching] = useState(false); const spec = new Spec(buildSpec, LaunchSpec.fromSearchParams(searchParams)); - const formatError = buildSpec.split("/").filter((x) => !!x).length !== 4; + const formatError = partialSpec.match(provider.spec.validateRegex) === null; useEffect(() => { if (!formatError) { @@ -39,9 +41,9 @@ export function LoadingPage({ baseUrl, buildToken }) { return ( ); } From 78bcdbf16a05ca07a533a5c6ea5caad99e7ebd1f Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Thu, 12 Dec 2024 17:16:54 +1100 Subject: [PATCH 62/95] Fix JS unit tests --- binderhub/static/js/App.test.jsx | 2 +- binderhub/static/js/pages/HomePage.test.jsx | 4 +--- setupTests.js | 2 ++ 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx index 9e8768469..91bbd1bc7 100644 --- a/binderhub/static/js/App.test.jsx +++ b/binderhub/static/js/App.test.jsx @@ -61,7 +61,7 @@ test("renders error for misconfigured repo", () => { ); expect( screen.queryByText( - /Spec is not of the form "user\/repo\/ref", provided: "userrepo\/main"/, + /Spec for this provider should match .+\/.+\/.+, provided: "userrepo\/main"/, ), ).toBeInTheDocument(); }); diff --git a/binderhub/static/js/pages/HomePage.test.jsx b/binderhub/static/js/pages/HomePage.test.jsx index 061cddb35..add1b8505 100644 --- a/binderhub/static/js/pages/HomePage.test.jsx +++ b/binderhub/static/js/pages/HomePage.test.jsx @@ -166,8 +166,6 @@ test("change source type", async () => { }); await user.type(repositoryField, "10.5282/zenodo.3242075"); expect( - screen.getByText( - "http://local.com/v2/zenodo/10.5282/zenodo.3242075/undefined", - ), + screen.getByText("http://local.com/v2/zenodo/10.5282/zenodo.3242075/"), ).toBeInTheDocument(); }); diff --git a/setupTests.js b/setupTests.js index fd314cc30..ac5dca4bf 100644 --- a/setupTests.js +++ b/setupTests.js @@ -27,6 +27,7 @@ window.pageConfig = { }, displayName: "GitHub", id: "gh", + spec: { validateRegex: /.+\/.+\/.+/ }, ref: { default: "HEAD", enabled: true, @@ -40,6 +41,7 @@ window.pageConfig = { { displayName: "Zenodo DOI", id: "zenodo", + spec: { validateRegex: /10\.\d+\/(.)+/ }, ref: { enabled: false, }, From 771b52bd3060bc77b86d34a80fec980c9f786966 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 12 Dec 2024 14:16:59 -0800 Subject: [PATCH 63/95] Add info about wether repo should be urlencoded or not --- binderhub/repoproviders.py | 24 ++++++++++++++----- binderhub/static/js/App.jsx | 1 + .../static/js/components/LinkGenerator.jsx | 12 +++++++++- binderhub/static/js/pages/HomePage.jsx | 5 +++- binderhub/static/js/spec.js | 1 + 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index 18983aa8a..8910c2037 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -227,10 +227,7 @@ class FakeProvider(RepoProvider): "id": "fake", "enabled": False, "spec": {"validateRegex": ".*"}, - "repo": { - "label": "Fake Repo", - "placeholder": "", - }, + "repo": {"label": "Fake Repo", "placeholder": "", "urlEncode": False}, "ref": { "enabled": False, }, @@ -267,6 +264,7 @@ class ZenodoProvider(RepoProvider): "repo": { "label": "Zenodo DOI", "placeholder": "example: 10.5281/zenodo.3242074", + "urlEncode": False, }, "ref": {"enabled": False}, } @@ -320,6 +318,7 @@ class FigshareProvider(RepoProvider): "repo": { "label": "FigShare DOI", "placeholder": "example: 10.6084/m9.figshare.9782777.v1", + "urlEncode": False, }, "ref": {"enabled": False}, } @@ -375,6 +374,7 @@ class DataverseProvider(RepoProvider): "repo": { "label": "Dataverse DOI", "placeholder": "example: 10.7910/DVN/TJCLKP", + "urlEncode": False, }, "ref": {"enabled": False}, } @@ -443,7 +443,11 @@ class HydroshareProvider(RepoProvider): "displayName": "Hydroshare resource", "id": "hydroshare", "spec": {"validateRegex": r"[^/]+"}, - "repo": {"label": "Hydroshare resource id or URL", "placeholder": ""}, + "repo": { + "label": "Hydroshare resource id or URL", + "placeholder": "", + "urlEncode": True, + }, "ref": {"enabled": False}, } @@ -513,6 +517,7 @@ class CKANProvider(RepoProvider): "repo": { "label": "CKAN dataset URL", "placeholder": "https://demo.ckan.org/dataset/sample-dataset-1", + "urlEncode": True, }, "ref": {"enabled": False}, } @@ -614,6 +619,7 @@ class GitRepoProvider(RepoProvider): "repo": { "label": "Arbitrary git repository URL", "placeholder": "example: http://git.example.com/repo", + "urlEncode": True, }, "ref": {"enabled": True, "default": "HEAD"}, } @@ -723,6 +729,7 @@ class GitLabRepoProvider(RepoProvider): "repo": { "label": "GitLab repository name or URL", "placeholder": "example: https://gitlab.com/mosaik/examples/mosaik-tutorials-on-binder or mosaik/examples/mosaik-tutorials-on-binder", + "urlEncode": True, }, "ref": {"enabled": True, "default": "HEAD"}, } @@ -851,6 +858,7 @@ class GitHubRepoProvider(RepoProvider): "repo": { "label": "GitHub repository name or URL", "placeholder": "example: yuvipanda/requirements or https://github.com/yuvipanda/requirements", + "urlEncode": False, }, "ref": {"enabled": True, "default": "HEAD"}, } @@ -1124,7 +1132,11 @@ class GistRepoProvider(GitHubRepoProvider): "id": "gist", "spec": {"validateRegex": r".+/.+(/.+)"}, "detect": {"regex": "^(https?://gist.github.com/)?(?.*)"}, - "repo": {"label": "Gist ID (username/gistId) or URL", "placeholder": ""}, + "repo": { + "label": "Gist ID (username/gistId) or URL", + "placeholder": "", + "urlEncode": False, + }, "ref": {"enabled": True, "default": "HEAD"}, } diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 65e81db9e..2b12f372c 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -16,6 +16,7 @@ export const PAGE_CONFIG = window.pageConfig; * @typedef {object} RepoConfig * @prop {string} label * @prop {string} placeholder + * @prop {boolean} urlEncode * * @typedef {object} DetectConfig * @prop {string} regex diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index c98c6303f..a4c8709d0 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -117,8 +117,18 @@ function UrlSelector({ setUrlPath }) { ); } +/** + * + * @param {URL} publicBaseUrl + * @param {import("../App").Provider} provider + * @param {string} repo + * @param {string} ref + * @param {string} urlPath + * @returns + */ function makeShareableUrl(publicBaseUrl, provider, repo, ref, urlPath) { - const url = new URL(`v2/${provider.id}/${repo}/${ref}`, publicBaseUrl); + const encodedRepo = provider.repo.urlEncode ? encodeURIComponent(repo) : repo; + const url = new URL(`v2/${provider.id}/${encodedRepo}/${ref}`, publicBaseUrl); if (urlPath) { url.searchParams.set("urlpath", urlPath); } diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 8e087eb0d..522d9120e 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -23,13 +23,16 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { const [progressState, setProgressState] = useState(null); useEffect(() => { + const encodedRepo = selectedProvider.repo.urlEncode + ? encodeURIComponent(repo) + : repo; let actualRef = ""; if (selectedProvider.ref.enabled) { actualRef = ref !== "" ? ref : selectedProvider.ref.default; } setSpec( new Spec( - `${selectedProvider.id}/${repo}/${actualRef}`, + `${selectedProvider.id}/${encodedRepo}/${actualRef}`, new LaunchSpec(urlPath), ), ); diff --git a/binderhub/static/js/spec.js b/binderhub/static/js/spec.js index 28520838e..cfd720e55 100644 --- a/binderhub/static/js/spec.js +++ b/binderhub/static/js/spec.js @@ -67,6 +67,7 @@ export class Spec { */ constructor(buildSpec, launchSpec) { this.buildSpec = buildSpec; + console.log(`spec is ${this.buildSpec}`); this.launchSpec = launchSpec; } } From 8d0f08981d10e4b77e11a383259b15a1e830a438 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 12 Dec 2024 15:15:55 -0800 Subject: [PATCH 64/95] Switch from react-router v6 to wouter - react-router doesn't support getting unencoded path params, and we need that for parsing specs: https://github.com/remix-run/react-router/issues/7173#issuecomment-1186260791 - wouter supports regexes in paths, so we can actually do validation in the routing layer itself - react-router v7 is out, and we would have had to do a migration anyway. --- binderhub/static/js/App.jsx | 50 +++++++++++++---------- binderhub/static/js/index.jsx | 7 +--- binderhub/static/js/pages/LoadingPage.jsx | 7 ++-- package.json | 3 +- 4 files changed, 33 insertions(+), 34 deletions(-) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 2b12f372c..a0736cf4c 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -1,5 +1,5 @@ import { LoadingPage } from "./pages/LoadingPage.jsx"; -import { Route, Routes } from "react-router-dom"; +import { Route, Router, Switch } from "wouter"; import "bootstrap/js/dist/dropdown.js"; import "./index.scss"; @@ -34,6 +34,7 @@ export const PAGE_CONFIG = window.pageConfig; * @prop {DetectConfig} [detect] * @prop {RepoConfig} repo * @prop {RefConfig} ref + * @prop {SpecConfig} spec * */ /** @@ -50,6 +51,12 @@ export const PUBLIC_BASE_URL = PAGE_CONFIG.publicBaseUrl const BUILD_TOKEN = PAGE_CONFIG.buildToken; export function App() { + // Wouter's component requires *not* having trailing slash to function + // the way we ant + const baseRouteUrl = + PAGE_CONFIG.baseUrl.slice(-1) == "/" + ? PAGE_CONFIG.baseUrl.slice(0, -1) + : PAGE_CONFIG.BASE_URL; return ( <> {PAGE_CONFIG.bannerHtml && ( @@ -63,41 +70,40 @@ export function App() {
    - - + + - } - /> - {PROVIDERS.map((p) => ( - + + {PROVIDERS.map((p) => ( + ${p.spec.validateRegex})`} + > - } - /> - ))} - + ))} + + - } - /> - } /> - +
    + + + + +
    diff --git a/binderhub/static/js/index.jsx b/binderhub/static/js/index.jsx index 69e7a5b4d..aa962b9c2 100644 --- a/binderhub/static/js/index.jsx +++ b/binderhub/static/js/index.jsx @@ -1,10 +1,5 @@ import { createRoot } from "react-dom/client"; -import { BrowserRouter } from "react-router-dom"; import { App } from "./App"; const root = createRoot(document.getElementById("root")); -root.render( - - - , -); +root.render(); diff --git a/binderhub/static/js/pages/LoadingPage.jsx b/binderhub/static/js/pages/LoadingPage.jsx index b79eeb858..5c1cba6f4 100644 --- a/binderhub/static/js/pages/LoadingPage.jsx +++ b/binderhub/static/js/pages/LoadingPage.jsx @@ -1,7 +1,6 @@ import { useEffect, useState } from "react"; import { BuilderLauncher } from "../components/BuilderLauncher.jsx"; -import { useParams } from "react-router"; -import { useSearchParams } from "react-router-dom"; +import { useParams, useSearch } from "wouter"; import { NBViewerIFrame } from "../components/NBViewerIFrame.jsx"; import { LoadingIndicator } from "../components/LoadingIndicator.jsx"; import { FaviconUpdater } from "../components/FaviconUpdater.jsx"; @@ -20,10 +19,10 @@ export function LoadingPage({ baseUrl, buildToken, provider }) { const [progressState, setProgressState] = useState(null); const params = useParams(); - const partialSpec = params["*"]; + const partialSpec = params["0"]; const buildSpec = `${provider.id}/${partialSpec}`; - const [searchParams, _] = useSearchParams(); + const searchParams = new URLSearchParams(useSearch()); const [isLaunching, setIsLaunching] = useState(false); diff --git a/package.json b/package.json index 8db0621a0..f8d78d1e2 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,7 @@ "jquery": "^3.6.4", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router": "^6.23.1", - "react-router-dom": "^6.23.1", + "wouter": "^3.3.5", "xterm": "^5.1.0", "xterm-addon-fit": "^0.7.0" }, From 424f83174eb8386f1b7b1de2655db90c560030bb Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 12 Dec 2024 15:22:42 -0800 Subject: [PATCH 65/95] Generate build tokens correctly --- binderhub/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/binderhub/main.py b/binderhub/main.py index 9d5d20b83..4f969e4dc 100644 --- a/binderhub/main.py +++ b/binderhub/main.py @@ -58,14 +58,14 @@ def initialize(self, repo_provider): return super().initialize() @authenticated - def get(self, provider_id, escaped_spec): + def get(self, provider_id, _escaped_spec): prefix = "/v2/" + provider_id - spec = self.get_spec_from_request(prefix).rstrip("/") + spec = self.get_spec_from_request(prefix) build_token = jwt.encode( { "exp": int(time.time()) + self.settings["build_token_expires_seconds"], - "aud": f"{provider_id}/{escaped_spec}", + "aud": f"{provider_id}/{spec}", "origin": self.token_origin(), }, key=self.settings["build_token_secret"], From ba212f58b8716fe4a29d49cec938704c5cba79ed Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 12 Dec 2024 16:12:37 -0800 Subject: [PATCH 66/95] Fix *some* jest tests --- binderhub/static/js/App.jsx | 10 ++++---- binderhub/static/js/App.test.jsx | 43 +++++++++----------------------- binderhub/static/js/spec.js | 1 - package.json | 8 +++++- 4 files changed, 24 insertions(+), 38 deletions(-) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index a0736cf4c..03c913141 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -50,13 +50,13 @@ export const PUBLIC_BASE_URL = PAGE_CONFIG.publicBaseUrl const BUILD_TOKEN = PAGE_CONFIG.buildToken; -export function App() { +export function App({ routerHook }) { // Wouter's component requires *not* having trailing slash to function // the way we ant const baseRouteUrl = - PAGE_CONFIG.baseUrl.slice(-1) == "/" - ? PAGE_CONFIG.baseUrl.slice(0, -1) - : PAGE_CONFIG.BASE_URL; + BASE_URL.pathname.slice(-1) == "/" + ? BASE_URL.pathname.slice(0, -1) + : BASE_URL.pathname; return ( <> {PAGE_CONFIG.bannerHtml && ( @@ -70,7 +70,7 @@ export function App() {
    - + { - render( - - - , - ); + render(); expect( screen.queryByText( /Turn a Git repo into a collection of interactive notebooks/, @@ -17,48 +13,33 @@ test("render Homepage", () => { }); test("render About page", () => { - render( - - - , - ); + const { hook } = memoryLocation({ path: "/about" }); + render(); expect(screen.queryByText(/This is the about message/)).toBeInTheDocument(); expect(screen.queryByText(/v123.456/)).toBeInTheDocument(); }); test("render Not Found page", () => { - render( - - - , - ); + const { hook } = memoryLocation({ path: "/not-found" }); + render(); expect(screen.queryByText(/Not Found/)).toBeInTheDocument(); }); test("renders loading page", () => { - render( - - - , - ); + const { hook } = memoryLocation({ path: "/v2/gh/user/repo/main" }); + render(); expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); test("renders loading page with trailign slash", () => { - render( - - - , - ); + const { hook } = memoryLocation({ path: "/v2/gh/user/repo/main/" }); + render(); expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); test("renders error for misconfigured repo", () => { - render( - - - , - ); + const { hook } = memoryLocation({ path: "/v2/gh/userrep/main/" }); + render(); expect( screen.queryByText( /Spec for this provider should match .+\/.+\/.+, provided: "userrepo\/main"/, diff --git a/binderhub/static/js/spec.js b/binderhub/static/js/spec.js index cfd720e55..28520838e 100644 --- a/binderhub/static/js/spec.js +++ b/binderhub/static/js/spec.js @@ -67,7 +67,6 @@ export class Spec { */ constructor(buildSpec, launchSpec) { this.buildSpec = buildSpec; - console.log(`spec is ${this.buildSpec}`); this.launchSpec = launchSpec; } } diff --git a/package.json b/package.json index f8d78d1e2..6f896ae49 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,12 @@ }, "setupFilesAfterEnv": [ "/setupTests.js" - ] + ], + "transformIgnorePatterns": [ + "/node_modules/(?!wouter)" + ], + "transform": { + "\\.[jt]sx?$": "babel-jest" + } } } From 2f2b3276b615a077b116488a2c2531cd965ed83f Mon Sep 17 00:00:00 2001 From: Oliver Roick Date: Fri, 13 Dec 2024 16:42:27 +1100 Subject: [PATCH 67/95] Fix route regex in Jest config --- binderhub/static/js/App.test.jsx | 14 ++++++++------ setupTests.js | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx index 2ee96417f..5a840a93e 100644 --- a/binderhub/static/js/App.test.jsx +++ b/binderhub/static/js/App.test.jsx @@ -31,7 +31,7 @@ test("renders loading page", () => { expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); -test("renders loading page with trailign slash", () => { +test("renders loading page with trailing slash", () => { const { hook } = memoryLocation({ path: "/v2/gh/user/repo/main/" }); render(); expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); @@ -40,9 +40,11 @@ test("renders loading page with trailign slash", () => { test("renders error for misconfigured repo", () => { const { hook } = memoryLocation({ path: "/v2/gh/userrep/main/" }); render(); - expect( - screen.queryByText( - /Spec for this provider should match .+\/.+\/.+, provided: "userrepo\/main"/, - ), - ).toBeInTheDocument(); + expect(screen.queryByText(/Not Found/)).toBeInTheDocument(); +}); + +test("renders loading page with trailing slash", () => { + const { hook } = memoryLocation({ path: "/v2/zenodo/10.5281/zenodo.3242074/" }); + render(); + expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); diff --git a/setupTests.js b/setupTests.js index ac5dca4bf..0a4a8dce4 100644 --- a/setupTests.js +++ b/setupTests.js @@ -27,7 +27,7 @@ window.pageConfig = { }, displayName: "GitHub", id: "gh", - spec: { validateRegex: /.+\/.+\/.+/ }, + spec: { validateRegex: ".+\\/.+\\/.+" }, ref: { default: "HEAD", enabled: true, @@ -41,7 +41,7 @@ window.pageConfig = { { displayName: "Zenodo DOI", id: "zenodo", - spec: { validateRegex: /10\.\d+\/(.)+/ }, + spec: { validateRegex: "10\\.\\d+\\/(.)+" }, ref: { enabled: false, }, From b30a9e993cba245cc82bf1a7d80782c210bae2dc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 05:42:51 +0000 Subject: [PATCH 68/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- binderhub/static/js/App.test.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/binderhub/static/js/App.test.jsx b/binderhub/static/js/App.test.jsx index 5a840a93e..35ae6de0a 100644 --- a/binderhub/static/js/App.test.jsx +++ b/binderhub/static/js/App.test.jsx @@ -44,7 +44,9 @@ test("renders error for misconfigured repo", () => { }); test("renders loading page with trailing slash", () => { - const { hook } = memoryLocation({ path: "/v2/zenodo/10.5281/zenodo.3242074/" }); + const { hook } = memoryLocation({ + path: "/v2/zenodo/10.5281/zenodo.3242074/", + }); render(); expect(screen.queryByText(/Launching your Binder/)).toBeInTheDocument(); }); From bded39431cda8659ff65f5af273b8ff80d4def77 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 08:30:43 -0800 Subject: [PATCH 69/95] Remove jquery No longer used! --- package.json | 1 - webpack.config.js | 4 ---- 2 files changed, 5 deletions(-) diff --git a/package.json b/package.json index 6f896ae49..8bc36bcfe 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "clipboard": "^2.0.11", "configurable-http-proxy": "^4.6.2", "copy-to-clipboard": "^3.3.3", - "jquery": "^3.6.4", "react": "^18.3.1", "react-dom": "^18.3.1", "wouter": "^3.3.5", diff --git a/webpack.config.js b/webpack.config.js index 609148abb..f2838ec97 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,10 +14,6 @@ module.exports = { publicPath: "auto", }, plugins: [ - new webpack.ProvidePlugin({ - $: "jquery", - jQuery: "jquery", - }), new MiniCssExtractPlugin({ filename: "styles.css", }), From 352e4c1be4260f15f4b88d8b1b893497c48fdaac Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 14:27:26 -0800 Subject: [PATCH 70/95] Move chp to a dev dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8bc36bcfe..903565b29 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", "clipboard": "^2.0.11", - "configurable-http-proxy": "^4.6.2", "copy-to-clipboard": "^3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -24,6 +23,7 @@ "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", + "configurable-http-proxy": "^4.6.2", "@types/jest": "^29.5.5", "@whatwg-node/fetch": "^0.9.17", "autoprefixer": "^10.4.19", From 42708a3c85165680244c3096f9df66224efec240 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 14:30:51 -0800 Subject: [PATCH 71/95] Upgrade version of xtermjs --- binderhub/static/js/components/BuilderLauncher.jsx | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/binderhub/static/js/components/BuilderLauncher.jsx b/binderhub/static/js/components/BuilderLauncher.jsx index 1ccecbdd9..5fc724ba8 100644 --- a/binderhub/static/js/components/BuilderLauncher.jsx +++ b/binderhub/static/js/components/BuilderLauncher.jsx @@ -1,8 +1,8 @@ import { BinderRepository } from "@jupyterhub/binderhub-client"; import { useEffect, useRef, useState } from "react"; -import { Terminal } from "xterm"; -import { FitAddon } from "xterm-addon-fit"; -import "xterm/css/xterm.css"; +import { Terminal } from "@xterm/xterm"; +import { FitAddon } from "@xterm/addon-fit"; +import "@xterm/xterm/css/xterm.css"; import { Progress, PROGRESS_STATES } from "./Progress.jsx"; /** diff --git a/package.json b/package.json index 903565b29..5fc901f0d 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "wouter": "^3.3.5", - "xterm": "^5.1.0", - "xterm-addon-fit": "^0.7.0" + "@xterm/xterm": "^5.5.0", + "@xterm/addon-fit": "^0.9.0" }, "devDependencies": { "@babel/cli": "^7.21.0", From ac62ba7c29bbffe37175cc26694345115d79fa46 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 20:33:08 -0800 Subject: [PATCH 72/95] Remove unused 'clipboard' library --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 5fc901f0d..6b04e442a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "@types/react": "^18.3.2", "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", - "clipboard": "^2.0.11", "copy-to-clipboard": "^3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", From 49d0f8650a7148937de7f6c97c0103c1b99013f7 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 20:33:44 -0800 Subject: [PATCH 73/95] Write a clearer description for package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b04e442a..9b8a074a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "binderhub", - "description": "BinderHub's web user interface involves javascript built by this node package.", + "description": "Frontend Interface for BinderHub", "dependencies": { "@fontsource/clear-sans": "^5.0.11", "@types/react": "^18.3.2", From c089327b5bb90db5b1a8072329f2670e0c871264 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 20:34:35 -0800 Subject: [PATCH 74/95] Mark the binderhub package itself as private This shouldn't be published to npm --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 9b8a074a3..db9cf19d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "binderhub", "description": "Frontend Interface for BinderHub", + "private": true, "dependencies": { "@fontsource/clear-sans": "^5.0.11", "@types/react": "^18.3.2", From 0fe56aede89ef02efde0f37620eea5508de1389a Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 20:35:10 -0800 Subject: [PATCH 75/95] Move react types to dev dependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db9cf19d4..d93e72288 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "private": true, "dependencies": { "@fontsource/clear-sans": "^5.0.11", - "@types/react": "^18.3.2", "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", "copy-to-clipboard": "^3.3.3", @@ -20,6 +19,7 @@ "@babel/eslint-parser": "^7.22.15", "@babel/preset-env": "^7.21.4", "@babel/preset-react": "^7.24.1", + "@types/react": "^18.3.2", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", From 73cc8f4f355e07462f6d4410b2f1b242f69a72fb Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 13 Dec 2024 21:19:50 -0800 Subject: [PATCH 76/95] Upgrade version of react & related packages --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d93e72288..1ff2e5c7a 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", "copy-to-clipboard": "^3.3.3", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", "wouter": "^3.3.5", "@xterm/xterm": "^5.5.0", "@xterm/addon-fit": "^0.9.0" @@ -18,10 +18,10 @@ "@babel/core": "^7.21.4", "@babel/eslint-parser": "^7.22.15", "@babel/preset-env": "^7.21.4", - "@babel/preset-react": "^7.24.1", - "@types/react": "^18.3.2", + "@babel/preset-react": "^7.26.3", + "@types/react": "^19.0.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", + "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "configurable-http-proxy": "^4.6.2", "@types/jest": "^29.5.5", @@ -32,7 +32,7 @@ "css-loader": "^6.11.0", "eslint": "^8.38.0", "eslint-plugin-jest": "^27.4.2", - "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react": "^7.37.2", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", From dcd6bb18eded1e5c90d7b8d947b10be751a66de2 Mon Sep 17 00:00:00 2001 From: Yuvi Panda Date: Sat, 14 Dec 2024 15:29:28 -0800 Subject: [PATCH 77/95] Clarify Gist is GitHub Gist Co-authored-by: Simon Li --- binderhub/repoproviders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index 8910c2037..c5d310d97 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -1128,7 +1128,7 @@ class GistRepoProvider(GitHubRepoProvider): display_name = "Gist" display_config = { - "displayName": "Gist", + "displayName": "GitHub Gist", "id": "gist", "spec": {"validateRegex": r".+/.+(/.+)"}, "detect": {"regex": "^(https?://gist.github.com/)?(?.*)"}, From 9a73e0057e0e496428955d08a6879b476f60cbe7 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 14 Dec 2024 15:30:23 -0800 Subject: [PATCH 78/95] Remove unused display_name property --- binderhub/repoproviders.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index c5d310d97..d947c7cfc 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -269,8 +269,6 @@ class ZenodoProvider(RepoProvider): "ref": {"enabled": False}, } - display_name = "Zenodo DOI" - async def get_resolved_ref(self): client = AsyncHTTPClient() req = HTTPRequest(f"https://doi.org/{self.spec}", user_agent="BinderHub") @@ -309,8 +307,6 @@ class FigshareProvider(RepoProvider): name = Unicode("Figshare") - display_name = "Figshare DOI" - display_config = { "displayName": "FigShare DOI", "id": "figshare", @@ -365,8 +361,6 @@ def get_build_slug(self): class DataverseProvider(RepoProvider): name = Unicode("Dataverse") - display_name = "Dataverse DOI" - display_config = { "displayName": "Dataverse DOI", "id": "dataverse", @@ -437,8 +431,6 @@ class HydroshareProvider(RepoProvider): name = Unicode("Hydroshare") - display_name = "Hydroshare resource" - display_config = { "displayName": "Hydroshare resource", "id": "hydroshare", @@ -508,8 +500,6 @@ class CKANProvider(RepoProvider): name = Unicode("CKAN") - display_name = "CKAN dataset" - display_config = { "displayName": "CKAN dataset", "id": "ckan", @@ -610,8 +600,6 @@ class GitRepoProvider(RepoProvider): name = Unicode("Git") - display_name = "Git repository" - display_config = { "displayName": "Git repository", "id": "git", @@ -719,8 +707,6 @@ class GitLabRepoProvider(RepoProvider): name = Unicode("GitLab") - display_name = "GitLab.com" - display_config = { "displayName": "GitLab", "id": "gl", @@ -863,8 +849,6 @@ class GitHubRepoProvider(RepoProvider): "ref": {"enabled": True, "default": "HEAD"}, } - display_name = "GitHub" - # shared cache for resolved refs cache = Cache(1024) @@ -1125,8 +1109,6 @@ class GistRepoProvider(GitHubRepoProvider): name = Unicode("Gist") - display_name = "Gist" - display_config = { "displayName": "GitHub Gist", "id": "gist", From 4d670a5dd1377336d18b988025940e8908db007e Mon Sep 17 00:00:00 2001 From: Yuvi Panda Date: Sat, 14 Dec 2024 15:36:31 -0800 Subject: [PATCH 79/95] Fix typo Co-authored-by: Simon Li --- binderhub/static/js/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 03c913141..6586dd7f1 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -52,7 +52,7 @@ const BUILD_TOKEN = PAGE_CONFIG.buildToken; export function App({ routerHook }) { // Wouter's component requires *not* having trailing slash to function - // the way we ant + // the way we want const baseRouteUrl = BASE_URL.pathname.slice(-1) == "/" ? BASE_URL.pathname.slice(0, -1) From b498b2350c86ea8ef0b6d01e77a6078d0b631a3e Mon Sep 17 00:00:00 2001 From: Yuvi Panda Date: Sat, 14 Dec 2024 15:37:19 -0800 Subject: [PATCH 80/95] Fix typo Co-authored-by: Simon Li --- binderhub/static/js/components/HowItWorks.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/static/js/components/HowItWorks.jsx b/binderhub/static/js/components/HowItWorks.jsx index e6091d758..24444fd0b 100644 --- a/binderhub/static/js/components/HowItWorks.jsx +++ b/binderhub/static/js/components/HowItWorks.jsx @@ -64,7 +64,7 @@ export function HowItWorks() {

    Interact with your notebooks in a live environment!

    {" "} - JupyterHub{" "} + A JupyterHub{" "} server will host your repository's contents. We offer you a reusable link and badge to your live repository that you can easily share with others. From 1927d34f40c0b1af8ece9d797364cccee85c3b81 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 14 Dec 2024 23:37:29 +0000 Subject: [PATCH 81/95] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- binderhub/static/js/components/HowItWorks.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/binderhub/static/js/components/HowItWorks.jsx b/binderhub/static/js/components/HowItWorks.jsx index 24444fd0b..a01c6ae89 100644 --- a/binderhub/static/js/components/HowItWorks.jsx +++ b/binderhub/static/js/components/HowItWorks.jsx @@ -63,8 +63,8 @@ export function HowItWorks() {
    -

    Interact with your notebooks in a live environment!

    {" "} - A JupyterHub{" "} +

    Interact with your notebooks in a live environment!

    A{" "} + JupyterHub{" "} server will host your repository's contents. We offer you a reusable link and badge to your live repository that you can easily share with others. From b2dfd27874cac1f5b22ceb7380b53b9b7bcdd538 Mon Sep 17 00:00:00 2001 From: Yuvi Panda Date: Sat, 14 Dec 2024 15:39:54 -0800 Subject: [PATCH 82/95] Fix off by 1 error with help messages Co-authored-by: Simon Li --- binderhub/static/js/components/LoadingIndicator.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/static/js/components/LoadingIndicator.jsx b/binderhub/static/js/components/LoadingIndicator.jsx index 1886a69e4..a1f686d65 100644 --- a/binderhub/static/js/components/LoadingIndicator.jsx +++ b/binderhub/static/js/components/LoadingIndicator.jsx @@ -31,7 +31,7 @@ export function LoadingIndicator({ progressState }) { useEffect(() => { const intervalId = setInterval(() => { const newMessage = - HELP_MESSAGES[parseInt(Math.random() * (HELP_MESSAGES.length - 1))]; + HELP_MESSAGES[Math.floor(Math.random() * HELP_MESSAGES.length)]; console.log(newMessage); setCurrentMessage(newMessage); }, 6 * 1000); From f379956c70d022cdff81bfb2687dee0a19541bd1 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 14 Dec 2024 15:49:17 -0800 Subject: [PATCH 83/95] Remove debugging message --- binderhub/static/js/components/LoadingIndicator.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/binderhub/static/js/components/LoadingIndicator.jsx b/binderhub/static/js/components/LoadingIndicator.jsx index a1f686d65..bb1d0a136 100644 --- a/binderhub/static/js/components/LoadingIndicator.jsx +++ b/binderhub/static/js/components/LoadingIndicator.jsx @@ -32,7 +32,6 @@ export function LoadingIndicator({ progressState }) { const intervalId = setInterval(() => { const newMessage = HELP_MESSAGES[Math.floor(Math.random() * HELP_MESSAGES.length)]; - console.log(newMessage); setCurrentMessage(newMessage); }, 6 * 1000); From 0fd5bb1050039efe6f7f168a670462dca6c3839b Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 14 Dec 2024 17:49:18 -0800 Subject: [PATCH 84/95] Add thicker borders to some controls --- binderhub/static/js/components/LinkGenerator.jsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index a4c8709d0..c9518cd95 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -18,7 +18,7 @@ function ProviderSelector({ return ( <> +
    +
    -
    -
    - -
    - { - setReference(e.target.value); - }} - /> -
    -
    -
    - -
    -
    - +
    +
    +
    + {launchUrl || + "Fill in the fields to see a URL for sharing your Binder."}
    +
    +
    -
    -
    +
    +
    + Badges for your README + +
    +
    +
    - {launchUrl || - "Fill in the fields to see a URL for sharing your Binder."} + setBadgeType("md")} + > + + + setBadgeType("rst")} + > +
    +
    +              {badgeMarkup ||
    +                "Fill in the fields to see a badge markup for your README."}
    +            
    - -
    -
    - Badges for your README - -
    -
    -
    -
    - setBadgeType("md")} - > - - - setBadgeType("rst")} - > - -
    -
    -                {badgeMarkup ||
    -                  "Fill in the fields to see a badge markup for your README."}
    -              
    - -
    -
    -
    - - +
    + ); } diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index 522d9120e..aa95be50a 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -60,6 +60,7 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) {

    Date: Mon, 16 Dec 2024 10:28:27 -0800 Subject: [PATCH 87/95] Widen the form Co-authored-by: Simon Li --- binderhub/static/js/App.jsx | 2 +- binderhub/static/js/pages/HomePage.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/binderhub/static/js/App.jsx b/binderhub/static/js/App.jsx index 6586dd7f1..2b4b6d6c7 100644 --- a/binderhub/static/js/App.jsx +++ b/binderhub/static/js/App.jsx @@ -66,7 +66,7 @@ export function App({ routerHook }) { >
    )}
    -
    +
    diff --git a/binderhub/static/js/pages/HomePage.jsx b/binderhub/static/js/pages/HomePage.jsx index aa95be50a..b5601fee5 100644 --- a/binderhub/static/js/pages/HomePage.jsx +++ b/binderhub/static/js/pages/HomePage.jsx @@ -40,7 +40,7 @@ export function HomePage({ providers, publicBaseUrl, baseUrl }) { return ( <> -
    +
    Turn a Git repo into a collection of interactive notebooks

    Have a repository full of Jupyter notebooks? With Binder, open those From b185b6695f288a75fe1e6510acf4195eb8be5531 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 20 Dec 2024 16:58:59 -0800 Subject: [PATCH 88/95] Clarify what binderhub supports for hydroshare --- binderhub/repoproviders.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index d947c7cfc..a884f1714 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -436,8 +436,8 @@ class HydroshareProvider(RepoProvider): "id": "hydroshare", "spec": {"validateRegex": r"[^/]+"}, "repo": { - "label": "Hydroshare resource id or URL", - "placeholder": "", + "label": "Hydroshare resource id", + "placeholder": "example: 8f7c2f0341ef4180b0dbe97f59130756", "urlEncode": True, }, "ref": {"enabled": False}, From e117f39e2026c52efa531db833339ecbf4c27686 Mon Sep 17 00:00:00 2001 From: Yuvi Panda Date: Fri, 20 Dec 2024 17:00:56 -0800 Subject: [PATCH 89/95] Provide outline for buttons Co-authored-by: Simon Li --- binderhub/static/js/components/LinkGenerator.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index 81767d7a9..6a6314b8e 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -257,7 +257,7 @@ export function LinkGenerator({ "Fill in the fields to see a URL for sharing your Binder."}