| import { createRepo, commit, CommitFile, whoAmI } from "@huggingface/hub"; |
|
|
| const c = console; |
|
|
| const FILES_TO_UPLOAD = [ |
| `${window.location.origin}/mobilenet/model.json`, |
| `${window.location.origin}/mobilenet/group1-shard1of2`, |
| `${window.location.origin}/mobilenet/group1-shard2of2`, |
| `${window.location.origin}/mobilenet/coffee.jpg`, |
| `${window.location.origin}/mobilenet/README.md`, |
| ]; |
|
|
| function filenameFromURL(url: string): string { |
| return url.substring(url.lastIndexOf("/") + 1); |
| } |
|
|
| window.document.addEventListener("DOMContentLoaded", () => { |
| const tokenEl = document.querySelector<HTMLInputElement>("#token")!; |
| const repoNameEl = document.querySelector<HTMLInputElement>("#repo_name")!; |
| const button = document.querySelector("#submit")!; |
| const output = document.querySelector("#logs")!; |
| const form = document.getElementsByTagName("form")[0]; |
|
|
| const storedToken = window.localStorage.getItem("hf_token"); |
| if (storedToken) { |
| tokenEl.value = storedToken; |
| |
| } |
|
|
| repoNameEl.value = `tfjs-mobilenet-${Date.now() % 1_000}`; |
| |
|
|
| form.addEventListener("submit", async (event) => { |
| event.preventDefault(); |
|
|
| const token = tokenEl.value; |
| const repoName = repoNameEl.value; |
| if (!token || !repoName) { |
| alert("You need a token and a repo name"); |
| return; |
| } |
|
|
| button.setAttribute("disabled", "disabled"); |
|
|
| const credentials = { |
| accessToken: token, |
| }; |
|
|
| try { |
| const { name: username } = await whoAmI({ credentials }); |
| const name = `${username}/${repoName}`; |
| const { repoUrl } = await createRepo({ |
| repo: { |
| type: "model", |
| name, |
| }, |
| credentials, |
| }); |
|
|
| const operations: CommitFile[] = await Promise.all( |
| FILES_TO_UPLOAD.map(async (file) => { |
| return { |
| operation: "addOrUpdate", |
| path: filenameFromURL(file), |
| |
| content: new URL(file), |
| }; |
| }) |
| ); |
| const commitOutput = await commit({ |
| repo: { |
| type: "model", |
| name, |
| }, |
| credentials, |
| title: "upload model", |
| operations, |
| }); |
| c.log(commitOutput); |
|
|
| button.insertAdjacentHTML( |
| "afterend", |
| `<div class="text-green-500 mb-6">🎉 Upload complete! Model page is <a target="_blank" class="text-bold underline" href="${repoUrl}">${repoUrl}</a></div>` |
| ); |
| } catch (err) { |
| console.error(err); |
| output.append("\n" + err); |
| } |
| button.removeAttribute("disabled"); |
| }); |
| }); |
|
|