crelte 0.4.8 → 0.5.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Crelte.d.ts +7 -6
- package/dist/Crelte.d.ts.map +1 -1
- package/dist/Crelte.js +5 -13
- package/dist/CrelteRequest.d.ts +9 -0
- package/dist/CrelteRequest.d.ts.map +1 -1
- package/dist/CrelteRequest.js +16 -2
- package/dist/blocks/Blocks.svelte +2 -2
- package/dist/blocks/Blocks.svelte.d.ts +3 -19
- package/dist/blocks/Blocks.svelte.d.ts.map +1 -1
- package/dist/cookies/ClientCookies.d.ts +0 -1
- package/dist/cookies/ClientCookies.d.ts.map +1 -1
- package/dist/cookies/ClientCookies.js +0 -1
- package/dist/cookies/ServerCookies.d.ts +1 -2
- package/dist/cookies/ServerCookies.d.ts.map +1 -1
- package/dist/cookies/ServerCookies.js +2 -6
- package/dist/cookies/index.d.ts +0 -2
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/graphql/GraphQl.d.ts +2 -2
- package/dist/graphql/GraphQl.d.ts.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/init/InternalApp.d.ts +30 -0
- package/dist/init/InternalApp.d.ts.map +1 -0
- package/dist/init/InternalApp.js +71 -0
- package/dist/init/client.d.ts +0 -5
- package/dist/init/client.d.ts.map +1 -1
- package/dist/init/client.js +88 -75
- package/dist/init/crelte-vite-plugin.d.ts +5 -0
- package/dist/init/server.d.ts +0 -5
- package/dist/init/server.d.ts.map +1 -1
- package/dist/init/server.js +49 -20
- package/dist/init/shared.d.ts +7 -18
- package/dist/init/shared.d.ts.map +1 -1
- package/dist/init/shared.js +97 -154
- package/dist/init/svelteComponents.d.ts +3 -0
- package/dist/init/svelteComponents.d.ts.map +1 -0
- package/dist/init/svelteComponents.js +7 -0
- package/dist/loadData/Globals.d.ts +40 -33
- package/dist/loadData/Globals.d.ts.map +1 -1
- package/dist/loadData/Globals.js +99 -88
- package/dist/loadData/index.d.ts +3 -2
- package/dist/loadData/index.d.ts.map +1 -1
- package/dist/loadData/index.js +2 -0
- package/dist/plugins/Events.d.ts +11 -13
- package/dist/plugins/Events.d.ts.map +1 -1
- package/dist/plugins/Events.js +10 -3
- package/dist/routing/BaseRoute.d.ts +255 -0
- package/dist/routing/BaseRoute.d.ts.map +1 -0
- package/dist/routing/BaseRoute.js +349 -0
- package/dist/routing/BaseRouter.d.ts +210 -0
- package/dist/routing/BaseRouter.d.ts.map +1 -0
- package/dist/routing/BaseRouter.js +444 -0
- package/dist/routing/ClientRouter.d.ts +32 -0
- package/dist/routing/ClientRouter.d.ts.map +1 -0
- package/dist/routing/ClientRouter.js +259 -0
- package/dist/routing/LoadRunner.d.ts +39 -0
- package/dist/routing/LoadRunner.d.ts.map +1 -0
- package/dist/routing/{PageLoader.js → LoadRunner.js} +32 -20
- package/dist/routing/Request.d.ts +35 -3
- package/dist/routing/Request.d.ts.map +1 -1
- package/dist/routing/Request.js +64 -5
- package/dist/routing/Route.d.ts +24 -223
- package/dist/routing/Route.d.ts.map +1 -1
- package/dist/routing/Route.js +26 -315
- package/dist/routing/Router.d.ts +49 -73
- package/dist/routing/Router.d.ts.map +1 -1
- package/dist/routing/Router.js +85 -251
- package/dist/routing/ServerRouter.d.ts +23 -0
- package/dist/routing/ServerRouter.d.ts.map +1 -0
- package/dist/routing/ServerRouter.js +57 -0
- package/dist/routing/utils.d.ts +5 -0
- package/dist/routing/utils.d.ts.map +1 -1
- package/dist/routing/utils.js +39 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -0
- package/package.json +7 -6
- package/src/Crelte.ts +12 -18
- package/src/CrelteRequest.ts +21 -2
- package/src/cookies/ClientCookies.ts +0 -2
- package/src/cookies/ServerCookies.ts +2 -7
- package/src/cookies/index.ts +0 -3
- package/src/graphql/GraphQl.ts +2 -1
- package/src/index.ts +17 -9
- package/src/init/InternalApp.ts +134 -0
- package/src/init/client.ts +104 -93
- package/src/init/crelte-vite-plugin.d.ts +5 -0
- package/src/init/server.ts +67 -35
- package/src/init/shared.ts +107 -227
- package/src/init/svelteComponents.ts +12 -0
- package/src/loadData/Globals.ts +121 -102
- package/src/loadData/index.ts +3 -2
- package/src/plugins/Events.ts +40 -42
- package/src/routing/BaseRoute.ts +422 -0
- package/src/routing/BaseRouter.ts +528 -0
- package/src/routing/ClientRouter.ts +329 -0
- package/src/routing/{PageLoader.ts → LoadRunner.ts} +43 -30
- package/src/routing/Request.ts +97 -12
- package/src/routing/Route.ts +56 -376
- package/src/routing/Router.ts +100 -359
- package/src/routing/ServerRouter.ts +78 -0
- package/src/routing/utils.ts +53 -0
- package/src/utils.ts +4 -0
- package/dist/routing/InnerRouter.d.ts +0 -113
- package/dist/routing/InnerRouter.d.ts.map +0 -1
- package/dist/routing/InnerRouter.js +0 -417
- package/dist/routing/PageLoader.d.ts +0 -36
- package/dist/routing/PageLoader.d.ts.map +0 -1
- package/src/routing/InnerRouter.ts +0 -498
package/dist/init/client.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
-
import { pluginsBeforeRender,
|
|
3
|
+
import { loadFn, pluginsBeforeRender, pluginsBeforeRequest, setupPlugins, } from './shared.js';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
|
+
import { svelteMount } from './svelteComponents.js';
|
|
6
|
+
import ClientCookies from '../cookies/ClientCookies.js';
|
|
7
|
+
import ClientRouter from '../routing/ClientRouter.js';
|
|
8
|
+
import InternalApp from './InternalApp.js';
|
|
9
|
+
import { Writable } from 'crelte-std/stores';
|
|
5
10
|
const mainDataDefault = {
|
|
6
11
|
preloadOnMouseOver: false,
|
|
7
12
|
viewTransition: false,
|
|
@@ -32,108 +37,116 @@ const mainDataDefault = {
|
|
|
32
37
|
*/
|
|
33
38
|
export async function main(data) {
|
|
34
39
|
data = { ...mainDataDefault, ...data };
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// determine route (if site is empty on server redirect to correct language)
|
|
38
|
-
// loadData, entry (make globally available), pluginsData
|
|
39
|
-
// loadTemplate
|
|
40
|
-
// render
|
|
41
|
-
// on route change
|
|
42
|
-
// determine route
|
|
43
|
-
// entry, pluginsData
|
|
44
|
-
// loadTemplate
|
|
45
|
-
// update
|
|
46
|
-
// construct Crelte
|
|
40
|
+
// todo if entryQuery or globalQuery is present show a hint
|
|
41
|
+
// they should be added to App.svelte and removed from here
|
|
47
42
|
const builder = new CrelteBuilder(data.app.config ?? {});
|
|
48
|
-
const
|
|
49
|
-
builder.setupGraphQl(endpoint);
|
|
50
|
-
// on the client the cookies are always coming from document.cookie
|
|
51
|
-
builder.setupCookies('');
|
|
52
|
-
const csites = builder.ssrCache.get('crelteSites');
|
|
53
|
-
builder.setupRouter(csites);
|
|
54
|
-
const crelte = builder.build();
|
|
55
|
-
const serverError = crelte.ssrCache.get('ERROR');
|
|
43
|
+
const serverError = builder.ssrCache.get('ERROR');
|
|
56
44
|
if (serverError) {
|
|
57
|
-
// should this
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
// todo should this init the client, but maybe we just
|
|
46
|
+
// want it as minimal as possible
|
|
47
|
+
svelteMount(data.errorPage.default, {
|
|
60
48
|
target: document.body,
|
|
61
|
-
props:
|
|
62
|
-
hydrate: true,
|
|
63
|
-
context: crelte._getContext(),
|
|
49
|
+
props: serverError,
|
|
64
50
|
});
|
|
65
51
|
return;
|
|
66
52
|
}
|
|
53
|
+
const endpoint = builder.ssrCache.get('ENDPOINT_URL');
|
|
54
|
+
builder.setupGraphQl(endpoint);
|
|
55
|
+
// on the client the cookies are always coming from document.cookie
|
|
56
|
+
builder.setupCookies(new ClientCookies());
|
|
57
|
+
const csites = builder.ssrCache.get('crelteSites');
|
|
58
|
+
const router = new ClientRouter(csites, {
|
|
59
|
+
debugTiming: builder.config.debugTiming ?? false,
|
|
60
|
+
preloadOnMouseOver: builder.config.preloadOnMouseOver ?? false,
|
|
61
|
+
});
|
|
62
|
+
builder.setupRouter(router);
|
|
63
|
+
const crelte = builder.build();
|
|
64
|
+
const app = new InternalApp(data.app);
|
|
67
65
|
// setup plugins
|
|
68
|
-
setupPlugins(crelte,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// setup load Data
|
|
72
|
-
crelte.router._internal.onLoad = (req, opts) => {
|
|
66
|
+
setupPlugins(crelte, app.plugins);
|
|
67
|
+
app.init(crelte);
|
|
68
|
+
router.onNewCrelteRequest = req => {
|
|
73
69
|
const cr = new CrelteRequest(crelte, req);
|
|
74
|
-
|
|
70
|
+
cr._setRouter(cr.router._toRequest(req));
|
|
71
|
+
cr._setGlobals(cr.globals._toRequest());
|
|
72
|
+
return cr;
|
|
75
73
|
};
|
|
74
|
+
router.onBeforeRequest = pluginsBeforeRequest;
|
|
75
|
+
router.loadRunner.loadFn = (cr, opts) => loadFn(cr, app, opts);
|
|
76
76
|
// render Space
|
|
77
77
|
let appInstance;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
hydrate: true,
|
|
84
|
-
context: crelte._getContext(),
|
|
85
|
-
intro: builder.config.playIntro,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
appInstance.$set(props);
|
|
78
|
+
let routeProp;
|
|
79
|
+
const renderApp = (route) => {
|
|
80
|
+
if (appInstance) {
|
|
81
|
+
routeProp.set(route);
|
|
82
|
+
return;
|
|
90
83
|
}
|
|
84
|
+
routeProp = new Writable(route);
|
|
85
|
+
appInstance = svelteMount(data.app.default, {
|
|
86
|
+
target: document.body,
|
|
87
|
+
props: { route: routeProp },
|
|
88
|
+
context: crelte._getContext(),
|
|
89
|
+
intro: builder.config.playIntro,
|
|
90
|
+
});
|
|
91
91
|
};
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
92
|
+
router.onError = e => {
|
|
93
|
+
console.error('routing failed:', e, 'reloading trying to fix it');
|
|
94
|
+
// since onError is called only on subsequent requests we should never
|
|
95
|
+
// have an infinite loop here
|
|
96
|
+
window.location.reload();
|
|
97
|
+
};
|
|
98
|
+
// let firstLoad = true;
|
|
99
|
+
router.onRender = async (cr, readyForRoute, domUpdated) => {
|
|
100
|
+
if (appInstance && cr.req.disableLoadData) {
|
|
101
|
+
// if the app is already rendered and entry did not change
|
|
102
|
+
// we just wan't to run domUpdated because we don't wan't to update anything
|
|
103
|
+
const route = readyForRoute();
|
|
104
|
+
cr.router._requestCompleted();
|
|
105
|
+
// globals should not be run because they will be empty
|
|
106
|
+
// since nobody called loadGlobalData (todo maybe globals should also,
|
|
107
|
+
// know if it accepts updates)
|
|
108
|
+
// todo should we wait a tick here?
|
|
109
|
+
await tick();
|
|
110
|
+
domUpdated(cr, route);
|
|
111
|
+
return route;
|
|
108
112
|
}
|
|
109
|
-
const cr = new CrelteRequest(crelte, req);
|
|
110
113
|
const startTime = builder.config.debugTiming ? Date.now() : null;
|
|
111
114
|
let render = async () => {
|
|
115
|
+
const route = readyForRoute();
|
|
116
|
+
cr.router._requestCompleted();
|
|
117
|
+
cr.globals._syncToStores();
|
|
112
118
|
// we should trigger the route update here
|
|
113
|
-
pluginsBeforeRender(cr);
|
|
114
|
-
|
|
115
|
-
updateAppProps(readyForProps());
|
|
119
|
+
pluginsBeforeRender(cr, route);
|
|
120
|
+
renderApp(route);
|
|
116
121
|
await tick();
|
|
117
122
|
if (startTime) {
|
|
118
123
|
console.log('dom update took ' + (Date.now() - startTime) + 'ms');
|
|
119
124
|
}
|
|
120
|
-
|
|
125
|
+
domUpdated(cr, route);
|
|
126
|
+
return route;
|
|
121
127
|
};
|
|
122
128
|
// render with view Transition if enabled and not in hydration
|
|
123
129
|
if (builder.config.viewTransition &&
|
|
124
130
|
appInstance &&
|
|
125
131
|
document.startViewTransition) {
|
|
126
|
-
|
|
132
|
+
const prevRender = render;
|
|
133
|
+
render = async () => new Promise(resolve => {
|
|
134
|
+
document.startViewTransition(async () => {
|
|
135
|
+
resolve(await prevRender());
|
|
136
|
+
});
|
|
137
|
+
});
|
|
127
138
|
}
|
|
128
|
-
await render();
|
|
139
|
+
return await render();
|
|
129
140
|
};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
141
|
+
try {
|
|
142
|
+
await router.init();
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
// the first load we can't handle with a redirect since this might
|
|
146
|
+
// cause an infinite loop
|
|
147
|
+
// but since almost everything should be ssrCached nothing should fail
|
|
148
|
+
handleLoadError(e);
|
|
149
|
+
}
|
|
137
150
|
}
|
|
138
151
|
function handleLoadError(e) {
|
|
139
152
|
console.log('loading or rendering the page failed with the error:');
|
package/dist/init/server.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SiteFromGraphQl } from '../routing/Site.js';
|
|
2
|
-
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
3
2
|
export type ServerData = {
|
|
4
3
|
url: string;
|
|
5
4
|
htmlTemplate: string;
|
|
@@ -17,10 +16,6 @@ export type ServerData = {
|
|
|
17
16
|
export type MainData = {
|
|
18
17
|
/** The App.svelte module */
|
|
19
18
|
app: any;
|
|
20
|
-
/** The entry query from queries/entry.graphql */
|
|
21
|
-
entryQuery: GraphQlQuery;
|
|
22
|
-
/** The global query from queries/global.graphql */
|
|
23
|
-
globalQuery?: GraphQlQuery;
|
|
24
19
|
/** Server data provided by crelte-node */
|
|
25
20
|
serverData: ServerData;
|
|
26
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgBrD,MAAM,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,EAAE,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IAET,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,CA6GD;AAED,MAAM,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAE3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IAEf,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,aAAa,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC5C"}
|
package/dist/init/server.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
|
-
import { pluginsBeforeRender,
|
|
2
|
+
import { loadFn, pluginsBeforeRender, pluginsBeforeRequest, setupPlugins, } from './shared.js';
|
|
3
3
|
import SsrComponents from '../ssr/SsrComponents.js';
|
|
4
4
|
import SsrCache from '../ssr/SsrCache.js';
|
|
5
|
+
import ServerCookies from '../cookies/ServerCookies.js';
|
|
5
6
|
import CrelteRequest from '../CrelteRequest.js';
|
|
7
|
+
import { svelteRender } from './svelteComponents.js';
|
|
8
|
+
import { Writable } from 'crelte-std/stores';
|
|
9
|
+
import ServerRouter from '../routing/ServerRouter.js';
|
|
10
|
+
import InternalApp from './InternalApp.js';
|
|
6
11
|
/**
|
|
7
12
|
* The main function to start the server side rendering
|
|
8
13
|
*
|
|
@@ -24,6 +29,8 @@ import CrelteRequest from '../CrelteRequest.js';
|
|
|
24
29
|
* ```
|
|
25
30
|
*/
|
|
26
31
|
export async function main(data) {
|
|
32
|
+
// todo if entryQuery or globalQuery is present show a hint
|
|
33
|
+
// they should be added to App.svelte and removed from here
|
|
27
34
|
const builder = new CrelteBuilder(data.app.config ?? {});
|
|
28
35
|
// setup viteEnv
|
|
29
36
|
data.serverData.viteEnv.forEach((v, k) => {
|
|
@@ -34,23 +41,36 @@ export async function main(data) {
|
|
|
34
41
|
builder.ssrCache.set('CRAFT_WEB_URL', data.serverData.craftWeb);
|
|
35
42
|
builder.setupGraphQl(endpoint);
|
|
36
43
|
const cookies = data.serverData.cookies ?? '';
|
|
37
|
-
builder.setupCookies(cookies);
|
|
44
|
+
builder.setupCookies(new ServerCookies(cookies));
|
|
38
45
|
builder.ssrCache.set('crelteSites', data.serverData.sites);
|
|
39
|
-
|
|
46
|
+
const router = new ServerRouter(data.serverData.sites, {
|
|
47
|
+
debugTiming: builder.config.debugTiming ?? false,
|
|
48
|
+
});
|
|
49
|
+
builder.setupRouter(router);
|
|
40
50
|
const crelte = builder.build();
|
|
51
|
+
const app = new InternalApp(data.app);
|
|
41
52
|
// setup plugins
|
|
42
|
-
setupPlugins(crelte,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// setup load Data
|
|
46
|
-
crelte.router._internal.onLoad = req => {
|
|
53
|
+
setupPlugins(crelte, app.plugins);
|
|
54
|
+
app.init(crelte);
|
|
55
|
+
router.onNewCrelteRequest = req => {
|
|
47
56
|
const cr = new CrelteRequest(crelte, req);
|
|
48
|
-
|
|
57
|
+
cr._setRouter(cr.router._toRequest(req));
|
|
58
|
+
cr._setGlobals(cr.globals._toRequest());
|
|
59
|
+
return cr;
|
|
60
|
+
};
|
|
61
|
+
router.onBeforeRequest = pluginsBeforeRequest;
|
|
62
|
+
router.loadRunner.loadFn = (cr, opts) => loadFn(cr, app, opts);
|
|
63
|
+
router.onRender = (cr, readyForRoute, _domUpdated) => {
|
|
64
|
+
const route = readyForRoute();
|
|
65
|
+
cr.router._requestCompleted();
|
|
66
|
+
cr.globals._syncToStores();
|
|
67
|
+
pluginsBeforeRender(cr, route);
|
|
68
|
+
return route;
|
|
49
69
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
70
|
+
// throws if there was an error
|
|
71
|
+
const [req, route] = await router.init(data.serverData.url, data.serverData.acceptLang);
|
|
72
|
+
// if redirect
|
|
73
|
+
if (!route) {
|
|
54
74
|
return {
|
|
55
75
|
status: req.statusCode ?? 302,
|
|
56
76
|
location: req.url.toString(),
|
|
@@ -60,19 +80,23 @@ export async function main(data) {
|
|
|
60
80
|
const context = crelte._getContext();
|
|
61
81
|
const ssrComponents = new SsrComponents();
|
|
62
82
|
ssrComponents.addToContext(context);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
83
|
+
// app should not use getRoute but use the route store
|
|
84
|
+
// received from the props, since it will only update when
|
|
85
|
+
// the entryChanges
|
|
86
|
+
const routeProp = new Writable(route);
|
|
66
87
|
// eslint-disable-next-line prefer-const
|
|
67
|
-
let { html, head } = data.app.default
|
|
88
|
+
let { html, head } = svelteRender(data.app.default, {
|
|
89
|
+
props: { route: routeProp },
|
|
90
|
+
context,
|
|
91
|
+
});
|
|
68
92
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
69
93
|
head += crelte.ssrCache._exportToHead();
|
|
70
94
|
let htmlTemplate = data.serverData.htmlTemplate;
|
|
71
|
-
htmlTemplate = htmlTemplate.replace('<!--page-lang-->',
|
|
95
|
+
htmlTemplate = htmlTemplate.replace('<!--page-lang-->', route.site.language);
|
|
72
96
|
const finalHtml = htmlTemplate
|
|
73
97
|
.replace('</head>', head + '\n\t</head>')
|
|
74
98
|
.replace('<!--ssr-body-->', html);
|
|
75
|
-
const entry =
|
|
99
|
+
const entry = route.entry;
|
|
76
100
|
return {
|
|
77
101
|
status: req.statusCode ??
|
|
78
102
|
(entry.sectionHandle === 'error'
|
|
@@ -105,8 +129,13 @@ export async function mainError(data) {
|
|
|
105
129
|
const ssrComponents = new SsrComponents();
|
|
106
130
|
ssrComponents.addToContext(context);
|
|
107
131
|
ssrCache.set('ERROR', data.error);
|
|
132
|
+
// todo on the client crelte is in the context
|
|
133
|
+
// but it should match this impl
|
|
108
134
|
// eslint-disable-next-line prefer-const
|
|
109
|
-
let { html, head } = data.errorPage.default
|
|
135
|
+
let { html, head } = svelteRender(data.errorPage.default, {
|
|
136
|
+
props: data.error,
|
|
137
|
+
context,
|
|
138
|
+
});
|
|
110
139
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
111
140
|
head += ssrCache._exportToHead();
|
|
112
141
|
let htmlTemplate = data.serverData.htmlTemplate;
|
package/dist/init/shared.d.ts
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
import Crelte from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
-
import { EntryRoutes } from '../entry/EntryRouter.js';
|
|
4
3
|
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
5
4
|
import { Entry } from '../index.js';
|
|
6
|
-
import { LoadData } from '../loadData/index.js';
|
|
7
5
|
import { PluginCreator } from '../plugins/Plugins.js';
|
|
8
|
-
import { LoadOptions } from '../routing/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
loadEntryData?: LoadData<Entry>;
|
|
12
|
-
templates?: Record<string, LazyTemplateModule>;
|
|
13
|
-
entryRoutes?: EntryRoutes;
|
|
14
|
-
init?: (crelte: Crelte) => void;
|
|
15
|
-
}
|
|
16
|
-
interface TemplateModule {
|
|
17
|
-
default: any;
|
|
18
|
-
loadData?: LoadData<Entry>;
|
|
19
|
-
}
|
|
20
|
-
type LazyTemplateModule = (() => Promise<TemplateModule>) | TemplateModule;
|
|
6
|
+
import { LoadOptions } from '../routing/LoadRunner.js';
|
|
7
|
+
import InternalApp from './InternalApp.js';
|
|
8
|
+
import Route from '../routing/Route.js';
|
|
21
9
|
export declare function setupPlugins(crelte: Crelte, plugins: PluginCreator[]): void;
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
export
|
|
10
|
+
export declare function pluginsBeforeRequest(cr: CrelteRequest): Promise<void> | void;
|
|
11
|
+
export declare function pluginsBeforeRender(cr: CrelteRequest, route: Route): void;
|
|
12
|
+
export declare function loadFn(cr: CrelteRequest, app: InternalApp, loadOpts?: LoadOptions): Promise<void>;
|
|
13
|
+
export declare function queryEntry(cr: CrelteRequest, entryQuery: GraphQlQuery): Promise<Entry>;
|
|
25
14
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,WAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAExC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAEzE;AAOD,wBAAsB,MAAM,CAC3B,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,WAAW,EAChB,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAgGf;AAED,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,CAAC,CAiBhB"}
|