diff --git a/changelog.md b/changelog.md index c6bfc96..d431f56 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2025-04-26 - 6.3.2 - fix(worker) +Refactor worker script update and creation to use intermediate parameter objects + +- Build updateParams in CloudflareWorker for proper multipart form handling when updating scripts +- Use contentParams in WorkerManager to improve clarity and consistency in worker creation + ## 2025-04-26 - 6.3.1 - fix(core) Improve nested DNS record management and worker script multipart handling diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 368fbfe..3d19720 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@apiclient.xyz/cloudflare', - version: '6.3.1', + version: '6.3.2', description: 'A TypeScript client for managing Cloudflare accounts, zones, DNS records, and workers with ease.' } diff --git a/ts/cloudflare.classes.worker.ts b/ts/cloudflare.classes.worker.ts index 10c3e33..5203052 100644 --- a/ts/cloudflare.classes.worker.ts +++ b/ts/cloudflare.classes.worker.ts @@ -168,15 +168,14 @@ export class CloudflareWorker { logger.log('info', `Updating script for worker ${this.id}`); // Use the official client to update the script (upload new content) - const updatedWorker = await this.workerManager.cfAccount.apiAccount.workers.scripts.content.update(this.id, { + // Build params as any to include the script form part without TS errors + const updateParams: any = { account_id: this.workerManager.cfAccount.preselectedAccountId, - // name the multipart part for the updated script code metadata: { body_part: 'script' }, - /* header to indicate which part contains the script */ - 'CF-WORKER-BODY-PART': 'script', - // include the new script as a form part named 'script' - script: scriptContent, - }); + }; + updateParams['CF-WORKER-BODY-PART'] = 'script'; + updateParams['script'] = scriptContent; + const updatedWorker = await this.workerManager.cfAccount.apiAccount.workers.scripts.content.update(this.id, updateParams); // Update this instance with new data if (updatedWorker && typeof updatedWorker === 'object') { diff --git a/ts/cloudflare.classes.workermanager.ts b/ts/cloudflare.classes.workermanager.ts index 9a32073..ea23258 100644 --- a/ts/cloudflare.classes.workermanager.ts +++ b/ts/cloudflare.classes.workermanager.ts @@ -23,15 +23,14 @@ export class WorkerManager { try { // Use the official client to create/update the worker (upload script content) - await this.cfAccount.apiAccount.workers.scripts.content.update(workerName, { + // Build params as any to include the script form part without TS errors + const contentParams: any = { account_id: this.cfAccount.preselectedAccountId, - // name the multipart part for the script code metadata: { body_part: 'script' }, - /* header to indicate which part contains the script */ - 'CF-WORKER-BODY-PART': 'script', - // include the actual script as a form part named 'script' - script: workerScript, - }); + }; + contentParams['CF-WORKER-BODY-PART'] = 'script'; + contentParams['script'] = workerScript; + await this.cfAccount.apiAccount.workers.scripts.content.update(workerName, contentParams); // Create a new worker instance const worker = new CloudflareWorker(this);