@lwrjs/server 0.9.0-alpha.0 → 0.9.0-alpha.10
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/build/cjs/common/abstract-internal-app-server.cjs +1 -1
- package/build/cjs/common/abstract-request.cjs +66 -0
- package/build/cjs/express/express-request.cjs +20 -40
- package/build/cjs/express/express-response.cjs +7 -6
- package/build/cjs/express/express-server.cjs +5 -5
- package/build/cjs/fs/fs-request.cjs +0 -6
- package/build/cjs/fs/fs-response.cjs +1 -1
- package/build/cjs/fs/fs-server.cjs +2 -2
- package/build/cjs/index.cjs +2 -2
- package/build/cjs/koa/koa-request.cjs +20 -35
- package/build/cjs/koa/koa-response.cjs +7 -6
- package/build/cjs/koa/koa-server.cjs +6 -6
- package/build/es/common/abstract-internal-app-server.d.ts +1 -1
- package/build/es/common/abstract-internal-app-server.js +1 -1
- package/build/es/common/abstract-request.d.ts +24 -0
- package/build/es/common/abstract-request.js +61 -0
- package/build/es/express/express-request.d.ts +5 -11
- package/build/es/express/express-request.js +4 -45
- package/build/es/express/express-response.d.ts +3 -3
- package/build/es/express/express-response.js +8 -6
- package/build/es/express/express-server.d.ts +5 -5
- package/build/es/express/express-server.js +5 -5
- package/build/es/fs/fs-request.d.ts +0 -2
- package/build/es/fs/fs-request.js +0 -6
- package/build/es/fs/fs-response.d.ts +1 -1
- package/build/es/fs/fs-response.js +1 -1
- package/build/es/fs/fs-server.d.ts +2 -2
- package/build/es/fs/fs-server.js +2 -2
- package/build/es/index.d.ts +2 -1
- package/build/es/index.js +2 -2
- package/build/es/koa/koa-request.d.ts +5 -10
- package/build/es/koa/koa-request.js +4 -39
- package/build/es/koa/koa-response.d.ts +3 -3
- package/build/es/koa/koa-response.js +8 -6
- package/build/es/koa/koa-server.d.ts +6 -6
- package/build/es/koa/koa-server.js +6 -6
- package/package.json +8 -4
|
@@ -34,7 +34,7 @@ var AbstractInternalAppServer = class {
|
|
|
34
34
|
getInternalRequestKey() {
|
|
35
35
|
return this.internalRequestKey;
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
isSiteGenerationRequest(headers) {
|
|
38
38
|
const metadataRequestHeader = headers["lwr-metadata-request"];
|
|
39
39
|
return metadataRequestHeader === this.internalRequestKey;
|
|
40
40
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, {get: all[name], enumerable: true});
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
// packages/@lwrjs/server/src/common/abstract-request.ts
|
|
9
|
+
__markAsModule(exports);
|
|
10
|
+
__export(exports, {
|
|
11
|
+
AbstractMiddlewareRequest: () => AbstractMiddlewareRequest
|
|
12
|
+
});
|
|
13
|
+
var AbstractMiddlewareRequest = class {
|
|
14
|
+
constructor(isSiteGenerationRequest) {
|
|
15
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
16
|
+
}
|
|
17
|
+
cookie(key) {
|
|
18
|
+
const rawCookies = (this.headers.cookie?.split(";") || []).map((c) => c.trim());
|
|
19
|
+
const rawCookie = rawCookies.find((c) => c.startsWith(`${key}=`));
|
|
20
|
+
return rawCookie ? decodeURIComponent(rawCookie.replace(`${key}=`, "")) : void 0;
|
|
21
|
+
}
|
|
22
|
+
isSiteGeneration() {
|
|
23
|
+
return this.isSiteGenerationRequest;
|
|
24
|
+
}
|
|
25
|
+
hasJsonParam() {
|
|
26
|
+
return this.query.json !== void 0;
|
|
27
|
+
}
|
|
28
|
+
isJsonRequest() {
|
|
29
|
+
const acceptHeader = this.headers?.accept || "";
|
|
30
|
+
const hasJsonHeader = acceptHeader.indexOf("application/json") >= 0;
|
|
31
|
+
return hasJsonHeader || this.query.json !== void 0;
|
|
32
|
+
}
|
|
33
|
+
validateJsonRequest() {
|
|
34
|
+
const hasJsonQueryParam = this.hasJsonParam();
|
|
35
|
+
const hasAcceptHeader = this.headers?.accept !== void 0;
|
|
36
|
+
const hasJsonAcceptHeader = hasAcceptHeader && this.headers?.accept?.includes("application/json");
|
|
37
|
+
return !hasAcceptHeader && !hasJsonQueryParam || hasJsonQueryParam !== hasAcceptHeader || hasJsonQueryParam === hasJsonAcceptHeader;
|
|
38
|
+
}
|
|
39
|
+
validateEnvironmentRequest(config) {
|
|
40
|
+
const targetEnvironment = this.params.environment;
|
|
41
|
+
const defaultEnvironment = config.environment.default;
|
|
42
|
+
const supportedEnvironments = config.environment.supported || [];
|
|
43
|
+
return !targetEnvironment || targetEnvironment === defaultEnvironment || supportedEnvironments?.includes(targetEnvironment);
|
|
44
|
+
}
|
|
45
|
+
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
46
|
+
const {format, apiVersion, compat, locale, environment, bundleSpecifier} = this.params;
|
|
47
|
+
const debug = !!this.query.debug;
|
|
48
|
+
const bundle = !!bundleSpecifier;
|
|
49
|
+
const runtimeEnvironment = {
|
|
50
|
+
...defaultRuntimeEnvironment,
|
|
51
|
+
format: format || defaultRuntimeEnvironment.format,
|
|
52
|
+
compat: compat || defaultRuntimeEnvironment.compat,
|
|
53
|
+
debug: debug || defaultRuntimeEnvironment.debug,
|
|
54
|
+
apiVersion: apiVersion || defaultRuntimeEnvironment.apiVersion,
|
|
55
|
+
bundle: bundle || defaultRuntimeEnvironment.bundle
|
|
56
|
+
};
|
|
57
|
+
const runtimeParams = {
|
|
58
|
+
locale: locale || this.locale || defaultRuntimeEnvironment.defaultLocale,
|
|
59
|
+
environment
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
runtimeEnvironment,
|
|
63
|
+
runtimeParams
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -1,19 +1,36 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
2
7
|
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
|
|
3
8
|
var __export = (target, all) => {
|
|
4
9
|
for (var name in all)
|
|
5
10
|
__defProp(target, name, {get: all[name], enumerable: true});
|
|
6
11
|
};
|
|
12
|
+
var __exportStar = (target, module2, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
16
|
+
__defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toModule = (module2) => {
|
|
21
|
+
return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
|
|
22
|
+
};
|
|
7
23
|
|
|
8
24
|
// packages/@lwrjs/server/src/express/express-request.ts
|
|
9
25
|
__markAsModule(exports);
|
|
10
26
|
__export(exports, {
|
|
11
27
|
default: () => express_request_default
|
|
12
28
|
});
|
|
13
|
-
var
|
|
14
|
-
|
|
29
|
+
var import_abstract_request = __toModule(require("../common/abstract-request.cjs"));
|
|
30
|
+
var ExpressRequest = class extends import_abstract_request.AbstractMiddlewareRequest {
|
|
31
|
+
constructor(expressRequest, isSiteGenerationRequest) {
|
|
32
|
+
super(isSiteGenerationRequest);
|
|
15
33
|
this.req = expressRequest;
|
|
16
|
-
this.isMetadataRequest = isMetadataRequest || false;
|
|
17
34
|
}
|
|
18
35
|
get params() {
|
|
19
36
|
return this.req.params;
|
|
@@ -51,42 +68,5 @@ var ExpressRequest = class {
|
|
|
51
68
|
get(field) {
|
|
52
69
|
return this.req.get(field);
|
|
53
70
|
}
|
|
54
|
-
cookie(key) {
|
|
55
|
-
const rawCookies = (this.req.headers.cookie?.split(";") || []).map((c) => c.trim());
|
|
56
|
-
const rawCookie = rawCookies.find((c) => c.startsWith(`${key}=`));
|
|
57
|
-
return rawCookie ? decodeURIComponent(rawCookie.replace(`${key}=`, "")) : void 0;
|
|
58
|
-
}
|
|
59
|
-
hasJsonParam() {
|
|
60
|
-
return this.req.query.json !== void 0;
|
|
61
|
-
}
|
|
62
|
-
isJsonRequest() {
|
|
63
|
-
const acceptHeader = this.req.get("Accept") || "";
|
|
64
|
-
const hasJsonHeader = acceptHeader.indexOf("application/json") >= 0;
|
|
65
|
-
return hasJsonHeader || this.hasJsonParam();
|
|
66
|
-
}
|
|
67
|
-
isSiteGeneration() {
|
|
68
|
-
return this.isMetadataRequest;
|
|
69
|
-
}
|
|
70
|
-
validateJsonRequest() {
|
|
71
|
-
return !this.hasJsonParam() || this.req.accepts("json") === "json";
|
|
72
|
-
}
|
|
73
|
-
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
74
|
-
const {format, apiVersion, compat, locale, environment, bundleSpecifier} = this.req.params;
|
|
75
|
-
const {debug} = this.req.query;
|
|
76
|
-
return {
|
|
77
|
-
runtimeEnvironment: {
|
|
78
|
-
...defaultRuntimeEnvironment,
|
|
79
|
-
format: format ? format : defaultRuntimeEnvironment.format,
|
|
80
|
-
compat: compat !== void 0 ? compat : defaultRuntimeEnvironment.compat,
|
|
81
|
-
debug: debug !== void 0 ? true : defaultRuntimeEnvironment.debug,
|
|
82
|
-
apiVersion: apiVersion ? apiVersion : defaultRuntimeEnvironment.apiVersion,
|
|
83
|
-
bundle: bundleSpecifier !== void 0 ? true : false
|
|
84
|
-
},
|
|
85
|
-
runtimeParams: {
|
|
86
|
-
locale: locale ? locale : this.req.locale ? this.req.locale : defaultRuntimeEnvironment.defaultLocale,
|
|
87
|
-
environment
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
71
|
};
|
|
92
72
|
var express_request_default = ExpressRequest;
|
|
@@ -11,9 +11,9 @@ __export(exports, {
|
|
|
11
11
|
default: () => express_response_default
|
|
12
12
|
});
|
|
13
13
|
var ExpressResponse = class {
|
|
14
|
-
constructor(expressResponse,
|
|
14
|
+
constructor(expressResponse, isSiteGenerationRequest) {
|
|
15
15
|
this.res = expressResponse;
|
|
16
|
-
this.
|
|
16
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
17
17
|
}
|
|
18
18
|
set(header) {
|
|
19
19
|
this.res.set(header);
|
|
@@ -21,8 +21,8 @@ var ExpressResponse = class {
|
|
|
21
21
|
setHeader(name, value) {
|
|
22
22
|
this.res.setHeader(name, value);
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
if (this.
|
|
24
|
+
setSiteGenerationMetadata(meta) {
|
|
25
|
+
if (this.isSiteGenerationRequest) {
|
|
26
26
|
this.metadata = meta;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -31,7 +31,7 @@ var ExpressResponse = class {
|
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
33
|
send(object) {
|
|
34
|
-
if (this.
|
|
34
|
+
if (this.isSiteGenerationRequest) {
|
|
35
35
|
const context = {
|
|
36
36
|
fs: {
|
|
37
37
|
metadata: this.metadata
|
|
@@ -46,12 +46,13 @@ var ExpressResponse = class {
|
|
|
46
46
|
this.res.sendStatus(httpCode);
|
|
47
47
|
}
|
|
48
48
|
stream(stream) {
|
|
49
|
-
if (this.
|
|
49
|
+
if (this.isSiteGenerationRequest) {
|
|
50
50
|
const context = {
|
|
51
51
|
fs: {
|
|
52
52
|
metadata: this.metadata
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
|
+
stream.destroy();
|
|
55
56
|
this.res.send(context);
|
|
56
57
|
} else {
|
|
57
58
|
stream.pipe(this.res);
|
|
@@ -35,7 +35,7 @@ var import_express_response = __toModule(require("./express-response.cjs"));
|
|
|
35
35
|
var ExpressInternalServer = class extends import_abstract_internal_app_server.default {
|
|
36
36
|
constructor(options) {
|
|
37
37
|
super();
|
|
38
|
-
this.expressApp = (0, import_express.default)();
|
|
38
|
+
this.expressApp = options?.app || (0, import_express.default)();
|
|
39
39
|
if (options.basePath) {
|
|
40
40
|
this.basePath = options.basePath;
|
|
41
41
|
}
|
|
@@ -55,7 +55,7 @@ var ExpressInternalServer = class extends import_abstract_internal_app_server.de
|
|
|
55
55
|
}
|
|
56
56
|
use(middleware) {
|
|
57
57
|
this.expressApp.use(async (req, res, next) => {
|
|
58
|
-
const metadataRequest = this.
|
|
58
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
59
59
|
const lwrReq = new import_express_request.default(req, metadataRequest);
|
|
60
60
|
const lwrRes = new import_express_response.default(res, metadataRequest);
|
|
61
61
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -63,7 +63,7 @@ var ExpressInternalServer = class extends import_abstract_internal_app_server.de
|
|
|
63
63
|
}
|
|
64
64
|
all(path, middleware) {
|
|
65
65
|
this.expressApp.use(path, async (req, res, next) => {
|
|
66
|
-
const metadataRequest = this.
|
|
66
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
67
67
|
const lwrReq = new import_express_request.default(req, metadataRequest);
|
|
68
68
|
const lwrRes = new import_express_response.default(res, metadataRequest);
|
|
69
69
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -71,7 +71,7 @@ var ExpressInternalServer = class extends import_abstract_internal_app_server.de
|
|
|
71
71
|
}
|
|
72
72
|
get(path, middleware) {
|
|
73
73
|
this.expressApp.get(path, async (req, res, next) => {
|
|
74
|
-
const metadataRequest = this.
|
|
74
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
75
75
|
const lwrReq = new import_express_request.default(req, metadataRequest);
|
|
76
76
|
const lwrRes = new import_express_response.default(res, metadataRequest);
|
|
77
77
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -79,7 +79,7 @@ var ExpressInternalServer = class extends import_abstract_internal_app_server.de
|
|
|
79
79
|
}
|
|
80
80
|
post(path, middleware) {
|
|
81
81
|
this.expressApp.post(path, async (req, res, next) => {
|
|
82
|
-
const metadataRequest = this.
|
|
82
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
83
83
|
const lwrReq = new import_express_request.default(req, metadataRequest);
|
|
84
84
|
const lwrRes = new import_express_response.default(res, metadataRequest);
|
|
85
85
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -34,15 +34,9 @@ var FsRequest = class extends import_koa_request.default {
|
|
|
34
34
|
acceptsLanguages() {
|
|
35
35
|
return [this.ctx.locale];
|
|
36
36
|
}
|
|
37
|
-
hasJsonParam() {
|
|
38
|
-
return this.ctx.isJsonRequest;
|
|
39
|
-
}
|
|
40
37
|
isJsonRequest() {
|
|
41
38
|
return this.ctx.isJsonRequest;
|
|
42
39
|
}
|
|
43
|
-
validateJsonRequest() {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
40
|
isSiteGeneration() {
|
|
47
41
|
return true;
|
|
48
42
|
}
|
|
@@ -56,11 +56,11 @@ var LwrFsKoa = class extends import_koa.default {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
var FsInternalServer = class extends import_abstract_internal_app_server.default {
|
|
59
|
-
constructor() {
|
|
59
|
+
constructor(options) {
|
|
60
60
|
super();
|
|
61
61
|
this.middlewares = [];
|
|
62
62
|
this.lwrFsKoaApp = new LwrFsKoa();
|
|
63
|
-
this.koaRouter = new import_router.default();
|
|
63
|
+
this.koaRouter = options.basePath ? new import_router.default({prefix: options.basePath}) : new import_router.default();
|
|
64
64
|
}
|
|
65
65
|
createHttpServer() {
|
|
66
66
|
return import_http.default.createServer();
|
package/build/cjs/index.cjs
CHANGED
|
@@ -41,11 +41,11 @@ function createInternalServer(serverType = "express", options = {}) {
|
|
|
41
41
|
return expressAppServer;
|
|
42
42
|
}
|
|
43
43
|
if (serverType === "koa") {
|
|
44
|
-
const koaAppServer = new import_koa_server.default();
|
|
44
|
+
const koaAppServer = new import_koa_server.default(options);
|
|
45
45
|
return koaAppServer;
|
|
46
46
|
}
|
|
47
47
|
if (serverType === "fs") {
|
|
48
|
-
const fsAppServer = new import_fs_server.FsInternalServer();
|
|
48
|
+
const fsAppServer = new import_fs_server.FsInternalServer(options);
|
|
49
49
|
return fsAppServer;
|
|
50
50
|
}
|
|
51
51
|
throw (0, import_diagnostics.createSingleDiagnosticError)({description: import_diagnostics.descriptions.CONFIG_PARSER.INVALID_PROPERTY("serverType", serverType)}, import_diagnostics.LwrConfigValidationError);
|
|
@@ -1,19 +1,36 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
2
7
|
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
|
|
3
8
|
var __export = (target, all) => {
|
|
4
9
|
for (var name in all)
|
|
5
10
|
__defProp(target, name, {get: all[name], enumerable: true});
|
|
6
11
|
};
|
|
12
|
+
var __exportStar = (target, module2, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
16
|
+
__defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toModule = (module2) => {
|
|
21
|
+
return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
|
|
22
|
+
};
|
|
7
23
|
|
|
8
24
|
// packages/@lwrjs/server/src/koa/koa-request.ts
|
|
9
25
|
__markAsModule(exports);
|
|
10
26
|
__export(exports, {
|
|
11
27
|
default: () => koa_request_default
|
|
12
28
|
});
|
|
13
|
-
var
|
|
14
|
-
|
|
29
|
+
var import_abstract_request = __toModule(require("../common/abstract-request.cjs"));
|
|
30
|
+
var KoaRequest = class extends import_abstract_request.AbstractMiddlewareRequest {
|
|
31
|
+
constructor(ctx, isSiteGenerationRequest) {
|
|
32
|
+
super(isSiteGenerationRequest);
|
|
15
33
|
this.ctx = ctx;
|
|
16
|
-
this.isMetadataRequest = isMetadataRequest || false;
|
|
17
34
|
}
|
|
18
35
|
get params() {
|
|
19
36
|
return this.ctx.params || {};
|
|
@@ -45,9 +62,6 @@ var KoaRequest = class {
|
|
|
45
62
|
set locale(l) {
|
|
46
63
|
this.ctx.locale = l;
|
|
47
64
|
}
|
|
48
|
-
isSiteGeneration() {
|
|
49
|
-
return this.isMetadataRequest;
|
|
50
|
-
}
|
|
51
65
|
acceptsLanguages() {
|
|
52
66
|
return this.ctx.request.acceptsLanguages();
|
|
53
67
|
}
|
|
@@ -57,34 +71,5 @@ var KoaRequest = class {
|
|
|
57
71
|
cookie(key) {
|
|
58
72
|
return this.ctx.cookies.get(key);
|
|
59
73
|
}
|
|
60
|
-
hasJsonParam() {
|
|
61
|
-
return this.ctx.query.json !== void 0;
|
|
62
|
-
}
|
|
63
|
-
isJsonRequest() {
|
|
64
|
-
const acceptHeader = this.ctx.request.get("Accept") || "";
|
|
65
|
-
const hasJsonHeader = acceptHeader.indexOf("application/json") >= 0;
|
|
66
|
-
return hasJsonHeader || this.hasJsonParam();
|
|
67
|
-
}
|
|
68
|
-
validateJsonRequest() {
|
|
69
|
-
return !this.hasJsonParam() || this.ctx.request.accepts("json") === "json";
|
|
70
|
-
}
|
|
71
|
-
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
72
|
-
const {format, apiVersion, compat, locale, environment, bundleSpecifier} = this.params;
|
|
73
|
-
const {debug} = this.ctx.request.query;
|
|
74
|
-
return {
|
|
75
|
-
runtimeEnvironment: {
|
|
76
|
-
...defaultRuntimeEnvironment,
|
|
77
|
-
format: format ? format : defaultRuntimeEnvironment.format,
|
|
78
|
-
compat: compat !== void 0 ? compat : defaultRuntimeEnvironment.compat,
|
|
79
|
-
debug: debug !== void 0 ? true : defaultRuntimeEnvironment.debug,
|
|
80
|
-
apiVersion: apiVersion ? apiVersion : defaultRuntimeEnvironment.apiVersion,
|
|
81
|
-
bundle: bundleSpecifier !== void 0 ? true : false
|
|
82
|
-
},
|
|
83
|
-
runtimeParams: {
|
|
84
|
-
locale: locale ? locale : this.ctx.locale ? this.ctx.locale : defaultRuntimeEnvironment.defaultLocale,
|
|
85
|
-
environment
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
74
|
};
|
|
90
75
|
var koa_request_default = KoaRequest;
|
|
@@ -28,9 +28,9 @@ __export(exports, {
|
|
|
28
28
|
});
|
|
29
29
|
var import_stream = __toModule(require("stream"));
|
|
30
30
|
var KoaResponse = class {
|
|
31
|
-
constructor(ctx,
|
|
31
|
+
constructor(ctx, isSiteGenerationRequest) {
|
|
32
32
|
this.ctx = ctx;
|
|
33
|
-
this.
|
|
33
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
34
34
|
}
|
|
35
35
|
set(header) {
|
|
36
36
|
this.ctx.response.set(header);
|
|
@@ -42,13 +42,13 @@ var KoaResponse = class {
|
|
|
42
42
|
this.ctx.response.status = status;
|
|
43
43
|
return this;
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
if (this.
|
|
45
|
+
setSiteGenerationMetadata(meta) {
|
|
46
|
+
if (this.isSiteGenerationRequest) {
|
|
47
47
|
this.metadata = meta;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
send(object) {
|
|
51
|
-
if (this.
|
|
51
|
+
if (this.isSiteGenerationRequest) {
|
|
52
52
|
const context = {
|
|
53
53
|
fs: {
|
|
54
54
|
metadata: this.metadata
|
|
@@ -63,12 +63,13 @@ var KoaResponse = class {
|
|
|
63
63
|
this.ctx.response.status = httpCode;
|
|
64
64
|
}
|
|
65
65
|
stream(stream) {
|
|
66
|
-
if (this.
|
|
66
|
+
if (this.isSiteGenerationRequest) {
|
|
67
67
|
const context = {
|
|
68
68
|
fs: {
|
|
69
69
|
metadata: this.metadata
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
+
stream.destroy();
|
|
72
73
|
this.ctx.response.body = context;
|
|
73
74
|
} else {
|
|
74
75
|
this.ctx.response.body = stream.on("error", this.ctx.onerror).pipe(new import_stream.PassThrough());
|
|
@@ -34,10 +34,10 @@ var import_abstract_internal_app_server = __toModule(require("../common/abstract
|
|
|
34
34
|
var import_koa_request = __toModule(require("./koa-request.cjs"));
|
|
35
35
|
var import_koa_response = __toModule(require("./koa-response.cjs"));
|
|
36
36
|
var KoaInternalServer = class extends import_abstract_internal_app_server.default {
|
|
37
|
-
constructor() {
|
|
37
|
+
constructor(options) {
|
|
38
38
|
super();
|
|
39
39
|
this.koaApp = new import_koa.default();
|
|
40
|
-
this.koaRouter = new import_router.default();
|
|
40
|
+
this.koaRouter = options.basePath ? new import_router.default({prefix: options.basePath}) : new import_router.default();
|
|
41
41
|
}
|
|
42
42
|
getImpl() {
|
|
43
43
|
return this.koaApp;
|
|
@@ -48,7 +48,7 @@ var KoaInternalServer = class extends import_abstract_internal_app_server.defaul
|
|
|
48
48
|
}
|
|
49
49
|
use(middleware) {
|
|
50
50
|
this.koaApp.use(async (ctx, next) => {
|
|
51
|
-
const metadataRequest = this.
|
|
51
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
52
52
|
const lwrReq = new import_koa_request.default(ctx, metadataRequest);
|
|
53
53
|
const lwrRes = new import_koa_response.default(ctx, metadataRequest);
|
|
54
54
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -56,7 +56,7 @@ var KoaInternalServer = class extends import_abstract_internal_app_server.defaul
|
|
|
56
56
|
}
|
|
57
57
|
all(path, middleware) {
|
|
58
58
|
this.koaRouter.all(path, async (ctx, next) => {
|
|
59
|
-
const metadataRequest = this.
|
|
59
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
60
60
|
const lwrReq = new import_koa_request.default(ctx, metadataRequest);
|
|
61
61
|
const lwrRes = new import_koa_response.default(ctx, metadataRequest);
|
|
62
62
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -64,7 +64,7 @@ var KoaInternalServer = class extends import_abstract_internal_app_server.defaul
|
|
|
64
64
|
}
|
|
65
65
|
get(path, middleware) {
|
|
66
66
|
this.koaRouter.get(path, async (ctx, next) => {
|
|
67
|
-
const metadataRequest = this.
|
|
67
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
68
68
|
const lwrReq = new import_koa_request.default(ctx, metadataRequest);
|
|
69
69
|
const lwrRes = new import_koa_response.default(ctx, metadataRequest);
|
|
70
70
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -72,7 +72,7 @@ var KoaInternalServer = class extends import_abstract_internal_app_server.defaul
|
|
|
72
72
|
}
|
|
73
73
|
post(path, middleware) {
|
|
74
74
|
this.koaRouter.post(path, async (ctx, next) => {
|
|
75
|
-
const metadataRequest = this.
|
|
75
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
76
76
|
const lwrReq = new import_koa_request.default(ctx, metadataRequest);
|
|
77
77
|
const lwrRes = new import_koa_response.default(ctx, metadataRequest);
|
|
78
78
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -5,6 +5,6 @@ export default abstract class AbstractInternalAppServer {
|
|
|
5
5
|
internalRequestKey: string;
|
|
6
6
|
constructor();
|
|
7
7
|
getInternalRequestKey(): string;
|
|
8
|
-
|
|
8
|
+
isSiteGenerationRequest(headers: any): boolean;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=abstract-internal-app-server.d.ts.map
|
|
@@ -10,7 +10,7 @@ export default class AbstractInternalAppServer {
|
|
|
10
10
|
return this.internalRequestKey;
|
|
11
11
|
}
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
13
|
-
|
|
13
|
+
isSiteGenerationRequest(headers) {
|
|
14
14
|
const metadataRequestHeader = headers['lwr-metadata-request'];
|
|
15
15
|
return metadataRequestHeader === this.internalRequestKey;
|
|
16
16
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { RuntimeContext, RuntimeEnvironment, Headers, MiddlewareRequest, NormalizedLwrGlobalConfig } from '@lwrjs/types';
|
|
2
|
+
export declare abstract class AbstractMiddlewareRequest implements MiddlewareRequest {
|
|
3
|
+
isSiteGenerationRequest: boolean;
|
|
4
|
+
constructor(isSiteGenerationRequest?: boolean);
|
|
5
|
+
abstract originalUrl: string;
|
|
6
|
+
abstract path: string;
|
|
7
|
+
abstract body: any;
|
|
8
|
+
abstract method: string;
|
|
9
|
+
abstract protocol: string;
|
|
10
|
+
abstract params: any;
|
|
11
|
+
abstract query: any;
|
|
12
|
+
abstract locale: string;
|
|
13
|
+
abstract headers: Headers;
|
|
14
|
+
abstract acceptsLanguages(): string[];
|
|
15
|
+
abstract get(field: string): string | undefined;
|
|
16
|
+
cookie(key: string): string | undefined;
|
|
17
|
+
isSiteGeneration(): boolean;
|
|
18
|
+
hasJsonParam(): boolean;
|
|
19
|
+
isJsonRequest(): boolean;
|
|
20
|
+
validateJsonRequest(): boolean;
|
|
21
|
+
validateEnvironmentRequest(config: NormalizedLwrGlobalConfig): boolean;
|
|
22
|
+
getRuntimeContext(defaultRuntimeEnvironment: RuntimeEnvironment): RuntimeContext;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=abstract-request.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export class AbstractMiddlewareRequest {
|
|
2
|
+
constructor(isSiteGenerationRequest) {
|
|
3
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
4
|
+
}
|
|
5
|
+
cookie(key) {
|
|
6
|
+
// Does not require the cookie-parser middleware
|
|
7
|
+
const rawCookies = (this.headers.cookie?.split(';') || []).map((c) => c.trim());
|
|
8
|
+
const rawCookie = rawCookies.find((c) => c.startsWith(`${key}=`));
|
|
9
|
+
return rawCookie ? decodeURIComponent(rawCookie.replace(`${key}=`, '')) : undefined;
|
|
10
|
+
}
|
|
11
|
+
isSiteGeneration() {
|
|
12
|
+
return this.isSiteGenerationRequest;
|
|
13
|
+
}
|
|
14
|
+
hasJsonParam() {
|
|
15
|
+
return this.query.json !== undefined;
|
|
16
|
+
}
|
|
17
|
+
isJsonRequest() {
|
|
18
|
+
const acceptHeader = this.headers?.accept || '';
|
|
19
|
+
const hasJsonHeader = acceptHeader.indexOf('application/json') >= 0;
|
|
20
|
+
return hasJsonHeader || this.query.json !== undefined;
|
|
21
|
+
}
|
|
22
|
+
validateJsonRequest() {
|
|
23
|
+
const hasJsonQueryParam = this.hasJsonParam();
|
|
24
|
+
const hasAcceptHeader = this.headers?.accept !== undefined;
|
|
25
|
+
const hasJsonAcceptHeader = hasAcceptHeader && this.headers?.accept?.includes('application/json');
|
|
26
|
+
return ((!hasAcceptHeader && !hasJsonQueryParam) ||
|
|
27
|
+
hasJsonQueryParam !== hasAcceptHeader ||
|
|
28
|
+
hasJsonQueryParam === hasJsonAcceptHeader);
|
|
29
|
+
}
|
|
30
|
+
validateEnvironmentRequest(config) {
|
|
31
|
+
const targetEnvironment = this.params.environment;
|
|
32
|
+
const defaultEnvironment = config.environment.default;
|
|
33
|
+
const supportedEnvironments = config.environment.supported || [];
|
|
34
|
+
return (!targetEnvironment ||
|
|
35
|
+
targetEnvironment === defaultEnvironment ||
|
|
36
|
+
supportedEnvironments?.includes(targetEnvironment));
|
|
37
|
+
}
|
|
38
|
+
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
39
|
+
const { format, apiVersion, compat, locale, environment, bundleSpecifier } = this.params;
|
|
40
|
+
const debug = !!this.query.debug;
|
|
41
|
+
const bundle = !!bundleSpecifier;
|
|
42
|
+
const runtimeEnvironment = {
|
|
43
|
+
...defaultRuntimeEnvironment,
|
|
44
|
+
// override default runtime environment with request parameters
|
|
45
|
+
format: format || defaultRuntimeEnvironment.format,
|
|
46
|
+
compat: compat || defaultRuntimeEnvironment.compat,
|
|
47
|
+
debug: debug || defaultRuntimeEnvironment.debug,
|
|
48
|
+
apiVersion: apiVersion || defaultRuntimeEnvironment.apiVersion,
|
|
49
|
+
bundle: bundle || defaultRuntimeEnvironment.bundle,
|
|
50
|
+
};
|
|
51
|
+
const runtimeParams = {
|
|
52
|
+
locale: locale || this.locale || defaultRuntimeEnvironment.defaultLocale,
|
|
53
|
+
environment,
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
runtimeEnvironment,
|
|
57
|
+
runtimeParams,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=abstract-request.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Request } from 'express';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import type { Headers } from '@lwrjs/types';
|
|
3
|
+
import { AbstractMiddlewareRequest } from '../common/abstract-request.js';
|
|
4
|
+
export default class ExpressRequest extends AbstractMiddlewareRequest {
|
|
4
5
|
private req;
|
|
5
|
-
|
|
6
|
-
constructor(expressRequest: Request, isMetadataRequest?: boolean);
|
|
6
|
+
constructor(expressRequest: Request, isSiteGenerationRequest?: boolean);
|
|
7
7
|
get params(): any;
|
|
8
8
|
get originalUrl(): string;
|
|
9
9
|
get path(): string;
|
|
@@ -16,11 +16,5 @@ export default class ExpressRequest implements MiddlewareRequest {
|
|
|
16
16
|
set locale(l: string);
|
|
17
17
|
acceptsLanguages(): string[];
|
|
18
18
|
get(field: string): string | undefined;
|
|
19
|
-
cookie(key: string): string | undefined;
|
|
20
|
-
hasJsonParam(): boolean;
|
|
21
|
-
isJsonRequest(): boolean;
|
|
22
|
-
isSiteGeneration(): boolean;
|
|
23
|
-
validateJsonRequest(): boolean;
|
|
24
|
-
getRuntimeContext(defaultRuntimeEnvironment: RuntimeEnvironment): RuntimeContext;
|
|
25
19
|
}
|
|
26
20
|
//# sourceMappingURL=express-request.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { AbstractMiddlewareRequest } from '../common/abstract-request.js';
|
|
2
|
+
export default class ExpressRequest extends AbstractMiddlewareRequest {
|
|
3
|
+
constructor(expressRequest, isSiteGenerationRequest) {
|
|
4
|
+
super(isSiteGenerationRequest);
|
|
3
5
|
this.req = expressRequest;
|
|
4
|
-
this.isMetadataRequest = isMetadataRequest || false;
|
|
5
6
|
}
|
|
6
7
|
get params() {
|
|
7
8
|
return this.req.params;
|
|
@@ -40,47 +41,5 @@ export default class ExpressRequest {
|
|
|
40
41
|
get(field) {
|
|
41
42
|
return this.req.get(field);
|
|
42
43
|
}
|
|
43
|
-
cookie(key) {
|
|
44
|
-
// Does not require the cookie-parser middleware
|
|
45
|
-
const rawCookies = (this.req.headers.cookie?.split(';') || []).map((c) => c.trim());
|
|
46
|
-
const rawCookie = rawCookies.find((c) => c.startsWith(`${key}=`));
|
|
47
|
-
return rawCookie ? decodeURIComponent(rawCookie.replace(`${key}=`, '')) : undefined;
|
|
48
|
-
}
|
|
49
|
-
hasJsonParam() {
|
|
50
|
-
return this.req.query.json !== undefined;
|
|
51
|
-
}
|
|
52
|
-
isJsonRequest() {
|
|
53
|
-
const acceptHeader = this.req.get('Accept') || '';
|
|
54
|
-
const hasJsonHeader = acceptHeader.indexOf('application/json') >= 0;
|
|
55
|
-
return hasJsonHeader || this.hasJsonParam();
|
|
56
|
-
}
|
|
57
|
-
isSiteGeneration() {
|
|
58
|
-
return this.isMetadataRequest;
|
|
59
|
-
}
|
|
60
|
-
validateJsonRequest() {
|
|
61
|
-
return !this.hasJsonParam() || this.req.accepts('json') === 'json';
|
|
62
|
-
}
|
|
63
|
-
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
64
|
-
const { format, apiVersion, compat, locale, environment, bundleSpecifier } = this.req.params;
|
|
65
|
-
const { debug } = this.req.query;
|
|
66
|
-
return {
|
|
67
|
-
runtimeEnvironment: {
|
|
68
|
-
...defaultRuntimeEnvironment,
|
|
69
|
-
format: format ? format : defaultRuntimeEnvironment.format,
|
|
70
|
-
compat: compat !== undefined ? compat : defaultRuntimeEnvironment.compat,
|
|
71
|
-
debug: debug !== undefined ? true : defaultRuntimeEnvironment.debug,
|
|
72
|
-
apiVersion: apiVersion ? apiVersion : defaultRuntimeEnvironment.apiVersion,
|
|
73
|
-
bundle: bundleSpecifier !== undefined ? true : false, // the absence of a bundle strategy means bundling is off
|
|
74
|
-
},
|
|
75
|
-
runtimeParams: {
|
|
76
|
-
locale: locale
|
|
77
|
-
? locale
|
|
78
|
-
: this.req.locale
|
|
79
|
-
? this.req.locale
|
|
80
|
-
: defaultRuntimeEnvironment.defaultLocale,
|
|
81
|
-
environment,
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
44
|
}
|
|
86
45
|
//# sourceMappingURL=express-request.js.map
|
|
@@ -5,11 +5,11 @@ import { MiddlewareResponse } from '@lwrjs/types';
|
|
|
5
5
|
export default class ExpressResponse implements MiddlewareResponse {
|
|
6
6
|
private res;
|
|
7
7
|
private metadata;
|
|
8
|
-
private
|
|
9
|
-
constructor(expressResponse: Response,
|
|
8
|
+
private isSiteGenerationRequest;
|
|
9
|
+
constructor(expressResponse: Response, isSiteGenerationRequest?: boolean);
|
|
10
10
|
set(header: any): void;
|
|
11
11
|
setHeader(name: string, value: string | string[]): void;
|
|
12
|
-
|
|
12
|
+
setSiteGenerationMetadata(meta: any): void;
|
|
13
13
|
status(status: number): MiddlewareResponse;
|
|
14
14
|
send(object: any): void;
|
|
15
15
|
sendStatus(httpCode: number): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default class ExpressResponse {
|
|
2
|
-
constructor(expressResponse,
|
|
2
|
+
constructor(expressResponse, isSiteGenerationRequest) {
|
|
3
3
|
this.res = expressResponse;
|
|
4
|
-
this.
|
|
4
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
5
5
|
}
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
7
7
|
set(header) {
|
|
@@ -11,8 +11,8 @@ export default class ExpressResponse {
|
|
|
11
11
|
this.res.setHeader(name, value);
|
|
12
12
|
}
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
14
|
-
|
|
15
|
-
if (this.
|
|
14
|
+
setSiteGenerationMetadata(meta) {
|
|
15
|
+
if (this.isSiteGenerationRequest) {
|
|
16
16
|
this.metadata = meta;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -22,7 +22,7 @@ export default class ExpressResponse {
|
|
|
22
22
|
}
|
|
23
23
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
24
24
|
send(object) {
|
|
25
|
-
if (this.
|
|
25
|
+
if (this.isSiteGenerationRequest) {
|
|
26
26
|
const context = {
|
|
27
27
|
fs: {
|
|
28
28
|
metadata: this.metadata,
|
|
@@ -38,12 +38,14 @@ export default class ExpressResponse {
|
|
|
38
38
|
this.res.sendStatus(httpCode);
|
|
39
39
|
}
|
|
40
40
|
stream(stream) {
|
|
41
|
-
if (this.
|
|
41
|
+
if (this.isSiteGenerationRequest) {
|
|
42
42
|
const context = {
|
|
43
43
|
fs: {
|
|
44
44
|
metadata: this.metadata,
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
|
+
// destroying the stream to prevent lingering processes
|
|
48
|
+
stream.destroy();
|
|
47
49
|
this.res.send(context);
|
|
48
50
|
}
|
|
49
51
|
else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Application as ExpressApp } from 'express';
|
|
3
3
|
import http from 'http';
|
|
4
|
-
import { InternalAppServer, InternalAppServerOptions } from '@lwrjs/types';
|
|
4
|
+
import { InternalAppServer, InternalAppServerOptions, MiddlewareFunction } from '@lwrjs/types';
|
|
5
5
|
import AbstractInternalAppServer from '../common/abstract-internal-app-server.js';
|
|
6
6
|
/**
|
|
7
7
|
* Express Server Implementation (https://expressjs.com/)
|
|
@@ -13,10 +13,10 @@ export default class ExpressInternalServer extends AbstractInternalAppServer imp
|
|
|
13
13
|
constructor(options: InternalAppServerOptions);
|
|
14
14
|
getImpl(): ExpressApp;
|
|
15
15
|
createHttpServer(): http.Server;
|
|
16
|
-
use(middleware:
|
|
17
|
-
all(path: string | Array<string>, middleware:
|
|
18
|
-
get(path: string | Array<string>, middleware:
|
|
19
|
-
post(path: string | Array<string>, middleware:
|
|
16
|
+
use(middleware: MiddlewareFunction): void;
|
|
17
|
+
all(path: string | Array<string>, middleware: MiddlewareFunction): void;
|
|
18
|
+
get(path: string | Array<string>, middleware: MiddlewareFunction): void;
|
|
19
|
+
post(path: string | Array<string>, middleware: MiddlewareFunction): void;
|
|
20
20
|
useCompression(): void;
|
|
21
21
|
getRegexWildcard(): string;
|
|
22
22
|
initRoutes(): void;
|
|
@@ -10,7 +10,7 @@ import ExpressResponse from './express-response.js';
|
|
|
10
10
|
export default class ExpressInternalServer extends AbstractInternalAppServer {
|
|
11
11
|
constructor(options) {
|
|
12
12
|
super();
|
|
13
|
-
this.expressApp = express();
|
|
13
|
+
this.expressApp = options?.app || express();
|
|
14
14
|
if (options.basePath) {
|
|
15
15
|
this.basePath = options.basePath;
|
|
16
16
|
}
|
|
@@ -31,7 +31,7 @@ export default class ExpressInternalServer extends AbstractInternalAppServer {
|
|
|
31
31
|
}
|
|
32
32
|
use(middleware) {
|
|
33
33
|
this.expressApp.use(async (req, res, next) => {
|
|
34
|
-
const metadataRequest = this.
|
|
34
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
35
35
|
const lwrReq = new ExpressRequest(req, metadataRequest);
|
|
36
36
|
const lwrRes = new ExpressResponse(res, metadataRequest);
|
|
37
37
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -39,7 +39,7 @@ export default class ExpressInternalServer extends AbstractInternalAppServer {
|
|
|
39
39
|
}
|
|
40
40
|
all(path, middleware) {
|
|
41
41
|
this.expressApp.use(path, async (req, res, next) => {
|
|
42
|
-
const metadataRequest = this.
|
|
42
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
43
43
|
const lwrReq = new ExpressRequest(req, metadataRequest);
|
|
44
44
|
const lwrRes = new ExpressResponse(res, metadataRequest);
|
|
45
45
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -47,7 +47,7 @@ export default class ExpressInternalServer extends AbstractInternalAppServer {
|
|
|
47
47
|
}
|
|
48
48
|
get(path, middleware) {
|
|
49
49
|
this.expressApp.get(path, async (req, res, next) => {
|
|
50
|
-
const metadataRequest = this.
|
|
50
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
51
51
|
const lwrReq = new ExpressRequest(req, metadataRequest);
|
|
52
52
|
const lwrRes = new ExpressResponse(res, metadataRequest);
|
|
53
53
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -55,7 +55,7 @@ export default class ExpressInternalServer extends AbstractInternalAppServer {
|
|
|
55
55
|
}
|
|
56
56
|
post(path, middleware) {
|
|
57
57
|
this.expressApp.post(path, async (req, res, next) => {
|
|
58
|
-
const metadataRequest = this.
|
|
58
|
+
const metadataRequest = this.isSiteGenerationRequest(req.headers);
|
|
59
59
|
const lwrReq = new ExpressRequest(req, metadataRequest);
|
|
60
60
|
const lwrRes = new ExpressResponse(res, metadataRequest);
|
|
61
61
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -2,9 +2,7 @@ import KoaRequest from '../koa/koa-request.js';
|
|
|
2
2
|
export default class FsRequest extends KoaRequest {
|
|
3
3
|
get query(): any;
|
|
4
4
|
acceptsLanguages(): string[];
|
|
5
|
-
hasJsonParam(): boolean;
|
|
6
5
|
isJsonRequest(): boolean;
|
|
7
|
-
validateJsonRequest(): boolean;
|
|
8
6
|
isSiteGeneration(): boolean;
|
|
9
7
|
}
|
|
10
8
|
//# sourceMappingURL=fs-request.d.ts.map
|
|
@@ -6,15 +6,9 @@ export default class FsRequest extends KoaRequest {
|
|
|
6
6
|
acceptsLanguages() {
|
|
7
7
|
return [this.ctx.locale];
|
|
8
8
|
}
|
|
9
|
-
hasJsonParam() {
|
|
10
|
-
return this.ctx.isJsonRequest;
|
|
11
|
-
}
|
|
12
9
|
isJsonRequest() {
|
|
13
10
|
return this.ctx.isJsonRequest;
|
|
14
11
|
}
|
|
15
|
-
validateJsonRequest() {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
12
|
isSiteGeneration() {
|
|
19
13
|
return true;
|
|
20
14
|
}
|
|
@@ -10,7 +10,7 @@ export default class FsResponse implements MiddlewareResponse {
|
|
|
10
10
|
setHeader(name: string, value: string | string[]): void;
|
|
11
11
|
status(status: number): MiddlewareResponse;
|
|
12
12
|
send(body: any): void;
|
|
13
|
-
|
|
13
|
+
setSiteGenerationMetadata(metadata: any): void;
|
|
14
14
|
sendStatus(httpCode: number): void;
|
|
15
15
|
stream(stream: Readable): void;
|
|
16
16
|
type(type: string): MiddlewareResponse;
|
|
@@ -20,7 +20,7 @@ export default class FsResponse {
|
|
|
20
20
|
this.context.fs.body = body;
|
|
21
21
|
}
|
|
22
22
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
23
|
-
|
|
23
|
+
setSiteGenerationMetadata(metadata) {
|
|
24
24
|
this.context.fs.metadata = metadata;
|
|
25
25
|
}
|
|
26
26
|
sendStatus(httpCode) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import Koa from 'koa';
|
|
4
4
|
import KoaRouter, { Middleware as KoaMiddleware } from '@koa/router';
|
|
5
|
-
import { LwrDispatcher, FsContext, InternalAppServer, MiddlewareFunction } from '@lwrjs/types';
|
|
5
|
+
import { LwrDispatcher, FsContext, InternalAppServer, InternalAppServerOptions, MiddlewareFunction } from '@lwrjs/types';
|
|
6
6
|
import { Server as HttpServer } from 'http';
|
|
7
7
|
import AbstractInternalAppServer from '../common/abstract-internal-app-server.js';
|
|
8
8
|
export declare class LwrFsKoa extends Koa implements LwrDispatcher {
|
|
@@ -19,7 +19,7 @@ export declare class FsInternalServer extends AbstractInternalAppServer implemen
|
|
|
19
19
|
private lwrFsKoaApp;
|
|
20
20
|
protected koaRouter: KoaRouter;
|
|
21
21
|
private middlewares;
|
|
22
|
-
constructor();
|
|
22
|
+
constructor(options: InternalAppServerOptions);
|
|
23
23
|
createHttpServer(): HttpServer;
|
|
24
24
|
use(middleware: MiddlewareFunction): void;
|
|
25
25
|
all(path: string | string[], middleware: MiddlewareFunction): void;
|
package/build/es/fs/fs-server.js
CHANGED
|
@@ -30,11 +30,11 @@ export class LwrFsKoa extends Koa {
|
|
|
30
30
|
* FS Server (FS == FileSystem) implementation used for static generation. Should not be configured directly by consumers.
|
|
31
31
|
*/
|
|
32
32
|
export class FsInternalServer extends AbstractInternalAppServer {
|
|
33
|
-
constructor() {
|
|
33
|
+
constructor(options) {
|
|
34
34
|
super();
|
|
35
35
|
this.middlewares = [];
|
|
36
36
|
this.lwrFsKoaApp = new LwrFsKoa();
|
|
37
|
-
this.koaRouter = new KoaRouter();
|
|
37
|
+
this.koaRouter = options.basePath ? new KoaRouter({ prefix: options.basePath }) : new KoaRouter();
|
|
38
38
|
}
|
|
39
39
|
// TODO: mock this API as is not used for now
|
|
40
40
|
createHttpServer() {
|
package/build/es/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { LwrFsKoa } from './fs/fs-server.js';
|
|
2
|
-
import { InternalAppServer, MiddlewareRequest, MiddlewareResponse, ServerTypes } from '@lwrjs/types';
|
|
2
|
+
import { InternalAppServer, MiddlewareRequest, MiddlewareResponse, ServerTypeImpl, ServerTypes } from '@lwrjs/types';
|
|
3
3
|
import { Request, Response } from 'express';
|
|
4
4
|
declare type ServerOptions = {
|
|
5
|
+
app?: ServerTypeImpl<ServerTypes>;
|
|
5
6
|
basePath?: string;
|
|
6
7
|
};
|
|
7
8
|
declare function createInternalServer<T extends ServerTypes>(serverType?: string, options?: ServerOptions): InternalAppServer<T>;
|
package/build/es/index.js
CHANGED
|
@@ -10,11 +10,11 @@ function createInternalServer(serverType = 'express', options = {}) {
|
|
|
10
10
|
return expressAppServer;
|
|
11
11
|
}
|
|
12
12
|
if (serverType === 'koa') {
|
|
13
|
-
const koaAppServer = new KoaInternalServer();
|
|
13
|
+
const koaAppServer = new KoaInternalServer(options);
|
|
14
14
|
return koaAppServer;
|
|
15
15
|
}
|
|
16
16
|
if (serverType === 'fs') {
|
|
17
|
-
const fsAppServer = new FsInternalServer();
|
|
17
|
+
const fsAppServer = new FsInternalServer(options);
|
|
18
18
|
return fsAppServer;
|
|
19
19
|
}
|
|
20
20
|
throw createSingleDiagnosticError({ description: descriptions.CONFIG_PARSER.INVALID_PROPERTY('serverType', serverType) }, LwrConfigValidationError);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import Koa from 'koa';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import type Koa from 'koa';
|
|
2
|
+
import type { Headers } from '@lwrjs/types';
|
|
3
|
+
import { AbstractMiddlewareRequest } from '../common/abstract-request.js';
|
|
4
|
+
export default class KoaRequest extends AbstractMiddlewareRequest {
|
|
4
5
|
protected ctx: Koa.Context;
|
|
5
|
-
|
|
6
|
-
constructor(ctx: Koa.Context, isMetadataRequest?: boolean);
|
|
6
|
+
constructor(ctx: Koa.Context, isSiteGenerationRequest?: boolean);
|
|
7
7
|
get params(): any;
|
|
8
8
|
get originalUrl(): string;
|
|
9
9
|
get path(): string;
|
|
@@ -14,13 +14,8 @@ export default class KoaRequest implements MiddlewareRequest {
|
|
|
14
14
|
get headers(): Headers;
|
|
15
15
|
get locale(): string;
|
|
16
16
|
set locale(l: string);
|
|
17
|
-
isSiteGeneration(): boolean;
|
|
18
17
|
acceptsLanguages(): string[];
|
|
19
18
|
get(field: string): string | undefined;
|
|
20
19
|
cookie(key: string): string | undefined;
|
|
21
|
-
hasJsonParam(): boolean;
|
|
22
|
-
isJsonRequest(): boolean;
|
|
23
|
-
validateJsonRequest(): boolean;
|
|
24
|
-
getRuntimeContext(defaultRuntimeEnvironment: RuntimeEnvironment): RuntimeContext;
|
|
25
20
|
}
|
|
26
21
|
//# sourceMappingURL=koa-request.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { AbstractMiddlewareRequest } from '../common/abstract-request.js';
|
|
2
|
+
export default class KoaRequest extends AbstractMiddlewareRequest {
|
|
3
|
+
constructor(ctx, isSiteGenerationRequest) {
|
|
4
|
+
super(isSiteGenerationRequest);
|
|
3
5
|
this.ctx = ctx;
|
|
4
|
-
this.isMetadataRequest = isMetadataRequest || false;
|
|
5
6
|
}
|
|
6
7
|
get params() {
|
|
7
8
|
return this.ctx.params || {};
|
|
@@ -33,9 +34,6 @@ export default class KoaRequest {
|
|
|
33
34
|
set locale(l) {
|
|
34
35
|
this.ctx.locale = l;
|
|
35
36
|
}
|
|
36
|
-
isSiteGeneration() {
|
|
37
|
-
return this.isMetadataRequest;
|
|
38
|
-
}
|
|
39
37
|
acceptsLanguages() {
|
|
40
38
|
return this.ctx.request.acceptsLanguages();
|
|
41
39
|
}
|
|
@@ -45,38 +43,5 @@ export default class KoaRequest {
|
|
|
45
43
|
cookie(key) {
|
|
46
44
|
return this.ctx.cookies.get(key);
|
|
47
45
|
}
|
|
48
|
-
hasJsonParam() {
|
|
49
|
-
return this.ctx.query.json !== undefined;
|
|
50
|
-
}
|
|
51
|
-
isJsonRequest() {
|
|
52
|
-
const acceptHeader = this.ctx.request.get('Accept') || '';
|
|
53
|
-
const hasJsonHeader = acceptHeader.indexOf('application/json') >= 0;
|
|
54
|
-
return hasJsonHeader || this.hasJsonParam();
|
|
55
|
-
}
|
|
56
|
-
validateJsonRequest() {
|
|
57
|
-
return !this.hasJsonParam() || this.ctx.request.accepts('json') === 'json';
|
|
58
|
-
}
|
|
59
|
-
getRuntimeContext(defaultRuntimeEnvironment) {
|
|
60
|
-
const { format, apiVersion, compat, locale, environment, bundleSpecifier } = this.params;
|
|
61
|
-
const { debug } = this.ctx.request.query;
|
|
62
|
-
return {
|
|
63
|
-
runtimeEnvironment: {
|
|
64
|
-
...defaultRuntimeEnvironment,
|
|
65
|
-
format: format ? format : defaultRuntimeEnvironment.format,
|
|
66
|
-
compat: compat !== undefined ? compat : defaultRuntimeEnvironment.compat,
|
|
67
|
-
debug: debug !== undefined ? true : defaultRuntimeEnvironment.debug,
|
|
68
|
-
apiVersion: apiVersion ? apiVersion : defaultRuntimeEnvironment.apiVersion,
|
|
69
|
-
bundle: bundleSpecifier !== undefined ? true : false, // the absence of a bundle strategy means bundling is off
|
|
70
|
-
},
|
|
71
|
-
runtimeParams: {
|
|
72
|
-
locale: locale
|
|
73
|
-
? locale
|
|
74
|
-
: this.ctx.locale
|
|
75
|
-
? this.ctx.locale
|
|
76
|
-
: defaultRuntimeEnvironment.defaultLocale,
|
|
77
|
-
environment,
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
46
|
}
|
|
82
47
|
//# sourceMappingURL=koa-request.js.map
|
|
@@ -5,12 +5,12 @@ import { MiddlewareResponse } from '@lwrjs/types';
|
|
|
5
5
|
export default class KoaResponse implements MiddlewareResponse {
|
|
6
6
|
protected ctx: Koa.Context;
|
|
7
7
|
private metadata;
|
|
8
|
-
private
|
|
9
|
-
constructor(ctx: Koa.Context,
|
|
8
|
+
private isSiteGenerationRequest;
|
|
9
|
+
constructor(ctx: Koa.Context, isSiteGenerationRequest?: boolean);
|
|
10
10
|
set(header: any): void;
|
|
11
11
|
setHeader(name: string, value: string | string[]): void;
|
|
12
12
|
status(status: number): MiddlewareResponse;
|
|
13
|
-
|
|
13
|
+
setSiteGenerationMetadata(meta: any): void;
|
|
14
14
|
send(object: any): void;
|
|
15
15
|
sendStatus(httpCode: number): void;
|
|
16
16
|
stream(stream: Readable): void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PassThrough } from 'stream';
|
|
2
2
|
export default class KoaResponse {
|
|
3
|
-
constructor(ctx,
|
|
3
|
+
constructor(ctx, isSiteGenerationRequest) {
|
|
4
4
|
this.ctx = ctx;
|
|
5
|
-
this.
|
|
5
|
+
this.isSiteGenerationRequest = isSiteGenerationRequest || false;
|
|
6
6
|
}
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
8
8
|
set(header) {
|
|
@@ -16,14 +16,14 @@ export default class KoaResponse {
|
|
|
16
16
|
return this;
|
|
17
17
|
}
|
|
18
18
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
19
|
-
|
|
20
|
-
if (this.
|
|
19
|
+
setSiteGenerationMetadata(meta) {
|
|
20
|
+
if (this.isSiteGenerationRequest) {
|
|
21
21
|
this.metadata = meta;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
25
25
|
send(object) {
|
|
26
|
-
if (this.
|
|
26
|
+
if (this.isSiteGenerationRequest) {
|
|
27
27
|
const context = {
|
|
28
28
|
fs: {
|
|
29
29
|
metadata: this.metadata,
|
|
@@ -39,12 +39,14 @@ export default class KoaResponse {
|
|
|
39
39
|
this.ctx.response.status = httpCode;
|
|
40
40
|
}
|
|
41
41
|
stream(stream) {
|
|
42
|
-
if (this.
|
|
42
|
+
if (this.isSiteGenerationRequest) {
|
|
43
43
|
const context = {
|
|
44
44
|
fs: {
|
|
45
45
|
metadata: this.metadata,
|
|
46
46
|
},
|
|
47
47
|
};
|
|
48
|
+
// destroying the stream to prevent lingering processes
|
|
49
|
+
stream.destroy();
|
|
48
50
|
this.ctx.response.body = context;
|
|
49
51
|
}
|
|
50
52
|
else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import Koa from 'koa';
|
|
3
3
|
import http from 'http';
|
|
4
|
-
import { InternalAppServer } from '@lwrjs/types';
|
|
4
|
+
import { InternalAppServer, InternalAppServerOptions, MiddlewareFunction } from '@lwrjs/types';
|
|
5
5
|
import AbstractInternalAppServer from '../common/abstract-internal-app-server.js';
|
|
6
6
|
/**
|
|
7
7
|
* Koa Server Implementation (https://koajs.com/)
|
|
@@ -10,13 +10,13 @@ export default class KoaInternalServer extends AbstractInternalAppServer impleme
|
|
|
10
10
|
private koaApp;
|
|
11
11
|
private koaRouter;
|
|
12
12
|
private httpServer?;
|
|
13
|
-
constructor();
|
|
13
|
+
constructor(options: InternalAppServerOptions);
|
|
14
14
|
getImpl(): Koa;
|
|
15
15
|
createHttpServer(): http.Server;
|
|
16
|
-
use(middleware:
|
|
17
|
-
all(path: string | string[], middleware:
|
|
18
|
-
get(path: string | string[], middleware:
|
|
19
|
-
post(path: string | string[], middleware:
|
|
16
|
+
use(middleware: MiddlewareFunction): void;
|
|
17
|
+
all(path: string | string[], middleware: MiddlewareFunction): void;
|
|
18
|
+
get(path: string | string[], middleware: MiddlewareFunction): void;
|
|
19
|
+
post(path: string | string[], middleware: MiddlewareFunction): void;
|
|
20
20
|
useCompression(): void;
|
|
21
21
|
getRegexWildcard(): string;
|
|
22
22
|
initRoutes(): void;
|
|
@@ -9,10 +9,10 @@ import KoaResponse from './koa-response.js';
|
|
|
9
9
|
* Koa Server Implementation (https://koajs.com/)
|
|
10
10
|
*/
|
|
11
11
|
export default class KoaInternalServer extends AbstractInternalAppServer {
|
|
12
|
-
constructor() {
|
|
12
|
+
constructor(options) {
|
|
13
13
|
super();
|
|
14
14
|
this.koaApp = new Koa();
|
|
15
|
-
this.koaRouter = new KoaRouter();
|
|
15
|
+
this.koaRouter = options.basePath ? new KoaRouter({ prefix: options.basePath }) : new KoaRouter();
|
|
16
16
|
}
|
|
17
17
|
getImpl() {
|
|
18
18
|
return this.koaApp;
|
|
@@ -23,7 +23,7 @@ export default class KoaInternalServer extends AbstractInternalAppServer {
|
|
|
23
23
|
}
|
|
24
24
|
use(middleware) {
|
|
25
25
|
this.koaApp.use(async (ctx, next) => {
|
|
26
|
-
const metadataRequest = this.
|
|
26
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
27
27
|
const lwrReq = new KoaRequest(ctx, metadataRequest);
|
|
28
28
|
const lwrRes = new KoaResponse(ctx, metadataRequest);
|
|
29
29
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -31,7 +31,7 @@ export default class KoaInternalServer extends AbstractInternalAppServer {
|
|
|
31
31
|
}
|
|
32
32
|
all(path, middleware) {
|
|
33
33
|
this.koaRouter.all(path, async (ctx, next) => {
|
|
34
|
-
const metadataRequest = this.
|
|
34
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
35
35
|
const lwrReq = new KoaRequest(ctx, metadataRequest);
|
|
36
36
|
const lwrRes = new KoaResponse(ctx, metadataRequest);
|
|
37
37
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -39,7 +39,7 @@ export default class KoaInternalServer extends AbstractInternalAppServer {
|
|
|
39
39
|
}
|
|
40
40
|
get(path, middleware) {
|
|
41
41
|
this.koaRouter.get(path, async (ctx, next) => {
|
|
42
|
-
const metadataRequest = this.
|
|
42
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
43
43
|
const lwrReq = new KoaRequest(ctx, metadataRequest);
|
|
44
44
|
const lwrRes = new KoaResponse(ctx, metadataRequest);
|
|
45
45
|
await middleware(lwrReq, lwrRes, next);
|
|
@@ -47,7 +47,7 @@ export default class KoaInternalServer extends AbstractInternalAppServer {
|
|
|
47
47
|
}
|
|
48
48
|
post(path, middleware) {
|
|
49
49
|
this.koaRouter.post(path, async (ctx, next) => {
|
|
50
|
-
const metadataRequest = this.
|
|
50
|
+
const metadataRequest = this.isSiteGenerationRequest(ctx.request.headers);
|
|
51
51
|
const lwrReq = new KoaRequest(ctx, metadataRequest);
|
|
52
52
|
const lwrRes = new KoaResponse(ctx, metadataRequest);
|
|
53
53
|
await middleware(lwrReq, lwrRes, next);
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.9.0-alpha.
|
|
7
|
+
"version": "0.9.0-alpha.10",
|
|
8
8
|
"homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
".": {
|
|
23
23
|
"import": "./build/es/index.js",
|
|
24
24
|
"require": "./build/cjs/index.cjs"
|
|
25
|
+
},
|
|
26
|
+
"./express": {
|
|
27
|
+
"import": "./build/es/express/express-server.js",
|
|
28
|
+
"require": "./build/cjs/express/express-server.cjs"
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
"files": [
|
|
@@ -30,14 +34,14 @@
|
|
|
30
34
|
"build/**/*.d.ts"
|
|
31
35
|
],
|
|
32
36
|
"devDependencies": {
|
|
33
|
-
"@lwrjs/types": "0.9.0-alpha.
|
|
37
|
+
"@lwrjs/types": "0.9.0-alpha.10",
|
|
34
38
|
"@types/koa-compress": "^4.0.1",
|
|
35
39
|
"@types/koa__router": "^8.0.4",
|
|
36
40
|
"jest-express": "^1.12.0"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
43
|
"@koa/router": "^10.0.0",
|
|
40
|
-
"@lwrjs/shared-utils": "0.9.0-alpha.
|
|
44
|
+
"@lwrjs/shared-utils": "0.9.0-alpha.10",
|
|
41
45
|
"@types/compression": "^1.7.2",
|
|
42
46
|
"@types/express": "^4.17.13",
|
|
43
47
|
"@types/koa": "^2.11.7",
|
|
@@ -53,5 +57,5 @@
|
|
|
53
57
|
"engines": {
|
|
54
58
|
"node": ">=14.15.4 <19"
|
|
55
59
|
},
|
|
56
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "ecbf031157dd87d2b1a3d528b7fae8f9142eba7e"
|
|
57
61
|
}
|