alchemy 0.68.0 → 0.69.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.
Files changed (181) hide show
  1. package/bin/alchemy.js +32 -33
  2. package/bin/commands/init.ts +41 -55
  3. package/lib/aws/control/properties.d.ts +64 -0
  4. package/lib/aws/control/properties.d.ts.map +1 -1
  5. package/lib/aws/control/properties.js +554 -39
  6. package/lib/aws/control/properties.js.map +1 -1
  7. package/lib/aws/control/resource.d.ts.map +1 -1
  8. package/lib/aws/control/resource.js +33 -0
  9. package/lib/aws/control/resource.js.map +1 -1
  10. package/lib/aws/control/types.d.ts +5451 -1587
  11. package/lib/aws/control/types.d.ts.map +1 -1
  12. package/lib/aws/control/types.js.map +1 -1
  13. package/lib/aws/control/update-types.d.ts +12913 -0
  14. package/lib/aws/control/update-types.d.ts.map +1 -0
  15. package/lib/aws/control/update-types.js +12916 -0
  16. package/lib/aws/control/update-types.js.map +1 -0
  17. package/lib/cloudflare/api.d.ts +1 -1
  18. package/lib/cloudflare/api.d.ts.map +1 -1
  19. package/lib/cloudflare/api.js +9 -10
  20. package/lib/cloudflare/api.js.map +1 -1
  21. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  22. package/lib/cloudflare/astro/astro.js +3 -3
  23. package/lib/cloudflare/astro/astro.js.map +1 -1
  24. package/lib/cloudflare/bucket-object.d.ts +86 -0
  25. package/lib/cloudflare/bucket-object.d.ts.map +1 -0
  26. package/lib/cloudflare/bucket-object.js +67 -0
  27. package/lib/cloudflare/bucket-object.js.map +1 -0
  28. package/lib/cloudflare/bucket.d.ts +36 -6
  29. package/lib/cloudflare/bucket.d.ts.map +1 -1
  30. package/lib/cloudflare/bucket.js +154 -18
  31. package/lib/cloudflare/bucket.js.map +1 -1
  32. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  33. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  34. package/lib/cloudflare/container.d.ts.map +1 -1
  35. package/lib/cloudflare/container.js +2 -2
  36. package/lib/cloudflare/container.js.map +1 -1
  37. package/lib/cloudflare/index.d.ts +1 -0
  38. package/lib/cloudflare/index.d.ts.map +1 -1
  39. package/lib/cloudflare/index.js +1 -0
  40. package/lib/cloudflare/index.js.map +1 -1
  41. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  42. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +44 -12
  43. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  44. package/lib/cloudflare/next.js.map +1 -1
  45. package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -1
  46. package/lib/cloudflare/nuxt/nuxt.js +3 -3
  47. package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
  48. package/lib/cloudflare/tanstack-start/plugin.d.ts +2 -15
  49. package/lib/cloudflare/tanstack-start/plugin.d.ts.map +1 -1
  50. package/lib/cloudflare/tanstack-start/plugin.js +5 -25
  51. package/lib/cloudflare/tanstack-start/plugin.js.map +1 -1
  52. package/lib/cloudflare/tanstack-start/tanstack-start.d.ts.map +1 -1
  53. package/lib/cloudflare/tanstack-start/tanstack-start.js +15 -4
  54. package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
  55. package/lib/cloudflare/vite/vite.d.ts.map +1 -1
  56. package/lib/cloudflare/vite/vite.js +3 -3
  57. package/lib/cloudflare/vite/vite.js.map +1 -1
  58. package/lib/cloudflare/website.d.ts +7 -1
  59. package/lib/cloudflare/website.d.ts.map +1 -1
  60. package/lib/cloudflare/website.js +20 -1
  61. package/lib/cloudflare/website.js.map +1 -1
  62. package/lib/cloudflare/worker-metadata.d.ts +4 -1
  63. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  64. package/lib/cloudflare/worker-metadata.js +2 -0
  65. package/lib/cloudflare/worker-metadata.js.map +1 -1
  66. package/lib/cloudflare/worker.d.ts +6 -0
  67. package/lib/cloudflare/worker.d.ts.map +1 -1
  68. package/lib/cloudflare/worker.js +1 -0
  69. package/lib/cloudflare/worker.js.map +1 -1
  70. package/lib/cloudflare/wrangler.json.d.ts +34 -9
  71. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  72. package/lib/cloudflare/wrangler.json.js +12 -1
  73. package/lib/cloudflare/wrangler.json.js.map +1 -1
  74. package/lib/docker/api.d.ts +22 -1
  75. package/lib/docker/api.d.ts.map +1 -1
  76. package/lib/docker/api.js +64 -2
  77. package/lib/docker/api.js.map +1 -1
  78. package/lib/docker/container.d.ts +88 -0
  79. package/lib/docker/container.d.ts.map +1 -1
  80. package/lib/docker/container.js +36 -0
  81. package/lib/docker/container.js.map +1 -1
  82. package/lib/llms.cloudflare.txt +2 -2
  83. package/lib/neon/branch.d.ts +19 -3
  84. package/lib/neon/branch.d.ts.map +1 -1
  85. package/lib/neon/branch.js +4 -4
  86. package/lib/neon/branch.js.map +1 -1
  87. package/lib/neon/project.d.ts +17 -1
  88. package/lib/neon/project.d.ts.map +1 -1
  89. package/lib/neon/project.js +4 -4
  90. package/lib/neon/project.js.map +1 -1
  91. package/lib/serde.d.ts +3 -0
  92. package/lib/serde.d.ts.map +1 -1
  93. package/lib/serde.js +40 -0
  94. package/lib/serde.js.map +1 -1
  95. package/lib/test/bun.js.map +1 -1
  96. package/package.json +1 -1
  97. package/src/aws/control/properties.ts +554 -39
  98. package/src/aws/control/resource.ts +58 -0
  99. package/src/aws/control/types.ts +85281 -84914
  100. package/src/aws/control/update-types.ts +12917 -0
  101. package/src/cloudflare/api.ts +9 -10
  102. package/src/cloudflare/astro/astro.ts +8 -3
  103. package/src/cloudflare/bucket-object.ts +127 -0
  104. package/src/cloudflare/bucket.ts +218 -18
  105. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  106. package/src/cloudflare/container.ts +4 -5
  107. package/src/cloudflare/index.ts +1 -0
  108. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +57 -13
  109. package/src/cloudflare/next.ts +2 -2
  110. package/src/cloudflare/nuxt/nuxt.ts +8 -3
  111. package/src/cloudflare/tanstack-start/plugin.ts +7 -28
  112. package/src/cloudflare/tanstack-start/tanstack-start.ts +15 -4
  113. package/src/cloudflare/vite/vite.ts +8 -3
  114. package/src/cloudflare/website.ts +29 -2
  115. package/src/cloudflare/worker-metadata.ts +6 -1
  116. package/src/cloudflare/worker.ts +7 -0
  117. package/src/cloudflare/wrangler.json.ts +47 -18
  118. package/src/docker/api.ts +86 -2
  119. package/src/docker/container.ts +97 -0
  120. package/src/llms.cloudflare.txt +2 -2
  121. package/src/neon/branch.ts +6 -5
  122. package/src/neon/project.ts +4 -4
  123. package/src/serde.ts +50 -0
  124. package/src/test/bun.ts +1 -1
  125. package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +2 -2
  126. package/templates/tanstack-start/.cta.json +13 -0
  127. package/templates/tanstack-start/README.md +267 -49
  128. package/templates/tanstack-start/_gitignore +9 -18
  129. package/templates/tanstack-start/alchemy.run.ts +2 -2
  130. package/templates/tanstack-start/package.json +24 -19
  131. package/templates/tanstack-start/public/favicon.ico +0 -0
  132. package/templates/tanstack-start/public/logo192.png +0 -0
  133. package/templates/tanstack-start/public/logo512.png +0 -0
  134. package/templates/tanstack-start/public/manifest.json +25 -0
  135. package/templates/tanstack-start/public/robots.txt +3 -0
  136. package/templates/tanstack-start/src/components/Header.tsx +21 -0
  137. package/templates/tanstack-start/src/logo.svg +12 -0
  138. package/templates/tanstack-start/src/router.tsx +7 -16
  139. package/templates/tanstack-start/src/routes/__root.tsx +13 -114
  140. package/templates/tanstack-start/src/routes/api.demo-names.ts +15 -0
  141. package/templates/tanstack-start/src/routes/demo.start.api-request.tsx +44 -0
  142. package/templates/tanstack-start/src/routes/demo.start.server-funcs.tsx +97 -0
  143. package/templates/tanstack-start/src/routes/index.tsx +31 -4
  144. package/templates/tanstack-start/src/styles.css +15 -0
  145. package/templates/tanstack-start/tsconfig.json +19 -22
  146. package/templates/tanstack-start/types/env.d.ts +2 -2
  147. package/templates/tanstack-start/vite.config.ts +16 -25
  148. package/workers/tunnel-proxy.js +1 -1
  149. package/templates/tanstack-start/_prettierignore +0 -4
  150. package/templates/tanstack-start/public/android-chrome-192x192.png +0 -0
  151. package/templates/tanstack-start/public/android-chrome-512x512.png +0 -0
  152. package/templates/tanstack-start/public/apple-touch-icon.png +0 -0
  153. package/templates/tanstack-start/public/favicon-16x16.png +0 -0
  154. package/templates/tanstack-start/public/favicon-32x32.png +0 -0
  155. package/templates/tanstack-start/public/favicon.png +0 -0
  156. package/templates/tanstack-start/public/site.webmanifest +0 -19
  157. package/templates/tanstack-start/src/components/DefaultCatchBoundary.tsx +0 -53
  158. package/templates/tanstack-start/src/components/NotFound.tsx +0 -25
  159. package/templates/tanstack-start/src/components/PostError.tsx +0 -5
  160. package/templates/tanstack-start/src/components/UserError.tsx +0 -5
  161. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-a.tsx +0 -10
  162. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-b.tsx +0 -10
  163. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout.tsx +0 -34
  164. package/templates/tanstack-start/src/routes/_pathlessLayout.tsx +0 -16
  165. package/templates/tanstack-start/src/routes/api/users.$userId.ts +0 -28
  166. package/templates/tanstack-start/src/routes/api/users.ts +0 -59
  167. package/templates/tanstack-start/src/routes/customScript[.]js.ts +0 -10
  168. package/templates/tanstack-start/src/routes/deferred.tsx +0 -62
  169. package/templates/tanstack-start/src/routes/posts.$postId.tsx +0 -34
  170. package/templates/tanstack-start/src/routes/posts.index.tsx +0 -8
  171. package/templates/tanstack-start/src/routes/posts.tsx +0 -38
  172. package/templates/tanstack-start/src/routes/posts_.$postId.deep.tsx +0 -29
  173. package/templates/tanstack-start/src/routes/redirect.tsx +0 -9
  174. package/templates/tanstack-start/src/routes/users.$userId.tsx +0 -44
  175. package/templates/tanstack-start/src/routes/users.index.tsx +0 -18
  176. package/templates/tanstack-start/src/routes/users.tsx +0 -49
  177. package/templates/tanstack-start/src/styles/app.css +0 -12
  178. package/templates/tanstack-start/src/utils/loggingMiddleware.tsx +0 -41
  179. package/templates/tanstack-start/src/utils/posts.tsx +0 -40
  180. package/templates/tanstack-start/src/utils/seo.ts +0 -33
  181. package/templates/tanstack-start/src/utils/users.tsx +0 -5
@@ -1,18 +0,0 @@
1
- import { createFileRoute } from '@tanstack/react-router'
2
- export const Route = createFileRoute('/users/')({
3
- component: UsersIndexComponent,
4
- })
5
-
6
- function UsersIndexComponent() {
7
- return (
8
- <div>
9
- Select a user or{' '}
10
- <a
11
- href="/api/users"
12
- className="text-blue-800 hover:text-blue-600 underline"
13
- >
14
- view as JSON
15
- </a>
16
- </div>
17
- )
18
- }
@@ -1,49 +0,0 @@
1
- import { Link, Outlet, createFileRoute } from '@tanstack/react-router'
2
- import type { User } from '../utils/users'
3
-
4
- export const Route = createFileRoute('/users')({
5
- loader: async () => {
6
- const res = await fetch('/api/users')
7
-
8
- if (!res.ok) {
9
- throw new Error('Unexpected status code')
10
- }
11
-
12
- const data = (await res.json()) as Array<User>
13
-
14
- return data
15
- },
16
- component: UsersComponent,
17
- })
18
-
19
- function UsersComponent() {
20
- const users = Route.useLoaderData()
21
-
22
- return (
23
- <div className="p-2 flex gap-2">
24
- <ul className="list-disc pl-4">
25
- {[
26
- ...users,
27
- { id: 'i-do-not-exist', name: 'Non-existent User', email: '' },
28
- ].map((user) => {
29
- return (
30
- <li key={user.id} className="whitespace-nowrap">
31
- <Link
32
- to="/users/$userId"
33
- params={{
34
- userId: String(user.id),
35
- }}
36
- className="block py-1 text-blue-800 hover:text-blue-600"
37
- activeProps={{ className: 'text-black font-bold' }}
38
- >
39
- <div>{user.name}</div>
40
- </Link>
41
- </li>
42
- )
43
- })}
44
- </ul>
45
- <hr />
46
- <Outlet />
47
- </div>
48
- )
49
- }
@@ -1,12 +0,0 @@
1
- @import "tailwindcss";
2
-
3
- :root {
4
- --border: var(--color-zinc-200);
5
- --popover: var(--color-white);
6
- --popover-foreground: var(--color-zinc-950);
7
- }
8
-
9
- @theme {
10
- --font-sans: var(--font-sans, Inter), ui-sans-serif, system-ui, sans-serif,
11
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
12
- }
@@ -1,41 +0,0 @@
1
- import { createMiddleware } from '@tanstack/react-start'
2
-
3
- const preLogMiddleware = createMiddleware({ type: 'function' })
4
- .client(async (ctx) => {
5
- const clientTime = new Date()
6
-
7
- return ctx.next({
8
- context: {
9
- clientTime,
10
- },
11
- sendContext: {
12
- clientTime,
13
- },
14
- })
15
- })
16
- .server(async (ctx) => {
17
- const serverTime = new Date()
18
-
19
- return ctx.next({
20
- sendContext: {
21
- serverTime,
22
- durationToServer:
23
- serverTime.getTime() - ctx.context.clientTime.getTime(),
24
- },
25
- })
26
- })
27
-
28
- export const logMiddleware = createMiddleware({ type: 'function' })
29
- .middleware([preLogMiddleware])
30
- .client(async (ctx) => {
31
- const res = await ctx.next()
32
-
33
- const now = new Date()
34
- console.log('Client Req/Res:', {
35
- duration: now.getTime() - res.context.clientTime.getTime(),
36
- durationToServer: res.context.durationToServer,
37
- durationFromServer: now.getTime() - res.context.serverTime.getTime(),
38
- })
39
-
40
- return res
41
- })
@@ -1,40 +0,0 @@
1
- import { notFound } from '@tanstack/react-router'
2
- import { createServerFn } from '@tanstack/react-start'
3
-
4
- export type PostType = {
5
- id: string
6
- title: string
7
- body: string
8
- }
9
-
10
- export const fetchPost = createServerFn()
11
- .validator((d: string) => d)
12
- .handler(async ({ data }) => {
13
- console.info(`Fetching post with id ${data}...`)
14
- const res = await fetch(
15
- `https://jsonplaceholder.typicode.com/posts/${data}`,
16
- )
17
- if (!res.ok) {
18
- if (res.status === 404) {
19
- throw notFound()
20
- }
21
-
22
- throw new Error('Failed to fetch post')
23
- }
24
-
25
- const post = (await res.json()) as PostType
26
-
27
- return post
28
- })
29
-
30
- export const fetchPosts = createServerFn().handler(async () => {
31
- console.info('Fetching posts...')
32
- const res = await fetch('https://jsonplaceholder.typicode.com/posts')
33
- if (!res.ok) {
34
- throw new Error('Failed to fetch posts')
35
- }
36
-
37
- const posts = (await res.json()) as Array<PostType>
38
-
39
- return posts.slice(0, 10)
40
- })
@@ -1,33 +0,0 @@
1
- export const seo = ({
2
- title,
3
- description,
4
- keywords,
5
- image,
6
- }: {
7
- title: string
8
- description?: string
9
- image?: string
10
- keywords?: string
11
- }) => {
12
- const tags = [
13
- { title },
14
- { name: 'description', content: description },
15
- { name: 'keywords', content: keywords },
16
- { name: 'twitter:title', content: title },
17
- { name: 'twitter:description', content: description },
18
- { name: 'twitter:creator', content: '@tannerlinsley' },
19
- { name: 'twitter:site', content: '@tannerlinsley' },
20
- { name: 'og:type', content: 'website' },
21
- { name: 'og:title', content: title },
22
- { name: 'og:description', content: description },
23
- ...(image
24
- ? [
25
- { name: 'twitter:image', content: image },
26
- { name: 'twitter:card', content: 'summary_large_image' },
27
- { name: 'og:image', content: image },
28
- ]
29
- : []),
30
- ]
31
-
32
- return tags
33
- }
@@ -1,5 +0,0 @@
1
- export type User = {
2
- id: number
3
- name: string
4
- email: string
5
- }