{"id":17655950,"url":"https://github.com/sagi/workers-secrets","last_synced_at":"2025-03-30T09:27:53.728Z","repository":{"id":96149739,"uuid":"443242921","full_name":"sagi/workers-secrets","owner":"sagi","description":"Cloudflare Workers Secrets API","archived":false,"fork":false,"pushed_at":"2021-12-31T08:00:00.000Z","size":77,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T20:38:24.156Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sagi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-31T03:26:32.000Z","updated_at":"2022-02-10T22:43:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc1cc295-d92e-471d-9545-7555e095fc40","html_url":"https://github.com/sagi/workers-secrets","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"cf6807e5f98e647f95dadb9e8f8fb18d504d7d49"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagi%2Fworkers-secrets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagi%2Fworkers-secrets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagi%2Fworkers-secrets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagi%2Fworkers-secrets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sagi","download_url":"https://codeload.github.com/sagi/workers-secrets/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246300321,"owners_count":20755329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-23T13:09:15.106Z","updated_at":"2025-03-30T09:27:53.701Z","avatar_url":"https://github.com/sagi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudflare Workers Secrets API\n\n[`@sagi.io/workers-secrets`](https://www.npmjs.com/package/@sagi.io/workers-secrets) is Cloudflare Workers Secrets API for workers and Node.js.\n\n[![CircleCI](https://circleci.com/gh/sagi/workers-secrets.svg?style=svg\u0026circle-token=e5282bece02d965a8fcde66d517bb599f20aa2e4)](https://circleci.com/gh/sagi/workers-secrets)\n[![Coverage Status](https://coveralls.io/repos/github/sagi/workers-secrets/badge.svg)](https://coveralls.io/github/sagi/workers-secrets)\n[![MIT License](https://img.shields.io/npm/l/@sagi.io/workers-secrets.svg?style=flat-square)](http://opensource.org/licenses/MIT)\n[![version](https://img.shields.io/npm/v/@sagi.io/workers-secrets.svg?style=flat-square)](http://npm.im/@sagi.io/workers-secrets)\n\n\nBased on [Cloudflare's wrangler implementation](https://github.com/cloudflare/wrangler/blob/master/src/commands/secret.rs).\n\n## API\n\n### **`WorkersSecretsAPI({ ... })`**\n\nInstantiates a `WorkersSecretsAPI` object with the methods defined below.\n\nFunction definition:\n\n```js\nconst WorkersSecretsAPI = function({\n  cfAccountId,\n  cfEmail,\n  cfAuthKey,\n  cfAuthToken,\n  fetchImpl,\n}){ ... }\n```\n\nWhere:\n\n  - **`cfAccountId`** *required* Your Cloudflare account id.\n  - **`cfEmail`** *optional|required* The email you registered with Cloudflare.\n  - **`cfAuthKey`** *optional|required* Your Cloudflare Auth Key.\n  - **`cfAuthToken`** *optional|required* Your Cloudflare Auth Token.\n  - **`fetchImpl`** *optional* when running on `Node.js` you need to provide a `fetch` implementation (e.g. `const fetchImpl = require('cross-fetch')`.\n\nUse `cfAuthToken` with a [Cloudflare auth token](https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys). You can also set `cfEmail` and `cfAuthKey` directly without using an auth token.\n\n### **`WorkersSecretsAPI.createSecret({ ... })`**\n\nFunction definition:\n\n```js\nconst createSecret= async ({\n  scriptName,\n  secretName,\n  secretValue,\n} = {}) =\u003e { ... }\n```\n\nWhere:\n\n  - **`scriptName`** *required* The name of the Cloudflare Workers Script (e.g. `anonymitybot-com`, can be found in Cloudflare's Dashboard).\n  - **`secretName`** *required* The secret name e.g. `ROTATIONAL_RANDOM_PEPPER`.\n  - **`secretValue`** *required* The secret value.\n\n### **`WorkersSecretsAPI.deleteSecret({ ... })`**\n\nFunction definition:\n\n```js\nconst deleteSecret= async ({\n  scriptName,\n  secretName,\n} = {}) =\u003e { ... }\n```\n\nWhere:\n\n  - **`scriptName`** *required* The name of the Cloudflare Workers Script (e.g. `anonymitybot-com`, can be found in Cloudflare's Dashboard).\n  - **`secretName`** *required* The secret name e.g. `ROTATIONAL_RANDOM_PEPPER`.\n\n\n### **`WorkersSecretsAPI.listSecrets({ ... })`**\n\nFunction definition:\n\n```js\nconst listSecrets= async ({\n  scriptName,\n} = {}) =\u003e { ... }\n```\n\nWhere:\n\n  - **`scriptName`** *required* The name of the Cloudflare Workers Script (e.g. `anonymitybot-com`, can be found in Cloudflare's Dashboard).\n\n\n## Example on Node.js\n\n\nRun `$ yarn build` and add the `CF_ACCOUNT_ID` and `CF_AUTH_TOKEN` environment variables.\n\n```js\nimport dotenv from \"dotenv\";\nimport WorkersSecretsAPI from \"./dist/main.js\";\nimport fetchImpl from \"cross-fetch\";\n\n(async () =\u003e {\n  dotenv.config();\n  const cfAccountId = process.env.CF_ACCOUNT_ID;\n  const cfAuthToken = process.env.CF_AUTH_TOKEN;\n  const scriptName = \"anonymitybot-xyz\";\n  const workersSecretsAPI = WorkersSecretsAPI({\n    cfAccountId,\n    cfAuthToken,\n    fetchImpl,\n  });\n  const data = await workersSecretsAPI.listSecrets({ scriptName });\n  console.log(data);\n})();\n```\n\n## Example on Cloudflare Workers\n\nSimply remove the `fetchImpl` import and usage.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagi%2Fworkers-secrets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagi%2Fworkers-secrets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagi%2Fworkers-secrets/lists"}