@lwrjs/server 0.9.0-alpha.9 → 0.9.0
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 +6 -6
- package/build/cjs/express/express-server.cjs +4 -4
- package/build/cjs/fs/fs-request.cjs +0 -6
- package/build/cjs/fs/fs-response.cjs +1 -1
- package/build/cjs/koa/koa-request.cjs +20 -35
- package/build/cjs/koa/koa-response.cjs +6 -6
- package/build/cjs/koa/koa-server.cjs +4 -4
- 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 +6 -6
- package/build/es/express/express-server.d.ts +5 -5
- package/build/es/express/express-server.js +4 -4
- 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/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 +6 -6
- package/build/es/koa/koa-server.d.ts +5 -5
- package/build/es/koa/koa-server.js +4 -4
- package/package.json +14 -12
|
@@ -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 !== void 0;
|
|
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,7 +46,7 @@ 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
|
|
@@ -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
|
}
|
|
@@ -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,7 +63,7 @@ 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
|
|
@@ -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 !== undefined;
|
|
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,7 +38,7 @@ 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,
|
|
@@ -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;
|
|
@@ -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) {
|
|
@@ -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,7 +39,7 @@ 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,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import Koa from 'koa';
|
|
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
|
* Koa Server Implementation (https://koajs.com/)
|
|
@@ -13,10 +13,10 @@ export default class KoaInternalServer extends AbstractInternalAppServer impleme
|
|
|
13
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;
|
|
@@ -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,15 +4,15 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.9.0
|
|
7
|
+
"version": "0.9.0",
|
|
8
8
|
"homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/salesforce/lwr.git",
|
|
11
|
+
"url": "https://github.com/salesforce-experience-platform-emu/lwr.git",
|
|
12
12
|
"directory": "packages/@lwrjs/server"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://github.com/salesforce/lwr/issues"
|
|
15
|
+
"url": "https://github.com/salesforce-experience-platform-emu/lwr/issues"
|
|
16
16
|
},
|
|
17
17
|
"type": "module",
|
|
18
18
|
"types": "build/es/index.d.ts",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"require": "./build/cjs/index.cjs"
|
|
25
25
|
},
|
|
26
26
|
"./express": {
|
|
27
|
-
"import": "./build/es/
|
|
28
|
-
"require": "./build/cjs/
|
|
27
|
+
"import": "./build/es/express/express-server.js",
|
|
28
|
+
"require": "./build/cjs/express/express-server.cjs"
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
@@ -34,28 +34,30 @@
|
|
|
34
34
|
"build/**/*.d.ts"
|
|
35
35
|
],
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@lwrjs/types": "0.9.0
|
|
37
|
+
"@lwrjs/types": "0.9.0",
|
|
38
38
|
"@types/koa-compress": "^4.0.1",
|
|
39
39
|
"@types/koa__router": "^8.0.4",
|
|
40
40
|
"jest-express": "^1.12.0"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@koa/router": "^10.0.0",
|
|
44
|
-
"@lwrjs/shared-utils": "0.9.0
|
|
44
|
+
"@lwrjs/shared-utils": "0.9.0",
|
|
45
45
|
"@types/compression": "^1.7.2",
|
|
46
|
-
"@types/express": "^4.17.
|
|
46
|
+
"@types/express": "^4.17.17",
|
|
47
47
|
"@types/koa": "^2.11.7",
|
|
48
48
|
"compression": "^1.7.4",
|
|
49
|
-
"express": "^4.
|
|
49
|
+
"express": "^4.18.2",
|
|
50
50
|
"koa": "^2.13.1",
|
|
51
51
|
"koa-compose": "^4.1.0",
|
|
52
52
|
"koa-compress": "^5.0.1"
|
|
53
53
|
},
|
|
54
54
|
"optionalDependencies": {
|
|
55
|
-
"
|
|
55
|
+
"iltorb": "^2.4.5",
|
|
56
|
+
"node-zopfli-es": "^2.0.1",
|
|
57
|
+
"shrink-ray-current": "^4.1.3"
|
|
56
58
|
},
|
|
57
59
|
"engines": {
|
|
58
|
-
"node": ">=
|
|
60
|
+
"node": ">=16.0.0 <20"
|
|
59
61
|
},
|
|
60
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "4e42b0dc5453f92b36b42aa8132c5bc281e616b7"
|
|
61
63
|
}
|