Have you looked at what wrangler does? That's built for nodejs
Have you looked at what wrangler does? That's built for nodejs
myStr.length?crypto.subtlemyStr.lengthcrypto.subtleconst fs = require('fs');
const axios = require('axios');
const accountIdentifier = '';
const scriptName = 'weather';
const filePath = './cfweather.js';
const metadata = { "main_module": "cfweatherr.js", "some_binding": "stuff" };
const message = 'initial commit';
const fileData = fs.readFileSync(filePath);
const formData = new FormData();
async function createWorker() {
try {
formData.append('metadata', JSON.stringify({ "main_module": "cfweather.js", "some_binding": "stuff" }));
formData.append('message', 'initial commit');
formData.append('cfweather.js', fileData, 'cfweather.js', { contentType: 'application/javascript+module' });
axios.put(`https://api.cloudflare.com/client/v4/accounts/${accountIdentifier}/workers/scripts/${scriptName}`, formData, {
headers: {
'Content-Type': `multipart/form-data; boundary=${formData._boundary}`,
'Authorization': 'Bearer *****',
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
} catch (error) {
console.error(error);
}
}
createWorker();const expires = Math.floor(new Date().getTime() / 1000) + 300;
const encodedKey = new TextEncoder().encode(YOUR_SECRET_KEY);
const encodedData = new TextEncoder().encode(
`${YOUR_ACCESS_ID}\n${expires}`
);
const key = await crypto.subtle.importKey(
"raw",
encodedKey,
{ name: "HMAC", hash: "SHA-1" },
false,
["sign"]
);
const signature = await crypto.subtle.sign("HMAC", key, encodedData);
const signatureBase64 = btoa(
String.fromCharCode(...new Uint8Array(signature))
);