alchemy 0.57.0 → 0.57.1

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.
package/bin/alchemy.js CHANGED
@@ -26572,7 +26572,7 @@ var require_stat = /* @__PURE__ */ __commonJS$1({ "../node_modules/fs-extra/lib/
26572
26572
  return checkParentPathsSync(src, srcStat, destParent, funcName);
26573
26573
  }
26574
26574
  function areIdentical$2(srcStat, destStat) {
26575
- return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev;
26575
+ return destStat.ino !== void 0 && destStat.dev !== void 0 && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev;
26576
26576
  }
26577
26577
  function isSrcSubdir(src, dest) {
26578
26578
  const srcArr = path$30.resolve(src).split(path$30.sep).filter((i$1) => i$1);
@@ -27533,6 +27533,7 @@ __export(util_exports, {
27533
27533
  normalizeParams: () => normalizeParams,
27534
27534
  nullish: () => nullish$1,
27535
27535
  numKeys: () => numKeys,
27536
+ objectClone: () => objectClone,
27536
27537
  omit: () => omit,
27537
27538
  optionalKeys: () => optionalKeys,
27538
27539
  partial: () => partial,
@@ -27619,6 +27620,9 @@ function defineLazy(object$2, key, getter) {
27619
27620
  configurable: true
27620
27621
  });
27621
27622
  }
27623
+ function objectClone(obj) {
27624
+ return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
27625
+ }
27622
27626
  function assignProp(target, prop, value) {
27623
27627
  Object.defineProperty(target, prop, {
27624
27628
  value,
@@ -28858,7 +28862,7 @@ var Doc = class {
28858
28862
  const version$1 = {
28859
28863
  major: 4,
28860
28864
  minor: 0,
28861
- patch: 14
28865
+ patch: 15
28862
28866
  };
28863
28867
 
28864
28868
  //#endregion
@@ -37257,7 +37261,7 @@ function object(shape, params) {
37257
37261
  const def = {
37258
37262
  type: "object",
37259
37263
  get shape() {
37260
- assignProp(this, "shape", { ...shape });
37264
+ assignProp(this, "shape", shape ? objectClone(shape) : {});
37261
37265
  return this.shape;
37262
37266
  },
37263
37267
  ...normalizeParams(params)
@@ -37268,7 +37272,7 @@ function strictObject(shape, params) {
37268
37272
  return new ZodObject({
37269
37273
  type: "object",
37270
37274
  get shape() {
37271
- assignProp(this, "shape", { ...shape });
37275
+ assignProp(this, "shape", objectClone(shape));
37272
37276
  return this.shape;
37273
37277
  },
37274
37278
  catchall: never(),
@@ -37279,7 +37283,7 @@ function looseObject(shape, params) {
37279
37283
  return new ZodObject({
37280
37284
  type: "object",
37281
37285
  get shape() {
37282
- assignProp(this, "shape", { ...shape });
37286
+ assignProp(this, "shape", objectClone(shape));
37283
37287
  return this.shape;
37284
37288
  },
37285
37289
  catchall: unknown(),
@@ -50832,7 +50836,7 @@ const PKG_ROOT = path.join(distPath, "../");
50832
50836
  const dependencyVersionMap = {
50833
50837
  alchemy: process.env.NODE_ENV === "test" ? `file:${path.resolve(PKG_ROOT)}` : getPackageVersion(),
50834
50838
  miniflare: "^4.20250617.3",
50835
- "@cloudflare/workers-types": "^4.20250620.0",
50839
+ "@cloudflare/workers-types": "^4.20250805.0",
50836
50840
  wrangler: "^4.20.5",
50837
50841
  "@astrojs/cloudflare": "^12.6.0",
50838
50842
  "nitro-cloudflare-dev": "^0.2.2",
@@ -51013,7 +51017,7 @@ const POSTHOG_PROJECT_ID = process.env.POSTHOG_PROJECT_ID ?? "phc_A51Mi7Q63TvnNr
51013
51017
  //#endregion
51014
51018
  //#region package.json
51015
51019
  var name = "alchemy";
51016
- var version = "0.57.0";
51020
+ var version = "0.57.1";
51017
51021
  var license = "Apache-2.0";
51018
51022
  var author = "Sam Goodwin <sam@alchemy.run>";
51019
51023
  var homepage = "https://alchemy.run";
@@ -51229,7 +51233,8 @@ var peerDependencies = {
51229
51233
  "drizzle-orm": "^0.44.2",
51230
51234
  "hono": "^4.0.0",
51231
51235
  "prettier": "^3.0.0",
51232
- "stripe": "^17.0.0"
51236
+ "stripe": "^17.0.0",
51237
+ "@cloudflare/workers-types": "catalog:"
51233
51238
  };
51234
51239
  var devDependencies = {
51235
51240
  "@ai-sdk/anthropic": "^1.1.6",
@@ -51240,12 +51245,11 @@ var devDependencies = {
51240
51245
  "@clack/prompts": "^0.11.0",
51241
51246
  "@cloudflare/containers": "^0.0.13",
51242
51247
  "@cloudflare/puppeteer": "^1.0.2",
51243
- "@cloudflare/workers-types": "^4.20250620.0",
51244
51248
  "@iarna/toml": "^2.2.5",
51245
51249
  "@octokit/rest": "^21.1.1",
51246
51250
  "@react-router/dev": "^7.7.1",
51247
- "@sveltejs/adapter-cloudflare": "^7.1.2",
51248
51251
  "@sentry/cloudflare": "^9.43.0",
51252
+ "@sveltejs/adapter-cloudflare": "^7.1.2",
51249
51253
  "@types/bun": "latest",
51250
51254
  "@types/diff": "^5.0.0",
51251
51255
  "@types/fs-extra": "^11.0.4",
@@ -51273,7 +51277,7 @@ var devDependencies = {
51273
51277
  "picocolors": "^1.1.1",
51274
51278
  "prettier": "^3.5.3",
51275
51279
  "rwsdk": "^0.1.28",
51276
- "trpc-cli": "^0.10.0",
51280
+ "trpc-cli": "^0.10.2",
51277
51281
  "ts-morph": "^26.0.0",
51278
51282
  "tsdown": "^0.13.0",
51279
51283
  "turndown": "^7.2.0",
@@ -51657,17 +51661,17 @@ var import_lib$1 = /* @__PURE__ */ __toESM$1(require_lib(), 1);
51657
51661
  var import_picocolors$3 = /* @__PURE__ */ __toESM$1(require_picocolors(), 1);
51658
51662
  const isTest = process.env.NODE_ENV === "test";
51659
51663
  const create = loggedProcedure.meta({
51660
- description: "Create a new Alchemy project",
51664
+ description: "create a new alchemy project",
51661
51665
  negateBooleans: true
51662
51666
  }).input(zod_default.tuple([ProjectNameSchema.optional(), zod_default.object({
51663
51667
  template: TemplateSchema.optional(),
51664
- yes: zod_default.boolean().optional().describe("Skip prompts and use defaults"),
51665
- overwrite: zod_default.boolean().optional().describe("Overwrite existing directory"),
51666
- install: zod_default.boolean().optional().describe("Install dependencies after scaffolding"),
51667
- pm: PackageManagerSchema.optional().describe("Package manager to use (bun, npm, pnpm, yarn)"),
51668
- vibeRules: EditorSchema.optional().describe("Setup vibe-rules for the specified editor (cursor, windsurf, vscode, zed, claude-code, gemini, codex, amp, clinerules, roo, unified)"),
51669
- githubActions: zod_default.boolean().optional().describe("Setup GitHub Actions for PR previews"),
51670
- git: zod_default.boolean().optional().describe("Initialise a git repository")
51668
+ yes: zod_default.boolean().optional().describe("skip prompts and use defaults"),
51669
+ overwrite: zod_default.boolean().optional().describe("overwrite existing directory"),
51670
+ install: zod_default.boolean().optional().describe("install dependencies after scaffolding"),
51671
+ pm: PackageManagerSchema.optional().describe("package manager to use"),
51672
+ vibeRules: EditorSchema.optional().describe("setup vibe-rules for the specified editor"),
51673
+ githubActions: zod_default.boolean().optional().describe("setup github actions for PR previews"),
51674
+ git: zod_default.boolean().optional().describe("initialise a git repository")
51671
51675
  })])).mutation(async ({ input }) => {
51672
51676
  const [name$1, options] = input;
51673
51677
  const isTest$1 = process.env.NODE_ENV === "test";
@@ -51977,7 +51981,7 @@ function detectRuntime() {
51977
51981
  //#endregion
51978
51982
  //#region bin/services/execute-alchemy.ts
51979
51983
  var import_picocolors$2 = /* @__PURE__ */ __toESM$1(require_picocolors(), 1);
51980
- const entrypoint = zod_default.string().optional().describe("Path to the entrypoint file. Defaults to ./alchemy.run.ts > ./alchemy.run.js");
51984
+ const entrypoint = zod_default.string().optional().describe("Path to the entrypoint file");
51981
51985
  const watch = zod_default.boolean().optional().default(false).describe("Watch for changes to infrastructure and redeploy automatically");
51982
51986
  const force = zod_default.boolean().optional().default(false).describe("Apply updates to resources even if there are no changes");
51983
51987
  const execArgs = {
@@ -52064,7 +52068,7 @@ async function execAlchemy(main, { cwd: cwd$1 = process.cwd(), quiet, force: for
52064
52068
 
52065
52069
  //#endregion
52066
52070
  //#region bin/commands/deploy.ts
52067
- const deploy = loggedProcedure.meta({ description: "Deploy an Alchemy project" }).input(zod_default.tuple([entrypoint, zod_default.object({
52071
+ const deploy = loggedProcedure.meta({ description: "deploy an alchemy project" }).input(zod_default.tuple([entrypoint, zod_default.object({
52068
52072
  ...execArgs,
52069
52073
  force,
52070
52074
  watch
@@ -52072,14 +52076,14 @@ const deploy = loggedProcedure.meta({ description: "Deploy an Alchemy project" }
52072
52076
 
52073
52077
  //#endregion
52074
52078
  //#region bin/commands/destroy.ts
52075
- const destroy = loggedProcedure.meta({ description: "Deploy an Alchemy project" }).input(zod_default.tuple([entrypoint, zod_default.object(execArgs)])).mutation(async ({ input: [main, options] }) => execAlchemy(main, {
52079
+ const destroy = loggedProcedure.meta({ description: "deploy an alchemy project" }).input(zod_default.tuple([entrypoint, zod_default.object(execArgs)])).mutation(async ({ input: [main, options] }) => execAlchemy(main, {
52076
52080
  ...options,
52077
52081
  destroy: true
52078
52082
  }));
52079
52083
 
52080
52084
  //#endregion
52081
52085
  //#region bin/commands/dev.ts
52082
- const dev = loggedProcedure.meta({ description: "Run an Alchemy program in dev-mode (local simulation & hot reloading)" }).input(zod_default.tuple([entrypoint, zod_default.object({
52086
+ const dev = loggedProcedure.meta({ description: "run alchemy in dev mode" }).input(zod_default.tuple([entrypoint, zod_default.object({
52083
52087
  ...execArgs,
52084
52088
  force
52085
52089
  })])).mutation(async ({ input: [main, options] }) => execAlchemy(main, {
@@ -52860,9 +52864,9 @@ const isInteractive = () => {
52860
52864
  //#region bin/commands/login.ts
52861
52865
  var import_picocolors$1 = /* @__PURE__ */ __toESM$1(require_picocolors(), 1);
52862
52866
  var import_dist$1 = /* @__PURE__ */ __toESM$1(require_dist(), 1);
52863
- const login = loggedProcedure.meta({ description: "Login to Cloudflare" }).input(import_dist$1.zod.tuple([import_dist$1.zod.object({
52864
- scopes: import_dist$1.zod.array(import_dist$1.zod.string()).optional().default([]).describe("Cloudflare OAuth scopes to authorize"),
52865
- defaultScopes: import_dist$1.zod.boolean().optional().default(true).describe("Whether to include the default Wrangler scopes when authenticating")
52867
+ const login = loggedProcedure.meta({ description: "login to Cloudflare" }).input(import_dist$1.zod.tuple([import_dist$1.zod.object({
52868
+ scopes: import_dist$1.zod.array(import_dist$1.zod.string()).optional().default([]).describe("cloudflare OAuth scopes to authorize"),
52869
+ defaultScopes: import_dist$1.zod.boolean().optional().default(true).describe("whether to include the default Wrangler scopes when authenticating")
52866
52870
  })])).mutation(async ({ input: [options] }) => {
52867
52871
  try {
52868
52872
  Ie(import_picocolors$1.default.cyan("🔐 Cloudflare Login"));
@@ -52887,7 +52891,7 @@ const login = loggedProcedure.meta({ description: "Login to Cloudflare" }).input
52887
52891
 
52888
52892
  //#endregion
52889
52893
  //#region bin/commands/run.ts
52890
- const run = loggedProcedure.meta({ description: "Run an Alchemy program with read-only access to your infrastructure (no changes will be applied)" }).input(zod_default.tuple([entrypoint, zod_default.object({
52894
+ const run = loggedProcedure.meta({ description: "run alchemy in read-only mode" }).input(zod_default.tuple([entrypoint, zod_default.object({
52891
52895
  ...execArgs,
52892
52896
  watch
52893
52897
  })])).mutation(async ({ input: [main, options] }) => execAlchemy(main, {
@@ -229643,9 +229647,9 @@ var require_ts_morph = /* @__PURE__ */ __commonJS$1({ "../node_modules/ts-morph/
229643
229647
  var import_lib = /* @__PURE__ */ __toESM$1(require_lib(), 1);
229644
229648
  var import_picocolors = /* @__PURE__ */ __toESM$1(require_picocolors(), 1);
229645
229649
  var import_ts_morph = /* @__PURE__ */ __toESM$1(require_ts_morph(), 1);
229646
- const init = loggedProcedure.meta({ description: "Initialize Alchemy in an existing project" }).input(zod_default.tuple([zod_default.object({
229647
- framework: TemplateSchema.optional().describe("Force a specific framework instead of auto-detection"),
229648
- yes: zod_default.boolean().optional().describe("Skip prompts and use defaults")
229650
+ const init = loggedProcedure.meta({ description: "initialize alchemy in an existing project" }).input(zod_default.tuple([zod_default.object({
229651
+ framework: TemplateSchema.optional().describe("force a specific framework instead of auto-detection"),
229652
+ yes: zod_default.boolean().optional().describe("skip prompts and use defaults")
229649
229653
  })])).mutation(async ({ input: [options] }) => {
229650
229654
  try {
229651
229655
  Ie(import_picocolors.default.cyan("🧪 Initializing Alchemy in your project"));
@@ -40,7 +40,7 @@ const isTest = process.env.NODE_ENV === "test";
40
40
 
41
41
  export const create = loggedProcedure
42
42
  .meta({
43
- description: "Create a new Alchemy project",
43
+ description: "create a new alchemy project",
44
44
  negateBooleans: true,
45
45
  })
46
46
  .input(
@@ -48,26 +48,24 @@ export const create = loggedProcedure
48
48
  ProjectNameSchema.optional(),
49
49
  z.object({
50
50
  template: TemplateSchema.optional(),
51
- yes: z.boolean().optional().describe("Skip prompts and use defaults"),
51
+ yes: z.boolean().optional().describe("skip prompts and use defaults"),
52
52
  overwrite: z
53
53
  .boolean()
54
54
  .optional()
55
- .describe("Overwrite existing directory"),
55
+ .describe("overwrite existing directory"),
56
56
  install: z
57
57
  .boolean()
58
58
  .optional()
59
- .describe("Install dependencies after scaffolding"),
60
- pm: PackageManagerSchema.optional().describe(
61
- "Package manager to use (bun, npm, pnpm, yarn)",
62
- ),
59
+ .describe("install dependencies after scaffolding"),
60
+ pm: PackageManagerSchema.optional().describe("package manager to use"),
63
61
  vibeRules: EditorSchema.optional().describe(
64
- "Setup vibe-rules for the specified editor (cursor, windsurf, vscode, zed, claude-code, gemini, codex, amp, clinerules, roo, unified)",
62
+ "setup vibe-rules for the specified editor",
65
63
  ),
66
64
  githubActions: z
67
65
  .boolean()
68
66
  .optional()
69
- .describe("Setup GitHub Actions for PR previews"),
70
- git: z.boolean().optional().describe("Initialise a git repository"),
67
+ .describe("setup github actions for PR previews"),
68
+ git: z.boolean().optional().describe("initialise a git repository"),
71
69
  }),
72
70
  ]),
73
71
  )
@@ -10,7 +10,7 @@ import { loggedProcedure } from "../trpc.ts";
10
10
 
11
11
  export const deploy = loggedProcedure
12
12
  .meta({
13
- description: "Deploy an Alchemy project",
13
+ description: "deploy an alchemy project",
14
14
  })
15
15
  .input(
16
16
  z.tuple([
@@ -8,7 +8,7 @@ import { loggedProcedure } from "../trpc.ts";
8
8
 
9
9
  export const destroy = loggedProcedure
10
10
  .meta({
11
- description: "Deploy an Alchemy project",
11
+ description: "deploy an alchemy project",
12
12
  })
13
13
  .input(z.tuple([entrypoint, z.object(execArgs)]))
14
14
  .mutation(async ({ input: [main, options] }) =>
@@ -9,8 +9,7 @@ import { loggedProcedure } from "../trpc.ts";
9
9
 
10
10
  export const dev = loggedProcedure
11
11
  .meta({
12
- description:
13
- "Run an Alchemy program in dev-mode (local simulation & hot reloading)",
12
+ description: "run alchemy in dev mode",
14
13
  })
15
14
  .input(
16
15
  z.tuple([
@@ -27,15 +27,15 @@ import {
27
27
 
28
28
  export const init = loggedProcedure
29
29
  .meta({
30
- description: "Initialize Alchemy in an existing project",
30
+ description: "initialize alchemy in an existing project",
31
31
  })
32
32
  .input(
33
33
  z.tuple([
34
34
  z.object({
35
35
  framework: TemplateSchema.optional().describe(
36
- "Force a specific framework instead of auto-detection",
36
+ "force a specific framework instead of auto-detection",
37
37
  ),
38
- yes: z.boolean().optional().describe("Skip prompts and use defaults"),
38
+ yes: z.boolean().optional().describe("skip prompts and use defaults"),
39
39
  }),
40
40
  ]),
41
41
  )
@@ -7,7 +7,7 @@ import { loggedProcedure, ExitSignal } from "../trpc.ts";
7
7
 
8
8
  export const login = loggedProcedure
9
9
  .meta({
10
- description: "Login to Cloudflare",
10
+ description: "login to Cloudflare",
11
11
  })
12
12
  .input(
13
13
  z.tuple([
@@ -16,13 +16,13 @@ export const login = loggedProcedure
16
16
  .array(z.string())
17
17
  .optional()
18
18
  .default([])
19
- .describe("Cloudflare OAuth scopes to authorize"),
19
+ .describe("cloudflare OAuth scopes to authorize"),
20
20
  defaultScopes: z
21
21
  .boolean()
22
22
  .optional()
23
23
  .default(true)
24
24
  .describe(
25
- "Whether to include the default Wrangler scopes when authenticating",
25
+ "whether to include the default Wrangler scopes when authenticating",
26
26
  ),
27
27
  }),
28
28
  ]),
@@ -9,8 +9,7 @@ import { loggedProcedure } from "../trpc.ts";
9
9
 
10
10
  export const run = loggedProcedure
11
11
  .meta({
12
- description:
13
- "Run an Alchemy program with read-only access to your infrastructure (no changes will be applied)",
12
+ description: "run alchemy in read-only mode",
14
13
  })
15
14
  .input(
16
15
  z.tuple([
package/bin/constants.ts CHANGED
@@ -15,7 +15,7 @@ export const dependencyVersionMap = {
15
15
  miniflare: "^4.20250617.3",
16
16
 
17
17
  // all vite templates
18
- "@cloudflare/workers-types": "^4.20250620.0",
18
+ "@cloudflare/workers-types": "^4.20250805.0",
19
19
  wrangler: "^4.20.5",
20
20
 
21
21
  // astro
@@ -11,9 +11,7 @@ import { ExitSignal } from "../trpc.ts";
11
11
  export const entrypoint = z
12
12
  .string()
13
13
  .optional()
14
- .describe(
15
- "Path to the entrypoint file. Defaults to ./alchemy.run.ts > ./alchemy.run.js",
16
- );
14
+ .describe("Path to the entrypoint file");
17
15
 
18
16
  export const watch = z
19
17
  .boolean()
@@ -80,15 +80,16 @@ async function getFilesRecursively(dir, ignoreMatcher) {
80
80
  const files = await fs.readdir(dir, { withFileTypes: true });
81
81
  const result = [];
82
82
  await Promise.all(files.map(async (file) => {
83
- const path = `${dir}/${file.name}`;
83
+ const filePath = path.join(dir, file.name);
84
84
  if (ignoreMatcher.ignores(file.name)) {
85
85
  return;
86
86
  }
87
- if (file.isDirectory()) {
88
- result.push(...(await getFilesRecursively(path, ignoreMatcher)));
87
+ if (file.isDirectory() ||
88
+ (file.isSymbolicLink() && (await fs.stat(filePath)).isDirectory())) {
89
+ result.push(...(await getFilesRecursively(filePath, ignoreMatcher)));
89
90
  }
90
91
  else {
91
- result.push(path);
92
+ result.push(filePath);
92
93
  }
93
94
  }));
94
95
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/cloudflare/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/cloudflare/assets.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * The default Cloudflare Workers compatibility date, set based on the latest workerd release at the time of build.
3
3
  */
4
- export declare const DEFAULT_COMPATIBILITY_DATE = "2025-08-03";
4
+ export declare const DEFAULT_COMPATIBILITY_DATE = "2025-08-06";
5
5
  //# sourceMappingURL=compatibility-date.gen.d.ts.map
@@ -3,5 +3,5 @@
3
3
  /**
4
4
  * The default Cloudflare Workers compatibility date, set based on the latest workerd release at the time of build.
5
5
  */
6
- export const DEFAULT_COMPATIBILITY_DATE = "2025-08-03";
6
+ export const DEFAULT_COMPATIBILITY_DATE = "2025-08-06";
7
7
  //# sourceMappingURL=compatibility-date.gen.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alchemy",
3
- "version": "0.57.0",
3
+ "version": "0.57.1",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Sam Goodwin <sam@alchemy.run>",
6
6
  "homepage": "https://alchemy.run",
@@ -218,7 +218,8 @@
218
218
  "drizzle-orm": "^0.44.2",
219
219
  "hono": "^4.0.0",
220
220
  "prettier": "^3.0.0",
221
- "stripe": "^17.0.0"
221
+ "stripe": "^17.0.0",
222
+ "@cloudflare/workers-types": "catalog:"
222
223
  },
223
224
  "devDependencies": {
224
225
  "@ai-sdk/anthropic": "^1.1.6",
@@ -229,12 +230,11 @@
229
230
  "@clack/prompts": "^0.11.0",
230
231
  "@cloudflare/containers": "^0.0.13",
231
232
  "@cloudflare/puppeteer": "^1.0.2",
232
- "@cloudflare/workers-types": "^4.20250620.0",
233
233
  "@iarna/toml": "^2.2.5",
234
234
  "@octokit/rest": "^21.1.1",
235
235
  "@react-router/dev": "^7.7.1",
236
- "@sveltejs/adapter-cloudflare": "^7.1.2",
237
236
  "@sentry/cloudflare": "^9.43.0",
237
+ "@sveltejs/adapter-cloudflare": "^7.1.2",
238
238
  "@types/bun": "latest",
239
239
  "@types/diff": "^5.0.0",
240
240
  "@types/fs-extra": "^11.0.4",
@@ -262,7 +262,7 @@
262
262
  "picocolors": "^1.1.1",
263
263
  "prettier": "^3.5.3",
264
264
  "rwsdk": "^0.1.28",
265
- "trpc-cli": "^0.10.0",
265
+ "trpc-cli": "^0.10.2",
266
266
  "ts-morph": "^26.0.0",
267
267
  "tsdown": "^0.13.0",
268
268
  "turndown": "^7.2.0",
@@ -166,14 +166,17 @@ async function getFilesRecursively(
166
166
 
167
167
  await Promise.all(
168
168
  files.map(async (file) => {
169
- const path = `${dir}/${file.name}`;
169
+ const filePath = path.join(dir, file.name);
170
170
  if (ignoreMatcher.ignores(file.name)) {
171
171
  return;
172
172
  }
173
- if (file.isDirectory()) {
174
- result.push(...(await getFilesRecursively(path, ignoreMatcher)));
173
+ if (
174
+ file.isDirectory() ||
175
+ (file.isSymbolicLink() && (await fs.stat(filePath)).isDirectory())
176
+ ) {
177
+ result.push(...(await getFilesRecursively(filePath, ignoreMatcher)));
175
178
  } else {
176
- result.push(path);
179
+ result.push(filePath);
177
180
  }
178
181
  }),
179
182
  );
@@ -4,4 +4,4 @@
4
4
  /**
5
5
  * The default Cloudflare Workers compatibility date, set based on the latest workerd release at the time of build.
6
6
  */
7
- export const DEFAULT_COMPATIBILITY_DATE = "2025-08-03";
7
+ export const DEFAULT_COMPATIBILITY_DATE = "2025-08-06";
@@ -17,7 +17,7 @@
17
17
  "alchemy": "workspace:*",
18
18
  "@astrojs/cloudflare": "^12.6.0",
19
19
  "miniflare": "^4.20250617.3",
20
- "@cloudflare/workers-types": "^4.20250620.0",
20
+ "@cloudflare/workers-types": "^4.20250805.0",
21
21
  "typescript": "^5.8.3"
22
22
  }
23
23
  }
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "alchemy": "workspace:*",
20
- "@cloudflare/workers-types": "^4.20250620.0",
20
+ "@cloudflare/workers-types": "^4.20250805.0",
21
21
  "miniflare": "^4.20250617.3",
22
22
  "nitro-cloudflare-dev": "^0.2.2",
23
23
  "typescript": "^5.8.3"
@@ -34,7 +34,7 @@
34
34
  "rwsdk": "0.0.89"
35
35
  },
36
36
  "devDependencies": {
37
- "@cloudflare/workers-types": "^4.20250620.0",
37
+ "@cloudflare/workers-types": "^4.20250805.0",
38
38
  "miniflare": "^4.20250617.3",
39
39
  "@types/node": "^22.14.0",
40
40
  "@types/react": "^19.1.2",
@@ -1,6 +1,6 @@
1
- import alchemyRedwood from "alchemy/cloudflare/redwood";
1
+ import alchemy from "alchemy/cloudflare/redwood";
2
2
  import { defineConfig } from "vite";
3
3
 
4
4
  export default defineConfig({
5
- plugins: [alchemyRedwood()],
5
+ plugins: [alchemy()],
6
6
  });
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "devDependencies": {
17
17
  "alchemy": "workspace:*",
18
- "@cloudflare/workers-types": "^4.20250620.0",
18
+ "@cloudflare/workers-types": "^4.20250805.0",
19
19
  "miniflare": "^4.20250617.3",
20
20
  "@sveltejs/adapter-auto": "^6.0.0",
21
21
  "@sveltejs/adapter-cloudflare": "^7.0.4",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "devDependencies": {
23
23
  "alchemy": "workspace:*",
24
- "@cloudflare/workers-types": "^4.20250620.0",
24
+ "@cloudflare/workers-types": "^4.20250805.0",
25
25
  "@tailwindcss/vite": "^4.1.10",
26
26
  "@types/node": "^22.5.4",
27
27
  "@types/react": "^19.0.8",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "devDependencies": {
13
13
  "alchemy": "workspace:*",
14
- "@cloudflare/workers-types": "^4.20250620.0",
14
+ "@cloudflare/workers-types": "^4.20250805.0",
15
15
  "miniflare": "^4.20250617.3",
16
16
  "@types/node": "^24.0.3",
17
17
  "typescript": "^5.8.3"
@@ -18,7 +18,7 @@
18
18
  "devDependencies": {
19
19
  "alchemy": "workspace:*",
20
20
  "@cloudflare/vite-plugin": "^1.7.4",
21
- "@cloudflare/workers-types": "^4.20250620.0",
21
+ "@cloudflare/workers-types": "^4.20250805.0",
22
22
  "miniflare": "^4.20250617.3",
23
23
  "@eslint/js": "^9.25.0",
24
24
  "@types/react": "^19.1.2",