From 6f4f687b0600a9ba46a724128ebe6644ed10d8d2 Mon Sep 17 00:00:00 2001 From: Mattt Zmuda Date: Wed, 3 Jul 2024 14:46:52 -0700 Subject: [PATCH] Add support for deployments.delete endpoint --- index.d.ts | 4 ++++ index.js | 1 + index.test.ts | 14 ++++++++++++++ lib/deployments.js | 19 +++++++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/index.d.ts b/index.d.ts index 1ef9e89..e6fd2d9 100644 --- a/index.d.ts +++ b/index.d.ts @@ -236,6 +236,10 @@ declare module "replicate" { | { max_instances: number } ) ): Promise; + delete( + deployment_owner: string, + deployment_name: string + ): Promise; list(): Promise>; }; diff --git a/index.js b/index.js index bf53449..b92503e 100644 --- a/index.js +++ b/index.js @@ -71,6 +71,7 @@ class Replicate { get: deployments.get.bind(this), create: deployments.create.bind(this), update: deployments.update.bind(this), + delete: deployments.delete.bind(this), list: deployments.list.bind(this), predictions: { create: deployments.predictions.create.bind(this), diff --git a/index.test.ts b/index.test.ts index 8ecb5ae..9e22cbe 100644 --- a/index.test.ts +++ b/index.test.ts @@ -999,6 +999,20 @@ describe("Replicate client", () => { // Add more tests for error handling, edge cases, etc. }); + describe("deployments.delete", () => { + test("Calls the correct API route with the correct payload", async () => { + nock(BASE_URL) + .delete("/deployments/acme/my-app-image-generator") + .reply(204); + + const success = await client.deployments.delete( + "acme", + "my-app-image-generator" + ); + expect(success).toBe(true); + }); + }); + describe("deployments.list", () => { test("Calls the correct API route", async () => { nock(BASE_URL) diff --git a/lib/deployments.js b/lib/deployments.js index 27a2f6a..56ed240 100644 --- a/lib/deployments.js +++ b/lib/deployments.js @@ -118,6 +118,24 @@ async function updateDeployment( return response.json(); } +/** + * Delete a deployment + * + * @param {string} deployment_owner - Required. The username of the user or organization who owns the deployment + * @param {string} deployment_name - Required. The name of the deployment + * @returns {Promise} Resolves with true if the deployment was deleted + */ +async function deleteDeployment(deployment_owner, deployment_name) { + const response = await this.request( + `/deployments/${deployment_owner}/${deployment_name}`, + { + method: "DELETE", + } + ); + + return response.status === 204; +} + /** * List all deployments * @@ -139,4 +157,5 @@ module.exports = { create: createDeployment, update: updateDeployment, list: listDeployments, + delete: deleteDeployment, };