From 1be9b9174dcccfa72d3e9390aa0e936712d90dc0 Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 5 Jan 2026 06:58:47 +0100 Subject: [PATCH 1/4] refactor(env): rename UCD_FILE_STAT_TYPE_HEADER to UCD_STAT_TYPE_HEADER Updated the header constant to better reflect its purpose and ensure consistency across the codebase. Adjusted all relevant imports and usages in the API routes and tests. --- apps/api/src/routes/v1_files/$wildcard.ts | 10 +++++----- apps/api/test/routes/v1_files/$wildcard.test.ts | 4 ++-- packages/env/src/constants.ts | 6 +++--- packages/env/src/index.ts | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/api/src/routes/v1_files/$wildcard.ts b/apps/api/src/routes/v1_files/$wildcard.ts index a1dfb96dd..916017c45 100644 --- a/apps/api/src/routes/v1_files/$wildcard.ts +++ b/apps/api/src/routes/v1_files/$wildcard.ts @@ -3,7 +3,7 @@ import type { HonoEnv } from "../../types"; import { createRoute, z } from "@hono/zod-openapi"; import { dedent } from "@luxass/utils"; import { createGlobMatcher, isValidGlobPattern } from "@ucdjs-internal/shared"; -import { DEFAULT_USER_AGENT, UCD_FILE_STAT_TYPE_HEADER } from "@ucdjs/env"; +import { DEFAULT_USER_AGENT, UCD_STAT_TYPE_HEADER } from "@ucdjs/env"; import { FileEntryListSchema } from "@ucdjs/schemas"; import { cache } from "hono/cache"; import { HTML_EXTENSIONS, MAX_AGE_ONE_WEEK_SECONDS } from "../../constants"; @@ -123,7 +123,7 @@ export const WILDCARD_ROUTE = createRoute({ 200: { description: "Response from Unicode.org", headers: { - [UCD_FILE_STAT_TYPE_HEADER]: { + [UCD_STAT_TYPE_HEADER]: { description: "The type of the file or directory", schema: { type: "string", @@ -228,7 +228,7 @@ export const METADATA_WILDCARD_ROUTE = createRoute({ 200: { description: "Response from Unicode.org", headers: { - [UCD_FILE_STAT_TYPE_HEADER]: { + [UCD_STAT_TYPE_HEADER]: { description: "The type of the file or directory", schema: { type: "string", @@ -344,7 +344,7 @@ export function registerWildcardRoute(router: OpenAPIHono) { ...baseHeaders, // Custom STAT Headers - [UCD_FILE_STAT_TYPE_HEADER]: "directory", + [UCD_STAT_TYPE_HEADER]: "directory", }); } @@ -359,7 +359,7 @@ export function registerWildcardRoute(router: OpenAPIHono) { ...baseHeaders, // Custom STAT Headers - [UCD_FILE_STAT_TYPE_HEADER]: "file", + [UCD_STAT_TYPE_HEADER]: "file", }; const cd = response.headers.get("Content-Disposition"); diff --git a/apps/api/test/routes/v1_files/$wildcard.test.ts b/apps/api/test/routes/v1_files/$wildcard.test.ts index 746363c23..4864c6541 100644 --- a/apps/api/test/routes/v1_files/$wildcard.test.ts +++ b/apps/api/test/routes/v1_files/$wildcard.test.ts @@ -1,5 +1,5 @@ import { HttpResponse, mockFetch, RawResponse } from "#test-utils/msw"; -import { UCD_FILE_STAT_TYPE_HEADER } from "@ucdjs/env"; +import { UCD_STAT_TYPE_HEADER } from "@ucdjs/env"; import { generateAutoIndexHtml } from "apache-autoindex-parse/test-utils"; import { env } from "cloudflare:workers"; import { describe, expect, it } from "vitest"; @@ -475,7 +475,7 @@ describe("v1_files", () => { expectSuccess(response); expectContentType(response, "application/json"); expectCacheHeaders(response); - expect(response.headers.get(UCD_FILE_STAT_TYPE_HEADER)).toBe("directory"); + expect(response.headers.get(UCD_STAT_TYPE_HEADER)).toBe("directory"); expect(response.headers.get("content-length")).toBeDefined(); expect(response.headers.get("last-modified")).toBeDefined(); }); diff --git a/packages/env/src/constants.ts b/packages/env/src/constants.ts index d7845e4ed..e8ee2d53c 100644 --- a/packages/env/src/constants.ts +++ b/packages/env/src/constants.ts @@ -6,10 +6,10 @@ * * @example * ```typescript - * import { UCD_FILE_STAT_TYPE_HEADER } from "@ucdjs/env"; + * import { UCD_STAT_TYPE_HEADER } from "@ucdjs/env"; * - * headers[UCD_FILE_STAT_TYPE_HEADER] = "file"; + * headers[UCD_STAT_TYPE_HEADER] = "file"; * ``` */ -export const UCD_FILE_STAT_TYPE_HEADER = "UCD-File-Stat-Type"; +export const UCD_STAT_TYPE_HEADER = "X-UCD-Stat-Type"; diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index 6d36e5d86..87c75b9b7 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -1,3 +1,3 @@ -export { UCD_FILE_STAT_TYPE_HEADER } from "./constants"; +export { UCD_STAT_TYPE_HEADER } from "./constants"; export { DEFAULT_USER_AGENT, UCDJS_API_BASE_URL } from "./env-constants"; export { requiredEnv } from "./required-env"; From fc681fc0e2a4287dfc67229d536cff36b19617ab Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 5 Jan 2026 06:59:11 +0100 Subject: [PATCH 2/4] feat(env): add new headers for UCD statistics --- packages/env/src/constants.ts | 7 ++++++- packages/env/src/index.ts | 9 ++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/env/src/constants.ts b/packages/env/src/constants.ts index e8ee2d53c..bd268c194 100644 --- a/packages/env/src/constants.ts +++ b/packages/env/src/constants.ts @@ -6,10 +6,15 @@ * * @example * ```typescript - * import { UCD_STAT_TYPE_HEADER } from "@ucdjs/env"; + * import { UCD_STAT_TYPE_HEADER, UCD_STAT_SIZE_HEADER } from "@ucdjs/env"; * * headers[UCD_STAT_TYPE_HEADER] = "file"; + * headers[UCD_STAT_SIZE_HEADER] = "1024"; * ``` */ export const UCD_STAT_TYPE_HEADER = "X-UCD-Stat-Type"; +export const UCD_STAT_SIZE_HEADER = "X-UCD-Stat-Size"; +export const UCD_STAT_CHILDREN_HEADER = "X-UCD-Stat-Children"; +export const UCD_STAT_CHILDREN_FILES_HEADER = "X-UCD-Stat-Children-Files"; +export const UCD_STAT_CHILDREN_DIRS_HEADER = "X-UCD-Stat-Children-Dirs"; diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index 87c75b9b7..c145ad9ea 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -1,3 +1,10 @@ -export { UCD_STAT_TYPE_HEADER } from "./constants"; +export { + UCD_STAT_CHILDREN_DIRS_HEADER, + UCD_STAT_CHILDREN_FILES_HEADER, + UCD_STAT_CHILDREN_HEADER, + UCD_STAT_SIZE_HEADER, + UCD_STAT_TYPE_HEADER, +} from "./constants"; + export { DEFAULT_USER_AGENT, UCDJS_API_BASE_URL } from "./env-constants"; export { requiredEnv } from "./required-env"; From 0e4303fc943301ecbec5316951fc456729fb5fd1 Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 5 Jan 2026 17:07:45 +0100 Subject: [PATCH 3/4] refactor(env): rename UCD_FILE_STAT_TYPE_HEADER to UCD_STAT_TYPE_HEADER --- packages/cli/src/cmd/files/info.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/cmd/files/info.ts b/packages/cli/src/cmd/files/info.ts index a98c6c08b..17b10b17e 100644 --- a/packages/cli/src/cmd/files/info.ts +++ b/packages/cli/src/cmd/files/info.ts @@ -1,7 +1,7 @@ import type { CLIArguments } from "../../cli-utils"; import type { CLIFilesCmdOptions } from "./root"; import { customFetch } from "@ucdjs-internal/shared"; -import { UCD_FILE_STAT_TYPE_HEADER, UCDJS_API_BASE_URL } from "@ucdjs/env"; +import { UCD_STAT_TYPE_HEADER, UCDJS_API_BASE_URL } from "@ucdjs/env"; import { bold, dim, green, red } from "farver/fast"; import { printHelp } from "../../cli-utils"; import { output } from "../../output"; @@ -95,7 +95,7 @@ export async function runFilesInfo({ path, flags }: CLIFilesInfoCmdOptions) { const headers = result.response.headers; const metadata: FileMetadata = { path: path || "", - type: (headers.get(UCD_FILE_STAT_TYPE_HEADER) as "file" | "directory") || "file", + type: (headers.get(UCD_STAT_TYPE_HEADER) as "file" | "directory") || "file", contentType: headers.get("Content-Type") || undefined, lastModified: headers.get("Last-Modified") || undefined, contentLength: headers.get("Content-Length") || undefined, From c32b187098b835f96a0f32a9edd6ff0deef32b4e Mon Sep 17 00:00:00 2001 From: Lucas Date: Mon, 5 Jan 2026 17:08:54 +0100 Subject: [PATCH 4/4] refactor(env): rename UCD_FILE_STAT_TYPE_HEADER to UCD_STAT_TYPE_HEADER in tests --- packages/cli/test/cmd/files/info.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/test/cmd/files/info.test.ts b/packages/cli/test/cmd/files/info.test.ts index 617766b6b..1209322bd 100644 --- a/packages/cli/test/cmd/files/info.test.ts +++ b/packages/cli/test/cmd/files/info.test.ts @@ -1,7 +1,7 @@ import type { ConsoleOutputCapture } from "../../__test-utils"; import { mockStoreApi } from "#test-utils/mock-store"; import { HttpResponse } from "#test-utils/msw"; -import { UCD_FILE_STAT_TYPE_HEADER } from "@ucdjs/env"; +import { UCD_STAT_TYPE_HEADER } from "@ucdjs/env"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { runCLI } from "../../../src/cli-utils"; import { captureConsoleOutput } from "../../__test-utils"; @@ -32,7 +32,7 @@ describe("files info command", () => { return new HttpResponse(null, { status: 200, headers: { - [UCD_FILE_STAT_TYPE_HEADER]: "file", + [UCD_STAT_TYPE_HEADER]: "file", "Content-Type": "text/plain", "Last-Modified": "Wed, 18 Sep 2024 12:00:00 GMT", "Content-Length": "12345", @@ -56,7 +56,7 @@ describe("files info command", () => { return new HttpResponse(null, { status: 200, headers: { - [UCD_FILE_STAT_TYPE_HEADER]: "directory", + [UCD_STAT_TYPE_HEADER]: "directory", "Content-Type": "application/json", "Last-Modified": "Wed, 18 Sep 2024 12:00:00 GMT", }, @@ -78,7 +78,7 @@ describe("files info command", () => { return new HttpResponse(null, { status: 200, headers: { - [UCD_FILE_STAT_TYPE_HEADER]: "file", + [UCD_STAT_TYPE_HEADER]: "file", "Content-Type": "text/plain", "Last-Modified": "Wed, 18 Sep 2024 12:00:00 GMT", "Content-Length": "12345", @@ -123,7 +123,7 @@ describe("files info command", () => { return new HttpResponse(null, { status: 200, headers: { - [UCD_FILE_STAT_TYPE_HEADER]: "directory", + [UCD_STAT_TYPE_HEADER]: "directory", "Content-Type": "application/json", }, });