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.
- package/bin/alchemy.js +32 -33
- package/bin/commands/init.ts +41 -55
- package/lib/aws/control/properties.d.ts +64 -0
- package/lib/aws/control/properties.d.ts.map +1 -1
- package/lib/aws/control/properties.js +554 -39
- package/lib/aws/control/properties.js.map +1 -1
- package/lib/aws/control/resource.d.ts.map +1 -1
- package/lib/aws/control/resource.js +33 -0
- package/lib/aws/control/resource.js.map +1 -1
- package/lib/aws/control/types.d.ts +5451 -1587
- package/lib/aws/control/types.d.ts.map +1 -1
- package/lib/aws/control/types.js.map +1 -1
- package/lib/aws/control/update-types.d.ts +12913 -0
- package/lib/aws/control/update-types.d.ts.map +1 -0
- package/lib/aws/control/update-types.js +12916 -0
- package/lib/aws/control/update-types.js.map +1 -0
- package/lib/cloudflare/api.d.ts +1 -1
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +9 -10
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/astro/astro.d.ts.map +1 -1
- package/lib/cloudflare/astro/astro.js +3 -3
- package/lib/cloudflare/astro/astro.js.map +1 -1
- package/lib/cloudflare/bucket-object.d.ts +86 -0
- package/lib/cloudflare/bucket-object.d.ts.map +1 -0
- package/lib/cloudflare/bucket-object.js +67 -0
- package/lib/cloudflare/bucket-object.js.map +1 -0
- package/lib/cloudflare/bucket.d.ts +36 -6
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +154 -18
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
- package/lib/cloudflare/compatibility-date.gen.js +1 -1
- package/lib/cloudflare/container.d.ts.map +1 -1
- package/lib/cloudflare/container.js +2 -2
- package/lib/cloudflare/container.js.map +1 -1
- package/lib/cloudflare/index.d.ts +1 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +1 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +44 -12
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/next.js.map +1 -1
- package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -1
- package/lib/cloudflare/nuxt/nuxt.js +3 -3
- package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
- package/lib/cloudflare/tanstack-start/plugin.d.ts +2 -15
- package/lib/cloudflare/tanstack-start/plugin.d.ts.map +1 -1
- package/lib/cloudflare/tanstack-start/plugin.js +5 -25
- package/lib/cloudflare/tanstack-start/plugin.js.map +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.d.ts.map +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.js +15 -4
- package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
- package/lib/cloudflare/vite/vite.d.ts.map +1 -1
- package/lib/cloudflare/vite/vite.js +3 -3
- package/lib/cloudflare/vite/vite.js.map +1 -1
- package/lib/cloudflare/website.d.ts +7 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +20 -1
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +4 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +2 -0
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +6 -0
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +1 -0
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +34 -9
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +12 -1
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/docker/api.d.ts +22 -1
- package/lib/docker/api.d.ts.map +1 -1
- package/lib/docker/api.js +64 -2
- package/lib/docker/api.js.map +1 -1
- package/lib/docker/container.d.ts +88 -0
- package/lib/docker/container.d.ts.map +1 -1
- package/lib/docker/container.js +36 -0
- package/lib/docker/container.js.map +1 -1
- package/lib/llms.cloudflare.txt +2 -2
- package/lib/neon/branch.d.ts +19 -3
- package/lib/neon/branch.d.ts.map +1 -1
- package/lib/neon/branch.js +4 -4
- package/lib/neon/branch.js.map +1 -1
- package/lib/neon/project.d.ts +17 -1
- package/lib/neon/project.d.ts.map +1 -1
- package/lib/neon/project.js +4 -4
- package/lib/neon/project.js.map +1 -1
- package/lib/serde.d.ts +3 -0
- package/lib/serde.d.ts.map +1 -1
- package/lib/serde.js +40 -0
- package/lib/serde.js.map +1 -1
- package/lib/test/bun.js.map +1 -1
- package/package.json +1 -1
- package/src/aws/control/properties.ts +554 -39
- package/src/aws/control/resource.ts +58 -0
- package/src/aws/control/types.ts +85281 -84914
- package/src/aws/control/update-types.ts +12917 -0
- package/src/cloudflare/api.ts +9 -10
- package/src/cloudflare/astro/astro.ts +8 -3
- package/src/cloudflare/bucket-object.ts +127 -0
- package/src/cloudflare/bucket.ts +218 -18
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/container.ts +4 -5
- package/src/cloudflare/index.ts +1 -0
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +57 -13
- package/src/cloudflare/next.ts +2 -2
- package/src/cloudflare/nuxt/nuxt.ts +8 -3
- package/src/cloudflare/tanstack-start/plugin.ts +7 -28
- package/src/cloudflare/tanstack-start/tanstack-start.ts +15 -4
- package/src/cloudflare/vite/vite.ts +8 -3
- package/src/cloudflare/website.ts +29 -2
- package/src/cloudflare/worker-metadata.ts +6 -1
- package/src/cloudflare/worker.ts +7 -0
- package/src/cloudflare/wrangler.json.ts +47 -18
- package/src/docker/api.ts +86 -2
- package/src/docker/container.ts +97 -0
- package/src/llms.cloudflare.txt +2 -2
- package/src/neon/branch.ts +6 -5
- package/src/neon/project.ts +4 -4
- package/src/serde.ts +50 -0
- package/src/test/bun.ts +1 -1
- package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +2 -2
- package/templates/tanstack-start/.cta.json +13 -0
- package/templates/tanstack-start/README.md +267 -49
- package/templates/tanstack-start/_gitignore +9 -18
- package/templates/tanstack-start/alchemy.run.ts +2 -2
- package/templates/tanstack-start/package.json +24 -19
- package/templates/tanstack-start/public/favicon.ico +0 -0
- package/templates/tanstack-start/public/logo192.png +0 -0
- package/templates/tanstack-start/public/logo512.png +0 -0
- package/templates/tanstack-start/public/manifest.json +25 -0
- package/templates/tanstack-start/public/robots.txt +3 -0
- package/templates/tanstack-start/src/components/Header.tsx +21 -0
- package/templates/tanstack-start/src/logo.svg +12 -0
- package/templates/tanstack-start/src/router.tsx +7 -16
- package/templates/tanstack-start/src/routes/__root.tsx +13 -114
- package/templates/tanstack-start/src/routes/api.demo-names.ts +15 -0
- package/templates/tanstack-start/src/routes/demo.start.api-request.tsx +44 -0
- package/templates/tanstack-start/src/routes/demo.start.server-funcs.tsx +97 -0
- package/templates/tanstack-start/src/routes/index.tsx +31 -4
- package/templates/tanstack-start/src/styles.css +15 -0
- package/templates/tanstack-start/tsconfig.json +19 -22
- package/templates/tanstack-start/types/env.d.ts +2 -2
- package/templates/tanstack-start/vite.config.ts +16 -25
- package/workers/tunnel-proxy.js +1 -1
- package/templates/tanstack-start/_prettierignore +0 -4
- package/templates/tanstack-start/public/android-chrome-192x192.png +0 -0
- package/templates/tanstack-start/public/android-chrome-512x512.png +0 -0
- package/templates/tanstack-start/public/apple-touch-icon.png +0 -0
- package/templates/tanstack-start/public/favicon-16x16.png +0 -0
- package/templates/tanstack-start/public/favicon-32x32.png +0 -0
- package/templates/tanstack-start/public/favicon.png +0 -0
- package/templates/tanstack-start/public/site.webmanifest +0 -19
- package/templates/tanstack-start/src/components/DefaultCatchBoundary.tsx +0 -53
- package/templates/tanstack-start/src/components/NotFound.tsx +0 -25
- package/templates/tanstack-start/src/components/PostError.tsx +0 -5
- package/templates/tanstack-start/src/components/UserError.tsx +0 -5
- package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-a.tsx +0 -10
- package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-b.tsx +0 -10
- package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout.tsx +0 -34
- package/templates/tanstack-start/src/routes/_pathlessLayout.tsx +0 -16
- package/templates/tanstack-start/src/routes/api/users.$userId.ts +0 -28
- package/templates/tanstack-start/src/routes/api/users.ts +0 -59
- package/templates/tanstack-start/src/routes/customScript[.]js.ts +0 -10
- package/templates/tanstack-start/src/routes/deferred.tsx +0 -62
- package/templates/tanstack-start/src/routes/posts.$postId.tsx +0 -34
- package/templates/tanstack-start/src/routes/posts.index.tsx +0 -8
- package/templates/tanstack-start/src/routes/posts.tsx +0 -38
- package/templates/tanstack-start/src/routes/posts_.$postId.deep.tsx +0 -29
- package/templates/tanstack-start/src/routes/redirect.tsx +0 -9
- package/templates/tanstack-start/src/routes/users.$userId.tsx +0 -44
- package/templates/tanstack-start/src/routes/users.index.tsx +0 -18
- package/templates/tanstack-start/src/routes/users.tsx +0 -49
- package/templates/tanstack-start/src/styles/app.css +0 -12
- package/templates/tanstack-start/src/utils/loggingMiddleware.tsx +0 -41
- package/templates/tanstack-start/src/utils/posts.tsx +0 -40
- package/templates/tanstack-start/src/utils/seo.ts +0 -33
- 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
|
-
}
|