crelte 0.2.2 → 0.3.0

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 (42) hide show
  1. package/dist/Crelte.d.ts +49 -9
  2. package/dist/Crelte.d.ts.map +1 -1
  3. package/dist/Crelte.js +30 -10
  4. package/dist/CrelteRequest.d.ts +3 -7
  5. package/dist/CrelteRequest.d.ts.map +1 -1
  6. package/dist/CrelteRequest.js +9 -15
  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 +15 -4
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +19 -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.map +1 -1
  25. package/dist/routing/InnerRouter.js +8 -2
  26. package/dist/routing/Router.d.ts +27 -2
  27. package/dist/routing/Router.d.ts.map +1 -1
  28. package/dist/routing/Router.js +31 -1
  29. package/dist/ssr/SsrCache.d.ts.map +1 -1
  30. package/dist/ssr/SsrCache.js +6 -1
  31. package/package.json +2 -2
  32. package/src/Crelte.ts +80 -13
  33. package/src/CrelteRequest.ts +14 -23
  34. package/src/graphql/GraphQl.ts +25 -6
  35. package/src/index.ts +30 -8
  36. package/src/init/client.ts +9 -40
  37. package/src/init/server.ts +2 -13
  38. package/src/init/shared.ts +8 -9
  39. package/src/loadData/Globals.ts +76 -93
  40. package/src/routing/InnerRouter.ts +9 -2
  41. package/src/routing/Router.ts +43 -9
  42. package/src/ssr/SsrCache.ts +6 -1
package/dist/Crelte.d.ts CHANGED
@@ -1,12 +1,45 @@
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 Globals, { Global } from './loadData/Globals.js';
4
4
  import Events from './plugins/Events.js';
5
5
  import Plugins, { Plugin } from './plugins/Plugins.js';
6
- import Router, { RouterOptions } from './routing/Router.js';
6
+ import Router from './routing/Router.js';
7
7
  import { SiteFromGraphQl } from './routing/Site.js';
8
8
  import SsrCache from './ssr/SsrCache.js';
9
+ export type Config = {
10
+ /**
11
+ * Preload pages on mouse over
12
+ * @default false
13
+ */
14
+ preloadOnMouseOver?: boolean;
15
+ /**
16
+ * Use view transitions
17
+ * @default false
18
+ */
19
+ viewTransition?: boolean;
20
+ /**
21
+ * Play the intro animation
22
+ * @default false
23
+ */
24
+ playIntro?: boolean;
25
+ /**
26
+ * Enable X-Craft-Site Header
27
+ * @default false
28
+ */
29
+ XCraftSiteHeader?: boolean;
30
+ /**
31
+ * Enable graphql query debugging
32
+ * @default false
33
+ */
34
+ debugGraphQl?: boolean;
35
+ /**
36
+ * Enable request and render timing measurement
37
+ * @default false
38
+ */
39
+ debugTiming?: boolean;
40
+ };
9
41
  export declare class CrelteBuilder {
42
+ config: Config;
10
43
  ssrCache: SsrCache;
11
44
  plugins: Plugins;
12
45
  events: Events;
@@ -14,9 +47,9 @@ export declare class CrelteBuilder {
14
47
  router?: Router;
15
48
  globals: Globals;
16
49
  cookies: Cookies;
17
- constructor();
18
- setupGraphQl(endpoint: string, opts?: GraphQlOptions): void;
19
- setupRouter(sites: SiteFromGraphQl[], opts?: RouterOptions): void;
50
+ constructor(config: Config);
51
+ setupGraphQl(endpoint: string): void;
52
+ setupRouter(sites: SiteFromGraphQl[]): void;
20
53
  setupCookies(cookies: string): void;
21
54
  build(): Crelte;
22
55
  }
@@ -40,11 +73,18 @@ export type QueryOptions = {
40
73
  * `ignoreStatusCode` is set to `true`
41
74
  */
42
75
  status?: number;
76
+ /**
77
+ * A GraphQl Token generated in Craft
78
+ */
79
+ bearerToken?: string;
43
80
  };
44
81
  /**
45
82
  * 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`
83
+ * in component initialisation via `getCrelte()`
84
+ *
85
+ * Crelte is stateless, which means it is not associated with
86
+ * a specific route or site. If you need a statefull crelte
87
+ * use the function `toCrelteRequest`
48
88
  */
49
89
  export default class Crelte {
50
90
  protected _ssrCache: SsrCache;
@@ -103,7 +143,7 @@ export default class Crelte {
103
143
  * always return null. In that context you should use
104
144
  * `CrelteRequest.getGlobalAsync`
105
145
  */
106
- getGlobal<T extends GlobalData>(name: string): Global<T> | null;
146
+ getGlobalStore<T = any>(name: string): Global<T> | null;
107
147
  /**
108
148
  * Run a GraphQl Query
109
149
  *
@@ -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
@@ -6,7 +6,16 @@ import Events from './plugins/Events.js';
6
6
  import Plugins from './plugins/Plugins.js';
7
7
  import Router from './routing/Router.js';
8
8
  import SsrCache from './ssr/SsrCache.js';
9
+ const defaultConfig = {
10
+ preloadOnMouseOver: false,
11
+ viewTransition: false,
12
+ playIntro: false,
13
+ XCraftSiteHeader: false,
14
+ debugGraphQl: false,
15
+ debugTiming: false,
16
+ };
9
17
  export class CrelteBuilder {
18
+ config;
10
19
  ssrCache;
11
20
  plugins;
12
21
  events;
@@ -14,7 +23,8 @@ export class CrelteBuilder {
14
23
  router;
15
24
  globals;
16
25
  cookies;
17
- constructor() {
26
+ constructor(config) {
27
+ this.config = { ...defaultConfig, ...config };
18
28
  this.ssrCache = new SsrCache();
19
29
  this.plugins = new Plugins();
20
30
  this.events = new Events();
@@ -24,11 +34,18 @@ export class CrelteBuilder {
24
34
  ? new ServerCookies()
25
35
  : new ClientCookies();
26
36
  }
27
- setupGraphQl(endpoint, opts = {}) {
28
- this.graphQl = new GraphQl(endpoint, this.ssrCache, opts);
37
+ setupGraphQl(endpoint) {
38
+ this.graphQl = new GraphQl(endpoint, this.ssrCache, {
39
+ XCraftSiteHeader: this.config.XCraftSiteHeader,
40
+ debug: this.config.debugGraphQl,
41
+ debugTiming: this.config.debugTiming,
42
+ });
29
43
  }
30
- setupRouter(sites, opts = {}) {
31
- this.router = new Router(sites, opts);
44
+ setupRouter(sites) {
45
+ this.router = new Router(sites, {
46
+ preloadOnMouseOver: this.config.preloadOnMouseOver,
47
+ debugTiming: this.config.debugTiming,
48
+ });
32
49
  }
33
50
  setupCookies(cookies) {
34
51
  this.cookies._init(cookies);
@@ -39,8 +56,11 @@ export class CrelteBuilder {
39
56
  }
40
57
  /**
41
58
  * 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`
59
+ * in component initialisation via `getCrelte()`
60
+ *
61
+ * Crelte is stateless, which means it is not associated with
62
+ * a specific route or site. If you need a statefull crelte
63
+ * use the function `toCrelteRequest`
44
64
  */
45
65
  export default class Crelte {
46
66
  _ssrCache;
@@ -120,8 +140,8 @@ export default class Crelte {
120
140
  * always return null. In that context you should use
121
141
  * `CrelteRequest.getGlobalAsync`
122
142
  */
123
- getGlobal(name) {
124
- return this.globals.get(name) ?? null;
143
+ getGlobalStore(name) {
144
+ return this.globals.getStore(name) ?? null;
125
145
  }
126
146
  /**
127
147
  * Run a GraphQl Query
@@ -134,7 +154,7 @@ export default class Crelte {
134
154
  async query(query, variables = {}, opts = {}) {
135
155
  // this function is added as convenience
136
156
  return this.graphQl.query(query, variables, {
137
- route: this.router.route.get(),
157
+ route: this.router.route.get() ?? undefined,
138
158
  ...opts,
139
159
  });
140
160
  }
@@ -3,13 +3,11 @@ 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
@@ -21,7 +19,7 @@ export default class CrelteRequest extends Crelte {
21
19
  * If you provide a route it must contain a site or you must
22
20
  * provide one,
23
21
  */
24
- static fromCrelte(inner: Crelte, req?: Route | Request): CrelteRequest;
22
+ static fromCrelte(inner: Crelte | CrelteRequest, req?: Route | Request): CrelteRequest;
25
23
  /**
26
24
  * Get the current request
27
25
  * @deprecated
@@ -44,7 +42,7 @@ export default class CrelteRequest extends Crelte {
44
42
  * always return null. In that context you should use
45
43
  * `.getGlobalAsync`
46
44
  */
47
- getGlobal<T extends GlobalData>(name: string): T | null;
45
+ getGlobal<T = any>(name: string): T | null;
48
46
  /**
49
47
  * Get a globalSet and wait until it is loaded
50
48
  *
@@ -52,7 +50,7 @@ export default class CrelteRequest extends Crelte {
52
50
  * This is only useful in loadGlobalData in all other cases
53
51
  * you can use `.getGlobal` which does return a Promise
54
52
  */
55
- getGlobalAsync<T extends GlobalData>(name: string): Promise<T | null>;
53
+ getGlobalAsync<T = any>(name: string): Promise<T | null>;
56
54
  /**
57
55
  * Run a GraphQl Query
58
56
  *
@@ -62,7 +60,5 @@ export default class CrelteRequest extends Crelte {
62
60
  * graphql query
63
61
  */
64
62
  query(query: GraphQlQuery, variables?: Record<string, unknown>, opts?: QueryOptions): Promise<unknown>;
65
- /** @hidden */
66
- _globalDataLoaded(): void;
67
63
  }
68
64
  //# 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;;;;;;;;;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"}
@@ -5,11 +5,9 @@ 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
@@ -22,8 +20,13 @@ export default class CrelteRequest extends Crelte {
22
20
  * provide one,
23
21
  */
24
22
  static fromCrelte(inner, req) {
23
+ if (inner instanceof CrelteRequest && !req)
24
+ return inner;
25
25
  if (!req) {
26
- req = inner.router.route.get();
26
+ req = inner.router.route.get() ?? undefined;
27
+ // this will only occur in the first loadData call
28
+ if (!req)
29
+ throw new Error('router does not contain a route');
27
30
  }
28
31
  return new CrelteRequest(inner, req instanceof Request ? req : Request.fromRoute(req));
29
32
  }
@@ -32,6 +35,7 @@ export default class CrelteRequest extends Crelte {
32
35
  * @deprecated
33
36
  */
34
37
  get route() {
38
+ console.warn('CrelteRequest.route is deprecated, use .req instead');
35
39
  return this.req;
36
40
  }
37
41
  /**
@@ -54,7 +58,7 @@ export default class CrelteRequest extends Crelte {
54
58
  * `.getGlobalAsync`
55
59
  */
56
60
  getGlobal(name) {
57
- return this.innerGlobals.get(name) ?? null;
61
+ return this.globals.get(name, this.site.id);
58
62
  }
59
63
  /**
60
64
  * Get a globalSet and wait until it is loaded
@@ -64,13 +68,7 @@ export default class CrelteRequest extends Crelte {
64
68
  * you can use `.getGlobal` which does return a Promise
65
69
  */
66
70
  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);
71
+ return this.globals.getAsync(name, this.site.id);
74
72
  }
75
73
  /**
76
74
  * Run a GraphQl Query
@@ -87,8 +85,4 @@ export default class CrelteRequest extends Crelte {
87
85
  ...opts,
88
86
  });
89
87
  }
90
- /** @hidden */
91
- _globalDataLoaded() {
92
- this.innerGlobals = this.globals._globalsBySite(this.site.id);
93
- }
94
88
  }
@@ -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
@@ -1,15 +1,16 @@
1
1
  import type Route from './routing/Route.js';
2
+ import type Request from './routing/Request.js';
2
3
  import type Router from './routing/Router.js';
3
4
  import type SsrCache from './ssr/SsrCache.js';
4
5
  import type Site from './routing/Site.js';
5
6
  import type GraphQl from './graphql/GraphQl.js';
6
- import Crelte, { type QueryOptions } from './Crelte.js';
7
+ import Crelte, { type QueryOptions, type Config } from './Crelte.js';
7
8
  import CrelteRequest from './CrelteRequest.js';
8
- import type { Global, GlobalData } from './loadData/Globals.js';
9
+ import type { Global } from './loadData/Globals.js';
9
10
  import type { Cookies } from './cookies/index.js';
10
11
  import type { Readable } from 'crelte-std/stores';
11
12
  import { LoadData, LoadDataArray, LoadDataFn, LoadDataObj } from './loadData/index.js';
12
- export { Crelte, CrelteRequest, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
13
+ export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
13
14
  /**
14
15
  * Get Crelte from the current context
15
16
  *
@@ -83,7 +84,7 @@ export declare function getLoadingProgress(): Readable<number>;
83
84
  * ## Note
84
85
  * This only works during component initialisation.
85
86
  */
86
- export declare function getGlobal<T extends GlobalData>(name: string): Global<T> | null;
87
+ export declare function getGlobal<T = any>(name: string): Global<T> | null;
87
88
  /**
88
89
  * returns the cookies instance
89
90
  *
@@ -91,6 +92,16 @@ export declare function getGlobal<T extends GlobalData>(name: string): Global<T>
91
92
  * This only works during component initialisation.
92
93
  */
93
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
+ /**
100
+ * Listen for route changes
101
+ *
102
+ * ## Note
103
+ * This only works during component initialisation.
104
+ */
94
105
  export declare function onRoute(fn: (route: Route, crelte: Crelte) => void): void;
95
106
  /**
96
107
  * 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,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"}
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,18 @@ export function getGlobal(name) {
95
101
  export function getCookies() {
96
102
  return getCrelte().cookies;
97
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
+ /**
111
+ * Listen for route changes
112
+ *
113
+ * ## Note
114
+ * This only works during component initialisation.
115
+ */
98
116
  export function onRoute(fn) {
99
117
  const crelte = getCrelte();
100
118
  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"}
@@ -25,7 +25,7 @@ import { gql } from '../graphql/GraphQl.js';
25
25
  * ```
26
26
  */
27
27
  export async function main(data) {
28
- const builder = new CrelteBuilder();
28
+ const builder = new CrelteBuilder(data.app.config ?? {});
29
29
  // setup viteEnv
30
30
  data.serverData.viteEnv.forEach((v, k) => {
31
31
  builder.ssrCache.set(k, v);
@@ -33,10 +33,7 @@ export async function main(data) {
33
33
  const endpoint = data.serverData.endpoint;
34
34
  builder.ssrCache.set('ENDPOINT_URL', endpoint);
35
35
  builder.ssrCache.set('CRAFT_WEB_URL', data.serverData.craftWeb);
36
- builder.setupGraphQl(endpoint, {
37
- debug: data.graphQlDebug,
38
- debugTiming: data.debugTiming,
39
- });
36
+ builder.setupGraphQl(endpoint);
40
37
  const cookies = data.serverData.cookies ?? '';
41
38
  builder.setupCookies(cookies);
42
39
  const csites = await loadSites(builder, data.serverData);