From a72dc0a16577558e599ea9ced7fa39cd952c2b78 Mon Sep 17 00:00:00 2001 From: Matt Silverlock Date: Mon, 19 Jun 2023 07:39:03 -0400 Subject: [PATCH] c3: add new Queues and Cron Triggers templates (#3474) * c3: add new Queues and Cron Triggers templates * c3: fix formatting * c3: rename scheduled; add tests; update common desc * Update packages/create-cloudflare/e2e-tests/workers.test.ts Co-authored-by: Adam Murray * c3: Apply suggestions from code review Co-authored-by: Adam Murray * c3: add changeset * c3: fix comments --------- Co-authored-by: Adam Murray --- .changeset/rare-mirrors-fly.md | 5 + package-lock.json | 4 +- .../e2e-tests/workers.test.ts | 8 + packages/create-cloudflare/src/cli.ts | 10 +- .../templates/queues/js/.editorconfig | 13 ++ .../templates/queues/js/.gitignore | 172 ++++++++++++++++++ .../templates/queues/js/.prettierrc | 6 + .../templates/queues/js/package.json | 14 ++ .../templates/queues/js/src/worker.js | 38 ++++ .../templates/queues/js/wrangler.toml | 19 ++ .../templates/queues/ts/.editorconfig | 13 ++ .../templates/queues/ts/.gitignore | 172 ++++++++++++++++++ .../templates/queues/ts/.prettierrc | 6 + .../templates/queues/ts/package.json | 14 ++ .../templates/queues/ts/src/worker.ts | 43 +++++ .../templates/queues/ts/tsconfig.json | 101 ++++++++++ .../templates/queues/ts/wrangler.toml | 19 ++ .../templates/scheduled/js/.editorconfig | 13 ++ .../templates/scheduled/js/.gitignore | 172 ++++++++++++++++++ .../templates/scheduled/js/.prettierrc | 6 + .../templates/scheduled/js/package.json | 14 ++ .../templates/scheduled/js/src/worker.js | 30 +++ .../templates/scheduled/js/wrangler.toml | 9 + .../templates/scheduled/ts/.editorconfig | 13 ++ .../templates/scheduled/ts/.gitignore | 172 ++++++++++++++++++ .../templates/scheduled/ts/.prettierrc | 6 + .../templates/scheduled/ts/package.json | 14 ++ .../templates/scheduled/ts/src/worker.ts | 50 +++++ .../templates/scheduled/ts/tsconfig.json | 101 ++++++++++ .../templates/scheduled/ts/wrangler.toml | 9 + 30 files changed, 1263 insertions(+), 3 deletions(-) create mode 100644 .changeset/rare-mirrors-fly.md create mode 100644 packages/create-cloudflare/templates/queues/js/.editorconfig create mode 100644 packages/create-cloudflare/templates/queues/js/.gitignore create mode 100644 packages/create-cloudflare/templates/queues/js/.prettierrc create mode 100644 packages/create-cloudflare/templates/queues/js/package.json create mode 100644 packages/create-cloudflare/templates/queues/js/src/worker.js create mode 100644 packages/create-cloudflare/templates/queues/js/wrangler.toml create mode 100644 packages/create-cloudflare/templates/queues/ts/.editorconfig create mode 100644 packages/create-cloudflare/templates/queues/ts/.gitignore create mode 100644 packages/create-cloudflare/templates/queues/ts/.prettierrc create mode 100644 packages/create-cloudflare/templates/queues/ts/package.json create mode 100644 packages/create-cloudflare/templates/queues/ts/src/worker.ts create mode 100644 packages/create-cloudflare/templates/queues/ts/tsconfig.json create mode 100644 packages/create-cloudflare/templates/queues/ts/wrangler.toml create mode 100644 packages/create-cloudflare/templates/scheduled/js/.editorconfig create mode 100644 packages/create-cloudflare/templates/scheduled/js/.gitignore create mode 100644 packages/create-cloudflare/templates/scheduled/js/.prettierrc create mode 100644 packages/create-cloudflare/templates/scheduled/js/package.json create mode 100644 packages/create-cloudflare/templates/scheduled/js/src/worker.js create mode 100644 packages/create-cloudflare/templates/scheduled/js/wrangler.toml create mode 100644 packages/create-cloudflare/templates/scheduled/ts/.editorconfig create mode 100644 packages/create-cloudflare/templates/scheduled/ts/.gitignore create mode 100644 packages/create-cloudflare/templates/scheduled/ts/.prettierrc create mode 100644 packages/create-cloudflare/templates/scheduled/ts/package.json create mode 100644 packages/create-cloudflare/templates/scheduled/ts/src/worker.ts create mode 100644 packages/create-cloudflare/templates/scheduled/ts/tsconfig.json create mode 100644 packages/create-cloudflare/templates/scheduled/ts/wrangler.toml diff --git a/.changeset/rare-mirrors-fly.md b/.changeset/rare-mirrors-fly.md new file mode 100644 index 000000000000..e2b233eea954 --- /dev/null +++ b/.changeset/rare-mirrors-fly.md @@ -0,0 +1,5 @@ +--- +"create-cloudflare": patch +--- + +Add new Queues and Scheduled (Cron Trigger) Worker templates. diff --git a/package-lock.json b/package-lock.json index 323546a0e360..99fe19897c38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2633,7 +2633,7 @@ }, "node_modules/@clack/prompts/node_modules/is-unicode-supported": { "version": "1.3.0", - "extraneous": true, + "dev": true, "inBundle": true, "license": "MIT", "engines": { @@ -35135,7 +35135,7 @@ "is-unicode-supported": { "version": "1.3.0", "bundled": true, - "extraneous": true + "dev": true } } }, diff --git a/packages/create-cloudflare/e2e-tests/workers.test.ts b/packages/create-cloudflare/e2e-tests/workers.test.ts index 95d14bb8a089..8b8a9c08fcca 100644 --- a/packages/create-cloudflare/e2e-tests/workers.test.ts +++ b/packages/create-cloudflare/e2e-tests/workers.test.ts @@ -74,4 +74,12 @@ describe("E2E: Workers templates", () => { test("chatgptPlugin", async () => { await runCli("chatgptPlugin"); }); + + test("queues", async () => { + await runCli("queues"); + }); + + test("scheduled", async () => { + await runCli("scheduled"); + }); }); diff --git a/packages/create-cloudflare/src/cli.ts b/packages/create-cloudflare/src/cli.ts index 19d9400e0d3d..065d2a28c364 100644 --- a/packages/create-cloudflare/src/cli.ts +++ b/packages/create-cloudflare/src/cli.ts @@ -122,7 +122,15 @@ const templateMap: Record = { handler: runWorkersGenerator, }, common: { - label: "Common Worker functions", + label: "Example router & proxy Worker", + handler: runWorkersGenerator, + }, + scheduled: { + label: "Scheduled Worker (Cron Trigger)", + handler: runWorkersGenerator, + }, + queues: { + label: "Queue consumer & producer Worker", handler: runWorkersGenerator, }, chatgptPlugin: { diff --git a/packages/create-cloudflare/templates/queues/js/.editorconfig b/packages/create-cloudflare/templates/queues/js/.editorconfig new file mode 100644 index 000000000000..64ab2601f9be --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +tab_width = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space diff --git a/packages/create-cloudflare/templates/queues/js/.gitignore b/packages/create-cloudflare/templates/queues/js/.gitignore new file mode 100644 index 000000000000..3b0fe33c47f1 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/.gitignore @@ -0,0 +1,172 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars +.wrangler/ diff --git a/packages/create-cloudflare/templates/queues/js/.prettierrc b/packages/create-cloudflare/templates/queues/js/.prettierrc new file mode 100644 index 000000000000..5c7b5d3c7a75 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 140, + "singleQuote": true, + "semi": true, + "useTabs": true +} diff --git a/packages/create-cloudflare/templates/queues/js/package.json b/packages/create-cloudflare/templates/queues/js/package.json new file mode 100644 index 000000000000..3c119f859777 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/package.json @@ -0,0 +1,14 @@ +{ + "name": "", + "version": "0.0.0", + "private": true, + "scripts": { + "deploy": "wrangler publish", + "start": "wrangler dev" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20230419.0", + "typescript": "^5.0.4", + "wrangler": "^3.0.0" + } +} diff --git a/packages/create-cloudflare/templates/queues/js/src/worker.js b/packages/create-cloudflare/templates/queues/js/src/worker.js new file mode 100644 index 000000000000..a5c8e94e1ebf --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/src/worker.js @@ -0,0 +1,38 @@ +/** + * Welcome to Cloudflare Workers! + * + * This is a template for a Queue consumer: a Worker that can consume from a + * Queue: https://developers.cloudflare.com/queues/get-started/ + * + * - Run `npm run dev` in your terminal to start a development server + * - Open a browser tab at http://localhost:8787/ to see your worker in action + * - Run `npm run deploy` to publish your worker + * + * Learn more at https://developers.cloudflare.com/workers/ + */ + +export default { + // Our fetch handler is invoked on a HTTP request: we can send a message to a queue + // during (or after) a request. + // https://developers.cloudflare.com/queues/platform/javascript-apis/#producer + async fetch(req, env, ctx) { + // To send a message on a queue, we need to create the queue first + // https://developers.cloudflare.com/queues/get-started/#3-create-a-queue + await env.MY_QUEUE.send({ + url: req.url, + method: req.method, + headers: Object.fromEntries(req.headers), + }); + return new Response('Sent message to the queue'); + }, + // The queue handler is invoked when a batch of messages is ready to be delivered + // https://developers.cloudflare.com/queues/platform/javascript-apis/#messagebatch + async queue(batch, env) { + // A queue consumer can make requests to other endpoints on the Internet, + // write to R2 object storage, query a D1 Database, and much more. + for (let message of batch.messages) { + // Process each message (we'll just log these) + console.log(`message ${message.id} processed: ${JSON.stringify(message.body)}`); + } + }, +}; diff --git a/packages/create-cloudflare/templates/queues/js/wrangler.toml b/packages/create-cloudflare/templates/queues/js/wrangler.toml new file mode 100644 index 000000000000..145a24b13b20 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/js/wrangler.toml @@ -0,0 +1,19 @@ +name = "" +main = "src/worker.js" +compatibility_date = "2023-05-15" + +# Bind a Queue producer. Use this binding to schedule an arbitrary task that may be processed later by a Queue consumer. +# Docs: https://developers.cloudflare.com/queues/get-started +# [[queues.producers]] +binding = "MY_QUEUE" +queue = "my-queue" + +# Bind a Queue consumer. Queue Consumers can retrieve tasks scheduled by Producers to act on them. +# Docs: https://developers.cloudflare.com/queues/get-started +# [[queues.consumers]] +queue = "my-queue" +# Optional: Configure batching and retries: https://developers.cloudflare.com/queues/learning/batching-retries/ +# max_batch_size = 10 +# max_batch_timeout = 30 +# max_retries = 10 +# dead_letter_queue = "my-queue-dlq" diff --git a/packages/create-cloudflare/templates/queues/ts/.editorconfig b/packages/create-cloudflare/templates/queues/ts/.editorconfig new file mode 100644 index 000000000000..64ab2601f9be --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +tab_width = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space diff --git a/packages/create-cloudflare/templates/queues/ts/.gitignore b/packages/create-cloudflare/templates/queues/ts/.gitignore new file mode 100644 index 000000000000..3b0fe33c47f1 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/.gitignore @@ -0,0 +1,172 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars +.wrangler/ diff --git a/packages/create-cloudflare/templates/queues/ts/.prettierrc b/packages/create-cloudflare/templates/queues/ts/.prettierrc new file mode 100644 index 000000000000..5c7b5d3c7a75 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 140, + "singleQuote": true, + "semi": true, + "useTabs": true +} diff --git a/packages/create-cloudflare/templates/queues/ts/package.json b/packages/create-cloudflare/templates/queues/ts/package.json new file mode 100644 index 000000000000..3c119f859777 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/package.json @@ -0,0 +1,14 @@ +{ + "name": "", + "version": "0.0.0", + "private": true, + "scripts": { + "deploy": "wrangler publish", + "start": "wrangler dev" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20230419.0", + "typescript": "^5.0.4", + "wrangler": "^3.0.0" + } +} diff --git a/packages/create-cloudflare/templates/queues/ts/src/worker.ts b/packages/create-cloudflare/templates/queues/ts/src/worker.ts new file mode 100644 index 000000000000..75179b1face3 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/src/worker.ts @@ -0,0 +1,43 @@ +/** + * Welcome to Cloudflare Workers! + * + * This is a template for a Queue consumer: a Worker that can consume from a + * Queue: https://developers.cloudflare.com/queues/get-started/ + * + * - Run `npm run dev` in your terminal to start a development server + * - Open a browser tab at http://localhost:8787/ to see your worker in action + * - Run `npm run deploy` to publish your worker + * + * Learn more at https://developers.cloudflare.com/workers/ + */ + +export interface Env { + // Example binding to a Queue. Learn more at https://developers.cloudflare.com/queues/javascript-apis/ + MY_QUEUE: Queue; +} + +export default { + // Our fetch handler is invoked on a HTTP request: we can send a message to a queue + // during (or after) a request. + // https://developers.cloudflare.com/queues/platform/javascript-apis/#producer + async fetch(req: Request, env: Env, ctx: ExecutionContext): Promise { + // To send a message on a queue, we need to create the queue first + // https://developers.cloudflare.com/queues/get-started/#3-create-a-queue + await env.MY_QUEUE.send({ + url: req.url, + method: req.method, + headers: Object.fromEntries(req.headers), + }); + return new Response('Sent message to the queue'); + }, + // The queue handler is invoked when a batch of messages is ready to be delivered + // https://developers.cloudflare.com/queues/platform/javascript-apis/#messagebatch + async queue(batch: MessageBatch, env: Env): Promise { + // A queue consumer can make requests to other endpoints on the Internet, + // write to R2 object storage, query a D1 Database, and much more. + for (let message of batch.messages) { + // Process each message (we'll just log these) + console.log(`message ${message.id} processed: ${JSON.stringify(message.body)}`); + } + }, +}; diff --git a/packages/create-cloudflare/templates/queues/ts/tsconfig.json b/packages/create-cloudflare/templates/queues/ts/tsconfig.json new file mode 100644 index 000000000000..2cb9189a162d --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/tsconfig.json @@ -0,0 +1,101 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": ["es2021"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + "jsx": "react" /* Specify what JSX code is generated. */, + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "es2022" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + "types": ["@cloudflare/workers-types"] /* Specify type package names to be included without being referenced in a source file. */, + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + "resolveJsonModule": true /* Enable importing .json files */, + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, + "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + "noEmit": true /* Disable emitting files from a compilation. */, + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, + "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, + // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/packages/create-cloudflare/templates/queues/ts/wrangler.toml b/packages/create-cloudflare/templates/queues/ts/wrangler.toml new file mode 100644 index 000000000000..21b87d0bf2b6 --- /dev/null +++ b/packages/create-cloudflare/templates/queues/ts/wrangler.toml @@ -0,0 +1,19 @@ +name = "" +main = "src/worker.ts" +compatibility_date = "2023-05-15" + +# Bind a Queue producer. Use this binding to schedule an arbitrary task that may be processed later by a Queue consumer. +# Docs: https://developers.cloudflare.com/queues/get-started +# [[queues.producers]] +binding = "MY_QUEUE" +queue = "my-queue" + +# Bind a Queue consumer. Queue Consumers can retrieve tasks scheduled by Producers to act on them. +# Docs: https://developers.cloudflare.com/queues/get-started +# [[queues.consumers]] +queue = "my-queue" +# Optional: Configure batching and retries: https://developers.cloudflare.com/queues/learning/batching-retries/ +# max_batch_size = 10 +# max_batch_timeout = 30 +# max_retries = 10 +# dead_letter_queue = "my-queue-dlq" diff --git a/packages/create-cloudflare/templates/scheduled/js/.editorconfig b/packages/create-cloudflare/templates/scheduled/js/.editorconfig new file mode 100644 index 000000000000..64ab2601f9be --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +tab_width = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space diff --git a/packages/create-cloudflare/templates/scheduled/js/.gitignore b/packages/create-cloudflare/templates/scheduled/js/.gitignore new file mode 100644 index 000000000000..3b0fe33c47f1 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/.gitignore @@ -0,0 +1,172 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars +.wrangler/ diff --git a/packages/create-cloudflare/templates/scheduled/js/.prettierrc b/packages/create-cloudflare/templates/scheduled/js/.prettierrc new file mode 100644 index 000000000000..5c7b5d3c7a75 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 140, + "singleQuote": true, + "semi": true, + "useTabs": true +} diff --git a/packages/create-cloudflare/templates/scheduled/js/package.json b/packages/create-cloudflare/templates/scheduled/js/package.json new file mode 100644 index 000000000000..3c119f859777 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/package.json @@ -0,0 +1,14 @@ +{ + "name": "", + "version": "0.0.0", + "private": true, + "scripts": { + "deploy": "wrangler publish", + "start": "wrangler dev" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20230419.0", + "typescript": "^5.0.4", + "wrangler": "^3.0.0" + } +} diff --git a/packages/create-cloudflare/templates/scheduled/js/src/worker.js b/packages/create-cloudflare/templates/scheduled/js/src/worker.js new file mode 100644 index 000000000000..8fd7b202e00a --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/src/worker.js @@ -0,0 +1,30 @@ +/** + * Welcome to Cloudflare Workers! + * + * This is a template for a Scheduled Worker: a Worker that can run on a + * configurable interval: + * https://developers.cloudflare.com/workers/platform/triggers/cron-triggers/ + * + * - Run `npm run dev` in your terminal to start a development server + * - Open a browser tab at http://localhost:8787/ to see your worker in action + * - Run `npm run deploy` to publish your worker + * + * Learn more at https://developers.cloudflare.com/workers/ + */ + +export default { + // The scheduled handler is invoked at the interval set in our wrangler.toml's + // [[triggers]] configuration. + async scheduled(event, env, ctx) { + // A Cron Trigger can make requests to other endpoints on the Internet, + // publish to a Queue, query a D1 Database, and much more. + // + // We'll keep it simple and make an API call to a Cloudflare API: + let resp = await fetch('https://api.cloudflare.com/client/v4/ips'); + let wasSuccessful = resp.ok ? 'success' : 'fail'; + + // You could store this result in KV, write to a D1 Database, or publish to a Queue. + // In this template, we'll just log the result: + console.log(`trigger fired at ${event.cron}: ${wasSuccessful}`); + }, +}; diff --git a/packages/create-cloudflare/templates/scheduled/js/wrangler.toml b/packages/create-cloudflare/templates/scheduled/js/wrangler.toml new file mode 100644 index 000000000000..3c0e134ce227 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/js/wrangler.toml @@ -0,0 +1,9 @@ +name = "" +main = "src/worker.ts" +compatibility_date = "2023-05-15" + +# Cron Triggers +# Docs: https://developers.cloudflare.com/workers/platform/triggers/cron-triggers/ +# Configuration: https://developers.cloudflare.com/workers/wrangler/configuration/#triggers +[triggers] +crons = ["* * * * *"] # * * * * * = run every minute diff --git a/packages/create-cloudflare/templates/scheduled/ts/.editorconfig b/packages/create-cloudflare/templates/scheduled/ts/.editorconfig new file mode 100644 index 000000000000..64ab2601f9be --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +tab_width = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space diff --git a/packages/create-cloudflare/templates/scheduled/ts/.gitignore b/packages/create-cloudflare/templates/scheduled/ts/.gitignore new file mode 100644 index 000000000000..3b0fe33c47f1 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/.gitignore @@ -0,0 +1,172 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars +.wrangler/ diff --git a/packages/create-cloudflare/templates/scheduled/ts/.prettierrc b/packages/create-cloudflare/templates/scheduled/ts/.prettierrc new file mode 100644 index 000000000000..5c7b5d3c7a75 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 140, + "singleQuote": true, + "semi": true, + "useTabs": true +} diff --git a/packages/create-cloudflare/templates/scheduled/ts/package.json b/packages/create-cloudflare/templates/scheduled/ts/package.json new file mode 100644 index 000000000000..3c119f859777 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/package.json @@ -0,0 +1,14 @@ +{ + "name": "", + "version": "0.0.0", + "private": true, + "scripts": { + "deploy": "wrangler publish", + "start": "wrangler dev" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20230419.0", + "typescript": "^5.0.4", + "wrangler": "^3.0.0" + } +} diff --git a/packages/create-cloudflare/templates/scheduled/ts/src/worker.ts b/packages/create-cloudflare/templates/scheduled/ts/src/worker.ts new file mode 100644 index 000000000000..674339b7c771 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/src/worker.ts @@ -0,0 +1,50 @@ +/** + * Welcome to Cloudflare Workers! + * + * This is a template for a Scheduled Worker: a Worker that can run on a + * configurable interval: + * https://developers.cloudflare.com/workers/platform/triggers/cron-triggers/ + * + * - Run `npm run dev` in your terminal to start a development server + * - Open a browser tab at http://localhost:8787/ to see your worker in action + * - Run `npm run deploy` to publish your worker + * + * Learn more at https://developers.cloudflare.com/workers/ + */ + +export interface Env { + // Example binding to KV. Learn more at https://developers.cloudflare.com/workers/runtime-apis/kv/ + // MY_KV_NAMESPACE: KVNamespace; + // + // Example binding to Durable Object. Learn more at https://developers.cloudflare.com/workers/runtime-apis/durable-objects/ + // MY_DURABLE_OBJECT: DurableObjectNamespace; + // + // Example binding to R2. Learn more at https://developers.cloudflare.com/workers/runtime-apis/r2/ + // MY_BUCKET: R2Bucket; + // + // Example binding to a Service. Learn more at https://developers.cloudflare.com/workers/runtime-apis/service-bindings/ + // MY_SERVICE: Fetcher; + // + // Example binding to a Queue. Learn more at https://developers.cloudflare.com/queues/javascript-apis/ + // MY_QUEUE: Queue; + // + // Example binding to a D1 Database. Learn more at https://developers.cloudflare.com/workers/platform/bindings/#d1-database-bindings + // DB: D1Database +} + +export default { + // The scheduled handler is invoked at the interval set in our wrangler.toml's + // [[triggers]] configuration. + async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext): Promise { + // A Cron Trigger can make requests to other endpoints on the Internet, + // publish to a Queue, query a D1 Database, and much more. + // + // We'll keep it simple and make an API call to a Cloudflare API: + let resp = await fetch('https://api.cloudflare.com/client/v4/ips'); + let wasSuccessful = resp.ok ? 'success' : 'fail'; + + // You could store this result in KV, write to a D1 Database, or publish to a Queue. + // In this template, we'll just log the result: + console.log(`trigger fired at ${event.cron}: ${wasSuccessful}`); + }, +}; diff --git a/packages/create-cloudflare/templates/scheduled/ts/tsconfig.json b/packages/create-cloudflare/templates/scheduled/ts/tsconfig.json new file mode 100644 index 000000000000..2cb9189a162d --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/tsconfig.json @@ -0,0 +1,101 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": ["es2021"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + "jsx": "react" /* Specify what JSX code is generated. */, + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "es2022" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + "types": ["@cloudflare/workers-types"] /* Specify type package names to be included without being referenced in a source file. */, + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + "resolveJsonModule": true /* Enable importing .json files */, + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, + "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + "noEmit": true /* Disable emitting files from a compilation. */, + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, + "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, + // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml b/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml new file mode 100644 index 000000000000..3c0e134ce227 --- /dev/null +++ b/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml @@ -0,0 +1,9 @@ +name = "" +main = "src/worker.ts" +compatibility_date = "2023-05-15" + +# Cron Triggers +# Docs: https://developers.cloudflare.com/workers/platform/triggers/cron-triggers/ +# Configuration: https://developers.cloudflare.com/workers/wrangler/configuration/#triggers +[triggers] +crons = ["* * * * *"] # * * * * * = run every minute