Skip to content

Commit db38ecf

Browse files
committed
Merge remote-tracking branch 'origin/main' into queued-cmomit
2 parents c38494d + adcc4fd commit db38ecf

File tree

13 files changed

+66
-54
lines changed

13 files changed

+66
-54
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ You can run our packages with vanilla JS, without any bundler, by using a CDN or
9999
```html
100100
<script type="module">
101101
import { InferenceClient } from 'https://cdn.jsdelivr.net/npm/@huggingface/[email protected]/+esm';
102-
import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/[email protected].0/+esm";
102+
import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/[email protected].1/+esm";
103103
</script>
104104
```
105105

packages/hub/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@huggingface/hub",
33
"packageManager": "[email protected]",
4-
"version": "2.7.0",
4+
"version": "2.7.1",
55
"description": "Utilities to interact with the Hugging Face hub",
66
"repository": "https://github.com/huggingface/huggingface.js.git",
77
"publishConfig": {

packages/hub/src/lib/collection-info.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ describe("collectionInfo", () => {
103103
lastModified: "2023-04-01T15:29:38.000Z",
104104
likes: expect.any(Number),
105105
pinned: false,
106+
featured: false,
106107
position: 2,
107108
private: false,
108109
repoType: "space",

packages/hub/src/lib/commit.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { eventToGenerator } from "../utils/eventToGenerator";
2222
import { base64FromBytes } from "../utils/base64FromBytes";
2323
import { isFrontend } from "../utils/isFrontend";
2424
import { createBlobs } from "../utils/createBlobs";
25+
import type { XetTokenParams } from "../utils/uploadShards";
2526
import { uploadShards } from "../utils/uploadShards";
2627
import { splitAsyncGenerator } from "../utils/splitAsyncGenerator";
2728
import { SplicedBlob } from "../utils/SplicedBlob";
@@ -361,8 +362,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
361362
if (useXet && json.transfer !== "xet") {
362363
useXet = false;
363364
}
364-
let xetRefreshWriteTokenUrl: string | undefined;
365-
let xetSessionId: string | undefined;
365+
366+
let xetParams: XetTokenParams | null = null;
366367

367368
if (useXet) {
368369
// First get all the files that are already uploaded out of the way
@@ -388,16 +389,17 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
388389
state: "uploading",
389390
};
390391
} else {
391-
xetRefreshWriteTokenUrl = obj.actions.upload.href;
392-
// Also, obj.actions.upload.header: {
393-
// X-Xet-Cas-Url: string;
394-
// X-Xet-Access-Token: string;
395-
// X-Xet-Token-Expiration: string;
396-
// X-Xet-Session-Id: string;
397-
// }
398392
const headers = new Headers(obj.actions.upload.header);
399-
xetSessionId = headers.get("X-Xet-Session-Id") ?? undefined;
400-
// todo: use other data, like x-xet-cas-url, ...
393+
394+
xetParams = {
395+
sessionId: headers.get("X-Xet-Session-Id") ?? undefined,
396+
casUrl: headers.get("X-Xet-Cas-Url") ?? undefined,
397+
accessToken: headers.get("X-Xet-Access-Token") ?? undefined,
398+
expiresAt: headers.get("X-Xet-Token-Expiration")
399+
? new Date(parseInt(headers.get("X-Xet-Token-Expiration") ?? "0") * 1000)
400+
: undefined,
401+
refreshWriteTokenUrl: obj.actions.upload.href,
402+
};
401403
}
402404
}
403405
const source = (async function* () {
@@ -410,8 +412,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
410412
yield { content: op.content, path: op.path, sha256: obj.oid };
411413
}
412414
})();
413-
if (xetRefreshWriteTokenUrl) {
414-
const xetRefreshWriteTokenUrlFixed = xetRefreshWriteTokenUrl;
415+
if (xetParams) {
416+
const fixedXetParams = xetParams;
415417
const sources = splitAsyncGenerator(source, 5);
416418
yield* eventToGenerator((yieldCallback, returnCallback, rejectCallback) =>
417419
Promise.all(
@@ -421,21 +423,19 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
421423
accessToken,
422424
hubUrl: params.hubUrl ?? HUB_URL,
423425
repo: repoId,
424-
xetRefreshWriteTokenUrl: xetRefreshWriteTokenUrlFixed,
425-
xetSessionId,
426+
xetParams: fixedXetParams,
426427
// todo: maybe leave empty if PR?
427428
rev: params.branch ?? "main",
428429
isPullRequest: params.isPullRequest,
429430
yieldCallback: (event) => yieldCallback({ ...event, state: "uploading" }),
430431
})) {
431432
if (event.event === "file") {
432-
// No need: uploading xorbs already sent a fileProgress event with progress 1
433-
// yieldCallback({
434-
// event: "fileProgress" as const,
435-
// path: event.path,
436-
// progress: 1,
437-
// state: "uploading" as const,
438-
// });
433+
yieldCallback({
434+
event: "fileProgress" as const,
435+
path: event.path,
436+
progress: 1,
437+
state: "uploading" as const,
438+
});
439439
} else if (event.event === "fileProgress") {
440440
yieldCallback({
441441
event: "fileProgress" as const,

packages/hub/src/lib/list-collections.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ describe("listCollections", () => {
115115
pinned: false,
116116
position: 2,
117117
private: false,
118+
featured: false,
118119
repoType: "space",
119120
runtime: {
120121
hardware: {

packages/hub/src/lib/upload-files-with-progress.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ describe("uploadFilesWithProgress", () => {
7070
// assert(intermediateUploadEvents.length > 0, "There should be at least one intermediate upload event");
7171
// }
7272
progressEvents = progressEvents.filter(
73-
(e) => e.event !== "fileProgress" || e.progress === 0 || e.progress === 1
73+
(e, i) =>
74+
(e.event !== "fileProgress" || e.progress === 0 || e.progress === 1) &&
75+
(i === 0 || JSON.stringify(e) !== JSON.stringify(progressEvents[i - 1]))
7476
);
7577

7678
assert.deepStrictEqual(progressEvents, [

packages/hub/src/lib/who-am-i.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe("whoAmI", () => {
2121
isPro: false,
2222
periodEnd: null,
2323
avatarUrl: "/avatars/934b830e9fdaa879487852f79eef7165.svg",
24+
billingMode: "postpaid",
2425
orgs: [],
2526
auth: {
2627
type: "access_token",

packages/hub/src/lib/who-am-i.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export interface WhoAmIUser {
2020
* Unix timestamp in seconds
2121
*/
2222
periodEnd: number | null;
23+
billingMode: "postpaid" | "prepaid";
2324
}
2425

2526
export interface WhoAmIOrg {

packages/hub/src/types/api/api-collection.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ interface ApiCollectionItemSpace extends ApiCollectionItemBase {
195195
likes: number;
196196
pinned: boolean;
197197
private: boolean;
198+
featured: boolean;
198199
repoType: "space";
199200
title: string;
200201
sdk?: "gradio" | "docker" | "static" | "streamlit";

packages/hub/src/types/api/api-who-am-i.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ interface ApiWhoAmIUser extends ApiWhoAmIEntityBase {
2828
emailVerified: boolean;
2929
isPro: boolean;
3030
orgs: ApiWhoAmIOrg[];
31+
billingMode: "postpaid" | "prepaid";
3132
}
3233

3334
interface ApiWhoAmIApp extends ApiWhoAmIBase {

0 commit comments

Comments
 (0)