@quilted/rollup 0.2.12 → 0.2.14

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @quilted/rollup
2
2
 
3
+ ## 0.2.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [#669](https://github.com/lemonmade/quilt/pull/669) [`73127e7f`](https://github.com/lemonmade/quilt/commit/73127e7f32d15ddcdf1ea025eabcb2830e5ba559) Thanks [@lemonmade](https://github.com/lemonmade)! - Add runtime overrides
8
+
9
+ - [`79845135`](https://github.com/lemonmade/quilt/commit/79845135aababc08b3a02b19a23c8b83d4dbdb82) Thanks [@lemonmade](https://github.com/lemonmade)! - Update rollup-plugin-visualizer to remove peer dependency error
10
+
11
+ ## 0.2.13
12
+
13
+ ### Patch Changes
14
+
15
+ - [`5a1a3343`](https://github.com/lemonmade/quilt/commit/5a1a33433e1a944bfbbc7562da5e6775585398d3) Thanks [@lemonmade](https://github.com/lemonmade)! - Add async rollup plugin to Vite builds
16
+
3
17
  ## 0.2.12
4
18
 
5
19
  ### Patch Changes
package/build/esm/app.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as path from 'node:path';
2
2
  import * as fs from 'node:fs/promises';
3
3
  import { createRequire } from 'node:module';
4
- import { MAGIC_MODULE_ENTRY, MAGIC_MODULE_APP_COMPONENT, MAGIC_MODULE_REQUEST_ROUTER, MAGIC_MODULE_BROWSER_ASSETS } from './constants.mjs';
4
+ import { MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER, MAGIC_MODULE_APP_COMPONENT, MAGIC_MODULE_BROWSER_ASSETS } from './constants.mjs';
5
5
  import { resolveEnvOption } from './features/env.mjs';
6
6
  import { multiline } from './shared/strings.mjs';
7
7
  import { getNodePlugins, removeBuildFiles, normalizeRollupInput } from './shared/rollup.mjs';
@@ -10,14 +10,15 @@ import { getBrowserGroups, getBrowserGroupTargetDetails, targetsSupportModules,
10
10
  import { Project } from './shared/project.mjs';
11
11
 
12
12
  const require = createRequire(import.meta.url);
13
- async function quiltAppOptions({
13
+ async function quiltApp({
14
14
  root = process.cwd(),
15
15
  app,
16
16
  env,
17
17
  graphql,
18
18
  assets,
19
19
  browser: browserOptions,
20
- server: serverOptions
20
+ server: serverOptions,
21
+ runtime
21
22
  } = {}) {
22
23
  const project = Project.load(root);
23
24
  const browserGroups = await getBrowserGroups({ root: project.root });
@@ -26,10 +27,11 @@ async function quiltAppOptions({
26
27
  const optionPromises = [];
27
28
  browserGroupEntries.forEach(([name, browsers], index) => {
28
29
  optionPromises.push(
29
- quiltAppBrowserOptions({
30
+ quiltAppBrowser({
30
31
  root: project.root,
31
32
  app,
32
33
  graphql,
34
+ runtime,
33
35
  ...browserOptions,
34
36
  env: {
35
37
  ...resolveEnvOption(env),
@@ -48,10 +50,11 @@ async function quiltAppOptions({
48
50
  );
49
51
  });
50
52
  optionPromises.push(
51
- quiltAppServerOptions({
53
+ quiltAppServer({
52
54
  root: project.root,
53
55
  app,
54
56
  graphql,
57
+ runtime: runtime?.server,
55
58
  ...serverOptions,
56
59
  env: {
57
60
  ...resolveEnvOption(env),
@@ -62,11 +65,11 @@ async function quiltAppOptions({
62
65
  );
63
66
  return Promise.all(optionPromises);
64
67
  }
65
- async function quiltAppBrowserOptions(options = {}) {
66
- const { root = process.cwd(), assets } = options;
68
+ async function quiltAppBrowser(options = {}) {
69
+ const { root = process.cwd(), assets, runtime } = options;
67
70
  const project = Project.load(root);
68
71
  const [plugins, browserGroup] = await Promise.all([
69
- quiltAppBrowser(options),
72
+ quiltAppBrowserPlugins(options),
70
73
  getBrowserGroupTargetDetails(assets?.targets, {
71
74
  root: project.root
72
75
  })
@@ -80,7 +83,9 @@ async function quiltAppBrowserOptions(options = {}) {
80
83
  plugins,
81
84
  output: {
82
85
  format: isESM ? "esm" : "systemjs",
83
- dir: project.resolve(`build/assets`),
86
+ dir: project.resolve(
87
+ assets?.directory ?? runtime?.assets?.directory ?? `build/assets`
88
+ ),
84
89
  entryFileNames: `[name]${targetFilenamePart}.[hash].js`,
85
90
  assetFileNames: `[name]${targetFilenamePart}.[hash].[ext]`,
86
91
  chunkFileNames: `[name]${targetFilenamePart}.[hash].js`,
@@ -90,7 +95,7 @@ async function quiltAppBrowserOptions(options = {}) {
90
95
  }
91
96
  };
92
97
  }
93
- async function quiltAppBrowser({
98
+ async function quiltAppBrowserPlugins({
94
99
  root = process.cwd(),
95
100
  app,
96
101
  entry,
@@ -254,25 +259,29 @@ function quiltAppBrowserInput({
254
259
  }
255
260
  };
256
261
  }
257
- async function quiltAppServerOptions(options = {}) {
258
- const { root = process.cwd(), output } = options;
262
+ async function quiltAppServer(options = {}) {
263
+ const {
264
+ output,
265
+ root = process.cwd(),
266
+ runtime = nodeAppServerRuntime()
267
+ } = options;
259
268
  const project = Project.load(root);
260
269
  const hash = output?.hash ?? "async-only";
261
- const outputFormat = output?.format ?? "esmodules";
262
- const plugins = await quiltAppServer(options);
270
+ const plugins = await quiltAppServerPlugins({ ...options, root, runtime });
263
271
  return {
264
272
  plugins,
265
273
  output: {
266
- format: outputFormat === "commonjs" || outputFormat === "cjs" ? "cjs" : "esm",
274
+ format: "esm",
267
275
  dir: project.resolve(`build/server`),
268
276
  entryFileNames: `[name]${hash === true ? `.[hash]` : ""}.js`,
269
277
  chunkFileNames: `[name]${hash === true || hash === "async-only" ? `.[hash]` : ""}.js`,
270
278
  assetFileNames: `[name]${hash === true ? `.[hash]` : ""}.[ext]`,
271
- generatedCode: "es2015"
279
+ generatedCode: "es2015",
280
+ ...runtime.output?.options
272
281
  }
273
282
  };
274
283
  }
275
- async function quiltAppServer({
284
+ async function quiltAppServerPlugins({
276
285
  root = process.cwd(),
277
286
  app,
278
287
  env,
@@ -280,7 +289,8 @@ async function quiltAppServer({
280
289
  format = "request-router",
281
290
  graphql = true,
282
291
  assets,
283
- output
292
+ output,
293
+ runtime
284
294
  } = {}) {
285
295
  const project = Project.load(root);
286
296
  const mode = (typeof env === "object" ? env?.mode : env) ?? "production";
@@ -317,10 +327,16 @@ async function quiltAppServer({
317
327
  quiltAppServerInput({ root: project.root, entry, format }),
318
328
  ...nodePlugins,
319
329
  replaceProcessEnv({ mode }),
320
- magicModuleEnv({ ...resolveEnvOption(env), mode }),
330
+ magicModuleEnv({ runtime: runtime?.env, ...resolveEnvOption(env), mode }),
321
331
  magicModuleAppComponent({ entry: app, root: project.root }),
322
- magicModuleAppServerEntry({
323
- assets: { baseURL }
332
+ createMagicModulePlugin({
333
+ name: "@quilted/request-router",
334
+ sideEffects: true,
335
+ module: MAGIC_MODULE_ENTRY,
336
+ source() {
337
+ const options = { assets: { baseURL } };
338
+ return runtime?.requestRouter?.(options) ?? nodeAppServerRuntime().requestRouter(options);
339
+ }
324
340
  }),
325
341
  magicModuleAppRequestRouter({ entry, root: project.root }),
326
342
  magicModuleAppAssetManifests(),
@@ -405,6 +421,55 @@ function quiltAppServerInput({
405
421
  }
406
422
  };
407
423
  }
424
+ function nodeAppServerRuntime({
425
+ host,
426
+ port,
427
+ format = "module",
428
+ assets: serveAssets = true
429
+ } = {}) {
430
+ const rollupFormat = format === "commonjs" || format === "cjs" ? "cjs" : "esm";
431
+ return {
432
+ env: "process.env",
433
+ output: {
434
+ options: {
435
+ format: rollupFormat
436
+ }
437
+ },
438
+ requestRouter({ assets }) {
439
+ const { baseURL } = assets;
440
+ return multiline`
441
+ ${serveAssets ? `import * as path from 'path';` : ""}
442
+ ${rollupFormat === "cjs" ? "" : `import {fileURLToPath} from 'url';`}
443
+ import {createServer} from 'http';
444
+
445
+ import requestRouter from ${JSON.stringify(
446
+ MAGIC_MODULE_REQUEST_ROUTER
447
+ )};
448
+
449
+ import {createHttpRequestListener${serveAssets ? ", serveStatic" : ""}} from '@quilted/quilt/request-router/node';
450
+
451
+ const port = ${port ?? "Number.parseInt(process.env.PORT, 10)"};
452
+ const host = ${host ? JSON.stringify(host) : "process.env.HOST"};
453
+
454
+ ${serveAssets ? multiline`
455
+ const dirname = ${rollupFormat === "cjs" ? `__dirname` : `path.dirname(fileURLToPath(import.meta.url))`};
456
+ const serve = serveStatic(path.resolve(dirname, '../assets'), {
457
+ baseUrl: ${JSON.stringify(baseURL)},
458
+ });
459
+ ` : ""}
460
+ const listener = createHttpRequestListener(requestRouter);
461
+
462
+ createServer(async (request, response) => {
463
+ ${serveAssets ? `if (request.url.startsWith(${JSON.stringify(
464
+ baseURL
465
+ )})) return serve(request, response);` : ""}
466
+
467
+ await listener(request, response);
468
+ }).listen(port, host);
469
+ `;
470
+ }
471
+ };
472
+ }
408
473
  function magicModuleAppComponent({
409
474
  entry,
410
475
  root = process.cwd()
@@ -507,50 +572,6 @@ function magicModuleAppBrowserEntry({
507
572
  }
508
573
  });
509
574
  }
510
- function magicModuleAppServerEntry({
511
- host,
512
- port,
513
- assets,
514
- format = "module"
515
- } = {}) {
516
- const baseURL = typeof assets === "object" ? assets.baseURL : "/assets/";
517
- return createMagicModulePlugin({
518
- name: "@quilted/request-router/app-server",
519
- module: MAGIC_MODULE_ENTRY,
520
- sideEffects: true,
521
- async source() {
522
- const serveAssets = Boolean(assets);
523
- return multiline`
524
- ${serveAssets ? `import * as path from 'path';` : ""}
525
- ${serveAssets && format === "module" ? `import {fileURLToPath} from 'url';` : ""}
526
- import {createServer} from 'http';
527
-
528
- import requestRouter from ${JSON.stringify(
529
- MAGIC_MODULE_REQUEST_ROUTER
530
- )};
531
-
532
- import {createHttpRequestListener${serveAssets ? ", serveStatic" : ""}} from '@quilted/quilt/request-router/node';
533
-
534
- const port = ${port ?? "Number.parseInt(process.env.PORT, 10)"};
535
- const host = ${host ? JSON.stringify(host) : "process.env.HOST"};
536
-
537
- ${serveAssets ? `const dirname = ${format === "module" ? "path.dirname(fileURLToPath(import.meta.url))" : "__dirname"};
538
- const serve = serveStatic(path.resolve(dirname, '../assets'), {
539
- baseUrl: ${JSON.stringify(baseURL)},
540
- });` : ""}
541
- const listener = createHttpRequestListener(requestRouter);
542
-
543
- createServer(async (request, response) => {
544
- ${serveAssets ? `if (request.url.startsWith(${JSON.stringify(
545
- baseURL
546
- )})) return serve(request, response);` : ""}
547
-
548
- await listener(request, response);
549
- }).listen(port, host);
550
- `;
551
- }
552
- });
553
- }
554
575
  function magicModuleAppAssetManifests() {
555
576
  return createMagicModulePlugin({
556
577
  name: "@quilted/magic-module/asset-manifests",
@@ -705,4 +726,4 @@ function createManualChunksSorter() {
705
726
  };
706
727
  }
707
728
 
708
- export { MAGIC_MODULE_APP_COMPONENT, MAGIC_MODULE_BROWSER_ASSETS, MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER, magicModuleAppAssetManifests, magicModuleAppBrowserEntry, magicModuleAppComponent, magicModuleAppRequestRouter, magicModuleAppServerEntry, quiltAppBrowser, quiltAppBrowserInput, quiltAppBrowserOptions, quiltAppOptions, quiltAppServer, quiltAppServerInput, quiltAppServerOptions, sourceEntryForAppBrowser };
729
+ export { MAGIC_MODULE_APP_COMPONENT, MAGIC_MODULE_BROWSER_ASSETS, MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER, magicModuleAppAssetManifests, magicModuleAppBrowserEntry, magicModuleAppComponent, magicModuleAppRequestRouter, nodeAppServerRuntime, quiltApp, quiltAppBrowser, quiltAppBrowserInput, quiltAppBrowserPlugins, quiltAppServer, quiltAppServerInput, quiltAppServerPlugins, sourceEntryForAppBrowser };
@@ -1,4 +1,6 @@
1
- export { quiltAppBrowser, quiltAppBrowserOptions, quiltAppOptions, quiltAppServer, quiltAppServerOptions } from './app.mjs';
1
+ export { quiltApp, quiltAppBrowser, quiltAppBrowserPlugins, quiltAppServer, quiltAppServerPlugins } from './app.mjs';
2
2
  export { quiltModule } from './module.mjs';
3
3
  export { quiltPackage, quiltPackageESModules, quiltPackageESNext } from './package.mjs';
4
4
  export { quiltServer } from './server.mjs';
5
+ export { multiline } from './shared/strings.mjs';
6
+ export { MAGIC_MODULE_APP_COMPONENT, MAGIC_MODULE_BROWSER_ASSETS, MAGIC_MODULE_ENTRY, MAGIC_MODULE_ENV, MAGIC_MODULE_REQUEST_ROUTER } from './constants.mjs';
@@ -1,6 +1,6 @@
1
1
  import { Project } from './shared/project.mjs';
2
2
  import { getNodePlugins, removeBuildFiles } from './shared/rollup.mjs';
3
- import { magicModuleRequestRouterEntry } from './features/request-router.mjs';
3
+ import { multiline } from './shared/strings.mjs';
4
4
  import { resolveEnvOption } from './features/env.mjs';
5
5
  import { MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER } from './constants.mjs';
6
6
  import { createMagicModulePlugin } from './shared/magic-module.mjs';
@@ -12,16 +12,16 @@ async function quiltServer({
12
12
  env,
13
13
  graphql = true,
14
14
  output,
15
- port,
16
- host
15
+ runtime = nodeServerRuntime()
17
16
  } = {}) {
18
17
  const project = Project.load(rootPath);
19
18
  const mode = (typeof env === "object" ? env?.mode : void 0) ?? "production";
20
- const outputDirectory = project.resolve("build/server");
19
+ const outputDirectory = project.resolve(
20
+ output?.directory ?? runtime.output?.directory ?? "build/server"
21
+ );
21
22
  const minify = output?.minify ?? false;
22
23
  const bundle = output?.bundle;
23
24
  const hash = output?.hash ?? "async-only";
24
- const outputFormat = output?.format ?? "esmodules";
25
25
  const [
26
26
  { visualizer },
27
27
  { magicModuleEnv, replaceProcessEnv },
@@ -46,7 +46,7 @@ async function quiltServer({
46
46
  const plugins = [
47
47
  ...nodePlugins,
48
48
  replaceProcessEnv({ mode }),
49
- magicModuleEnv({ ...resolveEnvOption(env), mode }),
49
+ magicModuleEnv({ runtime: runtime.env, ...resolveEnvOption(env), mode }),
50
50
  sourceCode({ mode, targets: ["current node"] }),
51
51
  tsconfigAliases({ root: project.root }),
52
52
  monorepoPackageAliases({ root: project.root }),
@@ -61,9 +61,13 @@ async function quiltServer({
61
61
  module: MAGIC_MODULE_REQUEST_ROUTER,
62
62
  alias: serverEntry
63
63
  }),
64
- magicModuleRequestRouterEntry({
65
- host,
66
- port: typeof port === "string" ? Number.parseInt(port, 10) : port
64
+ createMagicModulePlugin({
65
+ name: "@quilted/request-router",
66
+ sideEffects: true,
67
+ module: MAGIC_MODULE_ENTRY,
68
+ source() {
69
+ return runtime.requestRouter?.() ?? nodeServerRuntime().requestRouter();
70
+ }
67
71
  })
68
72
  );
69
73
  }
@@ -87,12 +91,41 @@ async function quiltServer({
87
91
  input: finalEntry === MAGIC_MODULE_ENTRY ? { server: finalEntry } : finalEntry,
88
92
  plugins,
89
93
  output: {
90
- format: outputFormat === "commonjs" || outputFormat === "cjs" ? "cjs" : "esm",
94
+ format: "esm",
91
95
  dir: outputDirectory,
92
96
  entryFileNames: `[name]${hash === true ? `.[hash]` : ""}.js`,
93
97
  chunkFileNames: `[name]${hash === true || hash === "async-only" ? `.[hash]` : ""}.js`,
94
98
  assetFileNames: `[name]${hash === true ? `.[hash]` : ""}.[ext]`,
95
- generatedCode: "es2015"
99
+ generatedCode: "es2015",
100
+ ...runtime.output?.options
101
+ }
102
+ };
103
+ }
104
+ function nodeServerRuntime({
105
+ host,
106
+ port,
107
+ format = "module"
108
+ } = {}) {
109
+ return {
110
+ env: "process.env",
111
+ output: {
112
+ options: {
113
+ format: format === "commonjs" || format === "cjs" ? "cjs" : "esm"
114
+ }
115
+ },
116
+ requestRouter() {
117
+ return multiline`
118
+ import requestRouter from ${JSON.stringify(
119
+ MAGIC_MODULE_REQUEST_ROUTER
120
+ )};
121
+
122
+ import {createHttpServer} from '@quilted/quilt/request-router/node';
123
+
124
+ const port = ${port ?? "Number.parseInt(process.env.PORT, 10)"};
125
+ const host = ${host ? JSON.stringify(host) : "process.env.HOST"};
126
+
127
+ createHttpServer(requestRouter).listen(port, host);
128
+ `;
96
129
  }
97
130
  };
98
131
  }
@@ -112,4 +145,4 @@ async function sourceForServer(project) {
112
145
  return possibleSourceFiles[0];
113
146
  }
114
147
 
115
- export { MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER, quiltServer };
148
+ export { MAGIC_MODULE_ENTRY, MAGIC_MODULE_REQUEST_ROUTER, nodeServerRuntime, quiltServer };