diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..2ec48aa --- /dev/null +++ b/bun.lock @@ -0,0 +1,30 @@ +{ + "lockfileVersion": 1, + "configVersion": 0, + "workspaces": { + "": { + "name": "playground-for-node", + "dependencies": { + "chalk": "^4.1.0", + "node-appwrite": "^21.1.0", + }, + }, + }, + "packages": { + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "node-appwrite": ["node-appwrite@21.1.0", "", { "dependencies": { "node-fetch-native-with-agent": "1.7.2" } }, "sha512-HRK5BzN19vgvaH/EeNsigK24t4ngJ1AoiltK5JtahxP6uyMRztzkD8cXP+z9jj/xOjz7ySfQ9YypNyhNr6zVkA=="], + + "node-fetch-native-with-agent": ["node-fetch-native-with-agent@1.7.2", "", {}, "sha512-5MaOOCuJEvcckoz7/tjdx1M6OusOY6Xc5f459IaruGStWnKzlI1qpNgaAwmn4LmFYcsSlj+jBMk84wmmRxfk5g=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + } +} diff --git a/package.json b/package.json index b0027da..b1dd63b 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,6 @@ }, "dependencies": { "chalk": "^4.1.0", - "node-appwrite": "14.0.0" + "node-appwrite": "^21.1.0" } } diff --git a/src/app.js b/src/app.js index 3726040..4afb15c 100644 --- a/src/app.js +++ b/src/app.js @@ -1,8 +1,8 @@ -const { Client, Databases, Functions, Account, Users, Storage, Query, Permission, Role, ID } = require('node-appwrite'); +const { Client, Databases, Functions, Account, Users, Storage, Query, Permission, Role, ID, Runtime, ExecutionMethod } = require('node-appwrite'); const chalk = require('chalk'); const fs = require('fs'); const path = require('path'); -const { InputFile } = require('node-appwrite/file') +const { InputFile } = require('node-appwrite/file'); // Config const client = new Client() @@ -25,6 +25,8 @@ let bucketId; let fileId; let functionId; let executionId; +let deploymentId; +let variableId; // List of API Definitions const createDatabase = async () => { @@ -463,10 +465,31 @@ const uploadDeployment = async () => { "index.js" ); - console.log(response); - - console.log("Waiting a little to ensure deployment has built ..."); - await new Promise((resolve) => setTimeout(resolve, 3000)); + deploymentId = response.$id; + console.log(response); + + console.log("Waiting for deployment to be ready ..."); + + // Poll for deployment status until it's ready + let maxAttempts = 30; + let attempts = 0; + while (attempts < maxAttempts) { + await new Promise((resolve) => setTimeout(resolve, 2000)); + const deployment = await functions.getDeployment(functionId, deploymentId); + console.log(`Deployment status: ${deployment.status}`); + + if (deployment.status === 'ready') { + console.log("Deployment is ready!"); + break; + } else if (deployment.status === 'failed') { + throw new Error("Deployment failed to build"); + } + attempts++; + } + + if (attempts >= maxAttempts) { + throw new Error("Deployment timed out waiting to be ready"); + } } const listDeployments = async () => {