diff --git a/.gitignore b/.gitignore index 5c334ab..3feaf04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ +# Dev .db __pycache__ .env + +# Node +node_modules + +# Bundles +app/static/scripts/*.bundle.js diff --git a/Dockerfile b/Dockerfile index f0dd3c3..01c52de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,20 @@ FROM python:3.10-slim # Set the working directory inside the container WORKDIR /app +# Install Node.js and npm +RUN apt-get update && apt-get install -y nodejs npm + # Copy requirements.txt and install dependencies globally COPY requirements.txt . RUN pip install --upgrade pip && pip install -r requirements.txt +# Install npm dependencies +COPY package.json package-lock.json webpack.config.js ./ +RUN npm install + +# Add built assets to static folder +RUN npm run build + # Copy the app code to the container COPY . . diff --git a/README.md b/README.md index 772cca9..38e0334 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,26 @@ Flask server for displaying a quick development HUD (built specifically for use ## Development +Example ENV file + +```bash +GITHUB_TOKEN= +GITHUB_REPOS=FRC-1721/ProjectHud +USERNAME_MAP=KenwoodFox:Joe,Kredcool:Keegan +GIT_COMMIT=Whatever +``` + ```shell pipenv shell flask run --debug ``` +Some screens now require js libs so be sure to install and package those locally +```shell +npm run install +npm run build +``` + ## Deploy Deployment is handled with docker. diff --git a/app/__init__.py b/app/__init__.py index 47b5a44..7a9525f 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -11,6 +11,9 @@ app = Flask(__name__) +# Add globals +app.jinja_env.globals.update(enumerate=enumerate) + def create_app(): # Register Blueprints diff --git a/app/routes/screens.py b/app/routes/screens.py index 042ace3..4a06887 100644 --- a/app/routes/screens.py +++ b/app/routes/screens.py @@ -1,6 +1,6 @@ import os from flask import current_app as app -from flask import Blueprint, jsonify, render_template +from flask import Blueprint, jsonify, render_template, request from app.services.github_service import GitHubService @@ -9,9 +9,31 @@ @screens_bp.route("/api/screens") def get_screens(): - return jsonify( - {"version": os.getenv("GIT_COMMIT", None), "screens": ["/table", "/pending"]} - ) + screens = ["/test"] + + if ( + len(app.github_service.latest_data["issues"]) + + len(app.github_service.latest_data["pull_requests"]) + + len(app.github_service.latest_data["milestones"]) + > 0 + ): + screens.append("/table") + else: + app.logger.warning("Not including table screen (no data)") + + if len(app.github_service.latest_data["pending_reviews"]) > 0: + screens.append("/pending") + else: + app.logger.warning("Not including pending reviews (no data)") + + branch_graph = app.github_service.latest_data["branch_graph"] + if branch_graph: + for repo_name in branch_graph.keys(): + screens.append(f"/branch?repo={repo_name}") + else: + app.logger.warning("Not including branch graph (no data)") + + return jsonify({"version": os.getenv("GIT_COMMIT", None), "screens": screens}) @screens_bp.route("/test") @@ -49,3 +71,24 @@ def pending_screen(): @screens_bp.route("/table") def table_screen(): return render_template("table.html", **app.github_service.latest_data) + + +@screens_bp.route("/branch") +def branch_graph(): + repo_name = request.args.get("repo") + if not repo_name: + return "Repository name is required", 400 + + branch_graph = app.github_service.latest_data["branch_graph"] + + if repo_name not in branch_graph: + return f"Repository '{repo_name}' not found", 404 + + # Retrieve data for the specified repository + repo_data = branch_graph[repo_name] + if not repo_data: + return f"No data available for repository '{repo_name}'", 404 + + # Pass only the relevant repository data to the template + repo_data = branch_graph[repo_name] + return render_template("branch.html", repo_name=repo_name, repo_data=repo_data) diff --git a/app/services/github_service.py b/app/services/github_service.py index 15e78fc..2c6b7ed 100644 --- a/app/services/github_service.py +++ b/app/services/github_service.py @@ -20,6 +20,7 @@ def __init__(self, token, repos, username_mapping): "issues_count": 0, "pull_requests_count": 0, "pending_reviews": [], + "branch_graph": {}, } def fetch_data(self): @@ -27,8 +28,7 @@ def fetch_data(self): while True: self.update_general_data() self.update_pending_reviews() - - print("Updated github data.") + self.fetch_branch_graph() time.sleep(90) @@ -40,6 +40,8 @@ def update_general_data(self): issues_data = [] pr_data = [] + print("Updating General Data") + for repo_name in self.repos: repo = self.gh.get_repo(repo_name) @@ -96,18 +98,18 @@ def update_general_data(self): } ) - self.latest_data = { - "milestones": milestones_data, - "issues": issues_data, - "pull_requests": pr_data, - "issues_count": len(issues_data), - "pull_requests_count": len(pr_data), - } + self.latest_data["milestones"] = milestones_data + self.latest_data["issues"] = issues_data + self.latest_data["pull_requests"] = pr_data + self.latest_data["issues_count"] = len(issues_data) + self.latest_data["pull_requests_count"] = len(pr_data) def update_pending_reviews(self): """Fetch and update pending review requests data.""" pending_reviews = defaultdict(list) + print("Updating Pending Reviews") + for repo_name in self.repos: repo = self.gh.get_repo(repo_name) @@ -151,3 +153,80 @@ def update_pending_reviews(self): {"name": name, "assignments": assignments} for name, assignments in pending_reviews.items() ] + + def fetch_branch_graph(self): + """Fetch branch and commit data for branches with open PRs and the default branch.""" + branch_graph = {} + + print("Updating Branch Data") + + for repo_name in self.repos: + repo = self.gh.get_repo(repo_name) + repo_data = {"repo_name": repo.full_name, "branches": []} + + # Include the default branch + default_branch_name = repo.default_branch + default_branch_commits = repo.get_commits(sha=default_branch_name)[:20] + default_branch_info = { + "name": default_branch_name, + "commits": [ + { + "sha": commit.sha, + "message": commit.commit.message, + "author": ( + commit.commit.author.name + if commit.commit.author + else "Unknown" + ), + "date": ( + commit.commit.author.date.isoformat() + if commit.commit.author + else None + ), + } + for commit in default_branch_commits + ], + "target_pr": None, # Default branch is not targeted by a PR + } + repo_data["branches"].append(default_branch_info) + + # Fetch branches with open pull requests + pull_requests = repo.get_pulls(state="open") + for pr in pull_requests: + branch_name = pr.head.ref + target_branch = pr.base.ref + + # Fetch the last 20 commits for the branch + commits = repo.get_commits(sha=branch_name)[:20] + branch_info = { + "name": branch_name, + "commits": [ + { + "sha": commit.sha, + "message": commit.commit.message, + "author": ( + commit.commit.author.name + if commit.commit.author + else "Unknown" + ), + "date": ( + commit.commit.author.date.isoformat() + if commit.commit.author + else None + ), + } + for commit in commits + ], + "target_pr": target_branch, + } + + repo_data["branches"].append(branch_info) + + # Only include on branches that are not empty. + if len(repo_data["branches"]) > 0: + branch_graph[repo.full_name] = repo_data + else: + pass + + # Update global data structure + self.latest_data["branch_graph"] = branch_graph diff --git a/app/static/scripts/autorefresh.js b/app/static/scripts/autorefresh.js index a7e9e96..ca47020 100644 --- a/app/static/scripts/autorefresh.js +++ b/app/static/scripts/autorefresh.js @@ -1,6 +1,6 @@ document.addEventListener('DOMContentLoaded', () => { // Configurable refresh duration (in seconds) - const REFRESH_DURATION = 25; + const REFRESH_DURATION = 5; // HTML items const iframe = document.getElementById("board-iframe"); diff --git a/app/static/scripts/gitgraph.js b/app/static/scripts/gitgraph.js new file mode 100644 index 0000000..fe1d53e --- /dev/null +++ b/app/static/scripts/gitgraph.js @@ -0,0 +1,30 @@ +document.addEventListener("DOMContentLoaded", () => { + const container = document.getElementById("gitgraph-container"); + const gitgraph = GitgraphJS.createGitgraph(container); + + // Example dynamic data (replace with real data from your backend) + const repoName = container.dataset.repoName; + const branches = JSON.parse(container.dataset.repoData); // Assuming backend passes JSON data + + // Populate the graph + const branchObjects = {}; + for (const [branchName, branchData] of Object.entries(branches)) { + branchObjects[branchName] = gitgraph.branch(branchName); + branchData.commits.forEach(commit => { + branchObjects[branchName].commit(commit.message); + }); + + // If the branch has a target PR, draw a dotted connection + if (branchData.target_pr) { + gitgraph.branch(branchData.target_pr).merge(branchObjects[branchName], "PR merge"); + } + } + + // Slow scroll to the bottom where branch heads are located + setTimeout(() => { + container.scrollTo({ + top: container.scrollHeight, + behavior: "smooth", + }); + }, 500); // Delay to ensure rendering is complete +}); diff --git a/app/static/styles/branch.css b/app/static/styles/branch.css new file mode 100644 index 0000000..e69de29 diff --git a/app/templates/branch.html b/app/templates/branch.html new file mode 100644 index 0000000..b7a2bc2 --- /dev/null +++ b/app/templates/branch.html @@ -0,0 +1,106 @@ + + + + + + + Branch Graph + + + + + +

Branch Graph

+
+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4c7653a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1616 @@ +{ + "name": "projecthud", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "projecthud", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@gitgraph/js": "^1.4.0" + }, + "devDependencies": { + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@gitgraph/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@gitgraph/core/-/core-1.5.0.tgz", + "integrity": "sha512-8CeeHbkKoFHM1y9vfjYiHyEpzl1mEhVrg5c/eFgDBsntOYswoDKU2yOf6DjtVINcE60wmcuynBSJqjMkQo07Ww==", + "license": "MIT" + }, + "node_modules/@gitgraph/js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@gitgraph/js/-/js-1.4.0.tgz", + "integrity": "sha512-7wxTTCFnRVjsqj+Zt09+3F79WhH4MK46ZS20AwbcB/MJFshSMeMH4nYmNDPa9McVsiL+cFsvW1pmZoquAOoHMw==", + "license": "MIT", + "dependencies": { + "@gitgraph/core": "1.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.83", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", + "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.82.0" + }, + "peerDependenciesMeta": { + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..697a981 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "projecthud", + "version": "1.0.0", + "description": "[![ProjectHUD CI](https://github.com/FRC-1721/ProjectHud/actions/workflows/build_docker.yml/badge.svg)](https://github.com/FRC-1721/ProjectHud/actions/workflows/build_docker.yml)", + "main": "index.js", + "scripts": { + "build": "webpack" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/FRC-1721/ProjectHud.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "bugs": { + "url": "https://github.com/FRC-1721/ProjectHud/issues" + }, + "homepage": "https://github.com/FRC-1721/ProjectHud#readme", + "dependencies": { + "@gitgraph/js": "^1.4.0" + }, + "devDependencies": { + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" + } +} diff --git a/test.py b/test.py new file mode 100644 index 0000000..4f5fb8e --- /dev/null +++ b/test.py @@ -0,0 +1,1302 @@ +{ + "FRC-1721/ProjectHud": { + "repo_name": "FRC-1721/ProjectHud", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "98bca082a74c56eeef840c538ff26bb37c44e1f1", + "message": "Merge pull request #7 from FRC-1721/feat/screens", + "author": "KenwoodFox", + "date": "2025-01-15T21:14:23+00:00", + }, + { + "sha": "90ac72c266ce423e84bf13b589bff5ca8b5cf56f", + "message": "Verify autoreload", + "author": "KenwoodFox", + "date": "2025-01-15T21:14:11+00:00", + }, + { + "sha": "fe1acd68fd58e345d77875d16d715ffbf3187a83", + "message": "Package last style", + "author": "KenwoodFox", + "date": "2025-01-15T21:04:25+00:00", + }, + { + "sha": "78913aa5ff011c94f57ac3a525b222a343c6ecc2", + "message": "Add back in functional js", + "author": "KenwoodFox", + "date": "2025-01-15T20:33:37+00:00", + }, + { + "sha": "cc9feee553fb2b13b54693760701033f71ac3ce1", + "message": "Merge branch 'main' into feat/screens", + "author": "KenwoodFox", + "date": "2025-01-15T17:58:06+00:00", + }, + { + "sha": "12e506170a45b141b083ca0f4625efb01c3b3445", + "message": "Functional-ish", + "author": "KenwoodFox", + "date": "2025-01-15T17:56:14+00:00", + }, + { + "sha": "1bd35a9f701605054aff2cf3ed0e9148feb9c67c", + "message": "Add nested styles", + "author": "KenwoodFox", + "date": "2025-01-15T17:53:33+00:00", + }, + { + "sha": "757a176870cb034c6fa9ea09b2c03be048235b29", + "message": "Half baked move to iframe based switching", + "author": "KenwoodFox", + "date": "2025-01-15T17:40:01+00:00", + }, + { + "sha": "e549fc46d338c658255e86c7417518e2373654b4", + "message": "Rounded the number", + "author": "CoolDude20221", + "date": "2025-01-10T23:31:23+00:00", + }, + { + "sha": "1686f9395e43d038afa265abe0bc1872c8d762dc", + "message": "Sort by last touched", + "author": "KenwoodFox", + "date": "2025-01-10T20:50:46+00:00", + }, + { + "sha": "84f7d01d34672e87ec4dbfb8f9e741384511b150", + "message": "Adds Labels to the HUD (#5)", + "author": "KenwoodFox", + "date": "2025-01-10T20:30:52+00:00", + }, + { + "sha": "c2448b6db2899a02a81f5e47bf849fe3e385d082", + "message": "Minor style fixes", + "author": "KenwoodFox", + "date": "2025-01-07T20:53:15+00:00", + }, + { + "sha": "4f0341174014651fd7cef9a8979fec7d010d4948", + "message": "Bump readme image", + "author": "KenwoodFox", + "date": "2025-01-06T19:25:44+00:00", + }, + { + "sha": "97729527f13c2024612bee528119cc43e6bcd9de", + "message": "Bump styles, add username mapping", + "author": "KenwoodFox", + "date": "2025-01-06T19:22:00+00:00", + }, + { + "sha": "191c9c464efcf492e3b9e15a40997d9b209197c3", + "message": "Fix style regression", + "author": "KenwoodFox", + "date": "2025-01-06T17:00:14+00:00", + }, + { + "sha": "8817dc09b718e93bae12ce0a436289f92c76618a", + "message": "Bump style and other awesome stuff (also dsync junk, looks very tidy now)", + "author": "KenwoodFox", + "date": "2025-01-06T16:44:11+00:00", + }, + { + "sha": "677cf2e311c662947e96623acc48ed8228ea3424", + "message": "Desync github API and js", + "author": "KenwoodFox", + "date": "2025-01-06T16:05:29+00:00", + }, + { + "sha": "1b9498a13a3ee4718ad1052562b0da8d87b65d1d", + "message": "Update readme with instructions", + "author": "KenwoodFox", + "date": "2025-01-06T03:30:52+00:00", + }, + { + "sha": "17092a6ee348f50ce089e5ecff20fa50475190ff", + "message": "fix overflowing", + "author": "KenwoodFox", + "date": "2025-01-05T20:44:16+00:00", + }, + { + "sha": "e27c76fe4b8aad9a4783ade51e0f486175989edb", + "message": "Merge branch 'feat/cards'", + "author": "KenwoodFox", + "date": "2025-01-05T20:24:49+00:00", + }, + ], + "target_pr": None, + } + ], + }, + "FRC-1721/pre2025season": { + "repo_name": "FRC-1721/pre2025season", + "branches": [ + { + "name": "master", + "commits": [ + { + "sha": "3b37313661609db6d0b731a9f09d3945cb92c6d2", + "message": "Merge pull request #3 from FRC-1721/feat/drivetrain\n\nFeat/drivetrain", + "author": "CoolDude20221", + "date": "2025-01-10T22:24:22+00:00", + }, + { + "sha": "a60150ab9e250e53b9e69c9a685e8e6c31686959", + "message": "the code works now !!!", + "author": "dublUayaychtee", + "date": "2025-01-10T21:01:31+00:00", + }, + { + "sha": "18457cc0c8abc9044868150e7b13257a5e7851ac", + "message": "that's not what it's called", + "author": "dublUayaychtee", + "date": "2025-01-06T21:01:04+00:00", + }, + { + "sha": "65ea26658438dc61075e8254c79a66bb19ff5ff3", + "message": "add rev to pyproject", + "author": "dublUayaychtee", + "date": "2025-01-06T21:00:22+00:00", + }, + { + "sha": "b4994b0c4fb31c00702a6a8f6504ce54e794c21d", + "message": "fixed imports", + "author": "CoolDude20221", + "date": "2025-01-06T20:48:24+00:00", + }, + { + "sha": "d444359b8bfc0569ce523571dea62cd32533d669", + "message": "idk", + "author": "CoolDude20221", + "date": "2025-01-06T20:48:02+00:00", + }, + { + "sha": "6c90192d1282f2cf4817f5b637972e423a85d79b", + "message": "add pyproject.toml", + "author": "CoolDude20221", + "date": "2025-01-05T21:26:18+00:00", + }, + { + "sha": "99995d5d957c8790b06f445ace771a6ffa9132ee", + "message": "added motors", + "author": "CoolDude20221", + "date": "2025-01-05T21:22:17+00:00", + }, + { + "sha": "004f4c42d87a1941c03822f215b7e89fb111bd44", + "message": "rename file", + "author": "dublUayaychtee", + "date": "2025-01-05T20:07:45+00:00", + }, + { + "sha": "a27279d11a8a750d78dfd7bc364347ba4d893744", + "message": "Merge branch 'master' of github.com:FRC-1721/pre2025season", + "author": "dublUayaychtee", + "date": "2025-01-05T20:03:16+00:00", + }, + { + "sha": "a84edf6b02dcaf6b8758bf5946f074fbfb4ecc2e", + "message": "Merge pull request #1 from FRC-1721/cool-branch\n\nAdded RobotStuff.py", + "author": "CoolDude20221", + "date": "2025-01-05T20:01:36+00:00", + }, + { + "sha": "66884972585c670baeadab39b92093b1e4618397", + "message": "Added RobotStuff.py", + "author": "CoolDude20221", + "date": "2025-01-05T19:58:25+00:00", + }, + { + "sha": "3a1f9388c2d810b51604ca4623f290303baa2b5a", + "message": "added built-in tests", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:33+00:00", + }, + { + "sha": "24f7aafe0db577ea00ac761a33a1d48a3fd56ec6", + "message": "add Pipfile", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:20+00:00", + }, + { + "sha": "51e5db6b9d377e6ddb98e8e710750eb23e38a9ef", + "message": "add Makefile", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:10+00:00", + }, + { + "sha": "111690f9b60b2399814001919d47b1ccd0a2af43", + "message": "add gitignore", + "author": "dublUayaychtee", + "date": "2025-01-05T19:45:47+00:00", + }, + { + "sha": "8e90ae8ae5a199a9940f56542a84606d73db13e2", + "message": "first commit", + "author": "dublUayaychtee", + "date": "2025-01-04T19:28:19+00:00", + }, + ], + "target_pr": None, + } + ], + }, + "FRC-1721/1721-ReefScape": { + "repo_name": "FRC-1721/1721-ReefScape", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "7005806ae2379b1f58729504b20c853e277d4910", + "message": "Initial commit", + "author": "Kredcool", + "date": "2025-01-04T22:06:57+00:00", + } + ], + "target_pr": None, + } + ], + }, + "FRC-1721/battery.frc1721.org": { + "repo_name": "FRC-1721/battery.frc1721.org", + "branches": [ + { + "name": "master", + "commits": [ + { + "sha": "b9e0b6e1ab1e2186f093778abfeeb53afd473043", + "message": "Push to master (not main)", + "author": "KenwoodFox", + "date": "2025-01-13T16:47:22+00:00", + }, + { + "sha": "3aca41528519b0d2f957f3886a1486f94d1173de", + "message": "Merge pull request #1 from FRC-1721/feat/automatedBuilds\n\nForcing this through (sorry no review)\r\n\r\nFuture dev on #3", + "author": "KenwoodFox", + "date": "2025-01-13T16:44:59+00:00", + }, + { + "sha": "cb7dcbb38cb2aaccee47943b2e167015c84aa26d", + "message": "Add twitter tags", + "author": "KenwoodFox", + "date": "2025-01-13T02:05:12+00:00", + }, + { + "sha": "6e57e65f88766869699abaef9b7a48591c31bf4b", + "message": "Add pillow generated battery meta", + "author": "KenwoodFox", + "date": "2025-01-13T01:57:27+00:00", + }, + { + "sha": "908597f86f5eba06f696383f46897af577815638", + "message": "Cleanup", + "author": "KenwoodFox", + "date": "2025-01-13T01:35:04+00:00", + }, + { + "sha": "914ffdbe1f60da1533b03f8f496b075ce4d4cb66", + "message": "Add version tracking", + "author": "KenwoodFox", + "date": "2025-01-13T01:33:03+00:00", + }, + { + "sha": "ec11f34a2adef6f54a870c249ae7dea0a08a1698", + "message": "Add formatting and js", + "author": "KenwoodFox", + "date": "2025-01-13T01:28:13+00:00", + }, + { + "sha": "e9e840afe985def0691eaf71f693fa164f88e243", + "message": "Format html", + "author": "KenwoodFox", + "date": "2025-01-13T01:03:14+00:00", + }, + { + "sha": "0b5e1f803d56c7cff565b4afee3ee8e4a91f0c76", + "message": "Add autocomplete for battery ids", + "author": "KenwoodFox", + "date": "2025-01-13T01:03:06+00:00", + }, + { + "sha": "1ec7a688641df4d4d4b8dc0f61fc0b6999d230af", + "message": "Add instructions for hybrid dev", + "author": "KenwoodFox", + "date": "2025-01-13T00:54:18+00:00", + }, + { + "sha": "6e02c295c7347e30fa494c20a73aebe8cb47e81d", + "message": "Bump deps", + "author": "KenwoodFox", + "date": "2025-01-13T00:54:06+00:00", + }, + { + "sha": "13deda0b864f6af5aea1ee481ff872b4264c1e2c", + "message": "Enforce black", + "author": "KenwoodFox", + "date": "2025-01-13T00:53:57+00:00", + }, + { + "sha": "36790bda5e82e416cb2b5225a3a9f02f22653b90", + "message": "serve static files", + "author": "dublUayaychtee", + "date": "2025-01-11T14:27:06+00:00", + }, + { + "sha": "073c0ff4ed9adca17f634e9b0f25594068ae356e", + "message": "Merge branch 'feat/automatedBuilds' of github.com:FRC-1721/battery.frc1721.org into feat/automatedBuilds", + "author": "dublUayaychtee", + "date": "2025-01-11T05:53:15+00:00", + }, + { + "sha": "8822e9bf06a005f07abbd71d60aae76198b757ea", + "message": "display first_name instead of username, additional formatting", + "author": "dublUayaychtee", + "date": "2025-01-11T05:53:01+00:00", + }, + { + "sha": "a5c9caadf1520ee45442aa5d9faf33ae0198df6c", + "message": "Add statusbadge", + "author": "KenwoodFox", + "date": "2025-01-11T03:29:57+00:00", + }, + { + "sha": "e615438f08feb0ba79aa18750dd9aac67b1c2092", + "message": "make the md more md", + "author": "dublUayaychtee", + "date": "2025-01-11T03:13:09+00:00", + }, + { + "sha": "34938d7e61490f03d54bdad6317fe77bb8d41cf4", + "message": "Add ability to run with ACTUAL db", + "author": "KenwoodFox", + "date": "2025-01-11T03:02:58+00:00", + }, + { + "sha": "c9c660ccbaefcc4790eaf9847a329763544d1f1a", + "message": "Launch migrations at boot", + "author": "KenwoodFox", + "date": "2025-01-11T02:44:07+00:00", + }, + { + "sha": "b832dbc9f1b3d2b796b9da6b6e398ef501e087e0", + "message": "run entrypoint from Dockerfile", + "author": "dublUayaychtee", + "date": "2025-01-11T02:37:11+00:00", + }, + ], + "target_pr": None, + }, + { + "name": "feat/enhanced-image-cards", + "commits": [ + { + "sha": "b824f037eba93ff05e3b31f9ce84b7499964d2ee", + "message": "Fix sorting bug", + "author": "KenwoodFox", + "date": "2025-01-15T16:21:32+00:00", + }, + { + "sha": "bfc969ccb278d529e15bfcfddf5a5a490814619d", + "message": "Sort by latest batteries", + "author": "KenwoodFox", + "date": "2025-01-15T15:43:08+00:00", + }, + { + "sha": "21ca63717e939865463c5d04bfaf8f66b522720d", + "message": "Add style to login window", + "author": "KenwoodFox", + "date": "2025-01-14T21:29:10+00:00", + }, + { + "sha": "d517c94470ae523c940819be50f41137ba29edda", + "message": "Change default values", + "author": "KenwoodFox", + "date": "2025-01-14T21:05:42+00:00", + }, + { + "sha": "a1494ec98af554ab33ebb7d5ece9cefed19b7043", + "message": "Add extra management command", + "author": "KenwoodFox", + "date": "2025-01-14T20:53:14+00:00", + }, + { + "sha": "0649465d2fa68537dfb40536021f6abed9aaf70b", + "message": "Basic styles", + "author": "KenwoodFox", + "date": "2025-01-14T20:30:06+00:00", + }, + { + "sha": "13e062d86283828ab987cd0df786db0858cdbc0b", + "message": "Add quick populated battery field to battery view", + "author": "KenwoodFox", + "date": "2025-01-14T20:16:25+00:00", + }, + { + "sha": "398a07f19549b0ec66e985e922dd78be4b3160c4", + "message": "Add label enhancements", + "author": "KenwoodFox", + "date": "2025-01-14T20:09:10+00:00", + }, + { + "sha": "c8118b28e6056570705e25581ab7d4e7f3811968", + "message": "Fix for #4, users are redirected with auth mixin", + "author": "KenwoodFox", + "date": "2025-01-14T20:00:44+00:00", + }, + { + "sha": "3fa40d5ce5a89d1e1b90320a5a0874cff096db73", + "message": "Add /label path", + "author": "KenwoodFox", + "date": "2025-01-13T19:42:52+00:00", + }, + { + "sha": "f628cdcac227037c4092e1a08571cf3ebe1d1f74", + "message": "Move submit entry to its own file, clean up index and new view.", + "author": "KenwoodFox", + "date": "2025-01-13T19:25:55+00:00", + }, + { + "sha": "0ea148cd9a43c37df1448338fbb2bcb521e29a0a", + "message": "Enhance battery previews, enhance form submission feedback", + "author": "KenwoodFox", + "date": "2025-01-13T17:12:10+00:00", + }, + { + "sha": "1e7f2a9553882b60f44ed5d6920c5a3a994d9cab", + "message": "Fix regression", + "author": "KenwoodFox", + "date": "2025-01-13T16:56:38+00:00", + }, + { + "sha": "0e35af9776b6d3fafc753561a36123fbecd8f6e1", + "message": "Dont use psql enhancements when in sqlite mode", + "author": "KenwoodFox", + "date": "2025-01-13T04:53:09+00:00", + }, + { + "sha": "75a09cdc56ee0b2c5d716776b64f10a3f1c2c6b9", + "message": "Bump pytjon ver", + "author": "KenwoodFox", + "date": "2025-01-13T04:49:22+00:00", + }, + { + "sha": "6a31f6b60030f047e9335517112bf6d5af205b60", + "message": "Test image meta too", + "author": "KenwoodFox", + "date": "2025-01-13T04:46:49+00:00", + }, + { + "sha": "6675c30e6b9a233af671a975b38cb97eb84654b6", + "message": "move views to log/views/", + "author": "KenwoodFox", + "date": "2025-01-13T04:45:26+00:00", + }, + { + "sha": "cb7dcbb38cb2aaccee47943b2e167015c84aa26d", + "message": "Add twitter tags", + "author": "KenwoodFox", + "date": "2025-01-13T02:05:12+00:00", + }, + { + "sha": "6e57e65f88766869699abaef9b7a48591c31bf4b", + "message": "Add pillow generated battery meta", + "author": "KenwoodFox", + "date": "2025-01-13T01:57:27+00:00", + }, + { + "sha": "908597f86f5eba06f696383f46897af577815638", + "message": "Cleanup", + "author": "KenwoodFox", + "date": "2025-01-13T01:35:04+00:00", + }, + ], + "target_pr": "master", + }, + ], + }, + "FRC-1721/AdminBot": { + "repo_name": "FRC-1721/AdminBot", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "b16dbd605395c34d695e29782717a3caf050634a", + "message": 'Revert "removing unwanted files" (and others)\n\nThis reverts commit 0589d3e7f492e86a7c4c97baf8d53709b0ae65fa and others made by @dublUayaychtee', + "author": "KenwoodFox", + "date": "2025-01-08T02:39:14+00:00", + }, + { + "sha": "b99234f70f61f2a6be86d3086213240f510cdf45", + "message": "replace image tasks myvote whiteboard indah with four corners image task loader", + "author": "dublUayaychtee", + "date": "2025-01-06T17:04:52+00:00", + }, + { + "sha": "82333a9ad9645adfa1311a5416327005ac788e42", + "message": "add indah image", + "author": "dublUayaychtee", + "date": "2025-01-05T18:55:28+00:00", + }, + { + "sha": "0589d3e7f492e86a7c4c97baf8d53709b0ae65fa", + "message": "removing unwanted files", + "author": "kredcool", + "date": "2024-12-13T20:11:48+00:00", + }, + { + "sha": "0d49b6ca3e91ef30eaa3642f6d7d0cc22170615e", + "message": "hotfix", + "author": "KenwoodFox", + "date": "2024-12-12T21:05:51+00:00", + }, + { + "sha": "7d7c107f541cd5a5a6ba67cc41c901c414777354", + "message": "Thanks Dylan", + "author": "KenwoodFox", + "date": "2024-12-12T20:53:24+00:00", + }, + { + "sha": "d94b6ab71c8fb6a0aa52e57e10cb5d9293ce04db", + "message": "Add battery fixups (#58)", + "author": "KenwoodFox", + "date": "2024-12-12T19:59:18+00:00", + }, + { + "sha": "4d42958447a5f2e04d0172d0a0369f46686a701e", + "message": "Way cooler images (#59)\n\n* Add healthcheck\r\n\r\n* Move myvote (aaron) to new cog\r\n\r\n* At a pausing point\r\n\r\n* Kredcool?", + "author": "KenwoodFox", + "date": "2024-12-07T16:31:13+00:00", + }, + { + "sha": "178e959d9163495bff38bff6fe187f9889eca335", + "message": "Screens (#56)\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\r\nCo-authored-by: dublUayaychtee \r\nCo-authored-by: dublUayaychtee <62506798+dublUayaychtee@users.noreply.github.com>\r\nCo-authored-by: kredcool ", + "author": "KenwoodFox", + "date": "2024-01-04T20:22:33+00:00", + }, + { + "sha": "5841305f19eff620d05c3cd18ede07d9de632751", + "message": "More pictures of aaron", + "author": "KenwoodFox", + "date": "2023-08-16T19:57:27+00:00", + }, + { + "sha": "2f41937a8880f24d20790dcd9ee13abf8e9573e1", + "message": "remove unused", + "author": "KenwoodFox", + "date": "2023-08-02T00:31:23+00:00", + }, + { + "sha": "85ab2ea6f0c59026c954362abf5f427eee454790", + "message": "Aaaaron (#55)", + "author": "KenwoodFox", + "date": "2023-08-01T15:16:46+00:00", + }, + { + "sha": "48894310afc8e1c41d6ab4053cd7164b229b13e6", + "message": "hotfix", + "author": "KenwoodFox", + "date": "2023-07-31T20:19:04+00:00", + }, + { + "sha": "d22e3878fa881439e9f9431cc8d65b82b85d25be", + "message": "Fix another calender bug", + "author": "KenwoodFox", + "date": "2023-07-31T19:51:57+00:00", + }, + { + "sha": "57771797b48fa80a65f78b092cada2588a3041ac", + "message": "patch tomorrow command and others", + "author": "KenwoodFox", + "date": "2023-07-20T19:41:37+00:00", + }, + { + "sha": "be4de296051c90302b989f303ce8238b4a2c2c23", + "message": "Patch nonetype desc len error", + "author": "KenwoodFox", + "date": "2023-06-07T14:56:19+00:00", + }, + { + "sha": "4a5aec0b64bd184635b532d099252a731d0a8e62", + "message": "Add myvote feature", + "author": "KenwoodFox", + "date": "2023-05-11T02:00:57+00:00", + }, + { + "sha": "89c0471aa63d6922b9c195b7df6a7ebe39e15121", + "message": "remove references to team member role", + "author": "KenwoodFox", + "date": "2023-03-30T23:13:04+00:00", + }, + { + "sha": "8d34f25eff562af31befbea1afcc936c5b123885", + "message": "Various fixes for #53 (#54)\n\n* Fix sanitize\r\n\r\n* Fixes the last of #53's bugs", + "author": "KenwoodFox", + "date": "2023-02-24T21:10:06+00:00", + }, + { + "sha": "6b2f92a2219e5bc55ab7728e7f295fb21f43b5d1", + "message": "Sanitize inputs for lila", + "author": "KenwoodFox", + "date": "2023-02-14T00:17:03+00:00", + }, + ], + "target_pr": None, + } + ], + }, +} +{ + "FRC-1721/ProjectHud": { + "repo_name": "FRC-1721/ProjectHud", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "98bca082a74c56eeef840c538ff26bb37c44e1f1", + "message": "Merge pull request #7 from FRC-1721/feat/screens", + "author": "KenwoodFox", + "date": "2025-01-15T21:14:23+00:00", + }, + { + "sha": "90ac72c266ce423e84bf13b589bff5ca8b5cf56f", + "message": "Verify autoreload", + "author": "KenwoodFox", + "date": "2025-01-15T21:14:11+00:00", + }, + { + "sha": "fe1acd68fd58e345d77875d16d715ffbf3187a83", + "message": "Package last style", + "author": "KenwoodFox", + "date": "2025-01-15T21:04:25+00:00", + }, + { + "sha": "78913aa5ff011c94f57ac3a525b222a343c6ecc2", + "message": "Add back in functional js", + "author": "KenwoodFox", + "date": "2025-01-15T20:33:37+00:00", + }, + { + "sha": "cc9feee553fb2b13b54693760701033f71ac3ce1", + "message": "Merge branch 'main' into feat/screens", + "author": "KenwoodFox", + "date": "2025-01-15T17:58:06+00:00", + }, + { + "sha": "12e506170a45b141b083ca0f4625efb01c3b3445", + "message": "Functional-ish", + "author": "KenwoodFox", + "date": "2025-01-15T17:56:14+00:00", + }, + { + "sha": "1bd35a9f701605054aff2cf3ed0e9148feb9c67c", + "message": "Add nested styles", + "author": "KenwoodFox", + "date": "2025-01-15T17:53:33+00:00", + }, + { + "sha": "757a176870cb034c6fa9ea09b2c03be048235b29", + "message": "Half baked move to iframe based switching", + "author": "KenwoodFox", + "date": "2025-01-15T17:40:01+00:00", + }, + { + "sha": "e549fc46d338c658255e86c7417518e2373654b4", + "message": "Rounded the number", + "author": "CoolDude20221", + "date": "2025-01-10T23:31:23+00:00", + }, + { + "sha": "1686f9395e43d038afa265abe0bc1872c8d762dc", + "message": "Sort by last touched", + "author": "KenwoodFox", + "date": "2025-01-10T20:50:46+00:00", + }, + { + "sha": "84f7d01d34672e87ec4dbfb8f9e741384511b150", + "message": "Adds Labels to the HUD (#5)", + "author": "KenwoodFox", + "date": "2025-01-10T20:30:52+00:00", + }, + { + "sha": "c2448b6db2899a02a81f5e47bf849fe3e385d082", + "message": "Minor style fixes", + "author": "KenwoodFox", + "date": "2025-01-07T20:53:15+00:00", + }, + { + "sha": "4f0341174014651fd7cef9a8979fec7d010d4948", + "message": "Bump readme image", + "author": "KenwoodFox", + "date": "2025-01-06T19:25:44+00:00", + }, + { + "sha": "97729527f13c2024612bee528119cc43e6bcd9de", + "message": "Bump styles, add username mapping", + "author": "KenwoodFox", + "date": "2025-01-06T19:22:00+00:00", + }, + { + "sha": "191c9c464efcf492e3b9e15a40997d9b209197c3", + "message": "Fix style regression", + "author": "KenwoodFox", + "date": "2025-01-06T17:00:14+00:00", + }, + { + "sha": "8817dc09b718e93bae12ce0a436289f92c76618a", + "message": "Bump style and other awesome stuff (also dsync junk, looks very tidy now)", + "author": "KenwoodFox", + "date": "2025-01-06T16:44:11+00:00", + }, + { + "sha": "677cf2e311c662947e96623acc48ed8228ea3424", + "message": "Desync github API and js", + "author": "KenwoodFox", + "date": "2025-01-06T16:05:29+00:00", + }, + { + "sha": "1b9498a13a3ee4718ad1052562b0da8d87b65d1d", + "message": "Update readme with instructions", + "author": "KenwoodFox", + "date": "2025-01-06T03:30:52+00:00", + }, + { + "sha": "17092a6ee348f50ce089e5ecff20fa50475190ff", + "message": "fix overflowing", + "author": "KenwoodFox", + "date": "2025-01-05T20:44:16+00:00", + }, + { + "sha": "e27c76fe4b8aad9a4783ade51e0f486175989edb", + "message": "Merge branch 'feat/cards'", + "author": "KenwoodFox", + "date": "2025-01-05T20:24:49+00:00", + }, + ], + "target_pr": None, + } + ], + }, + "FRC-1721/pre2025season": { + "repo_name": "FRC-1721/pre2025season", + "branches": [ + { + "name": "master", + "commits": [ + { + "sha": "3b37313661609db6d0b731a9f09d3945cb92c6d2", + "message": "Merge pull request #3 from FRC-1721/feat/drivetrain\n\nFeat/drivetrain", + "author": "CoolDude20221", + "date": "2025-01-10T22:24:22+00:00", + }, + { + "sha": "a60150ab9e250e53b9e69c9a685e8e6c31686959", + "message": "the code works now !!!", + "author": "dublUayaychtee", + "date": "2025-01-10T21:01:31+00:00", + }, + { + "sha": "18457cc0c8abc9044868150e7b13257a5e7851ac", + "message": "that's not what it's called", + "author": "dublUayaychtee", + "date": "2025-01-06T21:01:04+00:00", + }, + { + "sha": "65ea26658438dc61075e8254c79a66bb19ff5ff3", + "message": "add rev to pyproject", + "author": "dublUayaychtee", + "date": "2025-01-06T21:00:22+00:00", + }, + { + "sha": "b4994b0c4fb31c00702a6a8f6504ce54e794c21d", + "message": "fixed imports", + "author": "CoolDude20221", + "date": "2025-01-06T20:48:24+00:00", + }, + { + "sha": "d444359b8bfc0569ce523571dea62cd32533d669", + "message": "idk", + "author": "CoolDude20221", + "date": "2025-01-06T20:48:02+00:00", + }, + { + "sha": "6c90192d1282f2cf4817f5b637972e423a85d79b", + "message": "add pyproject.toml", + "author": "CoolDude20221", + "date": "2025-01-05T21:26:18+00:00", + }, + { + "sha": "99995d5d957c8790b06f445ace771a6ffa9132ee", + "message": "added motors", + "author": "CoolDude20221", + "date": "2025-01-05T21:22:17+00:00", + }, + { + "sha": "004f4c42d87a1941c03822f215b7e89fb111bd44", + "message": "rename file", + "author": "dublUayaychtee", + "date": "2025-01-05T20:07:45+00:00", + }, + { + "sha": "a27279d11a8a750d78dfd7bc364347ba4d893744", + "message": "Merge branch 'master' of github.com:FRC-1721/pre2025season", + "author": "dublUayaychtee", + "date": "2025-01-05T20:03:16+00:00", + }, + { + "sha": "a84edf6b02dcaf6b8758bf5946f074fbfb4ecc2e", + "message": "Merge pull request #1 from FRC-1721/cool-branch\n\nAdded RobotStuff.py", + "author": "CoolDude20221", + "date": "2025-01-05T20:01:36+00:00", + }, + { + "sha": "66884972585c670baeadab39b92093b1e4618397", + "message": "Added RobotStuff.py", + "author": "CoolDude20221", + "date": "2025-01-05T19:58:25+00:00", + }, + { + "sha": "3a1f9388c2d810b51604ca4623f290303baa2b5a", + "message": "added built-in tests", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:33+00:00", + }, + { + "sha": "24f7aafe0db577ea00ac761a33a1d48a3fd56ec6", + "message": "add Pipfile", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:20+00:00", + }, + { + "sha": "51e5db6b9d377e6ddb98e8e710750eb23e38a9ef", + "message": "add Makefile", + "author": "dublUayaychtee", + "date": "2025-01-05T19:46:10+00:00", + }, + { + "sha": "111690f9b60b2399814001919d47b1ccd0a2af43", + "message": "add gitignore", + "author": "dublUayaychtee", + "date": "2025-01-05T19:45:47+00:00", + }, + { + "sha": "8e90ae8ae5a199a9940f56542a84606d73db13e2", + "message": "first commit", + "author": "dublUayaychtee", + "date": "2025-01-04T19:28:19+00:00", + }, + ], + "target_pr": None, + } + ], + }, + "FRC-1721/1721-ReefScape": { + "repo_name": "FRC-1721/1721-ReefScape", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "7005806ae2379b1f58729504b20c853e277d4910", + "message": "Initial commit", + "author": "Kredcool", + "date": "2025-01-04T22:06:57+00:00", + } + ], + "target_pr": None, + } + ], + }, + "FRC-1721/battery.frc1721.org": { + "repo_name": "FRC-1721/battery.frc1721.org", + "branches": [ + { + "name": "master", + "commits": [ + { + "sha": "b9e0b6e1ab1e2186f093778abfeeb53afd473043", + "message": "Push to master (not main)", + "author": "KenwoodFox", + "date": "2025-01-13T16:47:22+00:00", + }, + { + "sha": "3aca41528519b0d2f957f3886a1486f94d1173de", + "message": "Merge pull request #1 from FRC-1721/feat/automatedBuilds\n\nForcing this through (sorry no review)\r\n\r\nFuture dev on #3", + "author": "KenwoodFox", + "date": "2025-01-13T16:44:59+00:00", + }, + { + "sha": "cb7dcbb38cb2aaccee47943b2e167015c84aa26d", + "message": "Add twitter tags", + "author": "KenwoodFox", + "date": "2025-01-13T02:05:12+00:00", + }, + { + "sha": "6e57e65f88766869699abaef9b7a48591c31bf4b", + "message": "Add pillow generated battery meta", + "author": "KenwoodFox", + "date": "2025-01-13T01:57:27+00:00", + }, + { + "sha": "908597f86f5eba06f696383f46897af577815638", + "message": "Cleanup", + "author": "KenwoodFox", + "date": "2025-01-13T01:35:04+00:00", + }, + { + "sha": "914ffdbe1f60da1533b03f8f496b075ce4d4cb66", + "message": "Add version tracking", + "author": "KenwoodFox", + "date": "2025-01-13T01:33:03+00:00", + }, + { + "sha": "ec11f34a2adef6f54a870c249ae7dea0a08a1698", + "message": "Add formatting and js", + "author": "KenwoodFox", + "date": "2025-01-13T01:28:13+00:00", + }, + { + "sha": "e9e840afe985def0691eaf71f693fa164f88e243", + "message": "Format html", + "author": "KenwoodFox", + "date": "2025-01-13T01:03:14+00:00", + }, + { + "sha": "0b5e1f803d56c7cff565b4afee3ee8e4a91f0c76", + "message": "Add autocomplete for battery ids", + "author": "KenwoodFox", + "date": "2025-01-13T01:03:06+00:00", + }, + { + "sha": "1ec7a688641df4d4d4b8dc0f61fc0b6999d230af", + "message": "Add instructions for hybrid dev", + "author": "KenwoodFox", + "date": "2025-01-13T00:54:18+00:00", + }, + { + "sha": "6e02c295c7347e30fa494c20a73aebe8cb47e81d", + "message": "Bump deps", + "author": "KenwoodFox", + "date": "2025-01-13T00:54:06+00:00", + }, + { + "sha": "13deda0b864f6af5aea1ee481ff872b4264c1e2c", + "message": "Enforce black", + "author": "KenwoodFox", + "date": "2025-01-13T00:53:57+00:00", + }, + { + "sha": "36790bda5e82e416cb2b5225a3a9f02f22653b90", + "message": "serve static files", + "author": "dublUayaychtee", + "date": "2025-01-11T14:27:06+00:00", + }, + { + "sha": "073c0ff4ed9adca17f634e9b0f25594068ae356e", + "message": "Merge branch 'feat/automatedBuilds' of github.com:FRC-1721/battery.frc1721.org into feat/automatedBuilds", + "author": "dublUayaychtee", + "date": "2025-01-11T05:53:15+00:00", + }, + { + "sha": "8822e9bf06a005f07abbd71d60aae76198b757ea", + "message": "display first_name instead of username, additional formatting", + "author": "dublUayaychtee", + "date": "2025-01-11T05:53:01+00:00", + }, + { + "sha": "a5c9caadf1520ee45442aa5d9faf33ae0198df6c", + "message": "Add statusbadge", + "author": "KenwoodFox", + "date": "2025-01-11T03:29:57+00:00", + }, + { + "sha": "e615438f08feb0ba79aa18750dd9aac67b1c2092", + "message": "make the md more md", + "author": "dublUayaychtee", + "date": "2025-01-11T03:13:09+00:00", + }, + { + "sha": "34938d7e61490f03d54bdad6317fe77bb8d41cf4", + "message": "Add ability to run with ACTUAL db", + "author": "KenwoodFox", + "date": "2025-01-11T03:02:58+00:00", + }, + { + "sha": "c9c660ccbaefcc4790eaf9847a329763544d1f1a", + "message": "Launch migrations at boot", + "author": "KenwoodFox", + "date": "2025-01-11T02:44:07+00:00", + }, + { + "sha": "b832dbc9f1b3d2b796b9da6b6e398ef501e087e0", + "message": "run entrypoint from Dockerfile", + "author": "dublUayaychtee", + "date": "2025-01-11T02:37:11+00:00", + }, + ], + "target_pr": None, + }, + { + "name": "feat/enhanced-image-cards", + "commits": [ + { + "sha": "b824f037eba93ff05e3b31f9ce84b7499964d2ee", + "message": "Fix sorting bug", + "author": "KenwoodFox", + "date": "2025-01-15T16:21:32+00:00", + }, + { + "sha": "bfc969ccb278d529e15bfcfddf5a5a490814619d", + "message": "Sort by latest batteries", + "author": "KenwoodFox", + "date": "2025-01-15T15:43:08+00:00", + }, + { + "sha": "21ca63717e939865463c5d04bfaf8f66b522720d", + "message": "Add style to login window", + "author": "KenwoodFox", + "date": "2025-01-14T21:29:10+00:00", + }, + { + "sha": "d517c94470ae523c940819be50f41137ba29edda", + "message": "Change default values", + "author": "KenwoodFox", + "date": "2025-01-14T21:05:42+00:00", + }, + { + "sha": "a1494ec98af554ab33ebb7d5ece9cefed19b7043", + "message": "Add extra management command", + "author": "KenwoodFox", + "date": "2025-01-14T20:53:14+00:00", + }, + { + "sha": "0649465d2fa68537dfb40536021f6abed9aaf70b", + "message": "Basic styles", + "author": "KenwoodFox", + "date": "2025-01-14T20:30:06+00:00", + }, + { + "sha": "13e062d86283828ab987cd0df786db0858cdbc0b", + "message": "Add quick populated battery field to battery view", + "author": "KenwoodFox", + "date": "2025-01-14T20:16:25+00:00", + }, + { + "sha": "398a07f19549b0ec66e985e922dd78be4b3160c4", + "message": "Add label enhancements", + "author": "KenwoodFox", + "date": "2025-01-14T20:09:10+00:00", + }, + { + "sha": "c8118b28e6056570705e25581ab7d4e7f3811968", + "message": "Fix for #4, users are redirected with auth mixin", + "author": "KenwoodFox", + "date": "2025-01-14T20:00:44+00:00", + }, + { + "sha": "3fa40d5ce5a89d1e1b90320a5a0874cff096db73", + "message": "Add /label path", + "author": "KenwoodFox", + "date": "2025-01-13T19:42:52+00:00", + }, + { + "sha": "f628cdcac227037c4092e1a08571cf3ebe1d1f74", + "message": "Move submit entry to its own file, clean up index and new view.", + "author": "KenwoodFox", + "date": "2025-01-13T19:25:55+00:00", + }, + { + "sha": "0ea148cd9a43c37df1448338fbb2bcb521e29a0a", + "message": "Enhance battery previews, enhance form submission feedback", + "author": "KenwoodFox", + "date": "2025-01-13T17:12:10+00:00", + }, + { + "sha": "1e7f2a9553882b60f44ed5d6920c5a3a994d9cab", + "message": "Fix regression", + "author": "KenwoodFox", + "date": "2025-01-13T16:56:38+00:00", + }, + { + "sha": "0e35af9776b6d3fafc753561a36123fbecd8f6e1", + "message": "Dont use psql enhancements when in sqlite mode", + "author": "KenwoodFox", + "date": "2025-01-13T04:53:09+00:00", + }, + { + "sha": "75a09cdc56ee0b2c5d716776b64f10a3f1c2c6b9", + "message": "Bump pytjon ver", + "author": "KenwoodFox", + "date": "2025-01-13T04:49:22+00:00", + }, + { + "sha": "6a31f6b60030f047e9335517112bf6d5af205b60", + "message": "Test image meta too", + "author": "KenwoodFox", + "date": "2025-01-13T04:46:49+00:00", + }, + { + "sha": "6675c30e6b9a233af671a975b38cb97eb84654b6", + "message": "move views to log/views/", + "author": "KenwoodFox", + "date": "2025-01-13T04:45:26+00:00", + }, + { + "sha": "cb7dcbb38cb2aaccee47943b2e167015c84aa26d", + "message": "Add twitter tags", + "author": "KenwoodFox", + "date": "2025-01-13T02:05:12+00:00", + }, + { + "sha": "6e57e65f88766869699abaef9b7a48591c31bf4b", + "message": "Add pillow generated battery meta", + "author": "KenwoodFox", + "date": "2025-01-13T01:57:27+00:00", + }, + { + "sha": "908597f86f5eba06f696383f46897af577815638", + "message": "Cleanup", + "author": "KenwoodFox", + "date": "2025-01-13T01:35:04+00:00", + }, + ], + "target_pr": "master", + }, + ], + }, + "FRC-1721/AdminBot": { + "repo_name": "FRC-1721/AdminBot", + "branches": [ + { + "name": "main", + "commits": [ + { + "sha": "b16dbd605395c34d695e29782717a3caf050634a", + "message": 'Revert "removing unwanted files" (and others)\n\nThis reverts commit 0589d3e7f492e86a7c4c97baf8d53709b0ae65fa and others made by @dublUayaychtee', + "author": "KenwoodFox", + "date": "2025-01-08T02:39:14+00:00", + }, + { + "sha": "b99234f70f61f2a6be86d3086213240f510cdf45", + "message": "replace image tasks myvote whiteboard indah with four corners image task loader", + "author": "dublUayaychtee", + "date": "2025-01-06T17:04:52+00:00", + }, + { + "sha": "82333a9ad9645adfa1311a5416327005ac788e42", + "message": "add indah image", + "author": "dublUayaychtee", + "date": "2025-01-05T18:55:28+00:00", + }, + { + "sha": "0589d3e7f492e86a7c4c97baf8d53709b0ae65fa", + "message": "removing unwanted files", + "author": "kredcool", + "date": "2024-12-13T20:11:48+00:00", + }, + { + "sha": "0d49b6ca3e91ef30eaa3642f6d7d0cc22170615e", + "message": "hotfix", + "author": "KenwoodFox", + "date": "2024-12-12T21:05:51+00:00", + }, + { + "sha": "7d7c107f541cd5a5a6ba67cc41c901c414777354", + "message": "Thanks Dylan", + "author": "KenwoodFox", + "date": "2024-12-12T20:53:24+00:00", + }, + { + "sha": "d94b6ab71c8fb6a0aa52e57e10cb5d9293ce04db", + "message": "Add battery fixups (#58)", + "author": "KenwoodFox", + "date": "2024-12-12T19:59:18+00:00", + }, + { + "sha": "4d42958447a5f2e04d0172d0a0369f46686a701e", + "message": "Way cooler images (#59)\n\n* Add healthcheck\r\n\r\n* Move myvote (aaron) to new cog\r\n\r\n* At a pausing point\r\n\r\n* Kredcool?", + "author": "KenwoodFox", + "date": "2024-12-07T16:31:13+00:00", + }, + { + "sha": "178e959d9163495bff38bff6fe187f9889eca335", + "message": "Screens (#56)\n\nCo-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\r\nCo-authored-by: dublUayaychtee \r\nCo-authored-by: dublUayaychtee <62506798+dublUayaychtee@users.noreply.github.com>\r\nCo-authored-by: kredcool ", + "author": "KenwoodFox", + "date": "2024-01-04T20:22:33+00:00", + }, + { + "sha": "5841305f19eff620d05c3cd18ede07d9de632751", + "message": "More pictures of aaron", + "author": "KenwoodFox", + "date": "2023-08-16T19:57:27+00:00", + }, + { + "sha": "2f41937a8880f24d20790dcd9ee13abf8e9573e1", + "message": "remove unused", + "author": "KenwoodFox", + "date": "2023-08-02T00:31:23+00:00", + }, + { + "sha": "85ab2ea6f0c59026c954362abf5f427eee454790", + "message": "Aaaaron (#55)", + "author": "KenwoodFox", + "date": "2023-08-01T15:16:46+00:00", + }, + { + "sha": "48894310afc8e1c41d6ab4053cd7164b229b13e6", + "message": "hotfix", + "author": "KenwoodFox", + "date": "2023-07-31T20:19:04+00:00", + }, + { + "sha": "d22e3878fa881439e9f9431cc8d65b82b85d25be", + "message": "Fix another calender bug", + "author": "KenwoodFox", + "date": "2023-07-31T19:51:57+00:00", + }, + { + "sha": "57771797b48fa80a65f78b092cada2588a3041ac", + "message": "patch tomorrow command and others", + "author": "KenwoodFox", + "date": "2023-07-20T19:41:37+00:00", + }, + { + "sha": "be4de296051c90302b989f303ce8238b4a2c2c23", + "message": "Patch nonetype desc len error", + "author": "KenwoodFox", + "date": "2023-06-07T14:56:19+00:00", + }, + { + "sha": "4a5aec0b64bd184635b532d099252a731d0a8e62", + "message": "Add myvote feature", + "author": "KenwoodFox", + "date": "2023-05-11T02:00:57+00:00", + }, + { + "sha": "89c0471aa63d6922b9c195b7df6a7ebe39e15121", + "message": "remove references to team member role", + "author": "KenwoodFox", + "date": "2023-03-30T23:13:04+00:00", + }, + { + "sha": "8d34f25eff562af31befbea1afcc936c5b123885", + "message": "Various fixes for #53 (#54)\n\n* Fix sanitize\r\n\r\n* Fixes the last of #53's bugs", + "author": "KenwoodFox", + "date": "2023-02-24T21:10:06+00:00", + }, + { + "sha": "6b2f92a2219e5bc55ab7728e7f295fb21f43b5d1", + "message": "Sanitize inputs for lila", + "author": "KenwoodFox", + "date": "2023-02-14T00:17:03+00:00", + }, + ], + "target_pr": None, + } + ], + }, +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..5db391a --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,12 @@ +const path = require("path"); + +module.exports = { + entry: "./node_modules/@gitgraph/js", + output: { + path: path.resolve(__dirname, "app/static/scripts"), + filename: "gitgraph.bundle.js", + library: "GitgraphJS", // Expose GitgraphJS as a global variable + libraryTarget: "var", // Attach it to the window object + }, + mode: "production", +}; \ No newline at end of file