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.
Files changed (55) hide show
  1. package/dist/Crelte.d.ts +12 -0
  2. package/dist/Crelte.d.ts.map +1 -1
  3. package/dist/Crelte.js +12 -0
  4. package/dist/CrelteRequest.d.ts +0 -4
  5. package/dist/CrelteRequest.d.ts.map +1 -1
  6. package/dist/CrelteRequest.js +0 -4
  7. package/dist/entry/EntryRouter.d.ts +30 -0
  8. package/dist/entry/EntryRouter.d.ts.map +1 -0
  9. package/dist/entry/EntryRouter.js +45 -0
  10. package/dist/entry/index.d.ts +32 -0
  11. package/dist/entry/index.d.ts.map +1 -0
  12. package/dist/entry/index.js +31 -0
  13. package/dist/index.d.ts +2 -6
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +0 -6
  16. package/dist/init/client.d.ts +1 -1
  17. package/dist/init/client.d.ts.map +1 -1
  18. package/dist/init/client.js +4 -3
  19. package/dist/init/server.d.ts.map +1 -1
  20. package/dist/init/server.js +3 -2
  21. package/dist/init/shared.d.ts +3 -1
  22. package/dist/init/shared.d.ts.map +1 -1
  23. package/dist/init/shared.js +47 -26
  24. package/dist/routing/InnerRouter.d.ts +1 -10
  25. package/dist/routing/InnerRouter.d.ts.map +1 -1
  26. package/dist/routing/InnerRouter.js +20 -21
  27. package/dist/routing/Request.d.ts +2 -0
  28. package/dist/routing/Request.d.ts.map +1 -1
  29. package/dist/routing/Request.js +9 -0
  30. package/dist/routing/Route.d.ts +67 -1
  31. package/dist/routing/Route.d.ts.map +1 -1
  32. package/dist/routing/Route.js +98 -2
  33. package/dist/routing/Router.d.ts +49 -12
  34. package/dist/routing/Router.d.ts.map +1 -1
  35. package/dist/routing/Router.js +82 -28
  36. package/dist/routing/index.d.ts +2 -2
  37. package/dist/routing/index.d.ts.map +1 -1
  38. package/dist/utils.d.ts +2 -0
  39. package/dist/utils.d.ts.map +1 -0
  40. package/dist/utils.js +8 -0
  41. package/package.json +9 -4
  42. package/src/Crelte.ts +15 -0
  43. package/src/CrelteRequest.ts +0 -4
  44. package/src/entry/EntryRouter.ts +71 -0
  45. package/src/entry/index.ts +48 -0
  46. package/src/index.ts +2 -11
  47. package/src/init/client.ts +10 -3
  48. package/src/init/server.ts +9 -2
  49. package/src/init/shared.ts +78 -28
  50. package/src/routing/InnerRouter.ts +29 -30
  51. package/src/routing/Request.ts +11 -0
  52. package/src/routing/Route.ts +107 -2
  53. package/src/routing/Router.ts +110 -31
  54. package/src/routing/index.ts +2 -1
  55. 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
  *
@@ -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
  *
@@ -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;;;;;;;;;OASG;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"}
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"}
@@ -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
- export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
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
  *
@@ -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,OAAO,MAAM,sBAAsB,CAAC;AAChD,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;AAE7B,OAAO,EACN,MAAM,EACN,aAAa,EACb,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,GAClB,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;;GAEG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,GAAG,aAAa,EAC9B,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,GACnB,aAAa,CAEf;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"}
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
  *
@@ -31,5 +31,5 @@ export type MainData = {
31
31
  * });
32
32
  * ```
33
33
  */
34
- export declare function main(data: MainData): void;
34
+ export declare function main(data: MainData): Promise<void>;
35
35
  //# sourceMappingURL=client.d.ts.map
@@ -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,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,QAsIlC"}
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"}
@@ -1,6 +1,6 @@
1
1
  import { CrelteBuilder } from '../Crelte.js';
2
2
  import CrelteRequest from '../CrelteRequest.js';
3
- import { loadFn, pluginsBeforeRender, setupPlugins } from './shared.js';
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, data.app, data.entryQuery, data.globalQuery, opts);
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,CA0ED;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"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { CrelteBuilder } from '../Crelte.js';
2
- import { loadFn, pluginsBeforeRender, setupPlugins } from './shared.js';
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, data.app, data.entryQuery, data.globalQuery);
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)
@@ -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 loadFn<D, E, T>(cr: CrelteRequest, app: App<E, T>, entryQuery: GraphQlQuery, globalQuery?: GraphQlQuery, loadOpts?: LoadOptions): Promise<any>;
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;CACrD;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;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,CAqGd"}
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"}
@@ -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
- export async function loadFn(cr, app, entryQuery, globalQuery, loadOpts) {
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
- let pageProm = null;
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, page] = await Promise.all([
73
+ const [data, global, entry] = await Promise.all([
72
74
  dataProm,
73
75
  globalProm,
74
- pageProm,
76
+ entryProm,
75
77
  ...pluginsLoadGlobalData,
76
78
  ]);
77
- if (global) {
78
- cr.globals._setData(cr.site.id, global);
79
- }
80
- else if (!cr.globals._wasLoaded(cr.site.id)) {
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(app.templates, entry);
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 loadTemplate(rawModules, entry) {
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
- const modules = new Map(Object.entries(rawModules)
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, preventOnRoute?: boolean): void;
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;IAaV;;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;IAiGN;;;;;;;;;OASG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO;IAuCjB;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,UAAQ;IAM7C;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,UAAQ;IAsBzC;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO;IAsBpB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO;IAW9C,QAAQ,CAAC,GAAG,EAAE,OAAO;CAsErB"}
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
- this.setRoute(req);
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
- this.setRoute(req);
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
- this.push(req, true);
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, preventOnRoute = false) {
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.history.pushState(nReq._toState(), url.pathname + url.search + url.hash);
336
- this.setRoute(req, preventOnRoute);
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.history.replaceState(nReq._toState(), url.pathname + url.search + url.hash);
359
- this.setRoute(req);
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