crelte 0.2.2 → 0.3.1

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 +61 -9
  2. package/dist/Crelte.d.ts.map +1 -1
  3. package/dist/Crelte.js +42 -10
  4. package/dist/CrelteRequest.d.ts +3 -11
  5. package/dist/CrelteRequest.d.ts.map +1 -1
  6. package/dist/CrelteRequest.js +9 -19
  7. package/dist/graphql/GraphQl.d.ts +7 -0
  8. package/dist/graphql/GraphQl.d.ts.map +1 -1
  9. package/dist/graphql/GraphQl.js +16 -3
  10. package/dist/index.d.ts +10 -4
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -1
  13. package/dist/init/client.d.ts +0 -19
  14. package/dist/init/client.d.ts.map +1 -1
  15. package/dist/init/client.js +9 -12
  16. package/dist/init/server.d.ts +0 -4
  17. package/dist/init/server.d.ts.map +1 -1
  18. package/dist/init/server.js +2 -5
  19. package/dist/init/shared.d.ts.map +1 -1
  20. package/dist/init/shared.js +8 -8
  21. package/dist/loadData/Globals.d.ts +15 -31
  22. package/dist/loadData/Globals.d.ts.map +1 -1
  23. package/dist/loadData/Globals.js +65 -72
  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 +28 -23
  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 +56 -1
  31. package/dist/routing/Route.d.ts.map +1 -1
  32. package/dist/routing/Route.js +85 -2
  33. package/dist/routing/Router.d.ts +29 -4
  34. package/dist/routing/Router.d.ts.map +1 -1
  35. package/dist/routing/Router.js +39 -12
  36. package/dist/ssr/SsrCache.d.ts.map +1 -1
  37. package/dist/ssr/SsrCache.js +6 -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 +2 -2
  42. package/src/Crelte.ts +95 -13
  43. package/src/CrelteRequest.ts +14 -27
  44. package/src/graphql/GraphQl.ts +25 -6
  45. package/src/index.ts +19 -8
  46. package/src/init/client.ts +9 -40
  47. package/src/init/server.ts +2 -13
  48. package/src/init/shared.ts +8 -9
  49. package/src/loadData/Globals.ts +76 -93
  50. package/src/routing/InnerRouter.ts +38 -32
  51. package/src/routing/Request.ts +11 -0
  52. package/src/routing/Route.ts +93 -2
  53. package/src/routing/Router.ts +51 -20
  54. package/src/ssr/SsrCache.ts +6 -1
  55. package/src/utils.ts +10 -0
package/dist/Crelte.d.ts CHANGED
@@ -1,12 +1,48 @@
1
1
  import { Cookies } from './cookies/index.js';
2
- import GraphQl, { GraphQlOptions, GraphQlQuery } from './graphql/GraphQl.js';
3
- import Globals, { Global, GlobalData } from './loadData/Globals.js';
2
+ import GraphQl, { GraphQlQuery } from './graphql/GraphQl.js';
3
+ import { CrelteRequest } from './index.js';
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';
6
- import Router, { RouterOptions } from './routing/Router.js';
7
+ import type Route from './routing/Route.js';
8
+ import type Request from './routing/Request.js';
9
+ import Router from './routing/Router.js';
7
10
  import { SiteFromGraphQl } from './routing/Site.js';
8
11
  import SsrCache from './ssr/SsrCache.js';
12
+ export type Config = {
13
+ /**
14
+ * Preload pages on mouse over
15
+ * @default false
16
+ */
17
+ preloadOnMouseOver?: boolean;
18
+ /**
19
+ * Use view transitions
20
+ * @default false
21
+ */
22
+ viewTransition?: boolean;
23
+ /**
24
+ * Play the intro animation
25
+ * @default false
26
+ */
27
+ playIntro?: boolean;
28
+ /**
29
+ * Enable X-Craft-Site Header
30
+ * @default false
31
+ */
32
+ XCraftSiteHeader?: boolean;
33
+ /**
34
+ * Enable graphql query debugging
35
+ * @default false
36
+ */
37
+ debugGraphQl?: boolean;
38
+ /**
39
+ * Enable request and render timing measurement
40
+ * @default false
41
+ */
42
+ debugTiming?: boolean;
43
+ };
9
44
  export declare class CrelteBuilder {
45
+ config: Config;
10
46
  ssrCache: SsrCache;
11
47
  plugins: Plugins;
12
48
  events: Events;
@@ -14,9 +50,9 @@ export declare class CrelteBuilder {
14
50
  router?: Router;
15
51
  globals: Globals;
16
52
  cookies: Cookies;
17
- constructor();
18
- setupGraphQl(endpoint: string, opts?: GraphQlOptions): void;
19
- setupRouter(sites: SiteFromGraphQl[], opts?: RouterOptions): void;
53
+ constructor(config: Config);
54
+ setupGraphQl(endpoint: string): void;
55
+ setupRouter(sites: SiteFromGraphQl[]): void;
20
56
  setupCookies(cookies: string): void;
21
57
  build(): Crelte;
22
58
  }
@@ -40,11 +76,18 @@ export type QueryOptions = {
40
76
  * `ignoreStatusCode` is set to `true`
41
77
  */
42
78
  status?: number;
79
+ /**
80
+ * A GraphQl Token generated in Craft
81
+ */
82
+ bearerToken?: string;
43
83
  };
44
84
  /**
45
85
  * This is the main class of Crelte and can be accessed
46
- * in component initialisation via `getCrelte()` and is the
47
- * first parameter in `loadData`
86
+ * in component initialisation via `getCrelte()`
87
+ *
88
+ * Crelte is stateless, which means it is not associated with
89
+ * a specific route or site. If you need a statefull crelte
90
+ * use the function `toCrelteRequest`
48
91
  */
49
92
  export default class Crelte {
50
93
  protected _ssrCache: SsrCache;
@@ -103,7 +146,16 @@ export default class Crelte {
103
146
  * always return null. In that context you should use
104
147
  * `CrelteRequest.getGlobalAsync`
105
148
  */
106
- getGlobal<T extends GlobalData>(name: string): Global<T> | null;
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;
107
159
  /**
108
160
  * Run a GraphQl Query
109
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,12 +1,22 @@
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';
7
8
  import Router from './routing/Router.js';
8
9
  import SsrCache from './ssr/SsrCache.js';
10
+ const defaultConfig = {
11
+ preloadOnMouseOver: false,
12
+ viewTransition: false,
13
+ playIntro: false,
14
+ XCraftSiteHeader: false,
15
+ debugGraphQl: false,
16
+ debugTiming: false,
17
+ };
9
18
  export class CrelteBuilder {
19
+ config;
10
20
  ssrCache;
11
21
  plugins;
12
22
  events;
@@ -14,7 +24,8 @@ export class CrelteBuilder {
14
24
  router;
15
25
  globals;
16
26
  cookies;
17
- constructor() {
27
+ constructor(config) {
28
+ this.config = { ...defaultConfig, ...config };
18
29
  this.ssrCache = new SsrCache();
19
30
  this.plugins = new Plugins();
20
31
  this.events = new Events();
@@ -24,11 +35,18 @@ export class CrelteBuilder {
24
35
  ? new ServerCookies()
25
36
  : new ClientCookies();
26
37
  }
27
- setupGraphQl(endpoint, opts = {}) {
28
- this.graphQl = new GraphQl(endpoint, this.ssrCache, opts);
38
+ setupGraphQl(endpoint) {
39
+ this.graphQl = new GraphQl(endpoint, this.ssrCache, {
40
+ XCraftSiteHeader: this.config.XCraftSiteHeader,
41
+ debug: this.config.debugGraphQl,
42
+ debugTiming: this.config.debugTiming,
43
+ });
29
44
  }
30
- setupRouter(sites, opts = {}) {
31
- this.router = new Router(sites, opts);
45
+ setupRouter(sites) {
46
+ this.router = new Router(sites, {
47
+ preloadOnMouseOver: this.config.preloadOnMouseOver,
48
+ debugTiming: this.config.debugTiming,
49
+ });
32
50
  }
33
51
  setupCookies(cookies) {
34
52
  this.cookies._init(cookies);
@@ -39,8 +57,11 @@ export class CrelteBuilder {
39
57
  }
40
58
  /**
41
59
  * This is the main class of Crelte and can be accessed
42
- * in component initialisation via `getCrelte()` and is the
43
- * first parameter in `loadData`
60
+ * in component initialisation via `getCrelte()`
61
+ *
62
+ * Crelte is stateless, which means it is not associated with
63
+ * a specific route or site. If you need a statefull crelte
64
+ * use the function `toCrelteRequest`
44
65
  */
45
66
  export default class Crelte {
46
67
  _ssrCache;
@@ -120,8 +141,19 @@ export default class Crelte {
120
141
  * always return null. In that context you should use
121
142
  * `CrelteRequest.getGlobalAsync`
122
143
  */
123
- getGlobal(name) {
124
- return this.globals.get(name) ?? null;
144
+ getGlobalStore(name) {
145
+ return this.globals.getStore(name) ?? null;
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);
125
157
  }
126
158
  /**
127
159
  * Run a GraphQl Query
@@ -134,7 +166,7 @@ export default class Crelte {
134
166
  async query(query, variables = {}, opts = {}) {
135
167
  // this function is added as convenience
136
168
  return this.graphQl.query(query, variables, {
137
- route: this.router.route.get(),
169
+ route: this.router.route.get() ?? undefined,
138
170
  ...opts,
139
171
  });
140
172
  }
@@ -3,25 +3,19 @@ import { GraphQlQuery } from './graphql/GraphQl.js';
3
3
  import Site from './routing/Site.js';
4
4
  import Request from './routing/Request.js';
5
5
  import Route from './routing/Route.js';
6
- import { GlobalData } from './loadData/Globals.js';
7
6
  export default class CrelteRequest extends Crelte {
8
7
  /**
9
8
  * The current request
10
9
  */
11
10
  req: Request;
12
- private innerGlobals;
13
11
  constructor(inner: Crelte, req: Request);
14
12
  /**
15
13
  * Create a CrelteRequest from a Crelte instance
16
14
  *
17
15
  * If you don't provide a route or request the current route
18
16
  * will be used.
19
- *
20
- * ## Note
21
- * If you provide a route it must contain a site or you must
22
- * provide one,
23
17
  */
24
- static fromCrelte(inner: Crelte, req?: Route | Request): CrelteRequest;
18
+ static fromCrelte(inner: Crelte | CrelteRequest, req?: Route | Request): CrelteRequest;
25
19
  /**
26
20
  * Get the current request
27
21
  * @deprecated
@@ -44,7 +38,7 @@ export default class CrelteRequest extends Crelte {
44
38
  * always return null. In that context you should use
45
39
  * `.getGlobalAsync`
46
40
  */
47
- getGlobal<T extends GlobalData>(name: string): T | null;
41
+ getGlobal<T = any>(name: string): T | null;
48
42
  /**
49
43
  * Get a globalSet and wait until it is loaded
50
44
  *
@@ -52,7 +46,7 @@ export default class CrelteRequest extends Crelte {
52
46
  * This is only useful in loadGlobalData in all other cases
53
47
  * you can use `.getGlobal` which does return a Promise
54
48
  */
55
- getGlobalAsync<T extends GlobalData>(name: string): Promise<T | null>;
49
+ getGlobalAsync<T = any>(name: string): Promise<T | null>;
56
50
  /**
57
51
  * Run a GraphQl Query
58
52
  *
@@ -62,7 +56,5 @@ export default class CrelteRequest extends Crelte {
62
56
  * graphql query
63
57
  */
64
58
  query(query: GraphQlQuery, variables?: Record<string, unknown>, opts?: QueryOptions): Promise<unknown>;
65
- /** @hidden */
66
- _globalDataLoaded(): void;
67
59
  }
68
60
  //# sourceMappingURL=CrelteRequest.d.ts.map
@@ -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;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAChD;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;IAEb,OAAO,CAAC,YAAY,CAAmB;gBAE3B,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAOvC;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,aAAa;IAWtE;;;OAGG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAIvD;;;;;;OAMG;IACG,cAAc,CAAC,CAAC,SAAS,UAAU,EACxC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUpB;;;;;;;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;IAQnB,cAAc;IACd,iBAAiB;CAGjB"}
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"}
@@ -5,25 +5,24 @@ export default class CrelteRequest extends Crelte {
5
5
  * The current request
6
6
  */
7
7
  req;
8
- innerGlobals;
9
8
  constructor(inner, req) {
10
9
  super(inner);
11
10
  this.req = req;
12
- this.innerGlobals = new Map();
13
11
  }
14
12
  /**
15
13
  * Create a CrelteRequest from a Crelte instance
16
14
  *
17
15
  * If you don't provide a route or request the current route
18
16
  * will be used.
19
- *
20
- * ## Note
21
- * If you provide a route it must contain a site or you must
22
- * provide one,
23
17
  */
24
18
  static fromCrelte(inner, req) {
19
+ if (inner instanceof CrelteRequest && !req)
20
+ return inner;
25
21
  if (!req) {
26
- req = inner.router.route.get();
22
+ req = inner.router.route.get() ?? undefined;
23
+ // this will only occur in the first loadData call
24
+ if (!req)
25
+ throw new Error('router does not contain a route');
27
26
  }
28
27
  return new CrelteRequest(inner, req instanceof Request ? req : Request.fromRoute(req));
29
28
  }
@@ -32,6 +31,7 @@ export default class CrelteRequest extends Crelte {
32
31
  * @deprecated
33
32
  */
34
33
  get route() {
34
+ console.warn('CrelteRequest.route is deprecated, use .req instead');
35
35
  return this.req;
36
36
  }
37
37
  /**
@@ -54,7 +54,7 @@ export default class CrelteRequest extends Crelte {
54
54
  * `.getGlobalAsync`
55
55
  */
56
56
  getGlobal(name) {
57
- return this.innerGlobals.get(name) ?? null;
57
+ return this.globals.get(name, this.site.id);
58
58
  }
59
59
  /**
60
60
  * Get a globalSet and wait until it is loaded
@@ -64,13 +64,7 @@ export default class CrelteRequest extends Crelte {
64
64
  * you can use `.getGlobal` which does return a Promise
65
65
  */
66
66
  async getGlobalAsync(name) {
67
- const global = this.innerGlobals.get(name);
68
- if (global)
69
- return global;
70
- const r = await this.globals.getAsync(name);
71
- if (!r)
72
- return null;
73
- return r.bySiteId(this.site.id);
67
+ return this.globals.getAsync(name, this.site.id);
74
68
  }
75
69
  /**
76
70
  * Run a GraphQl Query
@@ -87,8 +81,4 @@ export default class CrelteRequest extends Crelte {
87
81
  ...opts,
88
82
  });
89
83
  }
90
- /** @hidden */
91
- _globalDataLoaded() {
92
- this.innerGlobals = this.globals._globalsBySite(this.site.id);
93
- }
94
84
  }
@@ -35,6 +35,7 @@ export declare class GraphQlError extends Error {
35
35
  * Options for the GraphQl class
36
36
  */
37
37
  export type GraphQlOptions = {
38
+ XCraftSiteHeader?: boolean;
38
39
  debug?: boolean;
39
40
  debugTiming?: boolean;
40
41
  };
@@ -50,10 +51,15 @@ export type GraphQlOptions = {
50
51
  */
51
52
  export type GraphQlRequestOptions = {
52
53
  path?: string;
54
+ /**
55
+ * !! the route here might not contain a site even if the types
56
+ * says it does. CrelteServer does not know about site
57
+ */
53
58
  route?: Route | URL;
54
59
  ignoreStatusCode?: boolean;
55
60
  previewToken?: string;
56
61
  siteToken?: string;
62
+ bearerToken?: string;
57
63
  caching?: boolean;
58
64
  headers?: Record<string, string>;
59
65
  status?: number;
@@ -65,6 +71,7 @@ export default class GraphQl {
65
71
  private endpoint;
66
72
  private ssrCache;
67
73
  private listeners;
74
+ private XCraftSiteHeader;
68
75
  private loggingRequests;
69
76
  private loggingTiming;
70
77
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQl.d.ts","sourceRoot":"","sources":["../../../../src/graphql/GraphQl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,QAAwC,MAAM,oBAAoB,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAGD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,GAAG,CAAC;gBAGG,IAAI,EAAE,oBAAoB,EAAE,GAAG,GAAE,GAAU;IAOvD;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB,kBAAkB;IAElB;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;CACD;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAGf;IAEF,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAU;IAE/B;;OAEG;gBAEF,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE,cAAmB;IAU1B;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,qBAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC;YAuBL,OAAO;YA0DP,UAAU;CAmFxB;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAI5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAClB,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,GAAG,MAAM,EACjD,GAAG,IAAI,EAAE,OAAO,EAAE,GAChB,YAAY,CAuBd"}
1
+ {"version":3,"file":"GraphQl.d.ts","sourceRoot":"","sources":["../../../../src/graphql/GraphQl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,QAAwC,MAAM,oBAAoB,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAGD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,GAAG,CAAC;gBAGG,IAAI,EAAE,oBAAoB,EAAE,GAAG,GAAE,GAAU;IAOvD;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB,kBAAkB;IAElB;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;CACD;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAGf;IAEF,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAU;IAE/B;;OAEG;gBAEF,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE,cAAmB;IAW1B;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,qBAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC;YAiCL,OAAO;YA0DP,UAAU;CAsFxB;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAI5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAClB,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,GAAG,MAAM,EACjD,GAAG,IAAI,EAAE,OAAO,EAAE,GAChB,YAAY,CAuBd"}
@@ -33,6 +33,7 @@ export default class GraphQl {
33
33
  endpoint;
34
34
  ssrCache;
35
35
  listeners;
36
+ XCraftSiteHeader;
36
37
  loggingRequests;
37
38
  loggingTiming;
38
39
  /**
@@ -42,6 +43,7 @@ export default class GraphQl {
42
43
  this.endpoint = endpoint;
43
44
  this.ssrCache = ssrCache;
44
45
  this.listeners = new Map();
46
+ this.XCraftSiteHeader = opts?.XCraftSiteHeader ?? false;
45
47
  this.loggingRequests = opts?.debug ?? false;
46
48
  this.loggingTiming = opts?.debugTiming ?? false;
47
49
  }
@@ -56,15 +58,24 @@ export default class GraphQl {
56
58
  async query(query, variables = {}, opts = {}) {
57
59
  if (opts.route) {
58
60
  const search = opts.route.searchParams ?? opts.route.search;
59
- // todo should variables contain siteId
60
- // or maybe gql should detect loadData and add it there
61
- // it might make export const loadData = query; easier
62
61
  if (search.has('token') && search.get('x-craft-live-preview')) {
63
62
  opts.previewToken = search.get('token');
64
63
  }
65
64
  else if (search.has('siteToken')) {
66
65
  opts.siteToken = search.get('siteToken');
67
66
  }
67
+ // if the siteId is not set we set it as an argument for
68
+ // convenience
69
+ if (opts.route.site) {
70
+ if (this.XCraftSiteHeader && !opts.headers?.['X-Craft-Site']) {
71
+ opts.headers = opts.headers ?? {};
72
+ opts.headers['X-Craft-Site'] =
73
+ opts.route.site.id + '';
74
+ }
75
+ if (typeof variables.siteId === 'undefined') {
76
+ variables.siteId = opts.route.site.id;
77
+ }
78
+ }
68
79
  }
69
80
  opts.path = query.path;
70
81
  return await this.request(query.query, variables, opts);
@@ -126,6 +137,8 @@ export default class GraphQl {
126
137
  url += '?siteToken=' + opts.siteToken;
127
138
  const headers = opts?.headers ?? {};
128
139
  headers['Content-Type'] = 'application/json';
140
+ if (opts?.bearerToken)
141
+ headers['Authorization'] = 'Bearer ' + opts.bearerToken;
129
142
  if (this.loggingRequests) {
130
143
  console.log('query to ', url, variables, opts);
131
144
  headers['X-Debug'] = 'enable';
package/dist/index.d.ts CHANGED
@@ -3,13 +3,13 @@ import type Router from './routing/Router.js';
3
3
  import type SsrCache from './ssr/SsrCache.js';
4
4
  import type Site from './routing/Site.js';
5
5
  import type GraphQl from './graphql/GraphQl.js';
6
- import Crelte, { type QueryOptions } from './Crelte.js';
6
+ import Crelte, { type QueryOptions, type Config } from './Crelte.js';
7
7
  import CrelteRequest from './CrelteRequest.js';
8
- import type { Global, GlobalData } from './loadData/Globals.js';
8
+ import type { Global } from './loadData/Globals.js';
9
9
  import type { Cookies } from './cookies/index.js';
10
10
  import type { Readable } from 'crelte-std/stores';
11
11
  import { LoadData, LoadDataArray, LoadDataFn, LoadDataObj } from './loadData/index.js';
12
- export { Crelte, CrelteRequest, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
12
+ export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
13
13
  /**
14
14
  * Get Crelte from the current context
15
15
  *
@@ -83,7 +83,7 @@ export declare function getLoadingProgress(): Readable<number>;
83
83
  * ## Note
84
84
  * This only works during component initialisation.
85
85
  */
86
- export declare function getGlobal<T extends GlobalData>(name: string): Global<T> | null;
86
+ export declare function getGlobal<T = any>(name: string): Global<T> | null;
87
87
  /**
88
88
  * returns the cookies instance
89
89
  *
@@ -91,6 +91,12 @@ export declare function getGlobal<T extends GlobalData>(name: string): Global<T>
91
91
  * This only works during component initialisation.
92
92
  */
93
93
  export declare function getCookies(): Cookies;
94
+ /**
95
+ * Listen for route changes
96
+ *
97
+ * ## Note
98
+ * This only works during component initialisation.
99
+ */
94
100
  export declare function onRoute(fn: (route: Route, crelte: Crelte) => void): void;
95
101
  /**
96
102
  * Listen for requests
@@ -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,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,MAAM,aAAa,CAAC;AACxD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,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,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,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAExC;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,SAAS,UAAU,EAC7C,IAAI,EAAE,MAAM,GACV,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAElB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,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;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;;;;;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
@@ -45,6 +45,9 @@ export function getGraphQl() {
45
45
  * This only works during component initialisation.
46
46
  */
47
47
  export function getRoute() {
48
+ // the route will never be null because it is only null in the
49
+ // first loadData call and that happens before any component
50
+ // initialisation
48
51
  return getRouter().route;
49
52
  }
50
53
  /**
@@ -54,6 +57,9 @@ export function getRoute() {
54
57
  * This only works during component initialisation.
55
58
  */
56
59
  export function getSite() {
60
+ // the site will never be null because it is only null in the
61
+ // first loadData call and that happens before any component
62
+ // initialisation
57
63
  return getRouter().site;
58
64
  }
59
65
  export function getEnv(name) {
@@ -84,7 +90,7 @@ export function getLoadingProgress() {
84
90
  * This only works during component initialisation.
85
91
  */
86
92
  export function getGlobal(name) {
87
- return getCrelte().globals.get(name) ?? null;
93
+ return getCrelte().globals.getStore(name);
88
94
  }
89
95
  /**
90
96
  * returns the cookies instance
@@ -95,6 +101,12 @@ export function getGlobal(name) {
95
101
  export function getCookies() {
96
102
  return getCrelte().cookies;
97
103
  }
104
+ /**
105
+ * Listen for route changes
106
+ *
107
+ * ## Note
108
+ * This only works during component initialisation.
109
+ */
98
110
  export function onRoute(fn) {
99
111
  const crelte = getCrelte();
100
112
  const rmListener = crelte.router.onRoute(route => {
@@ -11,25 +11,6 @@ export type MainData = {
11
11
  entryQuery: GraphQlQuery;
12
12
  /** The global query from queries/global.graphql */
13
13
  globalQuery?: GraphQlQuery;
14
- /**
15
- * Preload pages on mouse over
16
- * @default false
17
- */
18
- preloadOnMouseOver?: boolean;
19
- /**
20
- * Use view transitions
21
- * @default false
22
- */
23
- viewTransition?: boolean;
24
- /**
25
- * Play the intro animation
26
- * @default false
27
- */
28
- playIntro?: boolean;
29
- /** Enable graphql query debugging */
30
- graphQlDebug?: boolean;
31
- /** Enable request and render timing measurement */
32
- debugTiming?: boolean;
33
14
  };
34
15
  /**
35
16
  * The main function to start the client side rendering
@@ -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;IAI3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAIpB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAYF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,QA0IlC"}
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"}
@@ -6,6 +6,7 @@ const mainDataDefault = {
6
6
  preloadOnMouseOver: false,
7
7
  viewTransition: false,
8
8
  playIntro: false,
9
+ XCraftSiteHeader: false,
9
10
  // will be passed down to ClientRenderer
10
11
  graphQlDebug: false,
11
12
  debugTiming: false,
@@ -43,18 +44,13 @@ export function main(data) {
43
44
  // loadTemplate
44
45
  // update
45
46
  // construct Crelte
46
- const builder = new CrelteBuilder();
47
+ const builder = new CrelteBuilder(data.app.config ?? {});
47
48
  const endpoint = builder.ssrCache.get('ENDPOINT_URL');
48
- builder.setupGraphQl(endpoint, {
49
- debug: data.graphQlDebug,
50
- debugTiming: data.debugTiming,
51
- });
49
+ builder.setupGraphQl(endpoint);
52
50
  // on the client the cookies are always coming from document.cookie
53
51
  builder.setupCookies('');
54
52
  const csites = builder.ssrCache.get('crelteSites');
55
- builder.setupRouter(csites, {
56
- preloadOnMouseOver: data.preloadOnMouseOver,
57
- });
53
+ builder.setupRouter(csites);
58
54
  const crelte = builder.build();
59
55
  const serverError = crelte.ssrCache.get('ERROR');
60
56
  if (serverError) {
@@ -84,7 +80,7 @@ export function main(data) {
84
80
  props,
85
81
  hydrate: true,
86
82
  context: crelte._getContext(),
87
- intro: data.playIntro,
83
+ intro: builder.config.playIntro,
88
84
  });
89
85
  }
90
86
  else {
@@ -98,7 +94,8 @@ export function main(data) {
98
94
  if (!success) {
99
95
  // if this is not the first load we should reload the page
100
96
  // we don't reload everytime because this might cause a reload loop
101
- // and since the first load will probably just contain ssrCache data in almost all cases the first load will never faill
97
+ // and since the first load will probably just contain ssrCache data
98
+ // in almost all cases the first load will never faill
102
99
  if (!isFirstLoad) {
103
100
  // the load might contain a js error and we prefer the error
104
101
  // page
@@ -108,7 +105,7 @@ export function main(data) {
108
105
  return handleLoadError(readyForProps());
109
106
  }
110
107
  const cr = new CrelteRequest(crelte, req);
111
- const startTime = data.debugTiming ? Date.now() : null;
108
+ const startTime = builder.config.debugTiming ? Date.now() : null;
112
109
  let render = async () => {
113
110
  // we should trigger the route update here
114
111
  pluginsBeforeRender(cr);
@@ -121,7 +118,7 @@ export function main(data) {
121
118
  crelte.router._internal.domReady(cr.req);
122
119
  };
123
120
  // render with view Transition if enabled and not in hydration
124
- if (data.viewTransition &&
121
+ if (builder.config.viewTransition &&
125
122
  appInstance &&
126
123
  document.startViewTransition) {
127
124
  render = () => document.startViewTransition(render);
@@ -23,10 +23,6 @@ export type MainData = {
23
23
  globalQuery?: GraphQlQuery;
24
24
  /** Server data provided by crelte-node */
25
25
  serverData: ServerData;
26
- /** Enable graphql query debugging */
27
- graphQlDebug?: boolean;
28
- /** Enable request and render timing measurement */
29
- debugTiming?: boolean;
30
26
  };
31
27
  /**
32
28
  * The main function to start the server side rendering
@@ -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;IAIvB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,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,CA6ED;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,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"}