@analogjs/vite-plugin-nitro 0.2.0-beta.2
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 +25 -0
- package/package.json +31 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/build-server.d.ts +3 -0
- package/src/lib/build-server.js +23 -0
- package/src/lib/build-server.js.map +1 -0
- package/src/lib/build-ssr.d.ts +3 -0
- package/src/lib/build-ssr.js +21 -0
- package/src/lib/build-ssr.js.map +1 -0
- package/src/lib/options.d.ts +20 -0
- package/src/lib/options.js +3 -0
- package/src/lib/options.js.map +1 -0
- package/src/lib/runtime/api-middleware.js +16 -0
- package/src/lib/runtime/renderer.js +19 -0
- package/src/lib/vite-plugin-nitro.d.ts +4 -0
- package/src/lib/vite-plugin-nitro.js +97 -0
- package/src/lib/vite-plugin-nitro.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @analogjs/vite-plugin-nitro
|
|
2
|
+
|
|
3
|
+
A Vite plugin for adding a nitro API server
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
yarn add @analogjs/vite-plugin-nitro
|
|
8
|
+
|
|
9
|
+
## Setup
|
|
10
|
+
|
|
11
|
+
Add the plugin to the `plugins` array in your Vite config
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { defineConfig } from 'vite';
|
|
15
|
+
import nitro from '@analogjs/vite-plugin-nitro';
|
|
16
|
+
|
|
17
|
+
// https://vitejs.dev/config/
|
|
18
|
+
export default defineConfig({
|
|
19
|
+
resolve: {
|
|
20
|
+
mainFields: ['module'],
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
plugins: [nitro()],
|
|
24
|
+
});
|
|
25
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@analogjs/vite-plugin-nitro",
|
|
3
|
+
"version": "0.2.0-beta.2",
|
|
4
|
+
"type": "commonjs",
|
|
5
|
+
"description": "A Vite plugin for adding a nitro API server",
|
|
6
|
+
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.js",
|
|
9
|
+
"./package.json": "./package.json"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"angular",
|
|
13
|
+
"vite",
|
|
14
|
+
"plugin-vite",
|
|
15
|
+
"meta-framework"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/analogjs/analog/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://analogjs.org",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/analogjs/analog.git"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"nitropack": "^1.0.0"
|
|
28
|
+
},
|
|
29
|
+
"main": "./src/index.js",
|
|
30
|
+
"types": "./src/index.d.ts"
|
|
31
|
+
}
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-nitro/src/index.ts"],"names":[],"mappings":";;AAAA,+DAAgD;AAGhD,kBAAe,yBAAK,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildServer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const load_esm_1 = require("@angular-devkit/build-angular/src/utils/load-esm");
|
|
6
|
+
function buildServer(options, nitroConfig) {
|
|
7
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
8
|
+
const { createNitro, build, prepare, copyPublicAssets, prerender } = yield (0, load_esm_1.loadEsmModule)('nitropack');
|
|
9
|
+
const nitro = yield createNitro(Object.assign({ dev: false }, nitroConfig));
|
|
10
|
+
yield prepare(nitro);
|
|
11
|
+
yield copyPublicAssets(nitro);
|
|
12
|
+
if (options === null || options === void 0 ? void 0 : options.static) {
|
|
13
|
+
console.log(`Prerendering static pages...`);
|
|
14
|
+
}
|
|
15
|
+
yield prerender(nitro);
|
|
16
|
+
if (!(options === null || options === void 0 ? void 0 : options.static)) {
|
|
17
|
+
yield build(nitro);
|
|
18
|
+
}
|
|
19
|
+
yield nitro.close();
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
exports.buildServer = buildServer;
|
|
23
|
+
//# sourceMappingURL=build-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-server.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-server.ts"],"names":[],"mappings":";;;;AAAA,+EAAiF;AAIjF,SAAsB,WAAW,CAC/B,OAAiB,EACjB,WAAyB;;QAEzB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAChE,MAAM,IAAA,wBAAa,EAA6B,WAAW,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,MAAM,WAAW,iBAC7B,GAAG,EAAE,KAAK,IACP,WAAW,EACd,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE9B,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE;YACpB,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CAAA;AAzBD,kCAyBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSSRApp = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const vite_1 = require("vite");
|
|
6
|
+
function buildSSRApp(config, options) {
|
|
7
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
8
|
+
const ssrBuildConfig = (0, vite_1.mergeConfig)(config, {
|
|
9
|
+
build: {
|
|
10
|
+
ssr: true,
|
|
11
|
+
rollupOptions: {
|
|
12
|
+
input: (options === null || options === void 0 ? void 0 : options.entryServer) || './src/main.server.ts',
|
|
13
|
+
},
|
|
14
|
+
outDir: (options === null || options === void 0 ? void 0 : options.ssrBuildDir) || './dist/ssr',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
yield (0, vite_1.build)(ssrBuildConfig);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
exports.buildSSRApp = buildSSRApp;
|
|
21
|
+
//# sourceMappingURL=build-ssr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-ssr.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/build-ssr.ts"],"names":[],"mappings":";;;;AAAA,+BAAsD;AAGtD,SAAsB,WAAW,CAAC,MAAkB,EAAE,OAAiB;;QACrE,MAAM,cAAc,GAAG,IAAA,kBAAW,EAAC,MAAM,EAAE;YACzC,KAAK,EAAE;gBACL,GAAG,EAAE,IAAI;gBACT,aAAa,EAAE;oBACb,KAAK,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,sBAAsB;iBACtD;gBACD,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,YAAY;aAC7C;SACF,CAAC,CAAC;QAEH,MAAM,IAAA,YAAK,EAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;CAAA;AAZD,kCAYC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface Options {
|
|
2
|
+
ssr?: boolean;
|
|
3
|
+
ssrBuildDir?: string;
|
|
4
|
+
/**
|
|
5
|
+
* Prerender the static pages without producing the server output.
|
|
6
|
+
*/
|
|
7
|
+
static?: boolean;
|
|
8
|
+
prerender?: PrerenderOptions;
|
|
9
|
+
entryServer?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface PrerenderOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Add additional routes to prerender through crawling page links.
|
|
14
|
+
*/
|
|
15
|
+
discover?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* List of routes to prerender resolved statically or dynamically.
|
|
18
|
+
*/
|
|
19
|
+
routes?: string[] | (() => Promise<(string | undefined)[]>);
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is written in JavaScript
|
|
3
|
+
* because it is used by Nitro to build
|
|
4
|
+
* the renderer for SSR.
|
|
5
|
+
*
|
|
6
|
+
* The package is shipped as commonjs
|
|
7
|
+
* which won't be parsed by Nitro correctly.
|
|
8
|
+
*/
|
|
9
|
+
import { eventHandler } from 'h3';
|
|
10
|
+
|
|
11
|
+
export default eventHandler(async (event) => {
|
|
12
|
+
const apiPrefix = `/${import.meta.env.RUNTIME_CONFIG?.apiPrefix ?? 'api'}`;
|
|
13
|
+
if (event.req.url?.startsWith(apiPrefix)) {
|
|
14
|
+
return $fetch(`${event.req.url?.replace(apiPrefix, '')}`);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is written in JavaScript
|
|
3
|
+
* because it is used by Nitro to build
|
|
4
|
+
* the renderer for SSR.
|
|
5
|
+
*
|
|
6
|
+
* The package is shipped as commonjs
|
|
7
|
+
* which won't be parsed by Nitro correctly.
|
|
8
|
+
*/
|
|
9
|
+
import { eventHandler } from 'h3';
|
|
10
|
+
import { useStorage } from '#imports';
|
|
11
|
+
|
|
12
|
+
export default eventHandler(async (event) => {
|
|
13
|
+
const render = (await import('#build/../ssr/main.server.mjs'))['default'];
|
|
14
|
+
const template = await useStorage().getItem(`/assets/public:index.html`);
|
|
15
|
+
|
|
16
|
+
const html = await render(event.req.url, template);
|
|
17
|
+
|
|
18
|
+
return html;
|
|
19
|
+
});
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nitro = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const load_esm_1 = require("@angular-devkit/build-angular/src/utils/load-esm");
|
|
6
|
+
const h3_1 = require("h3");
|
|
7
|
+
const build_server_1 = require("./build-server");
|
|
8
|
+
const build_ssr_1 = require("./build-ssr");
|
|
9
|
+
const vite_1 = require("vite");
|
|
10
|
+
function nitro(options, nitroOptions) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const rootDir = (nitroOptions === null || nitroOptions === void 0 ? void 0 : nitroOptions.rootDir) || '.';
|
|
13
|
+
const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];
|
|
14
|
+
const apiPrefix = `/${(_b = (_a = nitroOptions === null || nitroOptions === void 0 ? void 0 : nitroOptions.runtimeConfig) === null || _a === void 0 ? void 0 : _a['apiPrefix']) !== null && _b !== void 0 ? _b : 'api'}`;
|
|
15
|
+
let nitroConfig = {
|
|
16
|
+
rootDir,
|
|
17
|
+
logLevel: (nitroOptions === null || nitroOptions === void 0 ? void 0 : nitroOptions.logLevel) || 0,
|
|
18
|
+
srcDir: (0, vite_1.normalizePath)(`${rootDir}/src`),
|
|
19
|
+
scanDirs: [(0, vite_1.normalizePath)(`${rootDir}/src/server`)],
|
|
20
|
+
output: Object.assign({ dir: '../dist/analog', publicDir: '../dist/analog/public' }, nitroOptions === null || nitroOptions === void 0 ? void 0 : nitroOptions.output),
|
|
21
|
+
buildDir: './dist/.nitro',
|
|
22
|
+
typescript: {
|
|
23
|
+
generateTsConfig: false,
|
|
24
|
+
},
|
|
25
|
+
runtimeConfig: Object.assign({}, nitroOptions === null || nitroOptions === void 0 ? void 0 : nitroOptions.runtimeConfig),
|
|
26
|
+
};
|
|
27
|
+
let isBuild = false;
|
|
28
|
+
let isServe = false;
|
|
29
|
+
let ssrBuild = false;
|
|
30
|
+
let config;
|
|
31
|
+
return {
|
|
32
|
+
name: 'analogjs-vite-nitro-plugin',
|
|
33
|
+
config(_config, { command }) {
|
|
34
|
+
var _a, _b, _c;
|
|
35
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
isServe = command === 'serve';
|
|
37
|
+
isBuild = command === 'build';
|
|
38
|
+
ssrBuild = ((_a = _config.build) === null || _a === void 0 ? void 0 : _a.ssr) === true;
|
|
39
|
+
config = _config;
|
|
40
|
+
if (isBuild && (options === null || options === void 0 ? void 0 : options.prerender)) {
|
|
41
|
+
nitroConfig.prerender = {};
|
|
42
|
+
nitroConfig.prerender.crawlLinks = (_b = options === null || options === void 0 ? void 0 : options.prerender) === null || _b === void 0 ? void 0 : _b.discover;
|
|
43
|
+
const prerenderRoutes = (_c = options === null || options === void 0 ? void 0 : options.prerender) === null || _c === void 0 ? void 0 : _c.routes;
|
|
44
|
+
if (Array.isArray(prerenderRoutes)) {
|
|
45
|
+
nitroConfig.prerender.routes = prerenderRoutes;
|
|
46
|
+
}
|
|
47
|
+
else if (typeof prerenderRoutes === 'function') {
|
|
48
|
+
nitroConfig.prerender.routes = yield prerenderRoutes();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (isBuild && ssrBuild) {
|
|
52
|
+
nitroConfig = Object.assign(Object.assign({}, nitroConfig), { publicAssets: [{ dir: `../dist/client` }], serverAssets: [{ baseName: 'public', dir: `./dist/client` }], externals: {
|
|
53
|
+
inline: ['zone.js/node'],
|
|
54
|
+
external: ['rxjs', 'node-fetch-native/dist/polyfill', 'destr'],
|
|
55
|
+
}, moduleSideEffects: ['zone.js/bundles/zone-node.umd.js'], renderer: (0, vite_1.normalizePath)(`${__dirname}/runtime/renderer`), handlers: [
|
|
56
|
+
{
|
|
57
|
+
handler: (0, vite_1.normalizePath)(`${__dirname}/runtime/api-middleware`),
|
|
58
|
+
middleware: true,
|
|
59
|
+
},
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
nitroConfig = Object.assign(Object.assign({}, nitroConfig), nitroOptions);
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
configureServer(viteServer) {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
if (isServe && !isTest) {
|
|
68
|
+
const { createNitro, createDevServer, build, prepare } = yield (0, load_esm_1.loadEsmModule)('nitropack');
|
|
69
|
+
const nitro = yield createNitro(Object.assign({ dev: true }, nitroConfig));
|
|
70
|
+
const server = createDevServer(nitro);
|
|
71
|
+
yield prepare(nitro);
|
|
72
|
+
yield build(nitro);
|
|
73
|
+
viteServer.middlewares.use(apiPrefix, (0, h3_1.toNodeListener)(server.app));
|
|
74
|
+
console.log(`\n\nThe '@analogjs/platform' successfully started.\nThe server endpoints are accessible under the "${apiPrefix}" path.`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
closeBundle() {
|
|
79
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
if (ssrBuild) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (isBuild) {
|
|
84
|
+
if (options === null || options === void 0 ? void 0 : options.ssr) {
|
|
85
|
+
console.log('Building SSR application...');
|
|
86
|
+
yield (0, build_ssr_1.buildSSRApp)(config, options);
|
|
87
|
+
}
|
|
88
|
+
console.log('Building Server...');
|
|
89
|
+
yield (0, build_server_1.buildServer)(options, nitroConfig);
|
|
90
|
+
console.log(`\n\nThe '@analogjs/platform' server has been successfully built.`);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
exports.nitro = nitro;
|
|
97
|
+
//# sourceMappingURL=vite-plugin-nitro.js.map
|
|
@@ -0,0 +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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"}
|