wrangler 0.0.0-e178d6fb → 0.0.0-e1c2f5b9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +16 -2
  2. package/bin/wrangler.js +31 -11
  3. package/miniflare-dist/index.mjs +1340 -330
  4. package/package.json +40 -13
  5. package/src/__tests__/access.test.ts +25 -0
  6. package/src/__tests__/api-dev.test.ts +238 -0
  7. package/src/__tests__/api-devregistry.test.js +64 -0
  8. package/src/__tests__/api.test.ts +80 -0
  9. package/src/__tests__/configuration.test.ts +683 -470
  10. package/src/__tests__/d1.test.ts +123 -0
  11. package/src/__tests__/delete.test.ts +263 -0
  12. package/src/__tests__/deployments.test.ts +105 -0
  13. package/src/__tests__/dev.test.tsx +453 -70
  14. package/src/__tests__/dialogs.test.tsx +40 -0
  15. package/src/__tests__/generate.test.ts +235 -0
  16. package/src/__tests__/get-host-from-url.test.ts +16 -0
  17. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  18. package/src/__tests__/helpers/mock-cfetch.ts +92 -26
  19. package/src/__tests__/helpers/mock-console.ts +11 -2
  20. package/src/__tests__/helpers/mock-dialogs.ts +1 -1
  21. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  22. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  23. package/src/__tests__/helpers/mock-kv.ts +1 -1
  24. package/src/__tests__/helpers/mock-oauth-flow.ts +74 -53
  25. package/src/__tests__/helpers/mock-process.ts +8 -13
  26. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  27. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  28. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  29. package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
  30. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  31. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  32. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  33. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  34. package/src/__tests__/helpers/msw/index.ts +21 -0
  35. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  36. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  37. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  38. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  39. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  40. package/src/__tests__/index.test.ts +103 -97
  41. package/src/__tests__/init.test.ts +1484 -382
  42. package/src/__tests__/jest.setup.ts +88 -5
  43. package/src/__tests__/kv.test.ts +655 -540
  44. package/src/__tests__/logout.test.ts +47 -0
  45. package/src/__tests__/metrics.test.ts +95 -45
  46. package/src/__tests__/middleware.scheduled.test.ts +145 -0
  47. package/src/__tests__/middleware.test.ts +750 -0
  48. package/src/__tests__/pages-deployment-tail.test.ts +884 -0
  49. package/src/__tests__/pages.test.ts +1301 -119
  50. package/src/__tests__/paths.test.ts +39 -0
  51. package/src/__tests__/publish.test.ts +2266 -1180
  52. package/src/__tests__/pubsub.test.ts +211 -88
  53. package/src/__tests__/queues.test.ts +522 -0
  54. package/src/__tests__/r2.test.ts +363 -203
  55. package/src/__tests__/secret.test.ts +261 -59
  56. package/src/__tests__/tail.test.ts +352 -151
  57. package/src/__tests__/test-old-node-version.js +3 -3
  58. package/src/__tests__/tsconfig-sanity.ts +12 -0
  59. package/src/__tests__/tsconfig.json +8 -0
  60. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  61. package/src/__tests__/type-generation.test.ts +233 -0
  62. package/src/__tests__/user.test.ts +59 -73
  63. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  64. package/src/__tests__/validate-dev-props.test.ts +56 -0
  65. package/src/__tests__/whoami.test.tsx +114 -66
  66. package/src/__tests__/worker-namespace.test.ts +154 -155
  67. package/src/api/dev.ts +170 -38
  68. package/src/api/index.ts +1 -0
  69. package/src/bundle-reporter.tsx +41 -2
  70. package/src/bundle.ts +668 -81
  71. package/src/cfetch/index.ts +40 -3
  72. package/src/cfetch/internal.ts +144 -32
  73. package/src/cli.ts +4 -3
  74. package/src/config/config.ts +27 -3
  75. package/src/config/environment.ts +131 -7
  76. package/src/config/index.ts +128 -8
  77. package/src/config/validation-helpers.ts +19 -6
  78. package/src/config/validation.ts +411 -14
  79. package/src/config-cache.ts +3 -2
  80. package/src/create-worker-preview.ts +31 -6
  81. package/src/create-worker-upload-form.ts +84 -22
  82. package/src/d1/backups.tsx +223 -0
  83. package/src/d1/constants.ts +2 -0
  84. package/src/d1/create.tsx +63 -0
  85. package/src/d1/delete.tsx +56 -0
  86. package/src/d1/execute.tsx +352 -0
  87. package/src/d1/formatTimeAgo.ts +14 -0
  88. package/src/d1/index.ts +101 -0
  89. package/src/d1/list.tsx +48 -0
  90. package/src/d1/migrations/apply.tsx +196 -0
  91. package/src/d1/migrations/create.tsx +77 -0
  92. package/src/d1/migrations/helpers.ts +147 -0
  93. package/src/d1/migrations/index.tsx +3 -0
  94. package/src/d1/migrations/list.tsx +79 -0
  95. package/src/d1/migrations/options.ts +18 -0
  96. package/src/d1/options.ts +22 -0
  97. package/src/d1/types.tsx +24 -0
  98. package/src/d1/utils.ts +48 -0
  99. package/src/delete.ts +108 -0
  100. package/src/deployments.ts +83 -0
  101. package/src/deprecated/index.ts +145 -0
  102. package/src/dev/dev-vars.ts +11 -8
  103. package/src/dev/dev.tsx +220 -58
  104. package/src/dev/get-local-persistence-path.tsx +31 -0
  105. package/src/dev/local.tsx +740 -181
  106. package/src/dev/remote.tsx +340 -123
  107. package/src/dev/start-server.ts +543 -0
  108. package/src/dev/use-esbuild.ts +61 -7
  109. package/src/dev/validate-dev-props.ts +31 -0
  110. package/src/dev-registry.tsx +201 -0
  111. package/src/dev.tsx +614 -258
  112. package/src/dialogs.tsx +41 -8
  113. package/src/{worker-namespace.ts → dispatch-namespace.ts} +23 -22
  114. package/src/docs/index.ts +97 -0
  115. package/src/entry.ts +3 -2
  116. package/src/environment-variables/factory.ts +88 -0
  117. package/src/environment-variables/misc-variables.ts +30 -0
  118. package/src/generate/index.ts +300 -0
  119. package/src/git-client.ts +100 -7
  120. package/src/index.tsx +249 -1560
  121. package/src/init.ts +626 -150
  122. package/src/inspect.ts +137 -32
  123. package/src/{metrics/is-ci.ts → is-ci.ts} +0 -0
  124. package/src/is-interactive.ts +4 -0
  125. package/src/jest.d.ts +4 -0
  126. package/src/{kv.ts → kv/helpers.ts} +3 -3
  127. package/src/kv/index.ts +596 -0
  128. package/src/logger.ts +27 -8
  129. package/src/metrics/index.ts +1 -0
  130. package/src/metrics/metrics-config.ts +4 -4
  131. package/src/metrics/metrics-dispatcher.ts +1 -0
  132. package/src/metrics/metrics-usage-headers.ts +24 -0
  133. package/src/metrics/send-event.ts +13 -8
  134. package/src/miniflare-cli/assets.ts +172 -465
  135. package/src/miniflare-cli/index.ts +149 -24
  136. package/src/miniflare-cli/tsconfig.json +9 -0
  137. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  138. package/src/miniflare-cli/types.ts +11 -0
  139. package/src/module-collection.ts +12 -3
  140. package/src/pages/build.tsx +108 -42
  141. package/src/pages/constants.ts +11 -0
  142. package/src/pages/deployment-tails.tsx +284 -0
  143. package/src/pages/deployments.tsx +9 -31
  144. package/src/pages/dev.tsx +417 -108
  145. package/src/pages/errors.ts +66 -0
  146. package/src/pages/functions/buildPlugin.ts +86 -84
  147. package/src/pages/functions/buildWorker.ts +121 -106
  148. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  149. package/src/pages/functions/routes-consolidation.ts +73 -0
  150. package/src/pages/functions/routes-transformation.test.ts +282 -0
  151. package/src/pages/functions/routes-transformation.ts +115 -0
  152. package/src/pages/functions/routes-validation.test.ts +403 -0
  153. package/src/pages/functions/routes-validation.ts +202 -0
  154. package/src/pages/functions/tsconfig.json +8 -0
  155. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  156. package/src/pages/functions.tsx +82 -0
  157. package/src/pages/hash.tsx +13 -0
  158. package/src/pages/index.tsx +73 -55
  159. package/src/pages/projects.tsx +9 -3
  160. package/src/pages/prompt-select-project.tsx +31 -0
  161. package/src/pages/publish.tsx +183 -60
  162. package/src/pages/types.ts +1 -0
  163. package/src/pages/upload.tsx +107 -56
  164. package/src/pages/utils.ts +13 -2
  165. package/src/paths.ts +49 -4
  166. package/src/proxy.ts +375 -157
  167. package/src/publish/index.ts +270 -0
  168. package/src/{publish.ts → publish/publish.ts} +431 -188
  169. package/src/pubsub/pubsub-commands.tsx +4 -3
  170. package/src/queues/cli/commands/consumer/add.ts +71 -0
  171. package/src/queues/cli/commands/consumer/index.ts +22 -0
  172. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  173. package/src/queues/cli/commands/create.ts +25 -0
  174. package/src/queues/cli/commands/delete.ts +26 -0
  175. package/src/queues/cli/commands/index.ts +36 -0
  176. package/src/queues/cli/commands/list.ts +25 -0
  177. package/src/queues/client.ts +135 -0
  178. package/src/queues/utils.ts +18 -0
  179. package/src/r2/constants.ts +4 -0
  180. package/src/r2/helpers.ts +131 -0
  181. package/src/r2/index.ts +289 -0
  182. package/src/routes.ts +140 -0
  183. package/src/secret/index.ts +379 -0
  184. package/src/sites.tsx +3 -3
  185. package/src/tail/createTail.ts +379 -0
  186. package/src/tail/filters.ts +4 -6
  187. package/src/tail/index.ts +199 -284
  188. package/src/tail/printing.ts +43 -3
  189. package/src/tsconfig-sanity.ts +16 -0
  190. package/src/type-generation.ts +181 -0
  191. package/src/user/access.ts +68 -0
  192. package/src/user/auth-variables.ts +113 -0
  193. package/src/user/choose-account.tsx +1 -1
  194. package/src/user/index.ts +0 -1
  195. package/src/user/user.tsx +116 -49
  196. package/src/utils/collectKeyValues.ts +14 -0
  197. package/src/whoami.tsx +80 -2
  198. package/src/worker.ts +69 -9
  199. package/src/yargs-types.ts +24 -0
  200. package/src/zones.ts +124 -9
  201. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  202. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  203. package/templates/__tests__/tsconfig.json +8 -0
  204. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  205. package/templates/d1-beta-facade.js +205 -0
  206. package/templates/facade.d.ts +14 -0
  207. package/templates/first-party-worker-module-facade.ts +19 -0
  208. package/templates/format-dev-errors.ts +33 -0
  209. package/templates/init-tests/test-jest-new-worker.js +23 -0
  210. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  211. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  212. package/templates/middleware/common.ts +62 -0
  213. package/templates/middleware/loader-modules.ts +82 -0
  214. package/templates/middleware/loader-sw.ts +233 -0
  215. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  216. package/templates/middleware/middleware-pretty-error.ts +40 -0
  217. package/templates/middleware/middleware-scheduled.ts +15 -0
  218. package/templates/new-worker.js +1 -1
  219. package/templates/pages-dev-pipeline.ts +31 -0
  220. package/templates/pages-dev-util.ts +52 -0
  221. package/templates/pages-shim.ts +4 -1
  222. package/templates/pages-template-plugin.ts +21 -5
  223. package/templates/pages-template-worker.ts +37 -9
  224. package/templates/{static-asset-facade.js → serve-static-assets.ts} +23 -7
  225. package/templates/service-bindings-module-facade.js +54 -0
  226. package/templates/service-bindings-sw-facade.js +42 -0
  227. package/templates/tsconfig-sanity.ts +11 -0
  228. package/templates/tsconfig.init.json +106 -0
  229. package/templates/tsconfig.json +5 -102
  230. package/templates/tsconfig.tsbuildinfo +1 -0
  231. package/wrangler-dist/cli.d.ts +621 -42
  232. package/wrangler-dist/cli.js +144441 -102606
  233. package/src/environment-variables.ts +0 -35
  234. package/src/faye-websocket.d.ts +0 -6
  235. package/src/generate.ts +0 -33
  236. package/src/miniflare-cli/enum-keys.ts +0 -17
  237. package/src/preview.ts +0 -31
  238. package/src/r2.ts +0 -50
  239. package/src/user/env-vars.ts +0 -46
@@ -1,9 +1,13 @@
1
+ import fs from "node:fs";
2
+ import dotenv from "dotenv";
1
3
  import { findUpSync } from "find-up";
2
4
  import { logger } from "../logger";
3
5
  import { parseTOML, readFileSync } from "../parse";
6
+ import { removeD1BetaPrefix } from "../worker";
4
7
  import { normalizeAndValidateConfig } from "./validation";
5
8
  import type { CfWorkerInit } from "../worker";
6
9
  import type { Config, RawConfig } from "./config";
10
+ import type { CamelCaseKey } from "yargs";
7
11
 
8
12
  export type {
9
13
  Config,
@@ -84,13 +88,17 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
84
88
  data_blobs,
85
89
  durable_objects,
86
90
  kv_namespaces,
91
+ queues,
92
+ d1_databases,
87
93
  r2_buckets,
94
+ logfwdr,
88
95
  services,
96
+ analytics_engine_datasets,
89
97
  text_blobs,
90
98
  unsafe,
91
99
  vars,
92
100
  wasm_modules,
93
- worker_namespaces,
101
+ dispatch_namespaces,
94
102
  } = bindings;
95
103
 
96
104
  if (data_blobs !== undefined && Object.keys(data_blobs).length > 0) {
@@ -137,6 +145,40 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
137
145
  });
138
146
  }
139
147
 
148
+ if (queues !== undefined && queues.length > 0) {
149
+ output.push({
150
+ type: "Queues",
151
+ entries: queues.map(({ binding, queue_name }) => {
152
+ return {
153
+ key: binding,
154
+ value: queue_name,
155
+ };
156
+ }),
157
+ });
158
+ }
159
+
160
+ if (d1_databases !== undefined && d1_databases.length > 0) {
161
+ output.push({
162
+ type: "D1 Databases",
163
+ entries: d1_databases.map(
164
+ ({ binding, database_name, database_id, preview_database_id }) => {
165
+ let databaseValue = `${database_id}`;
166
+ if (database_name) {
167
+ databaseValue = `${database_name} (${database_id})`;
168
+ }
169
+ //database_id is local when running `wrangler dev --local`
170
+ if (preview_database_id && database_id !== "local") {
171
+ databaseValue += `, Preview: (${preview_database_id})`;
172
+ }
173
+ return {
174
+ key: removeD1BetaPrefix(binding),
175
+ value: databaseValue,
176
+ };
177
+ }
178
+ ),
179
+ });
180
+ }
181
+
140
182
  if (r2_buckets !== undefined && r2_buckets.length > 0) {
141
183
  output.push({
142
184
  type: "R2 Buckets",
@@ -149,6 +191,18 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
149
191
  });
150
192
  }
151
193
 
194
+ if (logfwdr !== undefined && logfwdr.bindings.length > 0) {
195
+ output.push({
196
+ type: "logfwdr",
197
+ entries: logfwdr.bindings.map((binding) => {
198
+ return {
199
+ key: binding.name,
200
+ value: binding.destination,
201
+ };
202
+ }),
203
+ });
204
+ }
205
+
152
206
  if (services !== undefined && services.length > 0) {
153
207
  output.push({
154
208
  type: "Services",
@@ -166,6 +220,21 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
166
220
  });
167
221
  }
168
222
 
223
+ if (
224
+ analytics_engine_datasets !== undefined &&
225
+ analytics_engine_datasets.length > 0
226
+ ) {
227
+ output.push({
228
+ type: "Analytics Engine Datasets",
229
+ entries: analytics_engine_datasets.map(({ binding, dataset }) => {
230
+ return {
231
+ key: binding,
232
+ value: dataset ?? binding,
233
+ };
234
+ }),
235
+ });
236
+ }
237
+
169
238
  if (text_blobs !== undefined && Object.keys(text_blobs).length > 0) {
170
239
  output.push({
171
240
  type: "Text Blobs",
@@ -189,10 +258,20 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
189
258
  if (vars !== undefined && Object.keys(vars).length > 0) {
190
259
  output.push({
191
260
  type: "Vars",
192
- entries: Object.entries(vars).map(([key, value]) => ({
193
- key,
194
- value: `"${truncate(`${value}`)}"`,
195
- })),
261
+ entries: Object.entries(vars).map(([key, value]) => {
262
+ let parsedValue;
263
+ if (typeof value === "string") {
264
+ parsedValue = `"${truncate(value)}"`;
265
+ } else if (typeof value === "object") {
266
+ parsedValue = JSON.stringify(value, null, 1);
267
+ } else {
268
+ parsedValue = `${truncate(`${value}`)}`;
269
+ }
270
+ return {
271
+ key,
272
+ value: parsedValue,
273
+ };
274
+ }),
196
275
  });
197
276
  }
198
277
 
@@ -206,10 +285,10 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
206
285
  });
207
286
  }
208
287
 
209
- if (worker_namespaces !== undefined && worker_namespaces.length > 0) {
288
+ if (dispatch_namespaces !== undefined && dispatch_namespaces.length > 0) {
210
289
  output.push({
211
- type: "Worker Namespaces",
212
- entries: worker_namespaces.map(({ binding, namespace }) => {
290
+ type: "dispatch namespaces",
291
+ entries: dispatch_namespaces.map(({ binding, namespace }) => {
213
292
  return {
214
293
  key: binding,
215
294
  value: namespace,
@@ -236,3 +315,44 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
236
315
 
237
316
  logger.log(message);
238
317
  }
318
+
319
+ type CamelCase<T> = {
320
+ [key in keyof T as key | CamelCaseKey<key>]: T[key];
321
+ };
322
+
323
+ export function withConfig<T extends { config?: string }>(
324
+ handler: (
325
+ t: Omit<CamelCase<T>, "config"> & { config: Config }
326
+ ) => Promise<void>
327
+ ) {
328
+ return (t: CamelCase<T>) => {
329
+ const { config: configPath, ...rest } = t;
330
+ return handler({ ...rest, config: readConfig(configPath, rest) });
331
+ };
332
+ }
333
+
334
+ export interface DotEnv {
335
+ path: string;
336
+ parsed: dotenv.DotenvParseOutput;
337
+ }
338
+
339
+ function tryLoadDotEnv(path: string): DotEnv | undefined {
340
+ try {
341
+ const parsed = dotenv.parse(fs.readFileSync(path));
342
+ return { path, parsed };
343
+ } catch (e) {
344
+ logger.debug(`Failed to load .env file "${path}":`, e);
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Loads a dotenv file from <path>, preferring to read <path>.<environment> if
350
+ * <environment> is defined and that file exists.
351
+ */
352
+ export function loadDotEnv(path: string, env?: string): DotEnv | undefined {
353
+ if (env === undefined) {
354
+ return tryLoadDotEnv(path);
355
+ } else {
356
+ return tryLoadDotEnv(`${path}.${env}`) ?? tryLoadDotEnv(path);
357
+ }
358
+ }
@@ -383,7 +383,7 @@ export const validateRequiredProperty = (
383
383
  container: string,
384
384
  key: string,
385
385
  value: unknown,
386
- type: string,
386
+ type: TypeofType,
387
387
  choices?: unknown[]
388
388
  ): boolean => {
389
389
  if (container) {
@@ -417,7 +417,7 @@ export const validateOptionalProperty = (
417
417
  container: string,
418
418
  key: string,
419
419
  value: unknown,
420
- type: string,
420
+ type: TypeofType,
421
421
  choices?: unknown[]
422
422
  ): boolean => {
423
423
  if (value !== undefined) {
@@ -440,7 +440,7 @@ export const validateTypedArray = (
440
440
  diagnostics: Diagnostics,
441
441
  container: string,
442
442
  value: unknown,
443
- type: string
443
+ type: TypeofType
444
444
  ): boolean => {
445
445
  let isValid = true;
446
446
  if (!Array.isArray(value)) {
@@ -472,7 +472,7 @@ export const validateOptionalTypedArray = (
472
472
  diagnostics: Diagnostics,
473
473
  container: string,
474
474
  value: unknown,
475
- type: string
475
+ type: TypeofType
476
476
  ) => {
477
477
  if (value !== undefined) {
478
478
  return validateTypedArray(diagnostics, container, value, type);
@@ -486,7 +486,7 @@ export const validateOptionalTypedArray = (
486
486
  export const isRequiredProperty = <T extends object>(
487
487
  obj: object,
488
488
  prop: keyof T,
489
- type: string,
489
+ type: TypeofType,
490
490
  choices?: unknown[]
491
491
  ): obj is T =>
492
492
  hasProperty<T>(obj, prop) &&
@@ -499,7 +499,7 @@ export const isRequiredProperty = <T extends object>(
499
499
  export const isOptionalProperty = <T extends object>(
500
500
  obj: object,
501
501
  prop: keyof T,
502
- type: string
502
+ type: TypeofType
503
503
  ): obj is T => !hasProperty<T>(obj, prop) || typeof obj[prop] === type;
504
504
 
505
505
  /**
@@ -582,3 +582,16 @@ const isRecord = (
582
582
  value: unknown
583
583
  ): value is Record<string | number | symbol, unknown> =>
584
584
  typeof value === "object" && value !== null && !Array.isArray(value);
585
+
586
+ /**
587
+ * JavaScript `typeof` operator return values.
588
+ */
589
+ type TypeofType =
590
+ | "string"
591
+ | "number"
592
+ | "bigint"
593
+ | "boolean"
594
+ | "symbol"
595
+ | "undefined"
596
+ | "object"
597
+ | "function";