crelte 0.3.0 → 0.3.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 +12 -0
- package/dist/Crelte.d.ts.map +1 -1
- package/dist/Crelte.js +12 -0
- package/dist/CrelteRequest.d.ts +0 -4
- package/dist/CrelteRequest.d.ts.map +1 -1
- package/dist/CrelteRequest.js +0 -4
- package/dist/entry/EntryRouter.d.ts +30 -0
- package/dist/entry/EntryRouter.d.ts.map +1 -0
- package/dist/entry/EntryRouter.js +45 -0
- package/dist/entry/index.d.ts +32 -0
- package/dist/entry/index.d.ts.map +1 -0
- package/dist/entry/index.js +31 -0
- package/dist/index.d.ts +2 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -6
- package/dist/init/client.d.ts +1 -1
- package/dist/init/client.d.ts.map +1 -1
- package/dist/init/client.js +4 -3
- package/dist/init/server.d.ts.map +1 -1
- package/dist/init/server.js +3 -2
- package/dist/init/shared.d.ts +3 -1
- package/dist/init/shared.d.ts.map +1 -1
- package/dist/init/shared.js +47 -26
- package/dist/routing/InnerRouter.d.ts +1 -10
- package/dist/routing/InnerRouter.d.ts.map +1 -1
- package/dist/routing/InnerRouter.js +20 -21
- package/dist/routing/Request.d.ts +2 -0
- package/dist/routing/Request.d.ts.map +1 -1
- package/dist/routing/Request.js +9 -0
- package/dist/routing/Route.d.ts +67 -1
- package/dist/routing/Route.d.ts.map +1 -1
- package/dist/routing/Route.js +98 -2
- package/dist/routing/Router.d.ts +49 -12
- package/dist/routing/Router.d.ts.map +1 -1
- package/dist/routing/Router.js +82 -28
- package/dist/routing/index.d.ts +2 -2
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +8 -0
- package/package.json +9 -4
- package/src/Crelte.ts +15 -0
- package/src/CrelteRequest.ts +0 -4
- package/src/entry/EntryRouter.ts +71 -0
- package/src/entry/index.ts +48 -0
- package/src/index.ts +2 -11
- package/src/init/client.ts +10 -3
- package/src/init/server.ts +9 -2
- package/src/init/shared.ts +78 -28
- package/src/routing/InnerRouter.ts +29 -30
- package/src/routing/Request.ts +11 -0
- package/src/routing/Route.ts +107 -2
- package/src/routing/Router.ts +110 -31
- package/src/routing/index.ts +2 -1
- package/src/utils.ts +10 -0
package/dist/Crelte.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Cookies } from './cookies/index.js';
|
|
2
2
|
import GraphQl, { GraphQlQuery } from './graphql/GraphQl.js';
|
|
3
|
+
import { CrelteRequest } from './index.js';
|
|
3
4
|
import Globals, { Global } from './loadData/Globals.js';
|
|
4
5
|
import Events from './plugins/Events.js';
|
|
5
6
|
import Plugins, { Plugin } from './plugins/Plugins.js';
|
|
7
|
+
import type Route from './routing/Route.js';
|
|
8
|
+
import type Request from './routing/Request.js';
|
|
6
9
|
import Router from './routing/Router.js';
|
|
7
10
|
import { SiteFromGraphQl } from './routing/Site.js';
|
|
8
11
|
import SsrCache from './ssr/SsrCache.js';
|
|
@@ -144,6 +147,15 @@ export default class Crelte {
|
|
|
144
147
|
* `CrelteRequest.getGlobalAsync`
|
|
145
148
|
*/
|
|
146
149
|
getGlobalStore<T = any>(name: string): Global<T> | null;
|
|
150
|
+
/**
|
|
151
|
+
* returns a new CrelteRequest instance either with the current
|
|
152
|
+
* route or a provided one
|
|
153
|
+
*
|
|
154
|
+
* ## Note
|
|
155
|
+
* This is useful if you want to create a stateful crelte
|
|
156
|
+
* to use in loadData context
|
|
157
|
+
*/
|
|
158
|
+
toRequest(req?: Route | Request): CrelteRequest;
|
|
147
159
|
/**
|
|
148
160
|
* Run a GraphQl Query
|
|
149
161
|
*
|
package/dist/Crelte.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crelte.d.ts","sourceRoot":"","sources":["../../../src/Crelte.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Crelte.d.ts","sourceRoot":"","sources":["../../../src/Crelte.ts"],"names":[],"mappings":"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"}
|
package/dist/Crelte.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ClientCookies from './cookies/ClientCookies.js';
|
|
2
2
|
import ServerCookies from './cookies/ServerCookies.js';
|
|
3
3
|
import GraphQl from './graphql/GraphQl.js';
|
|
4
|
+
import { CrelteRequest } from './index.js';
|
|
4
5
|
import Globals from './loadData/Globals.js';
|
|
5
6
|
import Events from './plugins/Events.js';
|
|
6
7
|
import Plugins from './plugins/Plugins.js';
|
|
@@ -143,6 +144,17 @@ export default class Crelte {
|
|
|
143
144
|
getGlobalStore(name) {
|
|
144
145
|
return this.globals.getStore(name) ?? null;
|
|
145
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* returns a new CrelteRequest instance either with the current
|
|
149
|
+
* route or a provided one
|
|
150
|
+
*
|
|
151
|
+
* ## Note
|
|
152
|
+
* This is useful if you want to create a stateful crelte
|
|
153
|
+
* to use in loadData context
|
|
154
|
+
*/
|
|
155
|
+
toRequest(req) {
|
|
156
|
+
return CrelteRequest.fromCrelte(this, req);
|
|
157
|
+
}
|
|
146
158
|
/**
|
|
147
159
|
* Run a GraphQl Query
|
|
148
160
|
*
|
package/dist/CrelteRequest.d.ts
CHANGED
|
@@ -14,10 +14,6 @@ export default class CrelteRequest extends Crelte {
|
|
|
14
14
|
*
|
|
15
15
|
* If you don't provide a route or request the current route
|
|
16
16
|
* will be used.
|
|
17
|
-
*
|
|
18
|
-
* ## Note
|
|
19
|
-
* If you provide a route it must contain a site or you must
|
|
20
|
-
* provide one,
|
|
21
17
|
*/
|
|
22
18
|
static fromCrelte(inner: Crelte | CrelteRequest, req?: Route | Request): CrelteRequest;
|
|
23
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrelteRequest.d.ts","sourceRoot":"","sources":["../../../src/CrelteRequest.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,KAAK,MAAM,oBAAoB,CAAC;AAEvC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAChD;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;gBAED,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAMvC
|
|
1
|
+
{"version":3,"file":"CrelteRequest.d.ts","sourceRoot":"","sources":["../../../src/CrelteRequest.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,KAAK,MAAM,oBAAoB,CAAC;AAEvC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAChD;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;gBAED,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAMvC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAChB,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,GACnB,aAAa;IAehB;;;OAGG;IACH,IAAI,KAAK,IAAI,OAAO,CAGnB;IAED;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI1C;;;;;;OAMG;IACG,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAI9D;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;CAOnB"}
|
package/dist/CrelteRequest.js
CHANGED
|
@@ -14,10 +14,6 @@ export default class CrelteRequest extends Crelte {
|
|
|
14
14
|
*
|
|
15
15
|
* If you don't provide a route or request the current route
|
|
16
16
|
* will be used.
|
|
17
|
-
*
|
|
18
|
-
* ## Note
|
|
19
|
-
* If you provide a route it must contain a site or you must
|
|
20
|
-
* provide one,
|
|
21
17
|
*/
|
|
22
18
|
static fromCrelte(inner, req) {
|
|
23
19
|
if (inner instanceof CrelteRequest && !req)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Pattern } from 'trouter';
|
|
2
|
+
import { Crelte, CrelteRequest, Entry, QueryOptions } from '../index.js';
|
|
3
|
+
import { CrelteEntryRequest } from './index.js';
|
|
4
|
+
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
5
|
+
export type EntryRouteHandler = (cr: CrelteEntryRequest) => Promise<Entry | null | undefined> | Entry | null | undefined | void;
|
|
6
|
+
export type EntryRoutes = (router: EntryRouter) => Promise<void> | void;
|
|
7
|
+
export default class EntryRouter {
|
|
8
|
+
private _crelte;
|
|
9
|
+
private inner;
|
|
10
|
+
constructor(crelte: Crelte);
|
|
11
|
+
add(pattern: Pattern, ...handlers: EntryRouteHandler[]): this;
|
|
12
|
+
/**
|
|
13
|
+
* returns an env variable from the craft/.env file.
|
|
14
|
+
*/
|
|
15
|
+
getEnv(name: 'ENDPOINT_URL'): string;
|
|
16
|
+
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
17
|
+
getEnv(name: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Run a GraphQl Query
|
|
20
|
+
*
|
|
21
|
+
* @param query the default export from a graphql file or the gql`query {}`
|
|
22
|
+
* function
|
|
23
|
+
* @param variables variables that should be passed to the
|
|
24
|
+
* graphql query
|
|
25
|
+
*/
|
|
26
|
+
query(query: GraphQlQuery, variables?: Record<string, unknown>, opts?: QueryOptions): Promise<unknown>;
|
|
27
|
+
/** @hidden */
|
|
28
|
+
_handle(cr: CrelteRequest): Promise<Entry | null>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=EntryRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntryRouter.d.ts","sourceRoot":"","sources":["../../../../src/entry/EntryRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAgB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,CAC/B,EAAE,EAAE,kBAAkB,KAClB,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA6B;gBAE9B,MAAM,EAAE,MAAM;IAK1B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAK7D;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IAKnB,cAAc;IACR,OAAO,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAiBvD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Trouter } from 'trouter';
|
|
2
|
+
import { CrelteEntryRequest, EntryRequest } from './index.js';
|
|
3
|
+
export default class EntryRouter {
|
|
4
|
+
_crelte;
|
|
5
|
+
inner;
|
|
6
|
+
constructor(crelte) {
|
|
7
|
+
this._crelte = crelte;
|
|
8
|
+
this.inner = new Trouter();
|
|
9
|
+
}
|
|
10
|
+
add(pattern, ...handlers) {
|
|
11
|
+
this.inner.add('GET', pattern, ...handlers);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
getEnv(name) {
|
|
15
|
+
return this._crelte.getEnv(name);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run a GraphQl Query
|
|
19
|
+
*
|
|
20
|
+
* @param query the default export from a graphql file or the gql`query {}`
|
|
21
|
+
* function
|
|
22
|
+
* @param variables variables that should be passed to the
|
|
23
|
+
* graphql query
|
|
24
|
+
*/
|
|
25
|
+
async query(query, variables = {}, opts = {}) {
|
|
26
|
+
// this function is added as convenience
|
|
27
|
+
return this._crelte.graphQl.query(query, variables, opts);
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
async _handle(cr) {
|
|
31
|
+
const { params, handlers } = this.inner.find('GET', cr.req.uri);
|
|
32
|
+
if (!handlers.length)
|
|
33
|
+
return null;
|
|
34
|
+
const er = new EntryRequest(cr.req.url, cr.req.site, {
|
|
35
|
+
params: new Map(Object.entries(params)),
|
|
36
|
+
});
|
|
37
|
+
const cer = new CrelteEntryRequest(cr, er);
|
|
38
|
+
for (const handler of handlers) {
|
|
39
|
+
const res = await handler(cer);
|
|
40
|
+
if (res)
|
|
41
|
+
return res;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Crelte, CrelteRequest } from '../index.js';
|
|
2
|
+
import { Request, RequestOptions, Site } from '../routing/index.js';
|
|
3
|
+
import EntryRouter, { EntryRouteHandler, EntryRoutes } from './EntryRouter.js';
|
|
4
|
+
export { EntryRouter, type EntryRouteHandler, type EntryRoutes };
|
|
5
|
+
export type Entry = {
|
|
6
|
+
sectionHandle: string;
|
|
7
|
+
typeHandle: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
};
|
|
10
|
+
export type EntryRequestOptions = RequestOptions & {
|
|
11
|
+
params?: Map<string, string>;
|
|
12
|
+
};
|
|
13
|
+
export declare class EntryRequest extends Request {
|
|
14
|
+
private params;
|
|
15
|
+
constructor(url: string | URL, site: Site, opts?: EntryRequestOptions);
|
|
16
|
+
/**
|
|
17
|
+
* returns the url params from the request
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```js
|
|
21
|
+
* router.get('/blog/:slug', async (cs, req) => {
|
|
22
|
+
* return Response.json({ slug: cs.getParam('slug') });
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
getParam(name: string): string | null;
|
|
27
|
+
}
|
|
28
|
+
export declare class CrelteEntryRequest extends CrelteRequest {
|
|
29
|
+
req: EntryRequest;
|
|
30
|
+
constructor(inner: Crelte, req: EntryRequest);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,WAAW,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,CAAC;AAEjE,MAAM,MAAM,KAAK,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAO,CAAC,MAAM,CAAsB;gBAExB,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,mBAAwB;IAMzE;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGrC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACpD,GAAG,EAAE,YAAY,CAAC;gBAEN,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY;CAI5C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CrelteRequest } from '../index.js';
|
|
2
|
+
import { Request } from '../routing/index.js';
|
|
3
|
+
import EntryRouter from './EntryRouter.js';
|
|
4
|
+
export { EntryRouter };
|
|
5
|
+
export class EntryRequest extends Request {
|
|
6
|
+
params;
|
|
7
|
+
constructor(url, site, opts = {}) {
|
|
8
|
+
super(url, site, opts);
|
|
9
|
+
this.params = opts.params ?? new Map();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* returns the url params from the request
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```js
|
|
16
|
+
* router.get('/blog/:slug', async (cs, req) => {
|
|
17
|
+
* return Response.json({ slug: cs.getParam('slug') });
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
getParam(name) {
|
|
22
|
+
return this.params.get(name) ?? null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class CrelteEntryRequest extends CrelteRequest {
|
|
26
|
+
req;
|
|
27
|
+
constructor(inner, req) {
|
|
28
|
+
super(inner, req);
|
|
29
|
+
this.req = req;
|
|
30
|
+
}
|
|
31
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type Route from './routing/Route.js';
|
|
2
|
-
import type Request from './routing/Request.js';
|
|
3
2
|
import type Router from './routing/Router.js';
|
|
4
3
|
import type SsrCache from './ssr/SsrCache.js';
|
|
5
4
|
import type Site from './routing/Site.js';
|
|
@@ -10,7 +9,8 @@ import type { Global } from './loadData/Globals.js';
|
|
|
10
9
|
import type { Cookies } from './cookies/index.js';
|
|
11
10
|
import type { Readable } from 'crelte-std/stores';
|
|
12
11
|
import { LoadData, LoadDataArray, LoadDataFn, LoadDataObj } from './loadData/index.js';
|
|
13
|
-
|
|
12
|
+
import { Entry } from './entry/index.js';
|
|
13
|
+
export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, type Entry, };
|
|
14
14
|
/**
|
|
15
15
|
* Get Crelte from the current context
|
|
16
16
|
*
|
|
@@ -92,10 +92,6 @@ export declare function getGlobal<T = any>(name: string): Global<T> | null;
|
|
|
92
92
|
* This only works during component initialisation.
|
|
93
93
|
*/
|
|
94
94
|
export declare function getCookies(): Cookies;
|
|
95
|
-
/**
|
|
96
|
-
* A function to make sure you have a CrelteRequest
|
|
97
|
-
*/
|
|
98
|
-
export declare function toCrelteRequest(crelte: Crelte | CrelteRequest, req?: Route | Request): CrelteRequest;
|
|
99
95
|
/**
|
|
100
96
|
* Listen for route changes
|
|
101
97
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,MAAM,EAAE,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,WAAW,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EACN,MAAM,EACN,aAAa,EACb,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,KAAK,GACV,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAK1C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAKxC;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;AACrD,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;AACtD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAKpD;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,QAOjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,QAOxD"}
|
package/dist/index.js
CHANGED
|
@@ -101,12 +101,6 @@ export function getGlobal(name) {
|
|
|
101
101
|
export function getCookies() {
|
|
102
102
|
return getCrelte().cookies;
|
|
103
103
|
}
|
|
104
|
-
/**
|
|
105
|
-
* A function to make sure you have a CrelteRequest
|
|
106
|
-
*/
|
|
107
|
-
export function toCrelteRequest(crelte, req) {
|
|
108
|
-
return CrelteRequest.fromCrelte(crelte, req);
|
|
109
|
-
}
|
|
110
104
|
/**
|
|
111
105
|
* Listen for route changes
|
|
112
106
|
*
|
package/dist/init/client.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/init/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/init/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,iBA6IxC"}
|
package/dist/init/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
-
import {
|
|
3
|
+
import { pluginsBeforeRender, prepareLoadFn, setupPlugins } from './shared.js';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
5
|
const mainDataDefault = {
|
|
6
6
|
preloadOnMouseOver: false,
|
|
@@ -30,7 +30,7 @@ const mainDataDefault = {
|
|
|
30
30
|
* });
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
export function main(data) {
|
|
33
|
+
export async function main(data) {
|
|
34
34
|
data = { ...mainDataDefault, ...data };
|
|
35
35
|
// rendering steps
|
|
36
36
|
// loadSites (first time)
|
|
@@ -66,10 +66,11 @@ export function main(data) {
|
|
|
66
66
|
}
|
|
67
67
|
// setup plugins
|
|
68
68
|
setupPlugins(crelte, data.app.plugins ?? []);
|
|
69
|
+
const loadFn = await prepareLoadFn(crelte, data.app, data.entryQuery, data.globalQuery);
|
|
69
70
|
// setup load Data
|
|
70
71
|
crelte.router._internal.onLoad = (req, opts) => {
|
|
71
72
|
const cr = new CrelteRequest(crelte, req);
|
|
72
|
-
return loadFn(cr,
|
|
73
|
+
return loadFn(cr, opts);
|
|
73
74
|
};
|
|
74
75
|
// render Space
|
|
75
76
|
let appInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/init/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAO,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,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,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B,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,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/init/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAO,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,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,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B,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,CAiFD;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,CA0B5C"}
|
package/dist/init/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
|
-
import {
|
|
2
|
+
import { pluginsBeforeRender, prepareLoadFn, setupPlugins } from './shared.js';
|
|
3
3
|
import SsrComponents from '../ssr/SsrComponents.js';
|
|
4
4
|
import SsrCache from '../ssr/SsrCache.js';
|
|
5
5
|
import CrelteRequest from '../CrelteRequest.js';
|
|
@@ -42,10 +42,11 @@ export async function main(data) {
|
|
|
42
42
|
const crelte = builder.build();
|
|
43
43
|
// setup plugins
|
|
44
44
|
setupPlugins(crelte, data.app.plugins ?? []);
|
|
45
|
+
const loadFn = await prepareLoadFn(crelte, data.app, data.entryQuery, data.globalQuery);
|
|
45
46
|
// setup load Data
|
|
46
47
|
crelte.router._internal.onLoad = req => {
|
|
47
48
|
const cr = new CrelteRequest(crelte, req);
|
|
48
|
-
return loadFn(cr
|
|
49
|
+
return loadFn(cr);
|
|
49
50
|
};
|
|
50
51
|
const { success, redirect, req, props } = await crelte.router._internal.initServer(data.serverData.url, data.serverData.acceptLang);
|
|
51
52
|
if (!success)
|
package/dist/init/shared.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Crelte from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
+
import { EntryRoutes } from '../entry/EntryRouter.js';
|
|
3
4
|
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
4
5
|
import { LoadData } from '../loadData/index.js';
|
|
5
6
|
import { PluginCreator } from '../plugins/Plugins.js';
|
|
@@ -8,6 +9,7 @@ interface App<E, T> {
|
|
|
8
9
|
loadGlobalData?: LoadData<null>;
|
|
9
10
|
loadEntryData?: LoadData<any>;
|
|
10
11
|
templates?: Record<string, LazyTemplateModule<E, T>>;
|
|
12
|
+
entryRoutes?: EntryRoutes;
|
|
11
13
|
}
|
|
12
14
|
interface TemplateModule<E, T> {
|
|
13
15
|
default: any;
|
|
@@ -25,6 +27,6 @@ export declare function pluginsBeforeRender(cr: CrelteRequest): void;
|
|
|
25
27
|
* sectionHandle will be automatically set to product
|
|
26
28
|
*/
|
|
27
29
|
export declare function getEntry(page: any): any;
|
|
28
|
-
export declare function
|
|
30
|
+
export declare function prepareLoadFn<E, T>(crelte: Crelte, app: App<E, T>, entryQuery: GraphQlQuery, globalQuery?: GraphQlQuery): Promise<(cr: CrelteRequest, loadOpts?: LoadOptions) => Promise<any>>;
|
|
29
31
|
export {};
|
|
30
32
|
//# 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,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGhC,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
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,OAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGhC,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC;IAE5B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnD;AAED,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IACzB,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACrC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAYvC;AAGD,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAmBtE"}
|
package/dist/init/shared.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import EntryRouter from '../entry/EntryRouter.js';
|
|
1
2
|
import { callLoadData } from '../loadData/index.js';
|
|
2
3
|
export function setupPlugins(crelte, plugins) {
|
|
3
4
|
for (const plugin of plugins) {
|
|
@@ -29,7 +30,19 @@ export function getEntry(page) {
|
|
|
29
30
|
typeHandle: '404',
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
// todo it would be nice to call this only once per server start
|
|
34
|
+
export async function prepareLoadFn(crelte, app, entryQuery, globalQuery) {
|
|
35
|
+
const templateModules = prepareTemplates(app.templates ?? {});
|
|
36
|
+
let entryRouter = null;
|
|
37
|
+
if (app.entryRoutes) {
|
|
38
|
+
entryRouter = new EntryRouter(crelte);
|
|
39
|
+
await app.entryRoutes(entryRouter);
|
|
40
|
+
}
|
|
41
|
+
return async (cr, loadOpts) => {
|
|
42
|
+
return await loadFn(cr, app, templateModules, entryRouter, entryQuery, globalQuery, loadOpts);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async function loadFn(cr, app, templateModules, entryRouter, entryQuery, globalQuery, loadOpts) {
|
|
33
46
|
let dataProm = null;
|
|
34
47
|
// @ts-ignore
|
|
35
48
|
if (app.loadData) {
|
|
@@ -53,39 +66,24 @@ export async function loadFn(cr, app, entryQuery, globalQuery, loadOpts) {
|
|
|
53
66
|
return res;
|
|
54
67
|
})();
|
|
55
68
|
}
|
|
56
|
-
|
|
57
|
-
if (cr.req.siteMatches()) {
|
|
58
|
-
let uri = decodeURI(cr.req.uri);
|
|
59
|
-
if (uri.startsWith('/'))
|
|
60
|
-
uri = uri.substring(1);
|
|
61
|
-
if (uri === '' || uri === '/')
|
|
62
|
-
uri = '__home__';
|
|
63
|
-
pageProm = cr.query(entryQuery, {
|
|
64
|
-
uri,
|
|
65
|
-
siteId: cr.site.id,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
69
|
+
const entryProm = queryEntry(cr, app, entryRouter, entryQuery);
|
|
68
70
|
const pluginsLoadGlobalData = cr.events.trigger('loadGlobalData', cr);
|
|
69
71
|
// loading progress is at 20%
|
|
70
72
|
loadOpts?.setProgress(0.2);
|
|
71
|
-
const [data, global,
|
|
73
|
+
const [data, global, entry] = await Promise.all([
|
|
72
74
|
dataProm,
|
|
73
75
|
globalProm,
|
|
74
|
-
|
|
76
|
+
entryProm,
|
|
75
77
|
...pluginsLoadGlobalData,
|
|
76
78
|
]);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// we need to set the global data to an empty object
|
|
82
|
-
// so any waiters get's triggered
|
|
83
|
-
cr.globals._setData(cr.site.id, {});
|
|
79
|
+
// global is only set if !wasLoaded but we need to store something
|
|
80
|
+
// even if no globalQuery exists
|
|
81
|
+
if (global || !cr.globals._wasLoaded(cr.site.id)) {
|
|
82
|
+
cr.globals._setData(cr.site.id, global ?? {});
|
|
84
83
|
}
|
|
85
|
-
const entry = getEntry(page);
|
|
86
84
|
let template;
|
|
87
85
|
if (app.templates) {
|
|
88
|
-
template = await loadTemplate(
|
|
86
|
+
template = await loadTemplate(templateModules, entry);
|
|
89
87
|
}
|
|
90
88
|
else {
|
|
91
89
|
throw new Error('App must have templates or loadTemplate method');
|
|
@@ -125,14 +123,37 @@ function parseFilename(path) {
|
|
|
125
123
|
const ext = filename.substring(extPos + 1);
|
|
126
124
|
return [name, ext];
|
|
127
125
|
}
|
|
128
|
-
async function
|
|
126
|
+
async function queryEntry(cr, app, entryRouter, entryQuery) {
|
|
127
|
+
// check
|
|
128
|
+
if (entryRouter) {
|
|
129
|
+
const entry = await entryRouter._handle(cr);
|
|
130
|
+
if (entry)
|
|
131
|
+
return entry;
|
|
132
|
+
}
|
|
133
|
+
if (cr.req.siteMatches()) {
|
|
134
|
+
let uri = decodeURI(cr.req.uri);
|
|
135
|
+
if (uri.startsWith('/'))
|
|
136
|
+
uri = uri.substring(1);
|
|
137
|
+
if (uri === '' || uri === '/')
|
|
138
|
+
uri = '__home__';
|
|
139
|
+
const page = await cr.query(entryQuery, {
|
|
140
|
+
uri,
|
|
141
|
+
siteId: cr.site.id,
|
|
142
|
+
});
|
|
143
|
+
return getEntry(page);
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
function prepareTemplates(rawModules) {
|
|
129
148
|
// parse modules
|
|
130
|
-
|
|
149
|
+
return new Map(Object.entries(rawModules)
|
|
131
150
|
.map(([path, mod]) => {
|
|
132
151
|
const [name, _ext] = parseFilename(path);
|
|
133
152
|
return [name, mod];
|
|
134
153
|
})
|
|
135
154
|
.filter(([name, _mod]) => !!name));
|
|
155
|
+
}
|
|
156
|
+
async function loadTemplate(modules, entry) {
|
|
136
157
|
const entr = entry;
|
|
137
158
|
const handle = `${entr.sectionHandle}-${entr.typeHandle}`;
|
|
138
159
|
if (
|
|
@@ -82,15 +82,6 @@ export default class InnerRouter {
|
|
|
82
82
|
* `push` and `replace` will cause this function to throw an error
|
|
83
83
|
*/
|
|
84
84
|
open(req: Request): void;
|
|
85
|
-
/**
|
|
86
|
-
* Sets a route
|
|
87
|
-
*
|
|
88
|
-
* Will trigger an onRoute event but will not store any scroll progress
|
|
89
|
-
* or modify the history
|
|
90
|
-
*
|
|
91
|
-
* @param req
|
|
92
|
-
*/
|
|
93
|
-
setRoute(req: Request, preventOnRoute?: boolean): void;
|
|
94
85
|
/**
|
|
95
86
|
* This pushes a new route to the history
|
|
96
87
|
*
|
|
@@ -99,7 +90,7 @@ export default class InnerRouter {
|
|
|
99
90
|
* ## Important
|
|
100
91
|
* Make sure the route has the correct origin
|
|
101
92
|
*/
|
|
102
|
-
push(req: Request
|
|
93
|
+
push(req: Request): void;
|
|
103
94
|
/**
|
|
104
95
|
* This replaces the current route
|
|
105
96
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InnerRouter.d.ts","sourceRoot":"","sources":["../../../../src/routing/InnerRouter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,OAAO,EAAE,EAAa,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEpC,OAAO,CAAC,qBAAqB,CAAa;IAE1C;;;;;OAKG;gBACS,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe;IAkB3D;;OAEG;IACH,UAAU;
|
|
1
|
+
{"version":3,"file":"InnerRouter.d.ts","sourceRoot":"","sources":["../../../../src/routing/InnerRouter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,OAAO,EAAE,EAAa,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEpC,OAAO,CAAC,qBAAqB,CAAa;IAE1C;;;;;OAKG;gBACS,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe;IAkB3D;;OAEG;IACH,UAAU;IAgBV;;OAEG;IACH,UAAU;IAEV;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAsCxD;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKjC;;;;;;OAMG;IACH,eAAe,CACd,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,EACtC,IAAI,GAAE,cAAmB,GACvB,OAAO;IA0BV;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK;IAgCjC,MAAM;IAoGN;;;;;;;;;OASG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO;IA4CjB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO;IAuBjB;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO;IAuBpB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO;IAW9C,QAAQ,CAAC,GAAG,EAAE,OAAO;CAsErB"}
|
|
@@ -52,7 +52,10 @@ export default class InnerRouter {
|
|
|
52
52
|
req._fillFromState(window.history.state);
|
|
53
53
|
req.origin = 'init';
|
|
54
54
|
window.history.scrollRestoration = 'manual';
|
|
55
|
-
|
|
55
|
+
// we set it now instead of waiting for the onRoute call
|
|
56
|
+
// because the window.history is already set
|
|
57
|
+
this.route = req.toRoute();
|
|
58
|
+
this.onRoute(req, () => { });
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
61
|
* Initializes the router when running on the server.
|
|
@@ -254,7 +257,10 @@ export default class InnerRouter {
|
|
|
254
257
|
const req = this.targetToRequest(window.location.href);
|
|
255
258
|
req._fillFromState(e.state);
|
|
256
259
|
req.origin = 'pop';
|
|
257
|
-
|
|
260
|
+
// we set it now instead of waiting for the onRoute call
|
|
261
|
+
// because the window.history was already modified
|
|
262
|
+
this.route = req.toRoute();
|
|
263
|
+
this.onRoute(req, () => { });
|
|
258
264
|
});
|
|
259
265
|
}
|
|
260
266
|
/**
|
|
@@ -296,22 +302,11 @@ export default class InnerRouter {
|
|
|
296
302
|
}
|
|
297
303
|
req.index = (current?.index ?? 0) + 1;
|
|
298
304
|
this.onRoute(req, () => {
|
|
299
|
-
|
|
305
|
+
const url = req.url;
|
|
306
|
+
this.history.pushState(req._toState(), url.pathname + url.search + url.hash);
|
|
307
|
+
this.route = req.toRoute();
|
|
300
308
|
});
|
|
301
309
|
}
|
|
302
|
-
/**
|
|
303
|
-
* Sets a route
|
|
304
|
-
*
|
|
305
|
-
* Will trigger an onRoute event but will not store any scroll progress
|
|
306
|
-
* or modify the history
|
|
307
|
-
*
|
|
308
|
-
* @param req
|
|
309
|
-
*/
|
|
310
|
-
setRoute(req, preventOnRoute = false) {
|
|
311
|
-
this.route = req.toRoute();
|
|
312
|
-
if (!preventOnRoute)
|
|
313
|
-
this.onRoute(req, () => { });
|
|
314
|
-
}
|
|
315
310
|
/**
|
|
316
311
|
* This pushes a new route to the history
|
|
317
312
|
*
|
|
@@ -320,7 +315,7 @@ export default class InnerRouter {
|
|
|
320
315
|
* ## Important
|
|
321
316
|
* Make sure the route has the correct origin
|
|
322
317
|
*/
|
|
323
|
-
push(req
|
|
318
|
+
push(req) {
|
|
324
319
|
const url = req.url;
|
|
325
320
|
// todo a push should also store the previous scrollY
|
|
326
321
|
let nReq = req;
|
|
@@ -332,8 +327,10 @@ export default class InnerRouter {
|
|
|
332
327
|
nReq = req.clone();
|
|
333
328
|
nReq.scrollY = this.history.scrollY();
|
|
334
329
|
}
|
|
335
|
-
this.
|
|
336
|
-
|
|
330
|
+
this.onRoute(req, () => {
|
|
331
|
+
this.history.pushState(req._toState(), url.pathname + url.search + url.hash);
|
|
332
|
+
this.route = req.toRoute();
|
|
333
|
+
});
|
|
337
334
|
}
|
|
338
335
|
/**
|
|
339
336
|
* This replaces the current route
|
|
@@ -355,8 +352,10 @@ export default class InnerRouter {
|
|
|
355
352
|
nReq = req.clone();
|
|
356
353
|
nReq.scrollY = this.history.scrollY();
|
|
357
354
|
}
|
|
358
|
-
this.
|
|
359
|
-
|
|
355
|
+
this.onRoute(req, () => {
|
|
356
|
+
this.history.replaceState(req._toState(), url.pathname + url.search + url.hash);
|
|
357
|
+
this.route = req.toRoute();
|
|
358
|
+
});
|
|
360
359
|
}
|
|
361
360
|
/**
|
|
362
361
|
* Preload a url
|