nuudel-main 1.0.84 → 1.0.85
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.
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const nextPlugin: (fastify: FastifyInstance, _opts: {}, next: (err?: Error) => void) => Promise<void>;
|
|
1
|
+
export declare const nextPlugin: (fastify: any, options: any, next: any) => Promise<void>;
|
|
@@ -5,26 +5,82 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.nextPlugin = void 0;
|
|
7
7
|
const next_1 = __importDefault(require("next"));
|
|
8
|
-
const nextPlugin = async (fastify,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
const nextPlugin = async (fastify, options, next) => {
|
|
9
|
+
let noServeAssets = false;
|
|
10
|
+
if ('noServeAssets' in options) {
|
|
11
|
+
noServeAssets = options.noServeAssets;
|
|
12
|
+
delete options.noServeAssets;
|
|
13
|
+
}
|
|
14
|
+
const app = (0, next_1.default)(Object.assign({}, { dev: process.env.NODE_ENV !== 'production' }, options));
|
|
15
|
+
const handleNextRequests = app.getRequestHandler();
|
|
16
|
+
app
|
|
17
|
+
.prepare()
|
|
18
|
+
.then(() => {
|
|
19
|
+
fastify
|
|
20
|
+
.decorate('next', route.bind(fastify))
|
|
21
|
+
.decorateReply('nextRender', render)
|
|
22
|
+
.decorateReply('nextRenderError', renderError)
|
|
23
|
+
.addHook('onClose', function () {
|
|
24
|
+
return app.close();
|
|
21
25
|
});
|
|
22
|
-
|
|
26
|
+
if (!noServeAssets) {
|
|
27
|
+
const basePath = (app === null || app === void 0 ? void 0 : app.server.nextConfig.basePath) || '';
|
|
28
|
+
const nextAssetsPath = `${basePath}/_next/*`;
|
|
29
|
+
fastify.after(() => {
|
|
30
|
+
fastify.next(nextAssetsPath);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
23
33
|
next();
|
|
34
|
+
})
|
|
35
|
+
.catch((err) => next(err));
|
|
36
|
+
function route(path, opts, callback) {
|
|
37
|
+
opts = opts || {
|
|
38
|
+
logLevel: options.logLevel,
|
|
39
|
+
};
|
|
40
|
+
if (typeof opts === 'function') {
|
|
41
|
+
callback = opts;
|
|
42
|
+
opts = {
|
|
43
|
+
logLevel: options.logLevel,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const method = opts.method || 'get';
|
|
47
|
+
this[method.toLowerCase()](path, opts, handler);
|
|
48
|
+
function handler(req, reply) {
|
|
49
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
50
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
51
|
+
}
|
|
52
|
+
if (callback) {
|
|
53
|
+
return callback(app, req, reply);
|
|
54
|
+
}
|
|
55
|
+
return handleNextRequests(req.raw, reply.raw).then(() => {
|
|
56
|
+
reply.sent = true;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function render(path) {
|
|
61
|
+
const reply = this;
|
|
62
|
+
const { request } = reply;
|
|
63
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
64
|
+
if (headerName === 'content-length' && headerValue === undefined) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
68
|
+
}
|
|
69
|
+
await app.render(request.raw, reply.raw, path, request.query);
|
|
70
|
+
reply.sent = true;
|
|
24
71
|
}
|
|
25
|
-
|
|
26
|
-
|
|
72
|
+
async function renderError(err) {
|
|
73
|
+
const reply = this;
|
|
74
|
+
const { request } = reply;
|
|
75
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
76
|
+
if (headerName === 'content-length' && headerValue === undefined) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
80
|
+
}
|
|
81
|
+
await app.renderError(err, request.raw, reply.raw, request.url, request.query);
|
|
82
|
+
reply.sent = true;
|
|
27
83
|
}
|
|
28
84
|
};
|
|
29
85
|
exports.nextPlugin = nextPlugin;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV4dFBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcGx1Z2luL25leHQvTmV4dFBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnREFBd0I7QUFFakIsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFZekQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRTFCLElBQUksZUFBZSxJQUFJLE9BQU8sRUFBRTtRQUM5QixhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN0QyxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDOUI7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFBLGNBQUksRUFDZCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FDM0UsQ0FBQztJQUNGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFFbkQsR0FBRztTQUNBLE9BQU8sRUFBRTtTQUNULElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVCxPQUFPO2FBQ0osUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO2FBQ25DLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUM7YUFDN0MsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLGFBQVgsR0FBRyx1QkFBSCxHQUFHLENBQVUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUksRUFBRSxDQUFDO1lBQ2hFLE1BQU0sY0FBYyxHQUFHLEdBQUcsUUFBUSxVQUFVLENBQUM7WUFFN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDO1NBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU3QixTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVE7UUFDakMsSUFBSSxHQUFHLElBQUksSUFBSTtZQUNiLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDOUIsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEdBQUc7Z0JBQ0wsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2FBQzNCLENBQUM7U0FDSDtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhELFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLO1lBQ3pCLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUNwRCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQ25CLEVBQUU7Z0JBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQzlDO1lBRUQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNsQztZQUVELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDdEQsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBSTtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUcxQixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FDcEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUNuQixFQUFFO1lBRUQsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDaEUsU0FBUzthQUNWO1lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlELEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLFVBQVUsV0FBVyxDQUFDLEdBQUc7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFHMUIsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQ3BELEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FDbkIsRUFBRTtZQUVELElBQUksVUFBVSxLQUFLLGdCQUFnQixJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7Z0JBQ2hFLFNBQVM7YUFDVjtZQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUM5QztRQUVELE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FDbkIsR0FBRyxFQUNILE9BQU8sQ0FBQyxHQUFHLEVBQ1gsS0FBSyxDQUFDLEdBQUcsRUFDVCxPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sQ0FBQyxLQUFLLENBQ2QsQ0FBQztRQUVGLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDLENBQUM7QUE3SFcsUUFBQSxVQUFVLGNBNkhyQiJ9
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const nextPlugin: (fastify: FastifyInstance, _opts: {}, next: (err?: Error) => void) => Promise<void>;
|
|
1
|
+
export declare const nextPlugin: (fastify: any, options: any, next: any) => Promise<void>;
|
|
@@ -1,23 +1,79 @@
|
|
|
1
1
|
import Next from 'next';
|
|
2
|
-
export const nextPlugin = async (fastify,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
export const nextPlugin = async (fastify, options, next) => {
|
|
3
|
+
let noServeAssets = false;
|
|
4
|
+
if ('noServeAssets' in options) {
|
|
5
|
+
noServeAssets = options.noServeAssets;
|
|
6
|
+
delete options.noServeAssets;
|
|
7
|
+
}
|
|
8
|
+
const app = Next(Object.assign({}, { dev: process.env.NODE_ENV !== 'production' }, options));
|
|
9
|
+
const handleNextRequests = app.getRequestHandler();
|
|
10
|
+
app
|
|
11
|
+
.prepare()
|
|
12
|
+
.then(() => {
|
|
13
|
+
fastify
|
|
14
|
+
.decorate('next', route.bind(fastify))
|
|
15
|
+
.decorateReply('nextRender', render)
|
|
16
|
+
.decorateReply('nextRenderError', renderError)
|
|
17
|
+
.addHook('onClose', function () {
|
|
18
|
+
return app.close();
|
|
15
19
|
});
|
|
16
|
-
|
|
20
|
+
if (!noServeAssets) {
|
|
21
|
+
const basePath = app?.server.nextConfig.basePath || '';
|
|
22
|
+
const nextAssetsPath = `${basePath}/_next/*`;
|
|
23
|
+
fastify.after(() => {
|
|
24
|
+
fastify.next(nextAssetsPath);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
17
27
|
next();
|
|
28
|
+
})
|
|
29
|
+
.catch((err) => next(err));
|
|
30
|
+
function route(path, opts, callback) {
|
|
31
|
+
opts = opts || {
|
|
32
|
+
logLevel: options.logLevel,
|
|
33
|
+
};
|
|
34
|
+
if (typeof opts === 'function') {
|
|
35
|
+
callback = opts;
|
|
36
|
+
opts = {
|
|
37
|
+
logLevel: options.logLevel,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const method = opts.method || 'get';
|
|
41
|
+
this[method.toLowerCase()](path, opts, handler);
|
|
42
|
+
function handler(req, reply) {
|
|
43
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
44
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
45
|
+
}
|
|
46
|
+
if (callback) {
|
|
47
|
+
return callback(app, req, reply);
|
|
48
|
+
}
|
|
49
|
+
return handleNextRequests(req.raw, reply.raw).then(() => {
|
|
50
|
+
reply.sent = true;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function render(path) {
|
|
55
|
+
const reply = this;
|
|
56
|
+
const { request } = reply;
|
|
57
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
58
|
+
if (headerName === 'content-length' && headerValue === undefined) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
62
|
+
}
|
|
63
|
+
await app.render(request.raw, reply.raw, path, request.query);
|
|
64
|
+
reply.sent = true;
|
|
18
65
|
}
|
|
19
|
-
|
|
20
|
-
|
|
66
|
+
async function renderError(err) {
|
|
67
|
+
const reply = this;
|
|
68
|
+
const { request } = reply;
|
|
69
|
+
for (const [headerName, headerValue] of Object.entries(reply.getHeaders())) {
|
|
70
|
+
if (headerName === 'content-length' && headerValue === undefined) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
reply.raw.setHeader(headerName, headerValue);
|
|
74
|
+
}
|
|
75
|
+
await app.renderError(err, request.raw, reply.raw, request.url, request.query);
|
|
76
|
+
reply.sent = true;
|
|
21
77
|
}
|
|
22
78
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV4dFBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvcGx1Z2luL25leHQvTmV4dFBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO0lBWXpELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztJQUUxQixJQUFJLGVBQWUsSUFBSSxPQUFPLEVBQUU7UUFDOUIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDO0tBQzlCO0lBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUMzRSxDQUFDO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUVuRCxHQUFHO1NBQ0EsT0FBTyxFQUFFO1NBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE9BQU87YUFDSixRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckMsYUFBYSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7YUFDbkMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQzthQUM3QyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixNQUFNLFFBQVEsR0FBSSxHQUFXLEVB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
|