crelte 0.5.0-beta.3 → 0.5.0-beta.4
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/dist/routing/index.d.ts +2 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +2 -1
- package/dist/routing/router/ClientRouter.d.ts.map +1 -1
- package/dist/routing/router/ClientRouter.js +6 -8
- package/dist/routing/utils.d.ts +4 -0
- package/dist/routing/utils.d.ts.map +1 -1
- package/dist/routing/utils.js +14 -0
- package/dist/server/CrelteServer.d.ts +15 -0
- package/dist/server/CrelteServer.d.ts.map +1 -1
- package/dist/server/CrelteServer.js +19 -0
- package/package.json +1 -1
- package/src/routing/index.ts +2 -0
- package/src/routing/router/ClientRouter.ts +6 -6
- package/src/routing/utils.ts +16 -0
- package/src/server/CrelteServer.ts +22 -0
package/dist/routing/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ import Route, { type RouteOptions } from './route/Route.js';
|
|
|
3
3
|
import Request, { type RequestOptions, type DelayRender } from './route/Request.js';
|
|
4
4
|
import Site from './Site.js';
|
|
5
5
|
import BaseRoute from './route/BaseRoute.js';
|
|
6
|
-
|
|
6
|
+
import { shouldInterceptClick } from './utils.js';
|
|
7
|
+
export { Router, UpdateRequest, BaseRoute, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, shouldInterceptClick, };
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,OAAO,EAAE,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,OAAO,EAAE,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,EACd,oBAAoB,GACpB,CAAC"}
|
package/dist/routing/index.js
CHANGED
|
@@ -3,4 +3,5 @@ import Route from './route/Route.js';
|
|
|
3
3
|
import Request from './route/Request.js';
|
|
4
4
|
import Site from './Site.js';
|
|
5
5
|
import BaseRoute from './route/BaseRoute.js';
|
|
6
|
-
|
|
6
|
+
import { shouldInterceptClick } from './utils.js';
|
|
7
|
+
export { Router, BaseRoute, Route, Site, Request, shouldInterceptClick, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,MAAM,mBAAmB,GAAG;IACjC,kBAAkB,EAAE,OAAO,CAAC;CAC5B,GAAG,iBAAiB,CAAC;AAEtB,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IACnD,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,kBAAkB,CAAU;IAEpC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAEd,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB;IAQ/D;;OAEG;IACG,IAAI;IAuBV;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA6ChD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAYpD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAiB7D;;;OAGG;IACG,qBAAqB,CAC1B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IASxB,MAAM;IAgEN,QAAQ;IAgCR,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;CAwEpD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import BaseRouter from './BaseRouter.js';
|
|
2
|
+
import { shouldInterceptClick } from '../utils.js';
|
|
2
3
|
export default class ClientRouter extends BaseRouter {
|
|
3
4
|
scrollDebounceTimeout;
|
|
4
5
|
preloadOnMouseOver;
|
|
@@ -103,16 +104,13 @@ export default class ClientRouter extends BaseRouter {
|
|
|
103
104
|
window.addEventListener('click', async (e) => {
|
|
104
105
|
// @ts-ignore
|
|
105
106
|
const link = e.target.closest('a');
|
|
106
|
-
|
|
107
|
-
const saveLink = e.altKey;
|
|
108
|
-
if (!link || !link.href || openInNewTab || saveLink)
|
|
109
|
-
return;
|
|
110
|
-
if (link.target.toLowerCase() === '_blank')
|
|
111
|
-
return;
|
|
112
|
-
if (!link.href.startsWith('http'))
|
|
107
|
+
if (!shouldInterceptClick(e, link))
|
|
113
108
|
return;
|
|
114
109
|
e.preventDefault();
|
|
115
|
-
const req = this.targetToRequest(link.href, {
|
|
110
|
+
const req = this.targetToRequest(link.href, {
|
|
111
|
+
origin: 'click',
|
|
112
|
+
context: { ...link.dataset },
|
|
113
|
+
});
|
|
116
114
|
const currRoute = this.route.get();
|
|
117
115
|
const routeEq = currRoute && currRoute.eqUrl(req) && currRoute.eqSearch(req);
|
|
118
116
|
// this means the route is the same maybe with a different hash
|
package/dist/routing/utils.d.ts
CHANGED
|
@@ -2,4 +2,8 @@ import Site from './Site.js';
|
|
|
2
2
|
export declare function trimSlashEnd(str: string): string;
|
|
3
3
|
export declare function orDef<T>(a: T | undefined, def: T): T;
|
|
4
4
|
export declare function preferredSite(sites: Site[], languages: string[]): Site | null;
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the click should be intercepted
|
|
7
|
+
*/
|
|
8
|
+
export declare function shouldInterceptClick(e: PointerEvent, link: HTMLAnchorElement | undefined): boolean;
|
|
5
9
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/routing/utils.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAGD,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAK7E"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/routing/utils.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAGD,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAK7E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,CAAC,EAAE,YAAY,EACf,IAAI,EAAE,iBAAiB,GAAG,SAAS,GACjC,OAAO,CAQT"}
|
package/dist/routing/utils.js
CHANGED
|
@@ -11,3 +11,17 @@ export function preferredSite(sites, languages) {
|
|
|
11
11
|
const lang = matchLanguages(Array.from(map.keys()), languages);
|
|
12
12
|
return lang ? map.get(lang) : null;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Returns true if the click should be intercepted
|
|
16
|
+
*/
|
|
17
|
+
export function shouldInterceptClick(e, link) {
|
|
18
|
+
const openInNewTab = e.metaKey || e.ctrlKey || e.shiftKey;
|
|
19
|
+
const saveLink = e.altKey;
|
|
20
|
+
if (!link || !link.href || openInNewTab || saveLink)
|
|
21
|
+
return false;
|
|
22
|
+
if (link.target.toLowerCase() === '_blank')
|
|
23
|
+
return false;
|
|
24
|
+
if (!link.href.startsWith('http'))
|
|
25
|
+
return false;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
@@ -51,7 +51,22 @@ export default class CrelteServerRequest {
|
|
|
51
51
|
*/
|
|
52
52
|
getEnv(name: 'ENDPOINT_URL'): string;
|
|
53
53
|
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
54
|
+
getEnv(name: 'FRONTEND_URL'): string;
|
|
54
55
|
getEnv(name: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* returns the frontend url with an optional path
|
|
58
|
+
*
|
|
59
|
+
* ## Note
|
|
60
|
+
* For the origin the `FRONTEND_URL` env variable is used
|
|
61
|
+
*/
|
|
62
|
+
frontendUrl(path?: string): URL;
|
|
63
|
+
/**
|
|
64
|
+
* returns the backend url with an optional path
|
|
65
|
+
*
|
|
66
|
+
* ## Note
|
|
67
|
+
* For the origin the `ENDPOINT_URL` env variable is used
|
|
68
|
+
*/
|
|
69
|
+
backendUrl(path?: string): URL;
|
|
55
70
|
/**
|
|
56
71
|
* Returns the primary site
|
|
57
72
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrelteServer.d.ts","sourceRoot":"","sources":["../../src/server/CrelteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAW,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"CrelteServer.d.ts","sourceRoot":"","sources":["../../src/server/CrelteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAW,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,aAAa,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACvC;;OAEG;IACH,GAAG,EAAE,aAAa,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEhB,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,0BAA0B;IAchE;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IACrC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI/B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI9B;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IAInB,cAAc;IACd,gBAAgB,CAAC,IAAI,EAAE,QAAQ;CAG/B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ServerCookies from '../cookies/ServerCookies.js';
|
|
2
2
|
import { Request } from '../routing/index.js';
|
|
3
|
+
import { urlWithPath } from '../utils.js';
|
|
3
4
|
export default class CrelteServerRequest {
|
|
4
5
|
/**
|
|
5
6
|
* The current request
|
|
@@ -58,6 +59,24 @@ export default class CrelteServerRequest {
|
|
|
58
59
|
getEnv(name) {
|
|
59
60
|
return this._env.get(name) ?? null;
|
|
60
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* returns the frontend url with an optional path
|
|
64
|
+
*
|
|
65
|
+
* ## Note
|
|
66
|
+
* For the origin the `FRONTEND_URL` env variable is used
|
|
67
|
+
*/
|
|
68
|
+
frontendUrl(path) {
|
|
69
|
+
return urlWithPath(this.getEnv('FRONTEND_URL'), path);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* returns the backend url with an optional path
|
|
73
|
+
*
|
|
74
|
+
* ## Note
|
|
75
|
+
* For the origin the `ENDPOINT_URL` env variable is used
|
|
76
|
+
*/
|
|
77
|
+
backendUrl(path) {
|
|
78
|
+
return urlWithPath(this.getEnv('ENDPOINT_URL'), path);
|
|
79
|
+
}
|
|
61
80
|
/**
|
|
62
81
|
* Returns the primary site
|
|
63
82
|
*/
|
package/package.json
CHANGED
package/src/routing/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import Request, {
|
|
|
6
6
|
} from './route/Request.js';
|
|
7
7
|
import Site from './Site.js';
|
|
8
8
|
import BaseRoute from './route/BaseRoute.js';
|
|
9
|
+
import { shouldInterceptClick } from './utils.js';
|
|
9
10
|
|
|
10
11
|
export {
|
|
11
12
|
Router,
|
|
@@ -17,4 +18,5 @@ export {
|
|
|
17
18
|
Request,
|
|
18
19
|
DelayRender,
|
|
19
20
|
RequestOptions,
|
|
21
|
+
shouldInterceptClick,
|
|
20
22
|
};
|
|
@@ -3,6 +3,7 @@ import BaseRouter, { BaseRouterOptions } from './BaseRouter.js';
|
|
|
3
3
|
import { Request, RequestOptions } from '../index.js';
|
|
4
4
|
import Route from '../route/Route.js';
|
|
5
5
|
import { SiteFromGraphQl } from '../Site.js';
|
|
6
|
+
import { shouldInterceptClick } from '../utils.js';
|
|
6
7
|
|
|
7
8
|
export type ClientRouterOptions = {
|
|
8
9
|
preloadOnMouseOver: boolean;
|
|
@@ -145,15 +146,14 @@ export default class ClientRouter extends BaseRouter {
|
|
|
145
146
|
window.addEventListener('click', async e => {
|
|
146
147
|
// @ts-ignore
|
|
147
148
|
const link = e.target.closest('a');
|
|
148
|
-
|
|
149
|
-
const saveLink = e.altKey;
|
|
150
|
-
if (!link || !link.href || openInNewTab || saveLink) return;
|
|
151
|
-
if (link.target.toLowerCase() === '_blank') return;
|
|
152
|
-
if (!link.href.startsWith('http')) return;
|
|
149
|
+
if (!shouldInterceptClick(e, link)) return;
|
|
153
150
|
|
|
154
151
|
e.preventDefault();
|
|
155
152
|
|
|
156
|
-
const req = this.targetToRequest(link.href, {
|
|
153
|
+
const req = this.targetToRequest(link.href, {
|
|
154
|
+
origin: 'click',
|
|
155
|
+
context: { ...link.dataset },
|
|
156
|
+
});
|
|
157
157
|
const currRoute = this.route.get();
|
|
158
158
|
const routeEq =
|
|
159
159
|
currRoute && currRoute.eqUrl(req) && currRoute.eqSearch(req);
|
package/src/routing/utils.ts
CHANGED
|
@@ -16,3 +16,19 @@ export function preferredSite(sites: Site[], languages: string[]): Site | null {
|
|
|
16
16
|
const lang = matchLanguages(Array.from(map.keys()), languages);
|
|
17
17
|
return lang ? map.get(lang)! : null;
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if the click should be intercepted
|
|
22
|
+
*/
|
|
23
|
+
export function shouldInterceptClick(
|
|
24
|
+
e: PointerEvent,
|
|
25
|
+
link: HTMLAnchorElement | undefined,
|
|
26
|
+
): boolean {
|
|
27
|
+
const openInNewTab = e.metaKey || e.ctrlKey || e.shiftKey;
|
|
28
|
+
const saveLink = e.altKey;
|
|
29
|
+
if (!link || !link.href || openInNewTab || saveLink) return false;
|
|
30
|
+
if (link.target.toLowerCase() === '_blank') return false;
|
|
31
|
+
if (!link.href.startsWith('http')) return false;
|
|
32
|
+
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
@@ -2,6 +2,7 @@ import { Cookies } from '../cookies/index.js';
|
|
|
2
2
|
import ServerCookies from '../cookies/ServerCookies.js';
|
|
3
3
|
import { Queries, Query, QueryOptions } from '../queries/index.js';
|
|
4
4
|
import { Request, Site } from '../routing/index.js';
|
|
5
|
+
import { urlWithPath } from '../utils.js';
|
|
5
6
|
import ServerRequest from './Request.js';
|
|
6
7
|
|
|
7
8
|
export type CrelteServerRequestOptions = {
|
|
@@ -84,11 +85,32 @@ export default class CrelteServerRequest {
|
|
|
84
85
|
*/
|
|
85
86
|
getEnv(name: 'ENDPOINT_URL'): string;
|
|
86
87
|
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
88
|
+
getEnv(name: 'FRONTEND_URL'): string;
|
|
87
89
|
getEnv(name: string): string | null;
|
|
88
90
|
getEnv(name: string): string | null {
|
|
89
91
|
return this._env.get(name) ?? null;
|
|
90
92
|
}
|
|
91
93
|
|
|
94
|
+
/**
|
|
95
|
+
* returns the frontend url with an optional path
|
|
96
|
+
*
|
|
97
|
+
* ## Note
|
|
98
|
+
* For the origin the `FRONTEND_URL` env variable is used
|
|
99
|
+
*/
|
|
100
|
+
frontendUrl(path?: string): URL {
|
|
101
|
+
return urlWithPath(this.getEnv('FRONTEND_URL'), path);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* returns the backend url with an optional path
|
|
106
|
+
*
|
|
107
|
+
* ## Note
|
|
108
|
+
* For the origin the `ENDPOINT_URL` env variable is used
|
|
109
|
+
*/
|
|
110
|
+
backendUrl(path?: string): URL {
|
|
111
|
+
return urlWithPath(this.getEnv('ENDPOINT_URL'), path);
|
|
112
|
+
}
|
|
113
|
+
|
|
92
114
|
/**
|
|
93
115
|
* Returns the primary site
|
|
94
116
|
*/
|