alchemy 2.0.0-beta.78 → 2.0.0-beta.79
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/cli.js +25 -65
- package/bin/exec.js +1 -1
- package/bin/tsconfig.json +5 -0
- package/lib/Cloudflare/Workers/InferEnv.d.ts +3 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +5 -2
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Prisma/Providers.d.ts +4 -1
- package/lib/Prisma/Providers.d.ts.map +1 -1
- package/lib/Prisma/Providers.js +7 -2
- package/lib/Prisma/Providers.js.map +1 -1
- package/lib/Prisma/Website/Artifact.d.ts +52 -0
- package/lib/Prisma/Website/Artifact.d.ts.map +1 -0
- package/lib/Prisma/Website/Artifact.js +285 -0
- package/lib/Prisma/Website/Artifact.js.map +1 -0
- package/lib/Prisma/Website/Astro.d.ts +62 -0
- package/lib/Prisma/Website/Astro.d.ts.map +1 -0
- package/lib/Prisma/Website/Astro.js +50 -0
- package/lib/Prisma/Website/Astro.js.map +1 -0
- package/lib/Prisma/Website/Foldkit.d.ts +30 -0
- package/lib/Prisma/Website/Foldkit.d.ts.map +1 -0
- package/lib/Prisma/Website/Foldkit.js +30 -0
- package/lib/Prisma/Website/Foldkit.js.map +1 -0
- package/lib/Prisma/Website/FrameworkSite.d.ts +82 -0
- package/lib/Prisma/Website/FrameworkSite.d.ts.map +1 -0
- package/lib/Prisma/Website/FrameworkSite.js +96 -0
- package/lib/Prisma/Website/FrameworkSite.js.map +1 -0
- package/lib/Prisma/Website/Nextjs.d.ts +35 -0
- package/lib/Prisma/Website/Nextjs.d.ts.map +1 -0
- package/lib/Prisma/Website/Nextjs.js +37 -0
- package/lib/Prisma/Website/Nextjs.js.map +1 -0
- package/lib/Prisma/Website/Nuxt.d.ts +37 -0
- package/lib/Prisma/Website/Nuxt.d.ts.map +1 -0
- package/lib/Prisma/Website/Nuxt.js +37 -0
- package/lib/Prisma/Website/Nuxt.js.map +1 -0
- package/lib/Prisma/Website/Octane.d.ts +35 -0
- package/lib/Prisma/Website/Octane.d.ts.map +1 -0
- package/lib/Prisma/Website/Octane.js +36 -0
- package/lib/Prisma/Website/Octane.js.map +1 -0
- package/lib/Prisma/Website/ReactRouter.d.ts +35 -0
- package/lib/Prisma/Website/ReactRouter.d.ts.map +1 -0
- package/lib/Prisma/Website/ReactRouter.js +36 -0
- package/lib/Prisma/Website/ReactRouter.js.map +1 -0
- package/lib/Prisma/Website/SolidStart.d.ts +37 -0
- package/lib/Prisma/Website/SolidStart.d.ts.map +1 -0
- package/lib/Prisma/Website/SolidStart.js +37 -0
- package/lib/Prisma/Website/SolidStart.js.map +1 -0
- package/lib/Prisma/Website/StaticSite.d.ts +57 -0
- package/lib/Prisma/Website/StaticSite.d.ts.map +1 -0
- package/lib/Prisma/Website/StaticSite.js +118 -0
- package/lib/Prisma/Website/StaticSite.js.map +1 -0
- package/lib/Prisma/Website/SvelteKit.d.ts +37 -0
- package/lib/Prisma/Website/SvelteKit.d.ts.map +1 -0
- package/lib/Prisma/Website/SvelteKit.js +37 -0
- package/lib/Prisma/Website/SvelteKit.js.map +1 -0
- package/lib/Prisma/Website/TanStackStart.d.ts +35 -0
- package/lib/Prisma/Website/TanStackStart.d.ts.map +1 -0
- package/lib/Prisma/Website/TanStackStart.js +36 -0
- package/lib/Prisma/Website/TanStackStart.js.map +1 -0
- package/lib/Prisma/Website/Vite.d.ts +42 -0
- package/lib/Prisma/Website/Vite.d.ts.map +1 -0
- package/lib/Prisma/Website/Vite.js +38 -0
- package/lib/Prisma/Website/Vite.js.map +1 -0
- package/lib/Prisma/Website/Vocs.d.ts +37 -0
- package/lib/Prisma/Website/Vocs.d.ts.map +1 -0
- package/lib/Prisma/Website/Vocs.js +38 -0
- package/lib/Prisma/Website/Vocs.js.map +1 -0
- package/lib/Prisma/Website/Waku.d.ts +44 -0
- package/lib/Prisma/Website/Waku.d.ts.map +1 -0
- package/lib/Prisma/Website/Waku.js +38 -0
- package/lib/Prisma/Website/Waku.js.map +1 -0
- package/lib/Prisma/Website/index.d.ts +15 -0
- package/lib/Prisma/Website/index.d.ts.map +1 -0
- package/lib/Prisma/Website/index.js +14 -0
- package/lib/Prisma/Website/index.js.map +1 -0
- package/lib/Prisma/index.d.ts +1 -0
- package/lib/Prisma/index.d.ts.map +1 -1
- package/lib/Prisma/index.js +1 -0
- package/lib/Prisma/index.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +11 -11
- package/lib/Website/Server.d.ts.map +1 -1
- package/lib/Website/Server.js +18 -8
- package/lib/Website/Server.js.map +1 -1
- package/package.json +6 -6
- package/src/Cloudflare/Workers/InferEnv.ts +5 -3
- package/src/Cloudflare/Workers/Worker.ts +25 -5
- package/src/Prisma/Providers.ts +11 -0
- package/src/Prisma/Website/Artifact.ts +429 -0
- package/src/Prisma/Website/Astro.ts +72 -0
- package/src/Prisma/Website/Foldkit.ts +34 -0
- package/src/Prisma/Website/FrameworkSite.ts +204 -0
- package/src/Prisma/Website/Nextjs.ts +41 -0
- package/src/Prisma/Website/Nuxt.ts +44 -0
- package/src/Prisma/Website/Octane.ts +40 -0
- package/src/Prisma/Website/ReactRouter.ts +40 -0
- package/src/Prisma/Website/SolidStart.ts +44 -0
- package/src/Prisma/Website/StaticSite.ts +149 -0
- package/src/Prisma/Website/SvelteKit.ts +44 -0
- package/src/Prisma/Website/TanStackStart.ts +40 -0
- package/src/Prisma/Website/Vite.ts +50 -0
- package/src/Prisma/Website/Vocs.ts +45 -0
- package/src/Prisma/Website/Waku.ts +52 -0
- package/src/Prisma/Website/index.ts +19 -0
- package/src/Prisma/index.ts +1 -0
- package/src/Website/Server.ts +21 -8
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { makeNodeServeEntrySource } from "@alchemy.run/frontend-frameworks/core";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as FileSystem from "effect/FileSystem";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { createPhysicalName } from "../../PhysicalName.js";
|
|
7
|
+
import * as Provider from "../../Provider.js";
|
|
8
|
+
import { Resource } from "../../Resource.js";
|
|
9
|
+
import { initialCwd } from "../../Util/Node.js";
|
|
10
|
+
import { packSiteExtraFiles } from "../../Website/packExtraFiles.js";
|
|
11
|
+
import { createComputeArchive } from "../ComputeArchive.js";
|
|
12
|
+
export const WebsiteArtifact = Resource("Prisma.WebsiteArtifact");
|
|
13
|
+
const MAX_ENTRIES = 50_000;
|
|
14
|
+
const MAX_BYTES = 256 * 1024 * 1024;
|
|
15
|
+
const MAX_FILE_BYTES = 128 * 1024 * 1024;
|
|
16
|
+
const excluded = (relative) => relative
|
|
17
|
+
.split(/[\\/]/)
|
|
18
|
+
.some((part) => /^(?:\.git|\.alchemy|\.env(?:\..*)?|\.envrc|\.npmrc|\.yarnrc.*|\.netrc|\.pypirc|\.aws|\.ssh)$/.test(part));
|
|
19
|
+
const javascript = (file) => /\.[cm]?[jt]sx?$/.test(file);
|
|
20
|
+
const nextExcluded = (relative) => /^\.next\/(?:cache|standalone|types|diagnostics|dev)(?:\/|$)/.test(relative) || /^\.next\/trace(?:-|$)/.test(relative);
|
|
21
|
+
const fail = (message) => Effect.fail(new Error(message));
|
|
22
|
+
/**
|
|
23
|
+
* Stage real build files and NFT's reachable runtime graph without relocating
|
|
24
|
+
* individual modules. Keeping their relative layout preserves import.meta.url,
|
|
25
|
+
* package scopes, pnpm links, and dynamically loaded framework chunks.
|
|
26
|
+
* The caller owns the surrounding Scope and must archive before it closes.
|
|
27
|
+
*/
|
|
28
|
+
export const stageWebsiteArtifact = Effect.fn(function* (props) {
|
|
29
|
+
const fs = yield* FileSystem.FileSystem;
|
|
30
|
+
const path = yield* Path.Path;
|
|
31
|
+
const root = yield* fs.realPath(path.resolve(initialCwd, props.root));
|
|
32
|
+
const dist = yield* fs.realPath(path.resolve(initialCwd, props.distDir));
|
|
33
|
+
const entry = props.serverEntry === undefined
|
|
34
|
+
? undefined
|
|
35
|
+
: yield* fs.realPath(path.resolve(initialCwd, props.serverEntry));
|
|
36
|
+
if (entry === undefined && props.static === undefined) {
|
|
37
|
+
return yield* fail("A website artifact requires a Node server entry or static serving options.");
|
|
38
|
+
}
|
|
39
|
+
if (entry !== undefined && (yield* fs.stat(entry)).type !== "File") {
|
|
40
|
+
return yield* fail(`Website server entry is not a file: ${entry}`);
|
|
41
|
+
}
|
|
42
|
+
if (props.layout !== "next" && dist === root) {
|
|
43
|
+
return yield* fail("Website output must be a dedicated build directory, not the application root.");
|
|
44
|
+
}
|
|
45
|
+
const files = new Set(entry === undefined ? [] : [entry]);
|
|
46
|
+
const seeds = new Set(entry === undefined ? [] : [entry]);
|
|
47
|
+
const manifests = [];
|
|
48
|
+
let visited = 0;
|
|
49
|
+
const collect = Effect.fn(function* (source, ancestors = new Set(), runtimePackage = false, boundary) {
|
|
50
|
+
if (++visited > MAX_ENTRIES)
|
|
51
|
+
return yield* fail("Website artifact exceeds the 50,000-entry safety limit.");
|
|
52
|
+
const relative = path.relative(root, source).replaceAll("\\", "/");
|
|
53
|
+
if (excluded(relative) ||
|
|
54
|
+
(runtimePackage && /(?:\.map|\.d\.ts)$/.test(source)) ||
|
|
55
|
+
(props.layout === "next" && nextExcluded(relative)))
|
|
56
|
+
return;
|
|
57
|
+
const real = yield* fs.realPath(source);
|
|
58
|
+
const relativeToBoundary = path.relative(boundary ?? real, real);
|
|
59
|
+
if (relativeToBoundary === ".." ||
|
|
60
|
+
relativeToBoundary.startsWith(`..${path.sep}`) ||
|
|
61
|
+
path.isAbsolute(relativeToBoundary)) {
|
|
62
|
+
return yield* fail(`Website output symlink escapes its selected directory: ${source}`);
|
|
63
|
+
}
|
|
64
|
+
const stat = yield* fs.stat(real);
|
|
65
|
+
if (stat.type === "Directory") {
|
|
66
|
+
if (ancestors.has(real))
|
|
67
|
+
return yield* fail(`Cyclic website output symlink: ${source}`);
|
|
68
|
+
const next = new Set([...ancestors, real]);
|
|
69
|
+
for (const name of yield* fs.readDirectory(source)) {
|
|
70
|
+
// Runtime dependencies are traced, never copied wholesale.
|
|
71
|
+
if (name === "node_modules")
|
|
72
|
+
continue;
|
|
73
|
+
yield* collect(path.join(source, name), next, runtimePackage, boundary ?? real);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (stat.type === "File") {
|
|
77
|
+
files.add(source);
|
|
78
|
+
if (!runtimePackage && props.static === undefined && javascript(source))
|
|
79
|
+
seeds.add(source);
|
|
80
|
+
if (props.layout === "next" && source.endsWith(".nft.json"))
|
|
81
|
+
manifests.push(source);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
return yield* fail(`Unsupported website output file: ${source}`);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const extras = yield* packSiteExtraFiles(props.layout === "next" ? root : dist, props.layout === "next" ? "next" : "client");
|
|
88
|
+
if (props.layout === "next" &&
|
|
89
|
+
!(yield* fs.exists(path.join(root, ".next", "BUILD_ID")))) {
|
|
90
|
+
return yield* fail("Next.js output is missing .next/BUILD_ID; run the production build before packaging.");
|
|
91
|
+
}
|
|
92
|
+
for (const extra of extras ?? [])
|
|
93
|
+
yield* collect(extra.source);
|
|
94
|
+
// Also include config extensions not currently listed by packSiteExtraFiles.
|
|
95
|
+
if (props.layout === "next") {
|
|
96
|
+
for (const name of ["next.config.mts", "next.config.cts"]) {
|
|
97
|
+
const config = path.join(root, name);
|
|
98
|
+
if (yield* fs.exists(config))
|
|
99
|
+
yield* collect(config);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (props.layout === "next") {
|
|
103
|
+
const nextPackage = yield* Effect.try(() => createRequire(path.join(root, "package.json")).resolve("next/package.json"));
|
|
104
|
+
const nextRoot = path.dirname(nextPackage);
|
|
105
|
+
// Next's custom server resolves internal modules through runtime alias
|
|
106
|
+
// tables that NFT cannot evaluate. Keep that package, not node_modules.
|
|
107
|
+
yield* collect(nextRoot, undefined, true);
|
|
108
|
+
yield* collect(path.join(nextRoot, "dist", "compiled", "webpack"));
|
|
109
|
+
}
|
|
110
|
+
for (const manifest of manifests) {
|
|
111
|
+
const text = yield* fs.readFileString(manifest);
|
|
112
|
+
const parsed = yield* Effect.try(() => JSON.parse(text));
|
|
113
|
+
if (!Array.isArray(parsed.files) ||
|
|
114
|
+
!parsed.files.every((file) => typeof file === "string")) {
|
|
115
|
+
return yield* fail(`Invalid Next.js trace manifest: ${manifest}`);
|
|
116
|
+
}
|
|
117
|
+
for (const file of parsed.files) {
|
|
118
|
+
const source = path.resolve(path.dirname(manifest), file);
|
|
119
|
+
if (excluded(path.relative(root, source)))
|
|
120
|
+
return yield* fail(`A Next.js runtime dependency is a sensitive file: ${source}`);
|
|
121
|
+
files.add(source);
|
|
122
|
+
if (javascript(source))
|
|
123
|
+
seeds.add(source);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const traceBase = path.parse(root).root;
|
|
127
|
+
const trace = seeds.size === 0
|
|
128
|
+
? { fileList: new Set() }
|
|
129
|
+
: yield* Effect.tryPromise({
|
|
130
|
+
try: () => import("@vercel/nft").then(({ nodeFileTrace }) => nodeFileTrace([...seeds], {
|
|
131
|
+
base: traceBase,
|
|
132
|
+
processCwd: root,
|
|
133
|
+
conditions: ["node", "production"],
|
|
134
|
+
analysis: {
|
|
135
|
+
emitGlobs: true,
|
|
136
|
+
computeFileReferences: true,
|
|
137
|
+
evaluatePureExpressions: true,
|
|
138
|
+
},
|
|
139
|
+
})),
|
|
140
|
+
catch: (cause) => new Error("Failed to trace website runtime dependencies. Install @vercel/nft in the deployment workspace.", { cause }),
|
|
141
|
+
}).pipe(Effect.timeout("90 seconds"));
|
|
142
|
+
for (const file of trace.fileList)
|
|
143
|
+
files.add(path.resolve(traceBase, file));
|
|
144
|
+
if (files.size > MAX_ENTRIES)
|
|
145
|
+
return yield* fail("Website dependency trace exceeds the 50,000-entry safety limit.");
|
|
146
|
+
const links = new Map();
|
|
147
|
+
const selected = new Set();
|
|
148
|
+
for (const file of files) {
|
|
149
|
+
if (excluded(path.relative(root, file)))
|
|
150
|
+
return yield* fail(`A website runtime dependency is a sensitive file: ${file}`);
|
|
151
|
+
const link = yield* fs
|
|
152
|
+
.readLink(file)
|
|
153
|
+
.pipe(Effect.catch(() => Effect.succeed(undefined)));
|
|
154
|
+
if (link !== undefined) {
|
|
155
|
+
const target = yield* fs.realPath(file);
|
|
156
|
+
links.set(file, target);
|
|
157
|
+
if ((yield* fs.stat(target)).type === "File")
|
|
158
|
+
selected.add(yield* fs.realPath(target));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const stat = yield* fs.stat(file);
|
|
162
|
+
if (stat.type !== "File")
|
|
163
|
+
return yield* fail(`A traced runtime dependency is not a file: ${file}`);
|
|
164
|
+
selected.add(file);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
let base = root;
|
|
168
|
+
const within = (directory, file) => {
|
|
169
|
+
const relative = path.relative(directory, file);
|
|
170
|
+
return (relative !== ".." &&
|
|
171
|
+
!relative.startsWith(`..${path.sep}`) &&
|
|
172
|
+
!path.isAbsolute(relative));
|
|
173
|
+
};
|
|
174
|
+
for (const file of [...selected, ...links.keys(), ...links.values()]) {
|
|
175
|
+
while (!within(base, file))
|
|
176
|
+
base = path.dirname(base);
|
|
177
|
+
}
|
|
178
|
+
const directory = yield* fs.makeTempDirectoryScoped({
|
|
179
|
+
prefix: "alchemy-prisma-website-",
|
|
180
|
+
});
|
|
181
|
+
// pnpm's peer-qualified store names exceed ustar's 100-byte link field.
|
|
182
|
+
// Shorten only store-directory names; package scopes and links stay intact.
|
|
183
|
+
const stores = new Map([
|
|
184
|
+
...new Set([...selected, ...links.keys(), ...links.values()].flatMap((file) => {
|
|
185
|
+
const parts = file.split(path.sep);
|
|
186
|
+
return parts.flatMap((part, index) => part === ".pnpm" && parts[index + 1] !== undefined
|
|
187
|
+
? [parts[index + 1]]
|
|
188
|
+
: []);
|
|
189
|
+
})),
|
|
190
|
+
]
|
|
191
|
+
.sort()
|
|
192
|
+
.map((name, index) => [name, `p${index.toString(36)}`]));
|
|
193
|
+
const staged = (file) => {
|
|
194
|
+
const parts = path.relative(base, file).split(path.sep);
|
|
195
|
+
return path.join(directory, "files", ...parts.map((part, index) => parts[index - 1] === ".pnpm" ? (stores.get(part) ?? part) : part));
|
|
196
|
+
};
|
|
197
|
+
let bytes = 0;
|
|
198
|
+
for (const file of [...selected].sort()) {
|
|
199
|
+
const stat = yield* fs.stat(file);
|
|
200
|
+
const size = Number(stat.size);
|
|
201
|
+
bytes += size;
|
|
202
|
+
if (size > MAX_FILE_BYTES || bytes > MAX_BYTES)
|
|
203
|
+
return yield* fail("Website artifact exceeds Prisma Compute's file or total byte safety limit.");
|
|
204
|
+
const dest = staged(file);
|
|
205
|
+
yield* fs.makeDirectory(path.dirname(dest), { recursive: true });
|
|
206
|
+
yield* fs.copyFile(file, dest);
|
|
207
|
+
yield* fs.chmod(dest, stat.mode & 0o777);
|
|
208
|
+
}
|
|
209
|
+
for (const [file, target] of links) {
|
|
210
|
+
// NFT also reports resolution-only links with no retained runtime files.
|
|
211
|
+
if (!(yield* fs.exists(staged(target))))
|
|
212
|
+
continue;
|
|
213
|
+
const dest = staged(file);
|
|
214
|
+
if (yield* fs.exists(dest))
|
|
215
|
+
continue;
|
|
216
|
+
yield* fs.makeDirectory(path.dirname(dest), { recursive: true });
|
|
217
|
+
yield* fs.symlink(path.relative(path.dirname(dest), staged(target)), dest);
|
|
218
|
+
}
|
|
219
|
+
if (props.static !== undefined) {
|
|
220
|
+
const client = path.relative(directory, staged(dist)).replaceAll("\\", "/");
|
|
221
|
+
yield* fs.writeFileString(path.join(directory, "server.mjs"), makeNodeServeEntrySource({
|
|
222
|
+
...props.static,
|
|
223
|
+
clientDirExpression: `fileURLToPath(new URL(${JSON.stringify(`./${client}/`)}, import.meta.url))`,
|
|
224
|
+
}));
|
|
225
|
+
return { directory, entrypoint: "server.mjs", requiredFiles: [] };
|
|
226
|
+
}
|
|
227
|
+
if (entry === undefined)
|
|
228
|
+
return yield* fail("Missing website server entry.");
|
|
229
|
+
const entryRelative = path
|
|
230
|
+
.relative(directory, staged(entry))
|
|
231
|
+
.replaceAll("\\", "/");
|
|
232
|
+
const cwdRelative = path
|
|
233
|
+
.relative(directory, staged(root))
|
|
234
|
+
.replaceAll("\\", "/");
|
|
235
|
+
yield* fs.makeDirectory(staged(root), { recursive: true });
|
|
236
|
+
yield* fs.writeFileString(path.join(directory, "server.mjs"), [
|
|
237
|
+
'import { fileURLToPath } from "node:url";',
|
|
238
|
+
`process.chdir(fileURLToPath(new URL(${JSON.stringify(`./${cwdRelative}/`)}, import.meta.url)));`,
|
|
239
|
+
`await import(new URL(${JSON.stringify(`./${entryRelative}`)}, import.meta.url).href);`,
|
|
240
|
+
"",
|
|
241
|
+
].join("\n"));
|
|
242
|
+
return {
|
|
243
|
+
directory,
|
|
244
|
+
entrypoint: "server.mjs",
|
|
245
|
+
requiredFiles: [entryRelative],
|
|
246
|
+
};
|
|
247
|
+
});
|
|
248
|
+
export const WebsiteArtifactProvider = () => Provider.effect(WebsiteArtifact, Effect.gen(function* () {
|
|
249
|
+
const fs = yield* FileSystem.FileSystem;
|
|
250
|
+
const path = yield* Path.Path;
|
|
251
|
+
return {
|
|
252
|
+
list: () => Effect.succeed([]),
|
|
253
|
+
// Traced dependencies can change independently of the framework's hash.
|
|
254
|
+
diff: () => Effect.succeed({ action: "update" }),
|
|
255
|
+
reconcile: Effect.fn(function* ({ id, news }) {
|
|
256
|
+
const name = yield* createPhysicalName({ id, maxLength: 80 });
|
|
257
|
+
const directory = path.join(initialCwd, ".alchemy", "prisma-websites", name);
|
|
258
|
+
return yield* Effect.scoped(Effect.gen(function* () {
|
|
259
|
+
const staged = yield* stageWebsiteArtifact(news);
|
|
260
|
+
const archive = yield* createComputeArchive({
|
|
261
|
+
...staged,
|
|
262
|
+
output: "file",
|
|
263
|
+
});
|
|
264
|
+
return yield* Effect.gen(function* () {
|
|
265
|
+
yield* fs.makeDirectory(directory, { recursive: true });
|
|
266
|
+
const artifactPath = path.join(directory, `${archive.sha256}.tar.gz`);
|
|
267
|
+
yield* fs.copyFile(archive.path, artifactPath);
|
|
268
|
+
for (const old of yield* fs.readDirectory(directory)) {
|
|
269
|
+
if (old !== path.basename(artifactPath) &&
|
|
270
|
+
/^[a-f0-9]{64}\.tar\.gz$/.test(old)) {
|
|
271
|
+
yield* fs.remove(path.join(directory, old), {
|
|
272
|
+
force: true,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return { directory, artifactPath, hash: archive.sha256 };
|
|
277
|
+
}).pipe(Effect.ensuring(archive.cleanup));
|
|
278
|
+
}));
|
|
279
|
+
}),
|
|
280
|
+
delete: Effect.fn(function* ({ output }) {
|
|
281
|
+
yield* fs.remove(output.directory, { recursive: true, force: true });
|
|
282
|
+
}),
|
|
283
|
+
};
|
|
284
|
+
}));
|
|
285
|
+
//# sourceMappingURL=Artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Artifact.js","sourceRoot":"","sources":["../../../src/Prisma/Website/Artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type FrameworkSiteProps } from "./FrameworkSite.ts";
|
|
2
|
+
/** Configuration for a Prisma Astro website. */
|
|
3
|
+
export interface AstroProps extends FrameworkSiteProps {
|
|
4
|
+
/** Serializable overrides merged over astro.config.*; the Node target owns adapter. */
|
|
5
|
+
astro?: {
|
|
6
|
+
/** Canonical deployment URL. */
|
|
7
|
+
site?: string;
|
|
8
|
+
/** Deployment base path. */
|
|
9
|
+
base?: string;
|
|
10
|
+
/** Render on demand or prerender every page. @default "server" */
|
|
11
|
+
output?: "server" | "static";
|
|
12
|
+
/** Source directory relative to rootDir. @default "./src" */
|
|
13
|
+
srcDir?: string;
|
|
14
|
+
/** Static passthrough directory. @default "./public" */
|
|
15
|
+
publicDir?: string;
|
|
16
|
+
/** Production output directory. @default "./dist" */
|
|
17
|
+
outDir?: string;
|
|
18
|
+
/** Route trailing-slash policy. */
|
|
19
|
+
trailingSlash?: "always" | "never" | "ignore";
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Astro SSR and prerendered pages on Prisma Compute. The Node target owns the adapter; omit adapter from astro.config.*. Set astro.output to "static" to prerender every page.
|
|
24
|
+
*
|
|
25
|
+
* Native framework development and HMR run without Prisma cloud resources.
|
|
26
|
+
* Apply `Alchemy.remote()` to use the live Compute deployment during dev.
|
|
27
|
+
* Packaging requires the optional `@vercel/nft` peer dependency.
|
|
28
|
+
*
|
|
29
|
+
* ### Creating a Website
|
|
30
|
+
* **Example:** Astro application
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const site = yield* Prisma.Website.Astro("Web", {
|
|
33
|
+
* rootDir: "./app",
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* ### Deployment Configuration
|
|
38
|
+
* **Example:** Existing project and custom hostname
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const site = yield* Prisma.Website.Astro("Web", {
|
|
41
|
+
* project,
|
|
42
|
+
* domain: "www.example.com",
|
|
43
|
+
* env: { API_BASE: "https://api.example.com" },
|
|
44
|
+
* compute: { destroyOldDeployment: true },
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* ### Static Output
|
|
49
|
+
* **Example:** Prerendered documentation with a 404 page
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const docs = yield* Prisma.Website.Astro("Docs", {
|
|
52
|
+
* rootDir: "./docs",
|
|
53
|
+
* astro: { output: "static" },
|
|
54
|
+
* assets: { notFoundHandling: "404-page" },
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @resource
|
|
59
|
+
* @product Website
|
|
60
|
+
*/
|
|
61
|
+
export declare const Astro: (id: string, props?: AstroProps) => import("effect/Effect").Effect<import("./FrameworkSite.ts").Website, never, import("../../AlchemyContext.ts").AlchemyContext | import("../../Provider.ts").Provider<import("../../Website/Server.ts").Server> | import("../../Provider.ts").Provider<import("./Artifact.ts").WebsiteArtifact> | import("../Providers.ts").Providers>;
|
|
62
|
+
//# sourceMappingURL=Astro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Astro.d.ts","sourceRoot":"","sources":["../../../src/Prisma/Website/Astro.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,gDAAgD;AAChD,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,uFAAuF;IACvF,KAAK,CAAC,EAAE;QACN,gCAAgC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,kEAAkE;QAClE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC7B,6DAA6D;QAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,wDAAwD;QACxD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qDAAqD;QACrD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,mCAAmC;QACnC,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;KAC/C,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,KAAK,OAAQ,MAAM,UAAS,UAAU,yUAQtB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as Namespace from "../../Namespace.js";
|
|
2
|
+
import { makeFrameworkSite } from "./FrameworkSite.js";
|
|
3
|
+
/**
|
|
4
|
+
* Astro SSR and prerendered pages on Prisma Compute. The Node target owns the adapter; omit adapter from astro.config.*. Set astro.output to "static" to prerender every page.
|
|
5
|
+
*
|
|
6
|
+
* Native framework development and HMR run without Prisma cloud resources.
|
|
7
|
+
* Apply `Alchemy.remote()` to use the live Compute deployment during dev.
|
|
8
|
+
* Packaging requires the optional `@vercel/nft` peer dependency.
|
|
9
|
+
*
|
|
10
|
+
* ### Creating a Website
|
|
11
|
+
* **Example:** Astro application
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const site = yield* Prisma.Website.Astro("Web", {
|
|
14
|
+
* rootDir: "./app",
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* ### Deployment Configuration
|
|
19
|
+
* **Example:** Existing project and custom hostname
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const site = yield* Prisma.Website.Astro("Web", {
|
|
22
|
+
* project,
|
|
23
|
+
* domain: "www.example.com",
|
|
24
|
+
* env: { API_BASE: "https://api.example.com" },
|
|
25
|
+
* compute: { destroyOldDeployment: true },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ### Static Output
|
|
30
|
+
* **Example:** Prerendered documentation with a 404 page
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const docs = yield* Prisma.Website.Astro("Docs", {
|
|
33
|
+
* rootDir: "./docs",
|
|
34
|
+
* astro: { output: "static" },
|
|
35
|
+
* assets: { notFoundHandling: "404-page" },
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @resource
|
|
40
|
+
* @product Website
|
|
41
|
+
*/
|
|
42
|
+
export const Astro = (id, props = {}) => makeFrameworkSite(id, props, {
|
|
43
|
+
framework: "@alchemy.run/frontend-frameworks/astro",
|
|
44
|
+
target: "@alchemy.run/frontend-frameworks/astro/node",
|
|
45
|
+
options: {
|
|
46
|
+
astro: { ...props.astro, output: props.astro?.output ?? "server" },
|
|
47
|
+
},
|
|
48
|
+
notFoundHandling: "none",
|
|
49
|
+
}).pipe(Namespace.push(id));
|
|
50
|
+
//# sourceMappingURL=Astro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Astro.js","sourceRoot":"","sources":["../../../src/Prisma/Website/Astro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,oBAAoB,CAAC;AAuBhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,KAAK,GAAe,EAAE,EAAE,EAAE,CAC1D,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE;IAC3B,SAAS,EAAE,wCAAwC;IACnD,MAAM,EAAE,6CAA6C;IACrD,OAAO,EAAE;QACP,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,EAAE;KACnE;IACD,gBAAgB,EAAE,MAAM;CACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ViteProps } from "./Vite.ts";
|
|
2
|
+
/** Configuration for a client-only Foldkit website. */
|
|
3
|
+
export interface FoldkitProps extends ViteProps {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Deploy a Foldkit Vite application to Prisma Compute with SPA routing.
|
|
7
|
+
* The project's Foldkit Vite plugin drives the build; native Vite HMR runs
|
|
8
|
+
* during development without creating cloud resources.
|
|
9
|
+
*
|
|
10
|
+
* ### Creating a Website
|
|
11
|
+
* **Example:** Foldkit application
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const site = yield* Prisma.Website.Foldkit("Web", {
|
|
14
|
+
* rootDir: "./app",
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* ### Multi-Page Routing
|
|
19
|
+
* **Example:** Override the default SPA fallback
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const site = yield* Prisma.Website.Foldkit("Web", {
|
|
22
|
+
* assets: { notFoundHandling: "404-page" },
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @resource
|
|
27
|
+
* @product Website
|
|
28
|
+
*/
|
|
29
|
+
export declare const Foldkit: (id: string, props?: FoldkitProps) => import("effect/Effect").Effect<import("./FrameworkSite.ts").Website, never, import("../../AlchemyContext.ts").AlchemyContext | import("../../Provider.ts").Provider<import("../../Website/Server.ts").Server> | import("../../Provider.ts").Provider<import("./Artifact.ts").WebsiteArtifact> | import("../Providers.ts").Providers>;
|
|
30
|
+
//# sourceMappingURL=Foldkit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Foldkit.d.ts","sourceRoot":"","sources":["../../../src/Prisma/Website/Foldkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEjD,uDAAuD;AACvD,MAAM,WAAW,YAAa,SAAQ,SAAS;CAAG;AAElD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,OAAO,OAAQ,MAAM,UAAS,YAAY,yUAInD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Vite } from "./Vite.js";
|
|
2
|
+
/**
|
|
3
|
+
* Deploy a Foldkit Vite application to Prisma Compute with SPA routing.
|
|
4
|
+
* The project's Foldkit Vite plugin drives the build; native Vite HMR runs
|
|
5
|
+
* during development without creating cloud resources.
|
|
6
|
+
*
|
|
7
|
+
* ### Creating a Website
|
|
8
|
+
* **Example:** Foldkit application
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const site = yield* Prisma.Website.Foldkit("Web", {
|
|
11
|
+
* rootDir: "./app",
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* ### Multi-Page Routing
|
|
16
|
+
* **Example:** Override the default SPA fallback
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const site = yield* Prisma.Website.Foldkit("Web", {
|
|
19
|
+
* assets: { notFoundHandling: "404-page" },
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @resource
|
|
24
|
+
* @product Website
|
|
25
|
+
*/
|
|
26
|
+
export const Foldkit = (id, props = {}) => Vite(id, {
|
|
27
|
+
...props,
|
|
28
|
+
assets: { notFoundHandling: "single-page-application", ...props.assets },
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=Foldkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Foldkit.js","sourceRoot":"","sources":["../../../src/Prisma/Website/Foldkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,WAAW,CAAC;AAKjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,KAAK,GAAiB,EAAE,EAAE,EAAE,CAC9D,IAAI,CAAC,EAAE,EAAE;IACP,GAAG,KAAK;IACR,MAAM,EAAE,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;CACzE,CAAC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Output from "../../Output.ts";
|
|
3
|
+
import * as Redacted from "effect/Redacted";
|
|
4
|
+
import { AlchemyContext } from "../../AlchemyContext.ts";
|
|
5
|
+
import type { MemoOptions } from "../../Command/Memo.ts";
|
|
6
|
+
import type { WebsiteAssetsProps } from "../../Website/assets.ts";
|
|
7
|
+
import { Server, type ServerDevProps } from "../../Website/Server.ts";
|
|
8
|
+
import { Compute, type ComputeProps } from "../Compute.ts";
|
|
9
|
+
import { CustomDomain } from "../CustomDomain.ts";
|
|
10
|
+
import { Project } from "../Project.ts";
|
|
11
|
+
import type { Providers } from "../Providers.ts";
|
|
12
|
+
import type { PrismaRegionId } from "../Types.ts";
|
|
13
|
+
import { WebsiteArtifact } from "./Artifact.ts";
|
|
14
|
+
/** A Prisma Project resource, ID, or lightweight ID reference. */
|
|
15
|
+
export type WebsiteProjectReference = Project | string | {
|
|
16
|
+
/** Existing Prisma project ID; no project is created or owned by the site. */
|
|
17
|
+
readonly projectId: string | Output.Output<string>;
|
|
18
|
+
};
|
|
19
|
+
/** Deployment controls that do not replace the framework build or artifact. */
|
|
20
|
+
export type WebsiteComputeOptions = Pick<ComputeProps, "appName" | "port" | "envClass" | "start" | "skipPromote" | "destroyOldDeployment" | "timeoutSeconds" | "pollIntervalMs" | "verifyUrl" | "healthCheck" | "urlReadinessTimeoutSeconds">;
|
|
21
|
+
/** Shared contract for Prisma's framework website composites. */
|
|
22
|
+
export interface FrameworkSiteProps {
|
|
23
|
+
/** Existing Project or ID reference, optionally produced by an Effect. Omission creates a project without a database, only on live deployments. */
|
|
24
|
+
project?: WebsiteProjectReference | Effect.Effect<WebsiteProjectReference, never, Providers>;
|
|
25
|
+
/** Application directory containing package.json and framework configuration. @default "." */
|
|
26
|
+
rootDir?: string;
|
|
27
|
+
/** Build input hashing options. Set false to rebuild on every deployment. @default true */
|
|
28
|
+
memo?: MemoOptions | boolean;
|
|
29
|
+
/** Build, development, and runtime environment. Wrap secrets in Redacted; public framework variables can be compiled into browser assets. */
|
|
30
|
+
env?: Record<string, string | Redacted.Redacted<string> | Output.Output<string | undefined>>;
|
|
31
|
+
/** Origin static-file routing, using the same vocabulary as Fly and Railway websites. */
|
|
32
|
+
assets?: WebsiteAssetsProps;
|
|
33
|
+
/** Native framework development server options, including external-server mode. */
|
|
34
|
+
dev?: ServerDevProps;
|
|
35
|
+
/** Custom hostname attached using Prisma.CustomDomain. Only apps on the default branch support custom domains; configure the returned DNS records before routing traffic. */
|
|
36
|
+
domain?: string;
|
|
37
|
+
/** Compute region. Defaults to the project's default region, then us-east-1. */
|
|
38
|
+
regionId?: PrismaRegionId;
|
|
39
|
+
/** Existing branch ID. Mutually exclusive with branchGitName. */
|
|
40
|
+
branchId?: string;
|
|
41
|
+
/** Existing branch git name. Defaults to the project's default branch. */
|
|
42
|
+
branchGitName?: string;
|
|
43
|
+
/** Compute deployment, readiness, and rollout options. The website owns its build, artifact, and runtime environment. */
|
|
44
|
+
compute?: WebsiteComputeOptions;
|
|
45
|
+
/** Accepted for website API parity; Prisma Compute does not persist resource tags. */
|
|
46
|
+
tags?: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
/** Outputs of a Prisma framework or static website. */
|
|
49
|
+
export interface Website {
|
|
50
|
+
/** Native dev-server URL locally; Compute URL or configured custom-domain URL on live deployments. */
|
|
51
|
+
url: string | Output.Output<string | undefined> | undefined;
|
|
52
|
+
/** Compute app serving the artifact. Undefined during native development. */
|
|
53
|
+
compute: Compute | undefined;
|
|
54
|
+
/** Project resource or existing project reference. Undefined during native development. */
|
|
55
|
+
project: WebsiteProjectReference | undefined;
|
|
56
|
+
/** Custom-domain resource, including DNS records and certificate status. Undefined without domain or during native development. */
|
|
57
|
+
domain: CustomDomain | undefined;
|
|
58
|
+
}
|
|
59
|
+
/** Internal framework-to-Node-target wiring. */
|
|
60
|
+
export interface FrameworkSiteConfig {
|
|
61
|
+
/** Framework integration module. */
|
|
62
|
+
framework: string;
|
|
63
|
+
/** Existing Node deploy-target module. */
|
|
64
|
+
target: string;
|
|
65
|
+
/** Serializable framework-specific overrides. */
|
|
66
|
+
options?: Record<string, unknown>;
|
|
67
|
+
/** Artifact layout; Next.js serves from the application root. */
|
|
68
|
+
layout?: "output" | "next";
|
|
69
|
+
/** Default not-found behavior, overridden by assets.notFoundHandling. */
|
|
70
|
+
notFoundHandling?: "none" | "spa" | "404-page";
|
|
71
|
+
/** Default extensionless HTML behavior, overridden by assets.htmlHandling. */
|
|
72
|
+
htmlHandling?: "none" | "drop-trailing-slash";
|
|
73
|
+
}
|
|
74
|
+
/** Resolve build-time secrets without changing the redacted runtime env props. */
|
|
75
|
+
export declare const websiteBuildEnv: (env: FrameworkSiteProps["env"]) => {
|
|
76
|
+
[k: string]: string | Output.Output<string | undefined, any>;
|
|
77
|
+
} | undefined;
|
|
78
|
+
/** Shared live half, called only after a build resource has been declared. */
|
|
79
|
+
export declare const deployWebsite: (props: Omit<FrameworkSiteProps, "dev">, artifact: WebsiteArtifact) => Effect.Effect<Website, never, Providers>;
|
|
80
|
+
/** Compose a real framework build/dev server with a traced Prisma artifact. */
|
|
81
|
+
export declare const makeFrameworkSite: (_id: string, props: FrameworkSiteProps, config: FrameworkSiteConfig) => Effect.Effect<Website, never, AlchemyContext | import("../../Provider.ts").Provider<Server> | import("../../Provider.ts").Provider<WebsiteArtifact> | Providers>;
|
|
82
|
+
//# sourceMappingURL=FrameworkSite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkSite.d.ts","sourceRoot":"","sources":["../../../src/Prisma/Website/FrameworkSite.ts"],"names":[],"mappings":"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"}
|