diff --git a/package.json b/package.json index 5068d23e..0fe29f9f 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,9 @@ "license": "MIT", "type": "module", "scripts": { - "download": "node scripts/download", - "generate-types": "node scripts/generate-types", - "update-package": "node scripts/update-package", + "download": "node scripts/download.js", + "generate-types": "node scripts/generate-types.js", + "update-package": "node scripts/update-package.js", "lint": "prettier --check '*.{md,json}' 'scripts/*.js' 'packages/**/*.{ts,md,json,d.ts}'", "lint:fix": "prettier --write '*.{md,json}' 'scripts/*.js' 'packages/**/*.{ts,md,json,d.ts}'" }, diff --git a/packages/openapi-types-ghec/types.d.ts b/packages/openapi-types-ghec/types.d.ts index e9e89985..28b3523d 100644 --- a/packages/openapi-types-ghec/types.d.ts +++ b/packages/openapi-types-ghec/types.d.ts @@ -126354,7 +126354,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types-ghes-3.14/types.d.ts b/packages/openapi-types-ghes-3.14/types.d.ts index 5dcc86f3..9a4663d0 100644 --- a/packages/openapi-types-ghes-3.14/types.d.ts +++ b/packages/openapi-types-ghes-3.14/types.d.ts @@ -104161,7 +104161,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types-ghes-3.15/types.d.ts b/packages/openapi-types-ghes-3.15/types.d.ts index f764302c..68e290b7 100644 --- a/packages/openapi-types-ghes-3.15/types.d.ts +++ b/packages/openapi-types-ghes-3.15/types.d.ts @@ -104990,7 +104990,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types-ghes-3.16/types.d.ts b/packages/openapi-types-ghes-3.16/types.d.ts index 030a0190..8844c256 100644 --- a/packages/openapi-types-ghes-3.16/types.d.ts +++ b/packages/openapi-types-ghes-3.16/types.d.ts @@ -106446,7 +106446,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types-ghes-3.17/types.d.ts b/packages/openapi-types-ghes-3.17/types.d.ts index e0d510a8..56b034ab 100644 --- a/packages/openapi-types-ghes-3.17/types.d.ts +++ b/packages/openapi-types-ghes-3.17/types.d.ts @@ -106730,7 +106730,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types-ghes-3.18/types.d.ts b/packages/openapi-types-ghes-3.18/types.d.ts index c947e459..678545e7 100644 --- a/packages/openapi-types-ghes-3.18/types.d.ts +++ b/packages/openapi-types-ghes-3.18/types.d.ts @@ -107812,7 +107812,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/packages/openapi-types/types.d.ts b/packages/openapi-types/types.d.ts index 556b0906..5e8ef94e 100644 --- a/packages/openapi-types/types.d.ts +++ b/packages/openapi-types/types.d.ts @@ -114946,7 +114946,7 @@ export interface operations { }; requestBody?: { content: { - "application/octet-stream": string; + "application/octet-stream": string | File | Uint8Array | Blob; }; }; responses: { diff --git a/scripts/generate-types.js b/scripts/generate-types.js index 98d5c716..32b71724 100644 --- a/scripts/generate-types.js +++ b/scripts/generate-types.js @@ -85,9 +85,25 @@ type Repository = components["schemas"]["full-repository"] await copyFile("LICENSE", `packages/${packageName}/LICENSE`); + const schemaTS = await openapiTS(`cache/${name}.json`, { + transform(schemaObject, metadata) { + if ( + schemaObject.format === "binary" && + metadata.path.endsWith("application/octet-stream") + ) { + // Make sure that file upload endpoints don't use 'string' type for binary data + // Use some common types that can represent binary data in various environments + return schemaObject.nullable + ? "string | File | Uint8Array | Blob | null" + : "string | File | Uint8Array | Blob"; + } + return undefined; + }, + }); + await writeFile( `packages/${packageName}/types.d.ts`, - await prettier.format(await openapiTS(`cache/${name}.json`), { + await prettier.format(schemaTS, { parser: "typescript", }), );