@analogjs/vite-plugin-nitro 2.0.0-alpha.2 → 2.0.0-alpha.20

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/README.md CHANGED
@@ -6,6 +6,7 @@ A lightweight [Vite](https://vite.dev) plugin for integrating with [Nitro](https
6
6
  - Build-time Pre-rendering
7
7
  - Static Site Generation
8
8
  - API routes
9
+ - Sitemaps
9
10
 
10
11
  ## Install
11
12
 
@@ -52,7 +53,7 @@ export default async function render(_url: string, document: string) {
52
53
  const html = ReactDOMServer.renderToString(
53
54
  <React.StrictMode>
54
55
  <App />
55
- </React.StrictMode>
56
+ </React.StrictMode>,
56
57
  );
57
58
  return document.replace('<!--app-html-->', html);
58
59
  }
@@ -73,10 +74,47 @@ Also setup the placeholder to be replaced in the `index.html`:
73
74
  </html>
74
75
  ```
75
76
 
77
+ ## API Routes
78
+
79
+ API routes are defined in the `src/server/routes/api` folder. API routes are also filesystem based,
80
+ and are exposed under the default `/api` prefix.
81
+
82
+ ```ts
83
+ // src/server/routes/api/v1/hello
84
+ import { defineEventHandler } from 'h3';
85
+
86
+ export default defineEventHandler(() => ({ message: 'Hello World' }));
87
+ ```
88
+
89
+ The API route can be accessed as `/api/v1/hello`.
90
+
91
+ ## Custom Source Root Directory
92
+
93
+ By default, the `src` folder is used as the path for the discovery of server files and API routes. You can customize the folder with the `sourceRoot` option.
94
+
95
+ ```ts
96
+ // vite.config.ts
97
+ import { defineConfig } from 'vite';
98
+ import nitro from '@analogjs/vite-plugin-nitro';
99
+
100
+ // https://vitejs.dev/config/
101
+ export default defineConfig({
102
+ plugins: [
103
+ nitro({
104
+ ssr: true,
105
+ entryServer: 'app/main.server.tsx',
106
+ sourceRoot: 'app',
107
+ }),
108
+ ],
109
+ });
110
+ ```
111
+
112
+ With this configuration, API routes are discovered under the `app/server/routes/api` directory. You can also make the it optional by setting the `sourceRoot` to `'.'`;
113
+
76
114
  ## Examples
77
115
 
78
- React: https://github.com/brandonroberts/vite-nitro-react
79
- SolidJS: https://github.com/brandonroberts/vite-nitro-solid
116
+ React: https://github.com/brandonroberts/vite-nitro-react \
117
+ SolidJS: https://github.com/brandonroberts/vite-nitro-solid \
80
118
  Vue: https://github.com/brandonroberts/vite-nitro-vue
81
119
 
82
120
  ## Community
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/vite-plugin-nitro",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.20",
4
4
  "description": "A Vite plugin for adding a nitro API server",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -10,6 +10,8 @@
10
10
  },
11
11
  "keywords": [
12
12
  "angular",
13
+ "react",
14
+ "solid",
13
15
  "vite",
14
16
  "plugin-vite",
15
17
  "meta-framework"
@@ -28,15 +30,18 @@
28
30
  "url": "https://github.com/sponsors/brandonroberts"
29
31
  },
30
32
  "dependencies": {
31
- "nitropack": "^2.10.0",
33
+ "nitropack": "^2.11.0",
32
34
  "xmlbuilder2": "^3.0.2",
33
- "esbuild": "^0.20.1"
35
+ "esbuild": "^0.25.0",
36
+ "radix3": "^1.1.1",
37
+ "defu": "^6.1.4"
34
38
  },
35
39
  "ng-update": {
36
40
  "packageGroup": [
37
41
  "@analogjs/platform",
38
42
  "@analogjs/content",
39
43
  "@analogjs/router",
44
+ "@analogjs/storybook-angular",
40
45
  "@analogjs/vite-plugin-angular",
41
46
  "@analogjs/vite-plugin-nitro",
42
47
  "@analogjs/vitest-angular"
package/src/index.d.ts CHANGED
@@ -1,3 +1,11 @@
1
1
  import { nitro } from './lib/vite-plugin-nitro.js';
2
- export { Options, SitemapConfig } from './lib/options.js';
2
+ export { Options, SitemapConfig, PrerenderRouteConfig, PrerenderContentDir, PrerenderContentFile, } from './lib/options.js';
3
+ declare module 'nitropack' {
4
+ interface NitroRouteConfig {
5
+ ssr?: boolean;
6
+ }
7
+ interface NitroRouteRules {
8
+ ssr?: boolean;
9
+ }
10
+ }
3
11
  export default nitro;
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-nitro/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAGnD,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-nitro/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAmBnD,eAAe,KAAK,CAAC"}
@@ -15,11 +15,16 @@ export async function buildServer(options, nitroConfig) {
15
15
  await copyPublicAssets(nitro);
16
16
  if (options?.ssr &&
17
17
  nitroConfig?.prerender?.routes &&
18
- nitroConfig?.prerender?.routes.find((route) => route === '/')) {
19
- // Remove the root index.html so it can be replaced with the prerendered version
20
- if (existsSync(`${nitroConfig?.output?.publicDir}/index.html`)) {
21
- unlinkSync(`${nitroConfig?.output?.publicDir}/index.html`);
22
- }
18
+ (nitroConfig?.prerender?.routes.find((route) => route === '/') ||
19
+ nitroConfig?.prerender?.routes?.length === 0)) {
20
+ const indexFileExts = ['', '.br', '.gz'];
21
+ indexFileExts.forEach((fileExt) => {
22
+ // Remove the root index.html(.br|.gz) files
23
+ const indexFilePath = `${nitroConfig?.output?.publicDir}/index.html${fileExt ? `${fileExt}` : ''}`;
24
+ if (existsSync(indexFilePath)) {
25
+ unlinkSync(indexFilePath);
26
+ }
27
+ });
23
28
  }
24
29
  if (nitroConfig?.prerender?.routes &&
25
30
  nitroConfig?.prerender?.routes?.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"build-server.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAiB,EACjB,WAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;QAC9B,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACnC,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAC3C,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9B,IACE,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,SAAS,EAAE,MAAM;QAC9B,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,EAC7D,CAAC;QACD,gFAAgF;QAChF,IAAI,UAAU,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC;YAC/D,UAAU,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,SAAS,aAAa,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IACE,WAAW,EAAE,SAAS,EAAE,MAAM;QAC9B,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAC1C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"build-server.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAiB,EACjB,WAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;QAC9B,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACnC,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAC3C,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9B,IACE,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,SAAS,EAAE,MAAM;QAC9B,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;YAC5D,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,EAC/C,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAChC,4CAA4C;YAC5C,MAAM,aAAa,GAAG,GAAG,WAAW,EAAE,MAAM,EAAE,SAAS,cAAc,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAEnG,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IACE,WAAW,EAAE,SAAS,EAAE,MAAM;QAC9B,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAC1C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { UserConfig } from 'vite';
2
- import { SitemapConfig } from './options';
2
+ import { PrerenderSitemapConfig, SitemapConfig } from './options';
3
3
  export type PagesJson = {
4
4
  page: string;
5
5
  lastMod: string;
6
+ changefreq?: string;
7
+ priority?: string;
6
8
  };
7
- export declare function buildSitemap(config: UserConfig, sitemapConfig: SitemapConfig, routes: (string | undefined)[] | (() => Promise<(string | undefined)[]>), outputDir: string): Promise<void>;
9
+ export declare function buildSitemap(config: UserConfig, sitemapConfig: SitemapConfig, routes: (string | undefined)[] | (() => Promise<(string | undefined)[]>), outputDir: string, routeSitemaps: Record<string, PrerenderSitemapConfig | (() => PrerenderSitemapConfig) | undefined>): Promise<void>;
@@ -1,19 +1,32 @@
1
1
  import { writeFileSync } from 'node:fs';
2
2
  import { create } from 'xmlbuilder2';
3
3
  import { resolve } from 'node:path';
4
- export async function buildSitemap(config, sitemapConfig, routes, outputDir) {
4
+ export async function buildSitemap(config, sitemapConfig, routes, outputDir, routeSitemaps) {
5
5
  const routeList = await optionHasRoutes(routes);
6
6
  if (routeList.length) {
7
- const slash = checkSlash(sitemapConfig.host);
8
- const sitemapData = routeList.map((page) => ({
9
- page: `${sitemapConfig.host}${slash}${page.replace(/^\/+/g, '')}`,
10
- lastMod: new Date().toISOString().split('T')[0],
11
- }));
7
+ const slash = checkSlash(sitemapConfig.host || '');
8
+ const sitemapData = routeList.map((page) => {
9
+ const url = `${slash}${page.replace(/^\/+/g, '')}`;
10
+ const config = routeSitemaps[url];
11
+ const props = typeof config === 'object' ? config : config?.();
12
+ return {
13
+ page: `${sitemapConfig.host}${url}`,
14
+ lastMod: props?.lastmod ?? new Date().toISOString().split('T')[0],
15
+ changefreq: props?.changefreq,
16
+ priority: props?.priority,
17
+ };
18
+ });
12
19
  const sitemap = createXml('urlset');
13
20
  for (const item of sitemapData) {
14
21
  const page = sitemap.ele('url');
15
22
  page.ele('loc').txt(item.page);
16
23
  page.ele('lastmod').txt(item.lastMod);
24
+ if (item.changefreq) {
25
+ page.ele('changefreq').txt(item.changefreq);
26
+ }
27
+ if (item.priority) {
28
+ page.ele('priority').txt(item.priority);
29
+ }
17
30
  }
18
31
  const mapPath = `${resolve(outputDir)}/sitemap.xml`;
19
32
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"build-sitemap.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAkB,EAClB,aAA4B,EAC5B,MAAwE,EACxE,SAAiB;IAEjB,MAAM,SAAS,GAAa,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IAE1D,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAgB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;YACjE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YAC7C,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,WAAsC;IACvD,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SACjD,GAAG,CAAC,WAAW,EAAE;QAChB,KAAK,EAAE,8CAA8C;KACtD,CAAC;SACD,GAAG,CAAC,kDAAkD,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAwE;IAExE,IAAI,SAAiC,CAAC;IAEtC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,gCAAgC;QAChC,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;IAC7B,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,8BAA8B;QAC9B,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"build-sitemap.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-sitemap.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,14 @@ import { build, mergeConfig } from 'vite';
2
2
  import { relative, resolve } from 'node:path';
3
3
  export async function buildSSRApp(config, options) {
4
4
  const workspaceRoot = options?.workspaceRoot ?? process.cwd();
5
+ const sourceRoot = options?.sourceRoot ?? 'src';
5
6
  const rootDir = relative(workspaceRoot, config.root || '.') || '.';
6
7
  const ssrBuildConfig = mergeConfig(config, {
7
8
  build: {
8
9
  ssr: true,
9
10
  rollupOptions: {
10
11
  input: options?.entryServer ||
11
- resolve(workspaceRoot, rootDir, 'src/main.server.ts'),
12
+ resolve(workspaceRoot, rootDir, `${sourceRoot}/main.server.ts`),
12
13
  },
13
14
  outDir: options?.ssrBuildDir || resolve(workspaceRoot, 'dist', rootDir, 'ssr'),
14
15
  },
@@ -1 +1 @@
1
- {"version":3,"file":"build-ssr.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAc,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAkB,EAAE,OAAiB;IACrE,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IACnE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE;QACzC,KAAK,EAAE;YACL,GAAG,EAAE,IAAI;YACT,aAAa,EAAE;gBACb,KAAK,EACH,OAAO,EAAE,WAAW;oBACpB,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,oBAAoB,CAAC;aACxD;YACD,MAAM,EACJ,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;SACzE;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"build-ssr.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAc,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAkB,EAAE,OAAiB;IACrE,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;IACnE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE;QACzC,KAAK,EAAE;YACL,GAAG,EAAE,IAAI;YACT,aAAa,EAAE;gBACb,KAAK,EACH,OAAO,EAAE,WAAW;oBACpB,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,UAAU,iBAAiB,CAAC;aAClE;YACD,MAAM,EACJ,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;SACzE;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;AAC9B,CAAC"}
@@ -9,6 +9,13 @@ export interface Options {
9
9
  prerender?: PrerenderOptions;
10
10
  entryServer?: string;
11
11
  index?: string;
12
+ /**
13
+ * Relative path to source files. Default is 'src'.
14
+ */
15
+ sourceRoot?: string;
16
+ /**
17
+ * Absolute path to workspace root. Default is 'process.cwd()'
18
+ */
12
19
  workspaceRoot?: string;
13
20
  /**
14
21
  * Additional page paths to include
@@ -23,6 +30,10 @@ export interface Options {
23
30
  * Toggles internal API middleware.
24
31
  * If disabled, a proxy request is used to route /api
25
32
  * requests to / in the production server build.
33
+ *
34
+ * @deprecated
35
+ * Use the src/server/routes/api folder
36
+ * for API routes.
26
37
  */
27
38
  useAPIMiddleware?: boolean;
28
39
  }
@@ -34,7 +45,7 @@ export interface PrerenderOptions {
34
45
  /**
35
46
  * List of routes to prerender resolved statically or dynamically.
36
47
  */
37
- routes?: (string | PrerenderContentDir)[] | (() => Promise<(string | PrerenderContentDir | undefined)[]>);
48
+ routes?: (string | PrerenderContentDir | PrerenderRouteConfig)[] | (() => Promise<(string | PrerenderContentDir | PrerenderRouteConfig | undefined)[]>);
38
49
  sitemap?: SitemapConfig;
39
50
  /** List of functions that run for each route after pre-rendering is complete. */
40
51
  postRenderingHooks?: ((routes: PrerenderRoute) => Promise<void>)[];
@@ -55,6 +66,12 @@ export interface PrerenderContentDir {
55
66
  * @returns a string with the route should be returned (e. g. `/blog/<slug>`) or the value `false`, when the route should not be prerendered.
56
67
  */
57
68
  transform: (file: PrerenderContentFile) => string | false;
69
+ /**
70
+ * Customize the sitemap definition for the prerendered route
71
+ *
72
+ * https://www.sitemaps.org/protocol.html#xmlTagDefinitions
73
+ */
74
+ sitemap?: PrerenderSitemapConfig | ((file: PrerenderContentFile) => PrerenderSitemapConfig);
58
75
  }
59
76
  /**
60
77
  * @param path the path to the content file
@@ -69,3 +86,21 @@ export interface PrerenderContentFile {
69
86
  name: string;
70
87
  extension: string;
71
88
  }
89
+ export interface PrerenderSitemapConfig {
90
+ lastmod?: string;
91
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
92
+ priority?: string;
93
+ }
94
+ export interface PrerenderRouteConfig {
95
+ route: string;
96
+ /**
97
+ * Customize the sitemap definition for the prerendered route
98
+ *
99
+ * https://www.sitemaps.org/protocol.html#xmlTagDefinitions
100
+ */
101
+ sitemap?: PrerenderSitemapConfig | (() => PrerenderSitemapConfig);
102
+ /**
103
+ * Prerender static data for the prerendered route
104
+ */
105
+ staticData?: boolean;
106
+ }
@@ -1,3 +1,7 @@
1
1
  import { Plugin } from 'vite';
2
2
  import { Options } from '../options.js';
3
- export declare function devServerPlugin(options: Options): Plugin;
3
+ type ServerOptions = Options & {
4
+ routeRules?: Record<string, any> | undefined;
5
+ };
6
+ export declare function devServerPlugin(options: ServerOptions): Plugin;
7
+ export {};
@@ -4,39 +4,55 @@ import { normalizePath, } from 'vite';
4
4
  import { resolve } from 'node:path';
5
5
  import { readFileSync } from 'node:fs';
6
6
  import { createEvent, sendWebResponse } from 'h3';
7
+ import { createRouter as createRadixRouter, toRouteMatcher } from 'radix3';
8
+ import { defu } from 'defu';
7
9
  import { registerDevServerMiddleware } from '../utils/register-dev-middleware.js';
8
10
  export function devServerPlugin(options) {
9
11
  const workspaceRoot = options?.workspaceRoot || process.cwd();
10
- const entryServer = options.entryServer || 'src/main.server.ts';
12
+ const sourceRoot = options?.sourceRoot ?? 'src';
11
13
  const index = options.index || 'index.html';
12
14
  let config;
13
15
  let root;
16
+ let isTest = false;
14
17
  return {
15
18
  name: 'analogjs-dev-ssr-plugin',
16
- config(userConfig) {
19
+ config(userConfig, { mode }) {
17
20
  config = userConfig;
18
21
  root = normalizePath(resolve(workspaceRoot, config.root || '.') || '.');
22
+ isTest = isTest ? isTest : mode === 'test';
19
23
  return {
20
24
  resolve: {
21
25
  alias: {
22
- '~analog/entry-server': entryServer,
26
+ '~analog/entry-server': options.entryServer || `${root}/${sourceRoot}/main.server.ts`,
23
27
  },
24
28
  },
25
29
  };
26
30
  },
27
31
  configureServer(viteServer) {
32
+ if (isTest) {
33
+ return;
34
+ }
28
35
  return async () => {
29
36
  remove_html_middlewares(viteServer.middlewares);
30
- registerDevServerMiddleware(root, viteServer);
37
+ registerDevServerMiddleware(root, sourceRoot, viteServer);
31
38
  viteServer.middlewares.use(async (req, res) => {
32
39
  let template = readFileSync(resolve(viteServer.config.root, index), 'utf-8');
33
40
  template = await viteServer.transformIndexHtml(req.originalUrl, template);
41
+ const _routeRulesMatcher = toRouteMatcher(createRadixRouter({ routes: options.routeRules }));
42
+ const _getRouteRules = (path) => defu({}, ..._routeRulesMatcher.matchAll(path).reverse());
34
43
  try {
35
- const entryServer = (await viteServer.ssrLoadModule('~analog/entry-server'))['default'];
36
- const result = await entryServer(req.originalUrl, template, {
37
- req,
38
- res,
39
- });
44
+ let result;
45
+ // Check for route rules explicitly disabling SSR
46
+ if (_getRouteRules(req.originalUrl).ssr === false) {
47
+ result = template;
48
+ }
49
+ else {
50
+ const entryServer = (await viteServer.ssrLoadModule('~analog/entry-server'))['default'];
51
+ result = await entryServer(req.originalUrl, template, {
52
+ req,
53
+ res,
54
+ });
55
+ }
40
56
  if (result instanceof Response) {
41
57
  sendWebResponse(createEvent(req, res), result);
42
58
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server-plugin.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/plugins/dev-server-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-server-plugin.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/plugins/dev-server-plugin.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,gFAAgF;AAEhF,OAAO,EAKL,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAClD,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAKlF,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAC5C,IAAI,MAAkB,CAAC;IACvB,IAAI,IAAY,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE;YACzB,MAAM,GAAG,UAAU,CAAC;YACpB,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YACxE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE;oBACP,KAAK,EAAE;wBACL,sBAAsB,EACpB,OAAO,CAAC,WAAW,IAAI,GAAG,IAAI,IAAI,UAAU,iBAAiB;qBAChE;iBACF;aACF,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,UAAU;YACxB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,OAAO,KAAK,IAAI,EAAE;gBAChB,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAChD,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE1D,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5C,IAAI,QAAQ,GAAG,YAAY,CACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACtC,OAAO,CACR,CAAC;oBAEF,QAAQ,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAC5C,GAAG,CAAC,WAAqB,EACzB,QAAQ,CACT,CAAC;oBAEF,MAAM,kBAAkB,GAAG,cAAc,CACvC,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAClD,CAAC;oBACF,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,IAAI,CACF,EAAE,EACF,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAC5B,CAAC;oBAEvB,IAAI,CAAC;wBACH,IAAI,MAAyB,CAAC;wBAC9B,iDAAiD;wBACjD,IAAI,cAAc,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;4BAC5D,MAAM,GAAG,QAAQ,CAAC;wBACpB,CAAC;6BAAM,CAAC;4BACN,MAAM,WAAW,GAAG,CAClB,MAAM,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CACvD,CAAC,SAAS,CAAC,CAAC;4BACb,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE;gCACpD,GAAG;gCACH,GAAG;6BACJ,CAAC,CAAC;wBACL,CAAC;wBAED,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;4BAC/B,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC/C,OAAO;wBACT,CAAC;wBACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;wBAC3C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,UAAU,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAU,CAAC,CAAC;wBACtD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;wBACrB,GAAG,CAAC,GAAG,CAAC;;;;;;;;iEAQ6C,IAAI,CAAC,SAAS,CACzD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CACrB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;;;;;;aAMjC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,MAAoC;IACnE,MAAM,gBAAgB,GAAG;QACvB,yBAAyB;QACzB,mBAAmB;QACnB,2BAA2B;KAC5B,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,aAAa;QACb,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,GAA4B,EAAE,KAAc;IAChE,MAAM,CAAC,GAAG,KAAc,CAAC;IACzB,OAAO;QACL,OAAO,EAAE,2CAA2C,GAAG,CAAC,GAAG,UACzD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAChC,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;KAC5C,CAAC;AACJ,CAAC"}
@@ -1,14 +1,20 @@
1
- import { eventHandler } from 'h3';
2
-
1
+ import { eventHandler, getResponseHeader } from 'h3';
3
2
  // @ts-ignore
4
3
  import renderer from '#analog/ssr';
5
4
  // @ts-ignore
6
5
  import template from '#analog/index';
7
6
 
8
7
  export default eventHandler(async (event) => {
8
+ const noSSR = getResponseHeader(event, 'x-analog-no-ssr');
9
+
10
+ if (noSSR === 'true') {
11
+ return template;
12
+ }
13
+
9
14
  const html = await renderer(event.node.req.url, template, {
10
15
  req: event.node.req,
11
16
  res: event.node.res,
12
17
  });
18
+
13
19
  return html;
14
20
  });
@@ -1,8 +1,10 @@
1
1
  import { NitroEventHandler } from 'nitropack';
2
2
  type GetHandlersArgs = {
3
3
  workspaceRoot: string;
4
+ sourceRoot: string;
4
5
  rootDir: string;
5
6
  additionalPagesDirs?: string[];
7
+ hasAPIDir?: boolean;
6
8
  };
7
- export declare function getPageHandlers({ workspaceRoot, rootDir, additionalPagesDirs, }: GetHandlersArgs): NitroEventHandler[];
9
+ export declare function getPageHandlers({ workspaceRoot, sourceRoot, rootDir, additionalPagesDirs, hasAPIDir, }: GetHandlersArgs): NitroEventHandler[];
8
10
  export {};
@@ -1,10 +1,10 @@
1
1
  import { resolve } from 'node:path';
2
2
  import fg from 'fast-glob';
3
3
  import { normalizePath } from 'vite';
4
- export function getPageHandlers({ workspaceRoot, rootDir, additionalPagesDirs, }) {
4
+ export function getPageHandlers({ workspaceRoot, sourceRoot, rootDir, additionalPagesDirs, hasAPIDir, }) {
5
5
  const root = normalizePath(resolve(workspaceRoot, rootDir));
6
6
  const endpointFiles = fg.sync([
7
- `${root}/src/app/pages/**/*.server.ts`,
7
+ `${root}/${sourceRoot}/app/pages/**/*.server.ts`,
8
8
  ...(additionalPagesDirs || []).map((dir) => `${workspaceRoot}${dir}/**/*.server.ts`),
9
9
  ], { dot: true });
10
10
  const handlers = endpointFiles.map((endpointFile) => {
@@ -18,7 +18,7 @@ export function getPageHandlers({ workspaceRoot, rootDir, additionalPagesDirs, }
18
18
  .replace(/\./g, '/');
19
19
  return {
20
20
  handler: endpointFile,
21
- route: `/_analog${route}`,
21
+ route: `${hasAPIDir ? '/api' : ''}/_analog${route}`,
22
22
  lazy: true,
23
23
  };
24
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-page-handlers.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/get-page-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAQrC,MAAM,UAAU,eAAe,CAAC,EAC9B,aAAa,EACb,OAAO,EACP,mBAAmB,GACH;IAChB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAa,EAAE,CAAC,IAAI,CACrC;QACE,GAAG,IAAI,+BAA+B;QACtC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAChC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,aAAa,GAAG,GAAG,iBAAiB,CACjD;KACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,CACd,CAAC;IAEF,MAAM,QAAQ,GAAwB,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,YAAY;aACvB,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;aAClC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC;aAClC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;aAChC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,WAAW,KAAK,EAAE;YACzB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"get-page-handlers.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/get-page-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAUrC,MAAM,UAAU,eAAe,CAAC,EAC9B,aAAa,EACb,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,SAAS,GACO;IAChB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAa,EAAE,CAAC,IAAI,CACrC;QACE,GAAG,IAAI,IAAI,UAAU,2BAA2B;QAChD,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAChC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,aAAa,GAAG,GAAG,iBAAiB,CACjD;KACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,CACd,CAAC;IAEF,MAAM,QAAQ,GAAwB,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,YAAY;aACvB,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;aAClC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC;aAClC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;aAChC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,EAAE;YACnD,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { ViteDevServer } from 'vite';
2
- export declare function registerDevServerMiddleware(root: string, viteServer: ViteDevServer): Promise<void>;
2
+ export declare function registerDevServerMiddleware(root: string, sourceRoot: string, viteServer: ViteDevServer): Promise<void>;
@@ -1,7 +1,9 @@
1
1
  import { createEvent } from 'h3';
2
2
  import fg from 'fast-glob';
3
- export async function registerDevServerMiddleware(root, viteServer) {
4
- const middlewareFiles = fg.sync([`${root}/src/server/middleware/**/*.ts`]);
3
+ export async function registerDevServerMiddleware(root, sourceRoot, viteServer) {
4
+ const middlewareFiles = fg.sync([
5
+ `${root}/${sourceRoot}/server/middleware/**/*.ts`,
6
+ ]);
5
7
  middlewareFiles.forEach((file) => {
6
8
  viteServer.middlewares.use(async (req, res, next) => {
7
9
  const middlewareHandler = await viteServer
@@ -1 +1 @@
1
- {"version":3,"file":"register-dev-middleware.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/register-dev-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,WAAW,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,UAAyB;IAEzB,MAAM,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC,CAAC;IAE3E,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAClD,MAAM,iBAAiB,GAAiB,MAAM,UAAU;iBACrD,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAE,CAA+B,CAAC,OAAO,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"register-dev-middleware.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/register-dev-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,WAAW,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,UAAkB,EAClB,UAAyB;IAEzB,MAAM,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC;QAC9B,GAAG,IAAI,IAAI,UAAU,4BAA4B;KAClD,CAAC,CAAC;IAEH,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAClD,MAAM,iBAAiB,GAAiB,MAAM,UAAU;iBACrD,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAE,CAA+B,CAAC,OAAO,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,8 +3,8 @@ import { toNodeListener } from 'h3';
3
3
  import { mergeConfig, normalizePath } from 'vite';
4
4
  import { dirname, join, relative, resolve } from 'node:path';
5
5
  import { platform } from 'node:os';
6
- import { fileURLToPath } from 'node:url';
7
- import { readFileSync, writeFileSync } from 'node:fs';
6
+ import { fileURLToPath, pathToFileURL } from 'node:url';
7
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
8
8
  import { buildServer } from './build-server.js';
9
9
  import { buildSSRApp } from './build-ssr.js';
10
10
  import { pageEndpointsPlugin } from './plugins/page-endpoints.js';
@@ -19,7 +19,10 @@ const __filename = fileURLToPath(import.meta.url);
19
19
  const __dirname = dirname(__filename);
20
20
  export function nitro(options, nitroOptions) {
21
21
  const workspaceRoot = options?.workspaceRoot ?? process.cwd();
22
- const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];
22
+ const sourceRoot = options?.sourceRoot ?? 'src';
23
+ let isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];
24
+ const baseURL = process.env['NITRO_APP_BASE_URL'] || '';
25
+ const prefix = baseURL ? baseURL.substring(0, baseURL.length - 1) : '';
23
26
  const apiPrefix = `/${options?.apiPrefix || 'api'}`;
24
27
  const useAPIMiddleware = typeof options?.useAPIMiddleware !== 'undefined'
25
28
  ? options?.useAPIMiddleware
@@ -29,22 +32,35 @@ export function nitro(options, nitroOptions) {
29
32
  let ssrBuild = false;
30
33
  let config;
31
34
  let nitroConfig;
35
+ let environmentBuild = false;
36
+ let hasAPIDir = false;
37
+ let routeSitemaps = {};
32
38
  return [
33
- (options?.ssr ? devServerPlugin(options) : false),
39
+ (options?.ssr
40
+ ? devServerPlugin({
41
+ entryServer: options?.entryServer,
42
+ index: options?.index,
43
+ routeRules: nitroOptions?.routeRules,
44
+ })
45
+ : false),
34
46
  {
35
47
  name: '@analogjs/vite-plugin-nitro',
36
- async config(_config, { command }) {
48
+ async config(userConfig, { mode, command }) {
37
49
  isServe = command === 'serve';
38
50
  isBuild = command === 'build';
39
- ssrBuild = _config.build?.ssr === true;
40
- config = _config;
51
+ ssrBuild = userConfig.build?.ssr === true;
52
+ config = userConfig;
53
+ isTest = isTest ? isTest : mode === 'test';
41
54
  const rootDir = relative(workspaceRoot, config.root || '.') || '.';
55
+ hasAPIDir = existsSync(resolve(workspaceRoot, rootDir, `${sourceRoot}/server/routes/${options?.apiPrefix || 'api'}`));
42
56
  const buildPreset = process.env['BUILD_PRESET'] ??
43
57
  nitroOptions?.preset;
44
58
  const pageHandlers = getPageHandlers({
45
59
  workspaceRoot,
60
+ sourceRoot,
46
61
  rootDir,
47
62
  additionalPagesDirs: options?.additionalPagesDirs,
63
+ hasAPIDir,
48
64
  });
49
65
  const ssrEntryPath = resolve(options?.ssrBuildDir ||
50
66
  resolve(workspaceRoot, 'dist', rootDir, `ssr`), `main.server${filePrefix ? '.js' : ''}`);
@@ -56,9 +72,9 @@ export function nitro(options, nitroOptions) {
56
72
  preset: buildPreset,
57
73
  compatibilityDate: '2024-11-19',
58
74
  logLevel: nitroOptions?.logLevel || 0,
59
- srcDir: normalizePath(`${rootDir}/src/server`),
75
+ srcDir: normalizePath(`${sourceRoot}/server`),
60
76
  scanDirs: [
61
- normalizePath(`${rootDir}/src/server`),
77
+ normalizePath(`${rootDir}/${sourceRoot}/server`),
62
78
  ...(options?.additionalAPIDirs || []).map((dir) => normalizePath(`${workspaceRoot}${dir}`)),
63
79
  ],
64
80
  output: {
@@ -71,6 +87,11 @@ export function nitro(options, nitroOptions) {
71
87
  },
72
88
  runtimeConfig: {
73
89
  apiPrefix: apiPrefix.substring(1),
90
+ prefix,
91
+ },
92
+ // Fixes support for Rolldown
93
+ imports: {
94
+ autoImport: false,
74
95
  },
75
96
  rollupConfig: {
76
97
  onwarn(warning) {
@@ -82,30 +103,37 @@ export function nitro(options, nitroOptions) {
82
103
  plugins: [pageEndpointsPlugin()],
83
104
  },
84
105
  handlers: [
85
- ...(useAPIMiddleware
86
- ? [
87
- {
88
- handler: '#ANALOG_API_MIDDLEWARE',
89
- middleware: true,
90
- },
91
- ]
92
- : []),
106
+ ...(hasAPIDir
107
+ ? []
108
+ : useAPIMiddleware
109
+ ? [
110
+ {
111
+ handler: '#ANALOG_API_MIDDLEWARE',
112
+ middleware: true,
113
+ },
114
+ ]
115
+ : []),
93
116
  ...pageHandlers,
94
117
  ],
95
- routeRules: useAPIMiddleware
118
+ routeRules: hasAPIDir
96
119
  ? undefined
97
- : {
98
- [`${apiPrefix}/**`]: {
99
- proxy: { to: '/**' },
120
+ : useAPIMiddleware
121
+ ? undefined
122
+ : {
123
+ [`${prefix}${apiPrefix}/**`]: {
124
+ proxy: { to: '/**' },
125
+ },
100
126
  },
101
- },
102
- virtual: {
103
- '#ANALOG_API_MIDDLEWARE': `
127
+ virtual: hasAPIDir
128
+ ? undefined
129
+ : {
130
+ '#ANALOG_API_MIDDLEWARE': `
104
131
  import { eventHandler, proxyRequest } from 'h3';
105
132
  import { useRuntimeConfig } from '#imports';
106
133
 
107
134
  export default eventHandler(async (event) => {
108
- const apiPrefix = \`/\${useRuntimeConfig().apiPrefix}\`;
135
+ const prefix = useRuntimeConfig().prefix;
136
+ const apiPrefix = \`\${prefix}/\${useRuntimeConfig().apiPrefix}\`;
109
137
 
110
138
  if (event.node.req.url?.startsWith(apiPrefix)) {
111
139
  const reqUrl = event.node.req.url?.replace(apiPrefix, '');
@@ -125,7 +153,7 @@ export function nitro(options, nitroOptions) {
125
153
  });
126
154
  }
127
155
  });`,
128
- },
156
+ },
129
157
  };
130
158
  if (isVercelPreset(buildPreset)) {
131
159
  nitroConfig = withVercelOutputAPI(nitroConfig, workspaceRoot);
@@ -133,6 +161,9 @@ export function nitro(options, nitroOptions) {
133
161
  if (isCloudflarePreset(buildPreset)) {
134
162
  nitroConfig = withCloudflareOutput(nitroConfig);
135
163
  }
164
+ if (isFirebaseAppHosting()) {
165
+ nitroConfig = withAppHostingOutput(nitroConfig);
166
+ }
136
167
  if (!ssrBuild && !isTest) {
137
168
  // store the client output path for the SSR build config
138
169
  clientOutputPath = resolve(workspaceRoot, rootDir, config.build?.outDir || 'dist/client');
@@ -144,12 +175,6 @@ export function nitro(options, nitroOptions) {
144
175
  };
145
176
  if (isBuild) {
146
177
  nitroConfig.publicAssets = [{ dir: clientOutputPath }];
147
- nitroConfig.serverAssets = [
148
- {
149
- baseName: 'public',
150
- dir: clientOutputPath,
151
- },
152
- ];
153
178
  nitroConfig.renderer = rendererEntry;
154
179
  if (isEmptyPrerenderRoutes(options)) {
155
180
  nitroConfig.prerender = {};
@@ -174,11 +199,32 @@ export function nitro(options, nitroOptions) {
174
199
  prev.push(current);
175
200
  return prev;
176
201
  }
202
+ if ('route' in current) {
203
+ if (current.sitemap) {
204
+ routeSitemaps[current.route] = current.sitemap;
205
+ }
206
+ prev.push(current.route);
207
+ // Add the server-side data fetching endpoint URL
208
+ if ('staticData' in current) {
209
+ prev.push(`${apiPrefix}/_analog/pages/${current.route}`);
210
+ }
211
+ return prev;
212
+ }
177
213
  const affectedFiles = getMatchingContentFilesWithFrontMatter(workspaceRoot, rootDir, current.contentDir);
178
214
  affectedFiles.forEach((f) => {
179
215
  const result = current.transform(f);
180
216
  if (result) {
217
+ if (current.sitemap) {
218
+ routeSitemaps[result] =
219
+ current.sitemap && typeof current.sitemap === 'function'
220
+ ? current.sitemap?.(f)
221
+ : current.sitemap;
222
+ }
181
223
  prev.push(result);
224
+ // Add the server-side data fetching endpoint URL
225
+ if ('staticData' in current) {
226
+ prev.push(`${apiPrefix}/_analog/pages/${result}`);
227
+ }
182
228
  }
183
229
  });
184
230
  return prev;
@@ -195,18 +241,25 @@ export function nitro(options, nitroOptions) {
195
241
  * This file is shipped as ESM for Windows support,
196
242
  * as it won't resolve the renderer.ts file correctly in node.
197
243
  */
198
- import { eventHandler } from 'h3';
199
-
244
+ import { eventHandler, getResponseHeader } from 'h3';
245
+
200
246
  // @ts-ignore
201
247
  import renderer from '${ssrEntry}';
202
248
  // @ts-ignore
203
249
  const template = \`${indexContents}\`;
204
250
 
205
251
  export default eventHandler(async (event) => {
252
+ const noSSR = getResponseHeader(event, 'x-analog-no-ssr');
253
+
254
+ if (noSSR === 'true') {
255
+ return template;
256
+ }
257
+
206
258
  const html = await renderer(event.node.req.url, template, {
207
259
  req: event.node.req,
208
260
  res: event.node.res,
209
261
  });
262
+
210
263
  return html;
211
264
  });
212
265
  `);
@@ -222,20 +275,62 @@ export function nitro(options, nitroOptions) {
222
275
  },
223
276
  moduleSideEffects: ['zone.js/node', 'zone.js/fesm2015/zone-node'],
224
277
  handlers: [
225
- ...(useAPIMiddleware
226
- ? [
227
- {
228
- handler: '#ANALOG_API_MIDDLEWARE',
229
- middleware: true,
230
- },
231
- ]
232
- : []),
278
+ ...(hasAPIDir
279
+ ? []
280
+ : useAPIMiddleware
281
+ ? [
282
+ {
283
+ handler: '#ANALOG_API_MIDDLEWARE',
284
+ middleware: true,
285
+ },
286
+ ]
287
+ : []),
233
288
  ...pageHandlers,
234
289
  ],
235
290
  };
236
291
  }
237
292
  }
238
293
  nitroConfig = mergeConfig(nitroConfig, nitroOptions);
294
+ return {
295
+ environments: {
296
+ client: {
297
+ build: {
298
+ outDir: config?.build?.outDir ||
299
+ resolve(workspaceRoot, 'dist', rootDir, 'client'),
300
+ },
301
+ },
302
+ ssr: {
303
+ build: {
304
+ ssr: true,
305
+ rollupOptions: {
306
+ input: options?.entryServer ||
307
+ resolve(workspaceRoot, rootDir, `${sourceRoot}/main.server.ts`),
308
+ },
309
+ outDir: options?.ssrBuildDir ||
310
+ resolve(workspaceRoot, 'dist', rootDir, 'ssr'),
311
+ },
312
+ },
313
+ },
314
+ builder: {
315
+ sharedPlugins: true,
316
+ buildApp: async (builder) => {
317
+ environmentBuild = true;
318
+ const builds = [builder.build(builder.environments['client'])];
319
+ if (options?.ssr || nitroConfig.prerender?.routes?.length) {
320
+ builds.push(builder.build(builder.environments['ssr']));
321
+ }
322
+ await Promise.all(builds);
323
+ await buildServer(options, nitroConfig);
324
+ if (nitroConfig.prerender?.routes?.length &&
325
+ options?.prerender?.sitemap) {
326
+ console.log('Building Sitemap...');
327
+ // sitemap needs to be built after all directories are built
328
+ await buildSitemap(config, options.prerender.sitemap, nitroConfig.prerender.routes, nitroConfig.output?.publicDir, routeSitemaps);
329
+ }
330
+ console.log(`\n\nThe '@analogjs/platform' server has been successfully built.`);
331
+ },
332
+ },
333
+ };
239
334
  },
240
335
  async configureServer(viteServer) {
241
336
  if (isServe && !isTest) {
@@ -245,7 +340,19 @@ export function nitro(options, nitroOptions) {
245
340
  });
246
341
  const server = createDevServer(nitro);
247
342
  await build(nitro);
248
- viteServer.middlewares.use(apiPrefix, toNodeListener(server.app));
343
+ const apiHandler = toNodeListener(server.app);
344
+ if (hasAPIDir) {
345
+ viteServer.middlewares.use((req, res, next) => {
346
+ if (req.url?.startsWith(`${prefix}${apiPrefix}`)) {
347
+ apiHandler(req, res);
348
+ return;
349
+ }
350
+ next();
351
+ });
352
+ }
353
+ else {
354
+ viteServer.middlewares.use(apiPrefix, apiHandler);
355
+ }
249
356
  viteServer.httpServer?.once('listening', () => {
250
357
  process.env['ANALOG_HOST'] = !viteServer.config.server.host
251
358
  ? 'localhost'
@@ -256,10 +363,14 @@ export function nitro(options, nitroOptions) {
256
363
  if (nitroOptions?.experimental?.websocket) {
257
364
  viteServer.httpServer?.on('upgrade', server.upgrade);
258
365
  }
259
- console.log(`\n\nThe server endpoints are accessible under the "${apiPrefix}" path.`);
366
+ console.log(`\n\nThe server endpoints are accessible under the "${prefix}${apiPrefix}" path.`);
260
367
  }
261
368
  },
262
369
  async closeBundle() {
370
+ // Skip when build is triggered by the Environment API
371
+ if (environmentBuild) {
372
+ return;
373
+ }
263
374
  if (ssrBuild) {
264
375
  return;
265
376
  }
@@ -272,7 +383,7 @@ export function nitro(options, nitroOptions) {
272
383
  options?.prerender?.sitemap) {
273
384
  console.log('Building Sitemap...');
274
385
  // sitemap needs to be built after all directories are built
275
- await buildSitemap(config, options.prerender.sitemap, nitroConfig.prerender.routes, clientOutputPath);
386
+ await buildSitemap(config, options.prerender.sitemap, nitroConfig.prerender.routes, clientOutputPath, routeSitemaps);
276
387
  }
277
388
  await buildServer(options, nitroConfig);
278
389
  console.log(`\n\nThe '@analogjs/platform' server has been successfully built.`);
@@ -284,7 +395,7 @@ export function nitro(options, nitroOptions) {
284
395
  config() {
285
396
  return {
286
397
  define: {
287
- ANALOG_API_PREFIX: `"${apiPrefix.substring(1)}"`,
398
+ ANALOG_API_PREFIX: `"${baseURL.substring(1)}${apiPrefix.substring(1)}"`,
288
399
  },
289
400
  };
290
401
  },
@@ -319,4 +430,38 @@ const withCloudflareOutput = (nitroConfig) => ({
319
430
  serverDir: '{{ output.publicDir }}/_worker.js',
320
431
  },
321
432
  });
433
+ const isFirebaseAppHosting = () => !!process.env['NG_BUILD_LOGS_JSON'];
434
+ const withAppHostingOutput = (nitroConfig) => {
435
+ let hasOutput = false;
436
+ return {
437
+ ...nitroConfig,
438
+ serveStatic: true,
439
+ rollupConfig: {
440
+ ...nitroConfig.rollupConfig,
441
+ output: {
442
+ ...nitroConfig.rollupConfig?.output,
443
+ entryFileNames: 'server.mjs',
444
+ },
445
+ },
446
+ hooks: {
447
+ ...nitroConfig.hooks,
448
+ compiled: () => {
449
+ if (!hasOutput) {
450
+ const buildOutput = {
451
+ errors: [],
452
+ warnings: [],
453
+ outputPaths: {
454
+ root: pathToFileURL(`${nitroConfig.output?.dir}`),
455
+ browser: pathToFileURL(`${nitroConfig.output?.publicDir}`),
456
+ server: pathToFileURL(`${nitroConfig.output?.dir}/server`),
457
+ },
458
+ };
459
+ // Log the build output for Firebase App Hosting to pick up
460
+ console.log(JSON.stringify(buildOutput, null, 2));
461
+ hasOutput = true;
462
+ }
463
+ },
464
+ },
465
+ };
466
+ };
322
467
  //# sourceMappingURL=vite-plugin-nitro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin-nitro.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin-nitro.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts"],"names":[],"mappings":"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"}