@vercel/remix-builder 2.0.2 → 2.0.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/remix-builder",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "homepage": "https://vercel.com/docs",
@@ -14,11 +14,8 @@
14
14
  "defaults"
15
15
  ],
16
16
  "dependencies": {
17
- "@vercel/build-utils": "7.1.0",
18
17
  "@vercel/nft": "0.22.5",
19
18
  "@vercel/static-config": "3.0.0",
20
- "path-to-regexp": "6.2.1",
21
- "semver": "7.3.8",
22
19
  "ts-morph": "12.0.0"
23
20
  },
24
21
  "devDependencies": {
@@ -26,10 +23,13 @@
26
23
  "@types/jest": "27.5.1",
27
24
  "@types/node": "14.18.33",
28
25
  "@types/semver": "7.3.13",
29
- "jest-junit": "16.0.0"
26
+ "@vercel/build-utils": "7.2.0",
27
+ "jest-junit": "16.0.0",
28
+ "path-to-regexp": "6.2.1",
29
+ "semver": "7.5.2"
30
30
  },
31
31
  "scripts": {
32
- "build": "node build.js",
32
+ "build": "node ../../utils/build-builder.mjs",
33
33
  "test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
34
34
  "test-unit": "pnpm test test/unit.*test.*",
35
35
  "test-e2e": "pnpm test test/integration.test.ts"
package/dist/build.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import type { BuildV2 } from '@vercel/build-utils';
2
- export declare const build: BuildV2;
package/dist/build.js DELETED
@@ -1,480 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.build = void 0;
4
- const ts_morph_1 = require("ts-morph");
5
- const fs_1 = require("fs");
6
- const path_1 = require("path");
7
- const build_utils_1 = require("@vercel/build-utils");
8
- const static_config_1 = require("@vercel/static-config");
9
- const nft_1 = require("@vercel/nft");
10
- const utils_1 = require("./utils");
11
- const hydrogen_1 = require("./hydrogen");
12
- const remixBuilderPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../package.json'), 'utf8'));
13
- const remixRunDevForkVersion = remixBuilderPkg.devDependencies['@remix-run/dev'];
14
- const DEFAULTS_PATH = (0, path_1.join)(__dirname, '../defaults');
15
- const edgeServerSrcPromise = fs_1.promises.readFile((0, path_1.join)(DEFAULTS_PATH, 'server-edge.mjs'), 'utf-8');
16
- const nodeServerSrcPromise = fs_1.promises.readFile((0, path_1.join)(DEFAULTS_PATH, 'server-node.mjs'), 'utf-8');
17
- // Minimum supported version of the `@vercel/remix` package
18
- const VERCEL_REMIX_MIN_VERSION = '1.10.0';
19
- // Minimum supported version of the `@vercel/remix-run-dev` forked compiler
20
- const REMIX_RUN_DEV_MIN_VERSION = '1.15.0';
21
- // Maximum version of `@vercel/remix-run-dev` fork
22
- // (and also `@vercel/remix` since they get published at the same time)
23
- const REMIX_RUN_DEV_MAX_VERSION = remixRunDevForkVersion.slice(remixRunDevForkVersion.lastIndexOf('@') + 1);
24
- const build = async ({ entrypoint, files, workPath, repoRootPath, config, meta = {}, }) => {
25
- const { installCommand, buildCommand } = config;
26
- await (0, build_utils_1.download)(files, workPath, meta);
27
- const mountpoint = (0, path_1.dirname)(entrypoint);
28
- const entrypointFsDirname = (0, path_1.join)(workPath, mountpoint);
29
- // Run "Install Command"
30
- const nodeVersion = await (0, build_utils_1.getNodeVersion)(entrypointFsDirname, undefined, config, meta);
31
- const { cliType, packageJsonPath, lockfileVersion } = await (0, build_utils_1.scanParentDirs)(entrypointFsDirname);
32
- if (!packageJsonPath) {
33
- throw new Error('Failed to locate `package.json` file in your project');
34
- }
35
- const pkgRaw = await fs_1.promises.readFile(packageJsonPath, 'utf8');
36
- const pkg = JSON.parse(pkgRaw);
37
- const spawnOpts = (0, build_utils_1.getSpawnOptions)(meta, nodeVersion);
38
- if (!spawnOpts.env) {
39
- spawnOpts.env = {};
40
- }
41
- spawnOpts.env = (0, build_utils_1.getEnvForPackageManager)({
42
- cliType,
43
- lockfileVersion,
44
- nodeVersion,
45
- env: spawnOpts.env,
46
- });
47
- if (typeof installCommand === 'string') {
48
- if (installCommand.trim()) {
49
- console.log(`Running "install" command: \`${installCommand}\`...`);
50
- await (0, build_utils_1.execCommand)(installCommand, {
51
- ...spawnOpts,
52
- cwd: entrypointFsDirname,
53
- });
54
- }
55
- else {
56
- console.log(`Skipping "install" command...`);
57
- }
58
- }
59
- else {
60
- await (0, build_utils_1.runNpmInstall)(entrypointFsDirname, [], spawnOpts, meta, nodeVersion);
61
- }
62
- const isHydrogen2 = pkg.dependencies?.['@shopify/remix-oxygen'] ||
63
- pkg.devDependencies?.['@shopify/remix-oxygen'];
64
- // Determine the version of Remix based on the `@remix-run/dev`
65
- // package version.
66
- const remixRunDevPath = await (0, utils_1.ensureResolvable)(entrypointFsDirname, repoRootPath, '@remix-run/dev');
67
- const remixRunDevPkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(remixRunDevPath, 'package.json'), 'utf8'));
68
- const remixVersion = remixRunDevPkg.version;
69
- const remixConfig = await (0, utils_1.chdirAndReadConfig)(remixRunDevPath, entrypointFsDirname, packageJsonPath);
70
- const { serverEntryPoint, appDirectory } = remixConfig;
71
- const remixRoutes = Object.values(remixConfig.routes);
72
- const depsToAdd = [];
73
- // Override the official `@remix-run/dev` package with the
74
- // Vercel fork, which supports the `serverBundles` config
75
- if (!isHydrogen2 && remixRunDevPkg.name !== '@vercel/remix-run-dev') {
76
- const remixDevForkVersion = (0, utils_1.resolveSemverMinMax)(REMIX_RUN_DEV_MIN_VERSION, REMIX_RUN_DEV_MAX_VERSION, remixVersion);
77
- depsToAdd.push(`@remix-run/dev@npm:@vercel/remix-run-dev@${remixDevForkVersion}`);
78
- }
79
- // `app/entry.server.tsx` and `app/entry.client.tsx` are optional in Remix,
80
- // so if either of those files are missing then add our own versions.
81
- const userEntryServerFile = (0, utils_1.findEntry)(appDirectory, 'entry.server');
82
- if (!userEntryServerFile) {
83
- await fs_1.promises.copyFile((0, path_1.join)(DEFAULTS_PATH, 'entry.server.jsx'), (0, path_1.join)(appDirectory, 'entry.server.jsx'));
84
- if (!pkg.dependencies['@vercel/remix']) {
85
- // Dependency version resolution logic
86
- // 1. Users app is on 1.9.0 -> we install the 1.10.0 (minimum) version of `@vercel/remix`.
87
- // 2. Users app is on 1.11.0 (a version greater than 1.10.0 and less than the known max
88
- // published version) -> we install the (matching) 1.11.0 version of `@vercel/remix`.
89
- // 3. Users app is on something greater than our latest version of the fork -> we install
90
- // the latest known published version of `@vercel/remix`.
91
- const vercelRemixVersion = (0, utils_1.resolveSemverMinMax)(VERCEL_REMIX_MIN_VERSION, REMIX_RUN_DEV_MAX_VERSION, remixVersion);
92
- depsToAdd.push(`@vercel/remix@${vercelRemixVersion}`);
93
- }
94
- }
95
- if (depsToAdd.length) {
96
- await (0, utils_1.addDependencies)(cliType, depsToAdd, {
97
- ...spawnOpts,
98
- cwd: entrypointFsDirname,
99
- });
100
- }
101
- const userEntryClientFile = (0, utils_1.findEntry)(remixConfig.appDirectory, 'entry.client');
102
- if (!userEntryClientFile) {
103
- await fs_1.promises.copyFile((0, path_1.join)(DEFAULTS_PATH, 'entry.client.react.jsx'), (0, path_1.join)(appDirectory, 'entry.client.jsx'));
104
- }
105
- let remixConfigWrapped = false;
106
- let serverEntryPointAbs;
107
- let originalServerEntryPoint;
108
- const remixConfigPath = (0, utils_1.findConfig)(entrypointFsDirname, 'remix.config');
109
- const renamedRemixConfigPath = remixConfigPath
110
- ? `${remixConfigPath}.original${(0, path_1.extname)(remixConfigPath)}`
111
- : undefined;
112
- // These get populated inside the try/catch below
113
- let serverBundles;
114
- const serverBundlesMap = new Map();
115
- const resolvedConfigsMap = new Map();
116
- try {
117
- // Read the `export const config` (if any) for each route
118
- const project = new ts_morph_1.Project();
119
- const staticConfigsMap = new Map();
120
- for (const route of remixRoutes) {
121
- const routePath = (0, path_1.join)(remixConfig.appDirectory, route.file);
122
- let staticConfig = (0, static_config_1.getConfig)(project, routePath);
123
- if (staticConfig && isHydrogen2) {
124
- console.log('WARN: `export const config` is currently not supported for Hydrogen v2 apps');
125
- staticConfig = null;
126
- }
127
- staticConfigsMap.set(route, staticConfig);
128
- }
129
- for (const route of remixRoutes) {
130
- const config = (0, utils_1.getResolvedRouteConfig)(route, remixConfig.routes, staticConfigsMap, isHydrogen2);
131
- resolvedConfigsMap.set(route, config);
132
- }
133
- // Figure out which routes belong to which server bundles
134
- // based on having common static config properties
135
- for (const route of remixRoutes) {
136
- if ((0, utils_1.isLayoutRoute)(route.id, remixRoutes))
137
- continue;
138
- const config = resolvedConfigsMap.get(route);
139
- if (!config) {
140
- throw new Error(`Expected resolved config for "${route.id}"`);
141
- }
142
- const hash = (0, utils_1.calculateRouteConfigHash)(config);
143
- let routesForHash = serverBundlesMap.get(hash);
144
- if (!Array.isArray(routesForHash)) {
145
- routesForHash = [];
146
- serverBundlesMap.set(hash, routesForHash);
147
- }
148
- routesForHash.push(route);
149
- }
150
- serverBundles = Array.from(serverBundlesMap.entries()).map(([hash, routes]) => {
151
- const runtime = resolvedConfigsMap.get(routes[0])?.runtime ?? 'nodejs';
152
- return {
153
- serverBuildPath: isHydrogen2
154
- ? (0, path_1.relative)(entrypointFsDirname, remixConfig.serverBuildPath)
155
- : `${(0, path_1.relative)(entrypointFsDirname, (0, path_1.dirname)(remixConfig.serverBuildPath))}/build-${runtime}-${hash}.js`,
156
- routes: routes.map(r => r.id),
157
- };
158
- });
159
- // We need to patch the `remix.config.js` file to force some values necessary
160
- // for a build that works on either Node.js or the Edge runtime
161
- if (!isHydrogen2 && remixConfigPath && renamedRemixConfigPath) {
162
- await fs_1.promises.rename(remixConfigPath, renamedRemixConfigPath);
163
- let patchedConfig;
164
- // Figure out if the `remix.config` file is using ESM syntax
165
- if ((0, utils_1.isESM)(renamedRemixConfigPath)) {
166
- patchedConfig = `import config from './${(0, path_1.basename)(renamedRemixConfigPath)}';
167
- config.serverBuildTarget = undefined;
168
- config.serverModuleFormat = 'cjs';
169
- config.serverPlatform = 'node';
170
- config.serverBuildPath = undefined;
171
- config.serverBundles = ${JSON.stringify(serverBundles)};
172
- export default config;`;
173
- }
174
- else {
175
- patchedConfig = `const config = require('./${(0, path_1.basename)(renamedRemixConfigPath)}');
176
- config.serverBuildTarget = undefined;
177
- config.serverModuleFormat = 'cjs';
178
- config.serverPlatform = 'node';
179
- config.serverBuildPath = undefined;
180
- config.serverBundles = ${JSON.stringify(serverBundles)};
181
- module.exports = config;`;
182
- }
183
- await fs_1.promises.writeFile(remixConfigPath, patchedConfig);
184
- remixConfigWrapped = true;
185
- }
186
- // For Hydrogen v2, patch the `server.ts` file to be Vercel-compatible
187
- if (isHydrogen2) {
188
- if (remixConfig.serverEntryPoint) {
189
- serverEntryPointAbs = (0, path_1.join)(entrypointFsDirname, remixConfig.serverEntryPoint);
190
- originalServerEntryPoint = await fs_1.promises.readFile(serverEntryPointAbs, 'utf8');
191
- const patchedServerEntryPoint = (0, hydrogen_1.patchHydrogenServer)(project, serverEntryPointAbs);
192
- if (patchedServerEntryPoint) {
193
- (0, build_utils_1.debug)(`Patched Hydrogen server file: ${remixConfig.serverEntryPoint}`);
194
- await fs_1.promises.writeFile(serverEntryPointAbs, patchedServerEntryPoint);
195
- }
196
- }
197
- else {
198
- console.log('WARN: No "server" field found in Remix config');
199
- }
200
- }
201
- // Make `remix build` output production mode
202
- spawnOpts.env.NODE_ENV = 'production';
203
- // Run "Build Command"
204
- if (buildCommand) {
205
- (0, build_utils_1.debug)(`Executing build command "${buildCommand}"`);
206
- await (0, build_utils_1.execCommand)(buildCommand, {
207
- ...spawnOpts,
208
- cwd: entrypointFsDirname,
209
- });
210
- }
211
- else {
212
- if (hasScript('vercel-build', pkg)) {
213
- (0, build_utils_1.debug)(`Executing "yarn vercel-build"`);
214
- await (0, build_utils_1.runPackageJsonScript)(entrypointFsDirname, 'vercel-build', spawnOpts);
215
- }
216
- else if (hasScript('build', pkg)) {
217
- (0, build_utils_1.debug)(`Executing "yarn build"`);
218
- await (0, build_utils_1.runPackageJsonScript)(entrypointFsDirname, 'build', spawnOpts);
219
- }
220
- else {
221
- await (0, build_utils_1.execCommand)('remix build', {
222
- ...spawnOpts,
223
- cwd: entrypointFsDirname,
224
- });
225
- }
226
- }
227
- }
228
- finally {
229
- const cleanupOps = [];
230
- // Clean up our patched `remix.config.js` to be polite
231
- if (remixConfigWrapped && remixConfigPath && renamedRemixConfigPath) {
232
- cleanupOps.push(fs_1.promises
233
- .rename(renamedRemixConfigPath, remixConfigPath)
234
- .then(() => (0, build_utils_1.debug)(`Restored original "${(0, path_1.basename)(remixConfigPath)}" file`)));
235
- }
236
- // Restore original server entrypoint if it was modified (for Hydrogen v2)
237
- if (serverEntryPointAbs && originalServerEntryPoint) {
238
- cleanupOps.push(fs_1.promises
239
- .writeFile(serverEntryPointAbs, originalServerEntryPoint)
240
- .then(() => (0, build_utils_1.debug)(`Restored original "${(0, path_1.basename)(serverEntryPointAbs)}" file`)));
241
- }
242
- await Promise.all(cleanupOps);
243
- }
244
- // This needs to happen before we run NFT to create the Node/Edge functions
245
- await Promise.all([
246
- (0, utils_1.ensureResolvable)(entrypointFsDirname, repoRootPath, '@remix-run/server-runtime'),
247
- !isHydrogen2
248
- ? (0, utils_1.ensureResolvable)(entrypointFsDirname, repoRootPath, '@remix-run/node')
249
- : null,
250
- ]);
251
- const staticDir = (0, path_1.join)(remixConfig.assetsBuildDirectory, ...remixConfig.publicPath
252
- .replace(/^\/|\/$/g, '')
253
- .split('/')
254
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
255
- .map(_ => '..'));
256
- const [staticFiles, ...functions] = await Promise.all([
257
- (0, build_utils_1.glob)('**', staticDir),
258
- ...serverBundles.map(bundle => {
259
- const firstRoute = remixConfig.routes[bundle.routes[0]];
260
- const config = resolvedConfigsMap.get(firstRoute) ?? {
261
- runtime: 'nodejs',
262
- };
263
- if (config.runtime === 'edge') {
264
- return createRenderEdgeFunction(entrypointFsDirname, repoRootPath, (0, path_1.join)(entrypointFsDirname, bundle.serverBuildPath), serverEntryPoint, remixVersion, config);
265
- }
266
- return createRenderNodeFunction(nodeVersion, entrypointFsDirname, repoRootPath, (0, path_1.join)(entrypointFsDirname, bundle.serverBuildPath), serverEntryPoint, remixVersion, config);
267
- }),
268
- ]);
269
- const output = staticFiles;
270
- const routes = [
271
- {
272
- src: '^/build/(.*)$',
273
- headers: { 'cache-control': 'public, max-age=31536000, immutable' },
274
- continue: true,
275
- },
276
- {
277
- handle: 'filesystem',
278
- },
279
- ];
280
- for (const route of remixRoutes) {
281
- // Layout routes don't get a function / route added
282
- if ((0, utils_1.isLayoutRoute)(route.id, remixRoutes))
283
- continue;
284
- const { path, rePath } = (0, utils_1.getPathFromRoute)(route, remixConfig.routes);
285
- // If the route is a pathless layout route (at the root level)
286
- // and doesn't have any sub-routes, then a function should not be created.
287
- if (!path) {
288
- continue;
289
- }
290
- const funcIndex = serverBundles.findIndex(bundle => {
291
- return bundle.routes.includes(route.id);
292
- });
293
- const func = functions[funcIndex];
294
- if (!func) {
295
- throw new Error(`Could not determine server bundle for "${route.id}"`);
296
- }
297
- output[path] =
298
- func instanceof build_utils_1.EdgeFunction
299
- ? // `EdgeFunction` currently requires the "name" property to be set.
300
- // Ideally this property will be removed, at which point we can
301
- // return the same `edgeFunction` instance instead of creating a
302
- // new one for each page.
303
- new build_utils_1.EdgeFunction({
304
- ...func,
305
- name: path,
306
- })
307
- : func;
308
- // If this is a dynamic route then add a Vercel route
309
- const re = (0, utils_1.getRegExpFromPath)(rePath);
310
- if (re) {
311
- routes.push({
312
- src: re.source,
313
- dest: path,
314
- });
315
- }
316
- }
317
- // Add a 404 path for not found pages to be server-side rendered by Remix.
318
- // Use an edge function bundle if one was generated, otherwise use Node.js.
319
- if (!output['404']) {
320
- const edgeFunctionIndex = Array.from(serverBundlesMap.values()).findIndex(routes => {
321
- const runtime = resolvedConfigsMap.get(routes[0])?.runtime;
322
- return runtime === 'edge';
323
- });
324
- const func = edgeFunctionIndex !== -1 ? functions[edgeFunctionIndex] : functions[0];
325
- output['404'] =
326
- func instanceof build_utils_1.EdgeFunction
327
- ? new build_utils_1.EdgeFunction({ ...func, name: '404' })
328
- : func;
329
- }
330
- routes.push({
331
- src: '/(.*)',
332
- dest: '/404',
333
- });
334
- return { routes, output, framework: { version: remixVersion } };
335
- };
336
- exports.build = build;
337
- function hasScript(scriptName, pkg) {
338
- const scripts = (pkg && pkg.scripts) || {};
339
- return typeof scripts[scriptName] === 'string';
340
- }
341
- async function createRenderNodeFunction(nodeVersion, entrypointDir, rootDir, serverBuildPath, serverEntryPoint, remixVersion, config) {
342
- const files = {};
343
- let handler = (0, path_1.relative)(rootDir, serverBuildPath);
344
- let handlerPath = (0, path_1.join)(rootDir, handler);
345
- if (!serverEntryPoint) {
346
- const baseServerBuildPath = (0, path_1.basename)(serverBuildPath, '.js');
347
- handler = (0, path_1.join)((0, path_1.dirname)(handler), `server-${baseServerBuildPath}.mjs`);
348
- handlerPath = (0, path_1.join)(rootDir, handler);
349
- // Copy the `server-node.mjs` file into the "build" directory
350
- const nodeServerSrc = await nodeServerSrcPromise;
351
- await writeEntrypointFile(handlerPath, nodeServerSrc.replace('@remix-run/dev/server-build', `./${baseServerBuildPath}.js`), rootDir);
352
- }
353
- // Trace the handler with `@vercel/nft`
354
- const trace = await (0, nft_1.nodeFileTrace)([handlerPath], {
355
- base: rootDir,
356
- processCwd: entrypointDir,
357
- });
358
- for (const warning of trace.warnings) {
359
- (0, build_utils_1.debug)(`Warning from trace: ${warning.message}`);
360
- }
361
- for (const file of trace.fileList) {
362
- files[file] = await build_utils_1.FileFsRef.fromFsPath({ fsPath: (0, path_1.join)(rootDir, file) });
363
- }
364
- const fn = new build_utils_1.NodejsLambda({
365
- files,
366
- handler,
367
- runtime: nodeVersion.runtime,
368
- shouldAddHelpers: false,
369
- shouldAddSourcemapSupport: false,
370
- operationType: 'SSR',
371
- supportsResponseStreaming: true,
372
- regions: config.regions,
373
- memory: config.memory,
374
- maxDuration: config.maxDuration,
375
- framework: {
376
- slug: 'remix',
377
- version: remixVersion,
378
- },
379
- });
380
- return fn;
381
- }
382
- async function createRenderEdgeFunction(entrypointDir, rootDir, serverBuildPath, serverEntryPoint, remixVersion, config) {
383
- const files = {};
384
- let handler = (0, path_1.relative)(rootDir, serverBuildPath);
385
- let handlerPath = (0, path_1.join)(rootDir, handler);
386
- if (!serverEntryPoint) {
387
- const baseServerBuildPath = (0, path_1.basename)(serverBuildPath, '.js');
388
- handler = (0, path_1.join)((0, path_1.dirname)(handler), `server-${baseServerBuildPath}.mjs`);
389
- handlerPath = (0, path_1.join)(rootDir, handler);
390
- // Copy the `server-edge.mjs` file into the "build" directory
391
- const edgeServerSrc = await edgeServerSrcPromise;
392
- await writeEntrypointFile(handlerPath, edgeServerSrc.replace('@remix-run/dev/server-build', `./${baseServerBuildPath}.js`), rootDir);
393
- }
394
- let remixRunVercelPkgJson;
395
- // Trace the handler with `@vercel/nft`
396
- const trace = await (0, nft_1.nodeFileTrace)([handlerPath], {
397
- base: rootDir,
398
- processCwd: entrypointDir,
399
- conditions: ['edge-light', 'browser', 'module', 'import', 'require'],
400
- async readFile(fsPath) {
401
- let source;
402
- try {
403
- source = await fs_1.promises.readFile(fsPath);
404
- }
405
- catch (err) {
406
- if (err.code === 'ENOENT' || err.code === 'EISDIR') {
407
- return null;
408
- }
409
- throw err;
410
- }
411
- if ((0, path_1.basename)(fsPath) === 'package.json') {
412
- // For Edge Functions, patch "main" field to prefer "browser" or "module"
413
- const pkgJson = JSON.parse(source.toString());
414
- // When `@remix-run/vercel` is detected, we need to modify the `package.json`
415
- // to include the "browser" field so that the proper Edge entrypoint file
416
- // is used. This is a temporary stop gap until this PR is merged:
417
- // https://github.com/remix-run/remix/pull/5537
418
- if (pkgJson.name === '@remix-run/vercel') {
419
- pkgJson.browser = 'dist/edge.js';
420
- pkgJson.dependencies['@remix-run/server-runtime'] =
421
- pkgJson.dependencies['@remix-run/node'];
422
- if (!remixRunVercelPkgJson) {
423
- remixRunVercelPkgJson = JSON.stringify(pkgJson, null, 2) + '\n';
424
- // Copy in the edge entrypoint so that NFT can properly resolve it
425
- const vercelEdgeEntrypointPath = (0, path_1.join)(DEFAULTS_PATH, 'vercel-edge-entrypoint.js');
426
- const vercelEdgeEntrypointDest = (0, path_1.join)((0, path_1.dirname)(fsPath), 'dist/edge.js');
427
- await fs_1.promises.copyFile(vercelEdgeEntrypointPath, vercelEdgeEntrypointDest);
428
- }
429
- }
430
- for (const prop of ['browser', 'module']) {
431
- const val = pkgJson[prop];
432
- if (typeof val === 'string') {
433
- pkgJson.main = val;
434
- // Return the modified `package.json` to nft
435
- source = JSON.stringify(pkgJson);
436
- break;
437
- }
438
- }
439
- }
440
- return source;
441
- },
442
- });
443
- for (const warning of trace.warnings) {
444
- (0, build_utils_1.debug)(`Warning from trace: ${warning.message}`);
445
- }
446
- for (const file of trace.fileList) {
447
- if (remixRunVercelPkgJson &&
448
- file.endsWith(`@remix-run${path_1.sep}vercel${path_1.sep}package.json`)) {
449
- // Use the modified `@remix-run/vercel` package.json which contains "browser" field
450
- files[file] = new build_utils_1.FileBlob({ data: remixRunVercelPkgJson });
451
- }
452
- else {
453
- files[file] = await build_utils_1.FileFsRef.fromFsPath({ fsPath: (0, path_1.join)(rootDir, file) });
454
- }
455
- }
456
- const fn = new build_utils_1.EdgeFunction({
457
- files,
458
- deploymentTarget: 'v8-worker',
459
- name: 'render',
460
- entrypoint: handler,
461
- regions: config.regions,
462
- framework: {
463
- slug: 'remix',
464
- version: remixVersion,
465
- },
466
- });
467
- return fn;
468
- }
469
- async function writeEntrypointFile(path, data, rootDir) {
470
- try {
471
- await fs_1.promises.writeFile(path, data);
472
- }
473
- catch (err) {
474
- if (err.code === 'ENOENT') {
475
- throw new Error(`The "${(0, path_1.relative)(rootDir, (0, path_1.dirname)(path))}" directory does not exist. Please contact support at https://vercel.com/help.`);
476
- }
477
- throw err;
478
- }
479
- }
480
- //# sourceMappingURL=build.js.map
package/dist/build.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { Project } from 'ts-morph';
2
- /**
3
- * For Hydrogen v2, the `server.ts` file exports a signature like:
4
- *
5
- * ```
6
- * export default {
7
- * async fetch(
8
- * request: Request,
9
- * env: Env,
10
- * executionContext: ExecutionContext,
11
- * ): Promise<Response>;
12
- * }
13
- * ```
14
- *
15
- * Here we parse the AST of that file so that we can:
16
- *
17
- * 1. Convert the signature to be compatible with Vercel Edge functions
18
- * (i.e. `export default (res: Response): Promise<Response>`).
19
- *
20
- * 2. Track usages of the `env` parameter which (which gets removed),
21
- * so that we can create that object based on `process.env`.
22
- */
23
- export declare function patchHydrogenServer(project: Project, serverEntryPoint: string): string | undefined;
package/dist/hydrogen.js DELETED
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.patchHydrogenServer = void 0;
4
- const path_1 = require("path");
5
- const ts_morph_1 = require("ts-morph");
6
- /**
7
- * For Hydrogen v2, the `server.ts` file exports a signature like:
8
- *
9
- * ```
10
- * export default {
11
- * async fetch(
12
- * request: Request,
13
- * env: Env,
14
- * executionContext: ExecutionContext,
15
- * ): Promise<Response>;
16
- * }
17
- * ```
18
- *
19
- * Here we parse the AST of that file so that we can:
20
- *
21
- * 1. Convert the signature to be compatible with Vercel Edge functions
22
- * (i.e. `export default (res: Response): Promise<Response>`).
23
- *
24
- * 2. Track usages of the `env` parameter which (which gets removed),
25
- * so that we can create that object based on `process.env`.
26
- */
27
- function patchHydrogenServer(project, serverEntryPoint) {
28
- const sourceFile = project.addSourceFileAtPath(serverEntryPoint);
29
- const defaultExportSymbol = sourceFile.getDescendantsOfKind(ts_morph_1.SyntaxKind.ExportAssignment)[0];
30
- const envProperties = [];
31
- if (!defaultExportSymbol) {
32
- console.log(`WARN: No default export found in "${(0, path_1.basename)(serverEntryPoint)}"`);
33
- return;
34
- }
35
- const objectLiteral = defaultExportSymbol.getFirstChildByKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression);
36
- if (!ts_morph_1.Node.isObjectLiteralExpression(objectLiteral)) {
37
- console.log(`WARN: Default export in "${(0, path_1.basename)(serverEntryPoint)}" does not conform to Oxygen syntax`);
38
- return;
39
- }
40
- const fetchMethod = objectLiteral.getProperty('fetch');
41
- if (!fetchMethod || !ts_morph_1.Node.isMethodDeclaration(fetchMethod)) {
42
- console.log(`WARN: Default export in "${(0, path_1.basename)(serverEntryPoint)}" does not conform to Oxygen syntax`);
43
- return;
44
- }
45
- const parameters = fetchMethod.getParameters();
46
- // Find usages of the env object within the fetch method
47
- const envParam = parameters[1];
48
- const envParamName = envParam.getName();
49
- if (envParam) {
50
- fetchMethod.forEachDescendant(node => {
51
- if (ts_morph_1.Node.isPropertyAccessExpression(node) &&
52
- node.getExpression().getText() === envParamName) {
53
- envProperties.push(node.getName());
54
- }
55
- });
56
- }
57
- // Vercel does not support the Web Cache API, so find
58
- // and replace `caches.open()` calls with `undefined`
59
- fetchMethod.forEachDescendant(node => {
60
- if (ts_morph_1.Node.isCallExpression(node) &&
61
- node.getExpression().getText() === 'caches.open') {
62
- node.replaceWithText(`undefined /* ${node.getText()} */`);
63
- }
64
- });
65
- // Remove the 'env' parameter to match Vercel's Edge signature
66
- parameters.splice(1, 1);
67
- // Construct the new function with the parameters and body of the original fetch method
68
- const newFunction = `export default async function(${parameters
69
- .map(p => p.getText())
70
- .join(', ')}) ${fetchMethod.getBody().getText()}`;
71
- defaultExportSymbol.replaceWithText(newFunction);
72
- const defaultEnvVars = {
73
- SESSION_SECRET: 'foobar',
74
- PUBLIC_STORE_DOMAIN: 'mock.shop',
75
- };
76
- const envCode = `const env = { ${envProperties
77
- .map(name => `${name}: process.env.${name}`)
78
- .join(', ')} };\n${Object.entries(defaultEnvVars)
79
- .map(([k, v]) => `if (!env.${k}) { env.${k} = ${JSON.stringify(v)}; console.warn('Warning: ${JSON.stringify(k)} env var not set - using default value ${JSON.stringify(v)}'); }`)
80
- .join('\n')}`;
81
- const updatedCodeString = sourceFile.getFullText();
82
- return `${envCode}\n${updatedCodeString}`;
83
- }
84
- exports.patchHydrogenServer = patchHydrogenServer;
85
- //# sourceMappingURL=hydrogen.js.map