crelte 0.5.0-alpha.8 → 0.5.0-alpha.9

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 (40) hide show
  1. package/dist/entry/EntryRouter.d.ts +2 -2
  2. package/dist/entry/EntryRouter.d.ts.map +1 -1
  3. package/dist/entry/index.d.ts +2 -0
  4. package/dist/entry/index.d.ts.map +1 -1
  5. package/dist/entry/index.js +38 -0
  6. package/dist/graphql/GraphQl.d.ts +2 -0
  7. package/dist/graphql/GraphQl.d.ts.map +1 -1
  8. package/dist/graphql/GraphQl.js +5 -2
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/init/client.d.ts.map +1 -1
  12. package/dist/init/client.js +6 -0
  13. package/dist/init/shared.d.ts +0 -3
  14. package/dist/init/shared.d.ts.map +1 -1
  15. package/dist/init/shared.js +1 -37
  16. package/dist/plugins/Events.d.ts +2 -1
  17. package/dist/plugins/Events.d.ts.map +1 -1
  18. package/dist/routing/BaseRouter.d.ts +2 -1
  19. package/dist/routing/BaseRouter.d.ts.map +1 -1
  20. package/dist/routing/ClientRouter.d.ts.map +1 -1
  21. package/dist/routing/ClientRouter.js +4 -12
  22. package/dist/routing/Route.d.ts +2 -1
  23. package/dist/routing/Route.d.ts.map +1 -1
  24. package/dist/routing/Router.js +1 -1
  25. package/dist/routing/index.d.ts +2 -1
  26. package/dist/routing/index.d.ts.map +1 -1
  27. package/dist/routing/index.js +2 -1
  28. package/package.json +1 -1
  29. package/src/entry/EntryRouter.ts +2 -2
  30. package/src/entry/index.ts +49 -0
  31. package/src/graphql/GraphQl.ts +5 -2
  32. package/src/index.ts +0 -1
  33. package/src/init/client.ts +6 -0
  34. package/src/init/shared.ts +2 -48
  35. package/src/plugins/Events.ts +2 -1
  36. package/src/routing/BaseRouter.ts +2 -1
  37. package/src/routing/ClientRouter.ts +4 -12
  38. package/src/routing/Route.ts +2 -1
  39. package/src/routing/Router.ts +1 -1
  40. package/src/routing/index.ts +2 -0
@@ -1,6 +1,6 @@
1
1
  import { Pattern } from 'trouter';
2
- import { Crelte, CrelteRequest, Entry, QueryOptions } from '../index.js';
3
- import { CrelteEntryRequest } from './index.js';
2
+ import { Crelte, CrelteRequest, QueryOptions } from '../index.js';
3
+ import { CrelteEntryRequest, Entry } from './index.js';
4
4
  import { GraphQlQuery } from '../graphql/GraphQl.js';
5
5
  export type EntryRouteHandler = (cr: CrelteEntryRequest) => Promise<Entry | null | undefined> | Entry | null | undefined | void;
6
6
  export type EntryRoutes = (router: EntryRouter) => Promise<void> | void;
@@ -1 +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"}
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,YAAY,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAC;AACrE,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"}
@@ -1,3 +1,4 @@
1
+ import { GraphQlQuery } from '../graphql/index.js';
1
2
  import { Crelte, CrelteRequest } from '../index.js';
2
3
  import { Request, RequestOptions, Site } from '../routing/index.js';
3
4
  import EntryRouter, { EntryRouteHandler, EntryRoutes } from './EntryRouter.js';
@@ -34,4 +35,5 @@ export declare class CrelteEntryRequest extends CrelteRequest {
34
35
  req: EntryRequest;
35
36
  constructor(inner: Crelte, req: EntryRequest);
36
37
  }
38
+ export declare function queryEntry(cr: CrelteRequest, entryQuery: GraphQlQuery): Promise<Entry>;
37
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,cAAc,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,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,cAAc,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,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;AAED,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,CAAC,CAiBhB"}
@@ -29,3 +29,41 @@ export class CrelteEntryRequest extends CrelteRequest {
29
29
  this.req = req;
30
30
  }
31
31
  }
32
+ export async function queryEntry(cr, entryQuery) {
33
+ if (!cr.req.siteMatches())
34
+ throw new Error('to run the entryQuery the request needs to have a matching site');
35
+ let uri = decodeURI(cr.req.uri);
36
+ if (uri.startsWith('/'))
37
+ uri = uri.substring(1);
38
+ if (uri === '' || uri === '/')
39
+ uri = '__home__';
40
+ const vars = {
41
+ uri,
42
+ siteId: cr.site.id,
43
+ };
44
+ const page = await cr.query(entryQuery, vars);
45
+ return getEntry(page) ?? ERROR_404_ENTRY;
46
+ }
47
+ const ERROR_404_ENTRY = {
48
+ sectionHandle: 'error',
49
+ typeHandle: '404',
50
+ };
51
+ /**
52
+ * Get the entry from the page
53
+ *
54
+ * entries should export sectionHandle and typeHandle
55
+ *
56
+ * products should alias productTypeHandle with typeHandle,
57
+ * sectionHandle will be automatically set to product
58
+ */
59
+ function getEntry(page) {
60
+ if (page?.entry)
61
+ return { ...page.entry };
62
+ if (page?.product)
63
+ return {
64
+ sectionHandle: 'product',
65
+ ...page.product,
66
+ };
67
+ return null;
68
+ }
69
+ // todo maybe move everything here to /loadData
@@ -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
+ bearerToken?: string;
38
39
  XCraftSiteHeader?: boolean;
39
40
  debug?: boolean;
40
41
  debugTiming?: boolean;
@@ -71,6 +72,7 @@ export default class GraphQl {
71
72
  private endpoint;
72
73
  private ssrCache;
73
74
  private listeners;
75
+ private bearerToken;
74
76
  private XCraftSiteHeader;
75
77
  private loggingRequests;
76
78
  private loggingTiming;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQl.d.ts","sourceRoot":"","sources":["../../src/graphql/GraphQl.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD,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,SAAS,GAAG,GAAG,CAAC;IACxB,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"}
1
+ {"version":3,"file":"GraphQl.d.ts","sourceRoot":"","sources":["../../src/graphql/GraphQl.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD,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,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,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,SAAS,GAAG,GAAG,CAAC;IACxB,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,WAAW,CAAgB;IACnC,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;IAY1B;;;;;;;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
+ bearerToken;
36
37
  XCraftSiteHeader;
37
38
  loggingRequests;
38
39
  loggingTiming;
@@ -43,6 +44,7 @@ export default class GraphQl {
43
44
  this.endpoint = endpoint;
44
45
  this.ssrCache = ssrCache;
45
46
  this.listeners = new Map();
47
+ this.bearerToken = opts?.bearerToken ?? null;
46
48
  this.XCraftSiteHeader = opts?.XCraftSiteHeader ?? false;
47
49
  this.loggingRequests = opts?.debug ?? false;
48
50
  this.loggingTiming = opts?.debugTiming ?? false;
@@ -137,8 +139,9 @@ export default class GraphQl {
137
139
  url += '?siteToken=' + opts.siteToken;
138
140
  const headers = opts?.headers ?? {};
139
141
  headers['Content-Type'] = 'application/json';
140
- if (opts?.bearerToken)
141
- headers['Authorization'] = 'Bearer ' + opts.bearerToken;
142
+ const bearerToken = opts?.bearerToken ?? this.bearerToken;
143
+ if (bearerToken)
144
+ headers['Authorization'] = 'Bearer ' + bearerToken;
142
145
  if (this.loggingRequests) {
143
146
  console.log('query to ', url, variables, opts);
144
147
  headers['X-Debug'] = 'enable';
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import type { Cookies } from './cookies/index.js';
9
9
  import type { Readable } from 'crelte-std/stores';
10
10
  import { LoadData, LoadDataArray, LoadDataFn, LoadDataObj } from './loadData/index.js';
11
11
  import { Entry } from './entry/index.js';
12
- export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, type Entry, };
12
+ export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, };
13
13
  export type Init = (crelte: Crelte) => void;
14
14
  /**
15
15
  * Get Crelte from the current context
@@ -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,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,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,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5C;;;;;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;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAK1C;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,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,QAKjD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,QAKxD"}
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,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,GAClB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5C;;;;;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;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAK1C;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,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,QAKjD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,QAKxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/init/client.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;CACf,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,iBAmJxC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/init/client.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;CACf,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,iBAyJxC"}
@@ -139,6 +139,12 @@ export async function main(data) {
139
139
  }
140
140
  return await render();
141
141
  };
142
+ // listen for a site change and update the lang attribute on the html tag
143
+ router.site.subscribe(site => {
144
+ if (!site)
145
+ return;
146
+ document.documentElement.lang = site.language;
147
+ });
142
148
  try {
143
149
  await router.init();
144
150
  }
@@ -1,7 +1,5 @@
1
1
  import Crelte from '../Crelte.js';
2
2
  import CrelteRequest from '../CrelteRequest.js';
3
- import { GraphQlQuery } from '../graphql/GraphQl.js';
4
- import { Entry } from '../index.js';
5
3
  import { PluginCreator } from '../plugins/Plugins.js';
6
4
  import { LoadOptions } from '../routing/LoadRunner.js';
7
5
  import InternalApp from './InternalApp.js';
@@ -10,5 +8,4 @@ export declare function setupPlugins(crelte: Crelte, plugins: PluginCreator[]):
10
8
  export declare function pluginsBeforeRequest(cr: CrelteRequest): Promise<void> | void;
11
9
  export declare function pluginsBeforeRender(cr: CrelteRequest, route: Route): void;
12
10
  export declare function loadFn(cr: CrelteRequest, app: InternalApp, loadOpts?: LoadOptions): Promise<void>;
13
- export declare function queryEntry(cr: CrelteRequest, entryQuery: GraphQlQuery): Promise<Entry>;
14
11
  //# 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,EAAkB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,WAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAGxC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAEzE;AAOD,wBAAsB,MAAM,CAC3B,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,WAAW,EAChB,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Gf;AAED,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,YAAY,GACtB,OAAO,CAAC,KAAK,CAAC,CAiBhB"}
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;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,WAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAIxC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAEzE;AAOD,wBAAsB,MAAM,CAC3B,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,WAAW,EAChB,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
@@ -2,6 +2,7 @@ import { isGraphQlQuery } from '../graphql/GraphQl.js';
2
2
  import { callLoadData } from '../loadData/index.js';
3
3
  import { isPromise } from '../utils.js';
4
4
  import { timeout } from 'crelte-std';
5
+ import { queryEntry } from '../entry/index.js';
5
6
  export function setupPlugins(crelte, plugins) {
6
7
  for (const plugin of plugins) {
7
8
  const p = plugin(crelte);
@@ -108,40 +109,3 @@ export async function loadFn(cr, app, loadOpts) {
108
109
  // loading progress is at 100%
109
110
  loadOpts?.setProgress(1);
110
111
  }
111
- export async function queryEntry(cr, entryQuery) {
112
- if (!cr.req.siteMatches())
113
- throw new Error('to run the entryQuery the request needs to have a matching site');
114
- let uri = decodeURI(cr.req.uri);
115
- if (uri.startsWith('/'))
116
- uri = uri.substring(1);
117
- if (uri === '' || uri === '/')
118
- uri = '__home__';
119
- const vars = {
120
- uri,
121
- siteId: cr.site.id,
122
- };
123
- const page = await cr.query(entryQuery, vars);
124
- return getEntry(page) ?? ERROR_404_ENTRY;
125
- }
126
- const ERROR_404_ENTRY = {
127
- sectionHandle: 'error',
128
- typeHandle: '404',
129
- };
130
- /**
131
- * Get the entry from the page
132
- *
133
- * entries should export sectionHandle and typeHandle
134
- *
135
- * products should alias productTypeHandle with typeHandle,
136
- * sectionHandle will be automatically set to product
137
- */
138
- function getEntry(page) {
139
- if (page?.entry)
140
- return { ...page.entry };
141
- if (page?.product)
142
- return {
143
- sectionHandle: 'product',
144
- ...page.product,
145
- };
146
- return null;
147
- }
@@ -1,4 +1,5 @@
1
- import { CrelteRequest, Entry } from '../index.js';
1
+ import { Entry } from '../entry/index.js';
2
+ import { CrelteRequest } from '../index.js';
2
3
  import { Route } from '../routing/index.js';
3
4
  export default class Events {
4
5
  inner: Map<string, Set<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../src/plugins/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAM7B;;;;;;;;;OASG;IAEH,EAAE,CACD,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC7C,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,GACrC,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,GACrC,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,GACnD,MAAM,IAAI;IACb,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAyBnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG;IAO1B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;IACzE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAChE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAChE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IACxE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE;CAqBpE"}
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../src/plugins/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAM7B;;;;;;;;;OASG;IAEH,EAAE,CACD,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC7C,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,GACrC,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,GACrC,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,GACnD,MAAM,IAAI;IACb,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAyBnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG;IAO1B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;IACzE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAChE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IAChE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IACxE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE;CAqBpE"}
@@ -7,8 +7,9 @@ import Request, { RequestOptions } from './Request.js';
7
7
  import Route from './Route.js';
8
8
  import Site, { SiteFromGraphQl } from './Site.js';
9
9
  import LoadRunner, { LoadRunnerOptions } from './LoadRunner.js';
10
- import { Entry, type CrelteRequest } from '../index.js';
10
+ import { type CrelteRequest } from '../index.js';
11
11
  import { Listeners } from 'crelte-std/sync';
12
+ import { Entry } from '../entry/index.js';
12
13
  export type BaseRouterOptions = {} & LoadRunnerOptions;
13
14
  export default class BaseRouter {
14
15
  sites: Site[];
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRouter.d.ts","sourceRoot":"","sources":["../../src/routing/BaseRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseRouter.d.ts","sourceRoot":"","sources":["../../src/routing/BaseRouter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../src/routing/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IACjC,kBAAkB,EAAE,OAAO,CAAC;CAC5B,GAAG,iBAAiB,CAAC;AAEtB,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IACnD,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,kBAAkB,CAAU;IAEpC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAEd,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB;IAQ/D;;OAEG;IACG,IAAI;IAaV;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA6ChD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAyBpD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IA8B7D;;;OAGG;IACG,qBAAqB,CAC1B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IASxB,MAAM;IAiGN,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;CAwEpD"}
1
+ {"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../src/routing/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IACjC,kBAAkB,EAAE,OAAO,CAAC;CAC5B,GAAG,iBAAiB,CAAC;AAEtB,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IACnD,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,kBAAkB,CAAU;IAEpC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAEd,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB;IAQ/D;;OAEG;IACG,IAAI;IAaV;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA6ChD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAqBpD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IA0B7D;;;OAGG;IACG,qBAAqB,CAC1B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IASxB,MAAM;IAiGN,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;CAwEpD"}
@@ -61,38 +61,30 @@ export default class ClientRouter extends BaseRouter {
61
61
  async pushRequest(req, _opts = {}) {
62
62
  const url = req.url;
63
63
  // todo a push should also store the previous scrollY
64
- let nReq = req;
65
64
  if (req.scrollY === null) {
66
65
  // if there is no scrollY stored we store the current scrollY
67
66
  // since a push does not cause a scroll top
68
67
  // todo: probably should refactor something probably
69
68
  // should not be here
70
- nReq = req.clone();
71
- nReq.scrollY = window.scrollY;
72
- // todo this does not work? nReq is never used
73
- // why not assign it without a clone?
69
+ req.scrollY = window.scrollY;
74
70
  }
75
71
  return await this.handleRequest(req, route => {
76
- window.history.pushState(route._toState(), url.pathname + url.search + url.hash);
72
+ window.history.pushState(route._toState(), '', url.pathname + url.search + url.hash);
77
73
  });
78
74
  }
79
75
  async replaceRequest(req, _opts = {}) {
80
76
  const url = req.url;
81
- let nReq = req;
82
77
  if (req.scrollY === null) {
83
78
  // if there is no scrollY stored we store the current scrollY
84
79
  // since a replace does not cause a scrollTo and we wan't
85
80
  // history back to work as intended
86
81
  // todo: probably should refactor something probably
87
82
  // should not be here
88
- nReq = req.clone();
89
- nReq.scrollY = window.scrollY;
90
- // todo this does not work? nReq is never used
91
- // why not assign it without a clone?
83
+ req.scrollY = window.scrollY;
92
84
  }
93
85
  try {
94
86
  return await this.handleRequest(req, () => {
95
- window.history.replaceState(req._toState(), url.pathname + url.search + url.hash);
87
+ window.history.replaceState(req._toState(), '', url.pathname + url.search + url.hash);
96
88
  });
97
89
  }
98
90
  catch (e) {
@@ -1,6 +1,7 @@
1
1
  import Site from './Site.js';
2
- import { Entry, LoadData } from '../index.js';
2
+ import { LoadData } from '../index.js';
3
3
  import BaseRoute, { RouteOrigin } from './BaseRoute.js';
4
+ import { Entry } from '../entry/index.js';
4
5
  export type RouteOptions = {
5
6
  entryChanged?: boolean;
6
7
  scrollY?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/routing/Route.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,cAAc;IAE9B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAC3C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGhC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;gBAEF,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,IAAI,GAAE,YAAiB;IAUxB;;;;;OAKG;IACH,KAAK;CAgBL;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAIlD"}
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/routing/Route.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,cAAc;IAE9B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAC3C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGhC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;gBAEF,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,IAAI,GAAE,YAAiB;IAUxB;;;;;OAKG;IACH,KAAK;CAgBL;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAIlD"}
@@ -261,7 +261,7 @@ export default class Router {
261
261
  targetOrUpdateToRequest(target, opts = {}) {
262
262
  // we have an update request
263
263
  if (typeof target === 'function') {
264
- const source = this._request ?? this.route.get();
264
+ const source = this._request?.clone() ?? this.route.get();
265
265
  if (!source) {
266
266
  // todo should we use the request here?
267
267
  throw new Error('route to update missing in first loadData call. ' +
@@ -2,5 +2,6 @@ import Router, { type UpdateRequest } from './Router.js';
2
2
  import Route, { type RouteOptions } from './Route.js';
3
3
  import Request, { type RequestOptions, type DelayRender } from './Request.js';
4
4
  import Site from './Site.js';
5
- export { Router, UpdateRequest, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, };
5
+ import BaseRoute from './BaseRoute.js';
6
+ export { Router, UpdateRequest, BaseRoute, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, };
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,OAAO,EAAE,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACN,MAAM,EACN,aAAa,EACb,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,GACd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,OAAO,EAAE,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,GACd,CAAC"}
@@ -2,4 +2,5 @@ import Router from './Router.js';
2
2
  import Route from './Route.js';
3
3
  import Request from './Request.js';
4
4
  import Site from './Site.js';
5
- export { Router, Route, Site, Request, };
5
+ import BaseRoute from './BaseRoute.js';
6
+ export { Router, BaseRoute, Route, Site, Request, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crelte",
3
- "version": "0.5.0-alpha.8",
3
+ "version": "0.5.0-alpha.9",
4
4
  "author": "Crelte <support@crelte.com>",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  import { Pattern, Trouter } from 'trouter';
2
- import { Crelte, CrelteRequest, Entry, QueryOptions } from '../index.js';
3
- import { CrelteEntryRequest, EntryRequest } from './index.js';
2
+ import { Crelte, CrelteRequest, QueryOptions } from '../index.js';
3
+ import { CrelteEntryRequest, Entry, EntryRequest } from './index.js';
4
4
  import { GraphQlQuery } from '../graphql/GraphQl.js';
5
5
 
6
6
  export type EntryRouteHandler = (
@@ -1,3 +1,4 @@
1
+ import { GraphQlQuery } from '../graphql/index.js';
1
2
  import { Crelte, CrelteRequest } from '../index.js';
2
3
  import { Request, RequestOptions, Site } from '../routing/index.js';
3
4
  import EntryRouter, { EntryRouteHandler, EntryRoutes } from './EntryRouter.js';
@@ -52,3 +53,51 @@ export class CrelteEntryRequest extends CrelteRequest {
52
53
  this.req = req;
53
54
  }
54
55
  }
56
+
57
+ export async function queryEntry(
58
+ cr: CrelteRequest,
59
+ entryQuery: GraphQlQuery,
60
+ ): Promise<Entry> {
61
+ if (!cr.req.siteMatches())
62
+ throw new Error(
63
+ 'to run the entryQuery the request needs to have a matching site',
64
+ );
65
+
66
+ let uri = decodeURI(cr.req.uri);
67
+ if (uri.startsWith('/')) uri = uri.substring(1);
68
+ if (uri === '' || uri === '/') uri = '__home__';
69
+
70
+ const vars = {
71
+ uri,
72
+ siteId: cr.site.id,
73
+ };
74
+
75
+ const page = await cr.query(entryQuery, vars);
76
+ return getEntry(page) ?? ERROR_404_ENTRY;
77
+ }
78
+
79
+ const ERROR_404_ENTRY: Entry = {
80
+ sectionHandle: 'error',
81
+ typeHandle: '404',
82
+ };
83
+
84
+ /**
85
+ * Get the entry from the page
86
+ *
87
+ * entries should export sectionHandle and typeHandle
88
+ *
89
+ * products should alias productTypeHandle with typeHandle,
90
+ * sectionHandle will be automatically set to product
91
+ */
92
+ function getEntry(page: any): Entry | null {
93
+ if (page?.entry) return { ...page.entry };
94
+ if (page?.product)
95
+ return {
96
+ sectionHandle: 'product',
97
+ ...page.product,
98
+ };
99
+
100
+ return null;
101
+ }
102
+
103
+ // todo maybe move everything here to /loadData
@@ -55,6 +55,7 @@ export class GraphQlError extends Error {
55
55
  * Options for the GraphQl class
56
56
  */
57
57
  export type GraphQlOptions = {
58
+ bearerToken?: string;
58
59
  XCraftSiteHeader?: boolean;
59
60
  debug?: boolean;
60
61
  debugTiming?: boolean;
@@ -98,6 +99,7 @@ export default class GraphQl {
98
99
  [(resp: unknown) => void, (error: unknown) => void][]
99
100
  >;
100
101
 
102
+ private bearerToken: string | null;
101
103
  private XCraftSiteHeader: boolean;
102
104
  private loggingRequests: boolean;
103
105
  private loggingTiming: boolean;
@@ -114,6 +116,7 @@ export default class GraphQl {
114
116
  this.ssrCache = ssrCache;
115
117
  this.listeners = new Map();
116
118
 
119
+ this.bearerToken = opts?.bearerToken ?? null;
117
120
  this.XCraftSiteHeader = opts?.XCraftSiteHeader ?? false;
118
121
  this.loggingRequests = opts?.debug ?? false;
119
122
  this.loggingTiming = opts?.debugTiming ?? false;
@@ -237,8 +240,8 @@ export default class GraphQl {
237
240
  const headers = opts?.headers ?? {};
238
241
  headers['Content-Type'] = 'application/json';
239
242
 
240
- if (opts?.bearerToken)
241
- headers['Authorization'] = 'Bearer ' + opts.bearerToken;
243
+ const bearerToken = opts?.bearerToken ?? this.bearerToken;
244
+ if (bearerToken) headers['Authorization'] = 'Bearer ' + bearerToken;
242
245
 
243
246
  if (this.loggingRequests) {
244
247
  console.log('query to ', url, variables, opts);
package/src/index.ts CHANGED
@@ -25,7 +25,6 @@ export {
25
25
  type LoadDataFn,
26
26
  type LoadDataObj,
27
27
  type LoadDataArray,
28
- type Entry,
29
28
  };
30
29
 
31
30
  export type Init = (crelte: Crelte) => void;
@@ -194,6 +194,12 @@ export async function main(data: MainData) {
194
194
  return await render();
195
195
  };
196
196
 
197
+ // listen for a site change and update the lang attribute on the html tag
198
+ router.site.subscribe(site => {
199
+ if (!site) return;
200
+ document.documentElement.lang = site.language;
201
+ });
202
+
197
203
  try {
198
204
  await router.init();
199
205
  } catch (e) {
@@ -1,7 +1,6 @@
1
1
  import Crelte from '../Crelte.js';
2
2
  import CrelteRequest from '../CrelteRequest.js';
3
- import { GraphQlQuery, isGraphQlQuery } from '../graphql/GraphQl.js';
4
- import { Entry } from '../index.js';
3
+ import { isGraphQlQuery } from '../graphql/GraphQl.js';
5
4
  import { callLoadData } from '../loadData/index.js';
6
5
  import { PluginCreator } from '../plugins/Plugins.js';
7
6
  import { LoadOptions } from '../routing/LoadRunner.js';
@@ -9,6 +8,7 @@ import { isPromise } from '../utils.js';
9
8
  import InternalApp, { TemplateModule } from './InternalApp.js';
10
9
  import Route from '../routing/Route.js';
11
10
  import { timeout } from 'crelte-std';
11
+ import { Entry, queryEntry } from '../entry/index.js';
12
12
 
13
13
  export function setupPlugins(crelte: Crelte, plugins: PluginCreator[]) {
14
14
  for (const plugin of plugins) {
@@ -148,49 +148,3 @@ export async function loadFn(
148
148
  // loading progress is at 100%
149
149
  loadOpts?.setProgress(1);
150
150
  }
151
-
152
- export async function queryEntry(
153
- cr: CrelteRequest,
154
- entryQuery: GraphQlQuery,
155
- ): Promise<Entry> {
156
- if (!cr.req.siteMatches())
157
- throw new Error(
158
- 'to run the entryQuery the request needs to have a matching site',
159
- );
160
-
161
- let uri = decodeURI(cr.req.uri);
162
- if (uri.startsWith('/')) uri = uri.substring(1);
163
- if (uri === '' || uri === '/') uri = '__home__';
164
-
165
- const vars = {
166
- uri,
167
- siteId: cr.site.id,
168
- };
169
-
170
- const page = await cr.query(entryQuery, vars);
171
- return getEntry(page) ?? ERROR_404_ENTRY;
172
- }
173
-
174
- const ERROR_404_ENTRY: Entry = {
175
- sectionHandle: 'error',
176
- typeHandle: '404',
177
- };
178
-
179
- /**
180
- * Get the entry from the page
181
- *
182
- * entries should export sectionHandle and typeHandle
183
- *
184
- * products should alias productTypeHandle with typeHandle,
185
- * sectionHandle will be automatically set to product
186
- */
187
- function getEntry(page: any): Entry | null {
188
- if (page?.entry) return { ...page.entry };
189
- if (page?.product)
190
- return {
191
- sectionHandle: 'product',
192
- ...page.product,
193
- };
194
-
195
- return null;
196
- }
@@ -1,4 +1,5 @@
1
- import { CrelteRequest, Entry } from '../index.js';
1
+ import { Entry } from '../entry/index.js';
2
+ import { CrelteRequest } from '../index.js';
2
3
  import { Route } from '../routing/index.js';
3
4
 
4
5
  export default class Events {
@@ -9,9 +9,10 @@ import Route from './Route.js';
9
9
  import Site, { SiteFromGraphQl, siteFromUrl } from './Site.js';
10
10
  import { matchAcceptLang } from './utils.js';
11
11
  import LoadRunner, { LoadRunnerOptions } from './LoadRunner.js';
12
- import { Entry, type CrelteRequest } from '../index.js';
12
+ import { type CrelteRequest } from '../index.js';
13
13
  import { Listeners } from 'crelte-std/sync';
14
14
  import { isPromise } from '../utils.js';
15
+ import { Entry } from '../entry/index.js';
15
16
 
16
17
  export type BaseRouterOptions = {} & LoadRunnerOptions;
17
18
 
@@ -90,22 +90,18 @@ export default class ClientRouter extends BaseRouter {
90
90
  const url = req.url;
91
91
  // todo a push should also store the previous scrollY
92
92
 
93
- let nReq = req;
94
93
  if (req.scrollY === null) {
95
94
  // if there is no scrollY stored we store the current scrollY
96
95
  // since a push does not cause a scroll top
97
96
  // todo: probably should refactor something probably
98
97
  // should not be here
99
- nReq = req.clone();
100
- nReq.scrollY = window.scrollY;
101
-
102
- // todo this does not work? nReq is never used
103
- // why not assign it without a clone?
98
+ req.scrollY = window.scrollY;
104
99
  }
105
100
 
106
101
  return await this.handleRequest(req, route => {
107
102
  window.history.pushState(
108
103
  route._toState(),
104
+ '',
109
105
  url.pathname + url.search + url.hash,
110
106
  );
111
107
  });
@@ -114,24 +110,20 @@ export default class ClientRouter extends BaseRouter {
114
110
  async replaceRequest(req: Request, _opts: RequestOptions = {}) {
115
111
  const url = req.url;
116
112
 
117
- let nReq = req;
118
113
  if (req.scrollY === null) {
119
114
  // if there is no scrollY stored we store the current scrollY
120
115
  // since a replace does not cause a scrollTo and we wan't
121
116
  // history back to work as intended
122
117
  // todo: probably should refactor something probably
123
118
  // should not be here
124
- nReq = req.clone();
125
- nReq.scrollY = window.scrollY;
126
-
127
- // todo this does not work? nReq is never used
128
- // why not assign it without a clone?
119
+ req.scrollY = window.scrollY;
129
120
  }
130
121
 
131
122
  try {
132
123
  return await this.handleRequest(req, () => {
133
124
  window.history.replaceState(
134
125
  req._toState(),
126
+ '',
135
127
  url.pathname + url.search + url.hash,
136
128
  );
137
129
  });
@@ -1,7 +1,8 @@
1
1
  import Site from './Site.js';
2
2
  import { objClone } from '../utils.js';
3
- import { Entry, LoadData } from '../index.js';
3
+ import { LoadData } from '../index.js';
4
4
  import BaseRoute, { RouteOrigin } from './BaseRoute.js';
5
+ import { Entry } from '../entry/index.js';
5
6
 
6
7
  export type RouteOptions = {
7
8
  entryChanged?: boolean;
@@ -314,7 +314,7 @@ export default class Router {
314
314
  ): Request | null {
315
315
  // we have an update request
316
316
  if (typeof target === 'function') {
317
- const source = this._request ?? this.route.get();
317
+ const source = this._request?.clone() ?? this.route.get();
318
318
  if (!source) {
319
319
  // todo should we use the request here?
320
320
  throw new Error(
@@ -2,10 +2,12 @@ import Router, { type UpdateRequest } from './Router.js';
2
2
  import Route, { type RouteOptions } from './Route.js';
3
3
  import Request, { type RequestOptions, type DelayRender } from './Request.js';
4
4
  import Site from './Site.js';
5
+ import BaseRoute from './BaseRoute.js';
5
6
 
6
7
  export {
7
8
  Router,
8
9
  UpdateRequest,
10
+ BaseRoute,
9
11
  Route,
10
12
  RouteOptions,
11
13
  Site,