crelte 0.5.15 → 0.6.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/blocks/Blocks.svelte +5 -4
  2. package/dist/blocks/Blocks.svelte.d.ts +4 -19
  3. package/dist/blocks/Blocks.svelte.d.ts.map +1 -1
  4. package/dist/crelte.d.ts +2 -2
  5. package/dist/crelte.d.ts.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/init/InternalApp.d.ts.map +1 -1
  9. package/dist/init/InternalApp.js +2 -2
  10. package/dist/init/server.js +4 -4
  11. package/dist/loadData/loadData.d.ts +1 -1
  12. package/dist/loadData/loadData.d.ts.map +1 -1
  13. package/dist/node/index.d.ts.map +1 -1
  14. package/dist/node/index.js +15 -11
  15. package/dist/queries/Queries.d.ts +16 -27
  16. package/dist/queries/Queries.d.ts.map +1 -1
  17. package/dist/queries/Queries.js +13 -20
  18. package/dist/queries/gql.d.ts +2 -2
  19. package/dist/queries/gql.d.ts.map +1 -1
  20. package/dist/queries/gql.js +3 -2
  21. package/dist/queries/index.d.ts +13 -13
  22. package/dist/queries/index.d.ts.map +1 -1
  23. package/dist/queries/index.js +2 -2
  24. package/dist/queries/vars.d.ts +3 -3
  25. package/dist/queries/vars.d.ts.map +1 -1
  26. package/dist/queries/vars.js +3 -3
  27. package/dist/routing/route/BaseRoute.d.ts +4 -0
  28. package/dist/routing/route/BaseRoute.d.ts.map +1 -1
  29. package/dist/routing/route/BaseRoute.js +6 -0
  30. package/dist/routing/router/BaseRouter.d.ts.map +1 -1
  31. package/dist/routing/router/BaseRouter.js +4 -3
  32. package/dist/routing/router/ClientRouter.d.ts +1 -0
  33. package/dist/routing/router/ClientRouter.d.ts.map +1 -1
  34. package/dist/routing/router/ClientRouter.js +22 -7
  35. package/dist/server/CrelteServer.d.ts +1 -1
  36. package/dist/server/CrelteServer.d.ts.map +1 -1
  37. package/dist/server/ServerRouter.d.ts +1 -1
  38. package/dist/server/ServerRouter.d.ts.map +1 -1
  39. package/dist/server/queries/QueriesCaching.d.ts +0 -1
  40. package/dist/server/queries/QueriesCaching.d.ts.map +1 -1
  41. package/dist/server/queries/QueriesCaching.js +0 -2
  42. package/dist/server/queries/QueryGqlRoute.d.ts +2 -0
  43. package/dist/server/queries/QueryGqlRoute.d.ts.map +1 -1
  44. package/dist/server/queries/QueryGqlRoute.js +22 -14
  45. package/dist/server/queries/QueryHandleRoute.d.ts +1 -2
  46. package/dist/server/queries/QueryHandleRoute.d.ts.map +1 -1
  47. package/dist/server/queries/QueryHandleRoute.js +2 -2
  48. package/dist/server/queries/queries.d.ts.map +1 -1
  49. package/dist/server/queries/queries.js +2 -1
  50. package/dist/server/queries/routes.d.ts +3 -4
  51. package/dist/server/queries/routes.d.ts.map +1 -1
  52. package/dist/server/queries/routes.js +3 -3
  53. package/dist/server/shared.d.ts +5 -4
  54. package/dist/server/shared.d.ts.map +1 -1
  55. package/dist/server/shared.js +26 -16
  56. package/dist/ssr/SsrCache.d.ts +2 -2
  57. package/dist/ssr/SsrCache.d.ts.map +1 -1
  58. package/dist/ssr/SsrCache.js +10 -16
  59. package/dist/std/encdec/escaping.d.ts +2 -0
  60. package/dist/std/encdec/escaping.d.ts.map +1 -0
  61. package/dist/std/encdec/escaping.js +41 -0
  62. package/dist/std/encdec/index.d.ts +13 -0
  63. package/dist/std/encdec/index.d.ts.map +1 -0
  64. package/dist/std/encdec/index.js +15 -0
  65. package/dist/std/index.d.ts.map +1 -1
  66. package/dist/utils.d.ts +1 -0
  67. package/dist/utils.d.ts.map +1 -1
  68. package/dist/utils.js +17 -0
  69. package/dist/vite/index.d.ts +1 -5
  70. package/dist/vite/index.d.ts.map +1 -1
  71. package/dist/vite/index.js +39 -79
  72. package/package.json +12 -7
  73. package/src/blocks/Blocks.svelte +4 -3
  74. package/src/crelte.ts +2 -2
  75. package/src/index.ts +2 -2
  76. package/src/init/InternalApp.ts +3 -4
  77. package/src/init/server.ts +4 -4
  78. package/src/loadData/loadData.ts +0 -2
  79. package/src/node/index.ts +24 -9
  80. package/src/queries/Queries.ts +31 -36
  81. package/src/queries/gql.ts +7 -3
  82. package/src/queries/index.ts +19 -16
  83. package/src/queries/vars.ts +5 -7
  84. package/src/routing/route/BaseRoute.ts +8 -7
  85. package/src/routing/router/BaseRouter.ts +6 -3
  86. package/src/routing/router/ClientRouter.ts +29 -8
  87. package/src/server/CrelteServer.ts +1 -1
  88. package/src/server/ServerRouter.ts +1 -1
  89. package/src/server/queries/QueriesCaching.ts +0 -2
  90. package/src/server/queries/QueryGqlRoute.ts +24 -20
  91. package/src/server/queries/QueryHandleRoute.ts +2 -6
  92. package/src/server/queries/queries.ts +2 -3
  93. package/src/server/queries/routes.ts +9 -6
  94. package/src/server/shared.ts +34 -16
  95. package/src/ssr/SsrCache.ts +13 -23
  96. package/src/std/encdec/escaping.ts +47 -0
  97. package/src/std/encdec/index.ts +16 -0
  98. package/src/std/index.ts +1 -6
  99. package/src/utils.ts +21 -0
  100. package/src/vite/index.ts +51 -87
  101. package/types.d.ts +1 -1
@@ -240,6 +240,12 @@ export default class BaseRoute {
240
240
  this.z_context[key] = value;
241
241
  }
242
242
  }
243
+ /**
244
+ * Returns the site preview token, or null if it is missing or empty.
245
+ */
246
+ getSiteToken() {
247
+ return this.search.get('siteToken') || null;
248
+ }
243
249
  /**
244
250
  * Returns true if the route is in live preview mode
245
251
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/BaseRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/BaseRouter.ts"],"names":[],"mappings":"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"}
@@ -175,9 +175,10 @@ export default class BaseRouter {
175
175
  async preload(target) {
176
176
  const req = this.targetToRequest(target, { origin: 'preload' });
177
177
  const current = this.route.get();
178
- // if the origin matches, the route will be able to be loaded
179
- // so let's preload it
180
- if (current && current.url.origin === req.url.origin) {
178
+ // Preload only within the current origin and site preview context.
179
+ if (current &&
180
+ current.url.origin === req.url.origin &&
181
+ current.getSiteToken() === req.getSiteToken()) {
181
182
  // todo i don't wan't to send a CrelteRequest?
182
183
  // todo, it would be nice if this could not have any side effects
183
184
  // but at the moment cr.router.open will cause a redirect
@@ -22,6 +22,7 @@ export default class ClientRouter extends BaseRouter {
22
22
  pushRequest(req: Request, _opts?: RequestOptions): Promise<void | Route>;
23
23
  replaceRequest(req: Request, _opts?: RequestOptions): Promise<void | Route>;
24
24
  back(): void;
25
+ private requiresPageLoad;
25
26
  /**
26
27
  * This returns a route if it was handled else if an error occured
27
28
  * or the request was cancelled returns void
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,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,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;gBAE5B,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB;IAQ/D;;OAEG;IACG,IAAI;IA8BV;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA6ChD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAYpD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAY7D,IAAI,IAAI,IAAI;IAIZ;;;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;IAkEN,QAAQ;IAgCR,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;CA8DpD"}
1
+ {"version":3,"file":"ClientRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/router/ClientRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,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,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;gBAE5B,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB;IAS/D;;OAEG;IACG,IAAI;IA8BV;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAuChD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAiBpD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IAiB7D,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,gBAAgB;IASxB;;;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;IAuEN,QAAQ;IAgCR,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;CAgEpD"}
@@ -59,11 +59,7 @@ export default class ClientRouter extends BaseRouter {
59
59
  window.history.replaceState(current.z_toState(), '');
60
60
  }
61
61
  }
62
- // if the domain of the current site is different than the domain of the
63
- // new site we need to do a window.location.href call
64
- if ((current && current.url.origin !== req.url.origin) ||
65
- // @ts-ignore
66
- import.meta.env.SSR) {
62
+ if (this.requiresPageLoad(req)) {
67
63
  window.location.href = req.url.href;
68
64
  return;
69
65
  }
@@ -75,12 +71,20 @@ export default class ClientRouter extends BaseRouter {
75
71
  }
76
72
  async pushRequest(req, _opts = {}) {
77
73
  const url = req.url;
74
+ if (this.requiresPageLoad(req)) {
75
+ window.location.href = url.href;
76
+ return;
77
+ }
78
78
  return this.handleRequest(req, route => {
79
79
  window.history.pushState(route.z_toState(), '', url.pathname + url.search + url.hash);
80
80
  });
81
81
  }
82
82
  async replaceRequest(req, _opts = {}) {
83
83
  const url = req.url;
84
+ if (this.requiresPageLoad(req)) {
85
+ window.location.replace(url.href);
86
+ return;
87
+ }
84
88
  return this.handleRequest(req, () => {
85
89
  window.history.replaceState(req.z_toState(), '', url.pathname + url.search + url.hash);
86
90
  });
@@ -88,6 +92,12 @@ export default class ClientRouter extends BaseRouter {
88
92
  back() {
89
93
  window.history.back();
90
94
  }
95
+ requiresPageLoad(req) {
96
+ const current = this.route.get();
97
+ return (!!current &&
98
+ (current.url.origin !== req.url.origin ||
99
+ current.getSiteToken() !== req.getSiteToken()));
100
+ }
91
101
  /**
92
102
  * This returns a route if it was handled else if an error occured
93
103
  * or the request was cancelled returns void
@@ -147,6 +157,10 @@ export default class ClientRouter extends BaseRouter {
147
157
  origin: 'pop',
148
158
  });
149
159
  req.z_fillFromState(e.state);
160
+ if (this.requiresPageLoad(req)) {
161
+ window.location.reload();
162
+ return;
163
+ }
150
164
  // todo handle errors
151
165
  this.handleRequest(req, () => { });
152
166
  });
@@ -183,8 +197,9 @@ export default class ClientRouter extends BaseRouter {
183
197
  // this is called after the route was set
184
198
  updateScroll(cr, _route) {
185
199
  const req = cr.req;
186
- if (req.disableScroll)
187
- return;
200
+ if (req.disableScroll) {
201
+ return this.onScroll(); // make sure the current scrollY get's stored to the history
202
+ }
188
203
  // scroll to target
189
204
  let scrollTo = null;
190
205
  // if we have a hash and the route was not visited
@@ -51,7 +51,7 @@ export default class CrelteServerRequest {
51
51
  * returns an env variable from the craft/.env file.
52
52
  */
53
53
  getEnv(name: 'ENDPOINT_URL'): string;
54
- getEnv(name: 'CRAFT_WEB_URL'): string;
54
+ getEnv(name: 'CRAFT_BASE_CP_URL'): string;
55
55
  getEnv(name: 'FRONTEND_URL'): string;
56
56
  getEnv(name: string): string | null;
57
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CrelteServer.d.ts","sourceRoot":"","sources":["../../src/server/CrelteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAW,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,aAAa,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACvC;;OAEG;IACH,GAAG,EAAE,aAAa,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAU;gBAEd,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,0BAA0B;IAehE;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IACrC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI/B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI9B;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IAInB,cAAc;IACd,gBAAgB,CAAC,IAAI,EAAE,QAAQ;CAG/B"}
1
+ {"version":3,"file":"CrelteServer.d.ts","sourceRoot":"","sources":["../../src/server/CrelteServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAW,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,aAAa,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACvC;;OAEG;IACH,GAAG,EAAE,aAAa,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAU;gBAEd,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,0BAA0B;IAehE;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,IAAI,CAEf;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IACzC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI/B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG;IAI9B;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IAInB,cAAc;IACd,gBAAgB,CAAC,IAAI,EAAE,QAAQ;CAG/B"}
@@ -35,7 +35,7 @@ export default class ServerRouter {
35
35
  * returns an env variable from the craft/.env file.
36
36
  */
37
37
  getEnv(name: 'ENDPOINT_URL'): string;
38
- getEnv(name: 'CRAFT_WEB_URL'): string;
38
+ getEnv(name: 'CRAFT_BASE_CP_URL'): string;
39
39
  getEnv(name: string): string | null;
40
40
  /**
41
41
  * Returns the primary site
@@ -1 +1 @@
1
- {"version":3,"file":"ServerRouter.d.ts","sourceRoot":"","sources":["../../src/server/ServerRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServerRouter.d.ts","sourceRoot":"","sources":["../../src/server/ServerRouter.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,6 @@ export default class QueriesCaching {
8
8
  private cacheDir;
9
9
  private validBearerToken;
10
10
  debug: boolean;
11
- router: ServerRouter;
12
11
  constructor(platform: Platform, cs: ServerRouter, opts?: QueriesCachingOptions);
13
12
  isEnabled(): boolean;
14
13
  getCache<T = any>(key: string): Promise<T | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"QueriesCaching.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueriesCaching.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;gBAGpB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,YAAY,EAChB,IAAI,CAAC,EAAE,qBAAqB;IA4B7B,SAAS,IAAI,OAAO;IAId,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoBjD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAWxC,aAAa;CAgB3B"}
1
+ {"version":3,"file":"QueriesCaching.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueriesCaching.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,KAAK,EAAE,OAAO,CAAC;gBAGd,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,YAAY,EAChB,IAAI,CAAC,EAAE,qBAAqB;IA2B7B,SAAS,IAAI,OAAO;IAId,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoBjD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAWxC,aAAa;CAgB3B"}
@@ -5,10 +5,8 @@ export default class QueriesCaching {
5
5
  cacheDir;
6
6
  validBearerToken;
7
7
  debug;
8
- router;
9
8
  constructor(platform, cs, opts) {
10
9
  this.platform = platform;
11
- this.router = cs;
12
10
  this.debug = !!opts?.debug;
13
11
  const enableCaching = cs.getEnv('CACHING') === 'true';
14
12
  const endpointToken = cs.getEnv('ENDPOINT_TOKEN');
@@ -12,11 +12,13 @@ export type QueryGqlArgs = {
12
12
  export default class QueryGqlRoute {
13
13
  name: string;
14
14
  query: string;
15
+ queryHash: string;
15
16
  vars: Record<string, QueryVar> | null;
16
17
  validIfFn: ValidIfFn | null;
17
18
  cacheIfFn: CacheIfFn | null;
18
19
  transformFn: TransformFn | null;
19
20
  constructor(name: string, query: string, args: QueryGqlArgs);
21
+ init(): Promise<void>;
20
22
  private fillEntryDefaults;
21
23
  private fillGlobalDefaults;
22
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"QueryGqlRoute.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueryGqlRoute.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AACrD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACN,SAAS,EAET,WAAW,EAEX,SAAS,EACT,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,aAAa;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IA4B3D,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;YAuBX,SAAS;IAWjB,MAAM,CACX,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,QAAQ,CAAC;CAwHpB"}
1
+ {"version":3,"file":"QueryGqlRoute.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueryGqlRoute.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AACrD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACN,SAAS,EAET,WAAW,EAEX,SAAS,EACT,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,aAAa;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IA6BrD,IAAI;IAIV,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;YAuBX,SAAS;IAWjB,MAAM,CACX,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,QAAQ,CAAC;CAqHpB"}
@@ -2,10 +2,12 @@ import { vars } from '../../queries/vars.js';
2
2
  import { extractEntry } from '../../loadData/index.js';
3
3
  import { calcKey } from '../../ssr/index.js';
4
4
  import { newError, validateVars, } from './routes.js';
5
+ import { cryptoSha1Hash } from '../../utils.js';
5
6
  // only internal
6
7
  export default class QueryGqlRoute {
7
8
  name;
8
9
  query;
10
+ queryHash;
9
11
  vars;
10
12
  validIfFn;
11
13
  cacheIfFn;
@@ -18,6 +20,7 @@ export default class QueryGqlRoute {
18
20
  'variables defined');
19
21
  this.name = name;
20
22
  this.query = query;
23
+ this.queryHash = query;
21
24
  this.vars = args.vars;
22
25
  this.validIfFn = args.validIfFn;
23
26
  this.cacheIfFn = args.cacheIfFn;
@@ -36,6 +39,9 @@ export default class QueryGqlRoute {
36
39
  else
37
40
  this.fillBasicDefaults();
38
41
  }
42
+ async init() {
43
+ this.queryHash = await cryptoSha1Hash(this.query);
44
+ }
39
45
  fillEntryDefaults() {
40
46
  if (this.vars)
41
47
  return;
@@ -89,9 +95,9 @@ export default class QueryGqlRoute {
89
95
  let vars;
90
96
  try {
91
97
  const reqVars = await csr.req.json();
92
- vars = validateVars(this.vars, reqVars, this.validIfFn, caching.router);
93
- if ('qName' in vars || 'xCraftSite' in vars)
94
- throw new Error('qName and xCraftSite are reserved variable names');
98
+ vars = validateVars(this.vars, reqVars, this.validIfFn, csr);
99
+ if (['qName', 'qHash', 'xCraftSite'].some(name => name in vars))
100
+ throw new Error('qName, qHash and xCraftSite are reserved variable names');
95
101
  }
96
102
  catch (e) {
97
103
  return newError(e, 400);
@@ -100,21 +106,20 @@ export default class QueryGqlRoute {
100
106
  if (caching.debug) {
101
107
  logInfo = `[queries: ${this.name}] vars: ${JSON.stringify(vars)}`;
102
108
  }
103
- let previewToken = null;
104
- let siteToken = null;
105
109
  const reqSearch = new URL(csr.req.url).searchParams;
106
- if (reqSearch.has('token')) {
107
- previewToken = reqSearch.get('token');
108
- }
109
- else if (reqSearch.has('siteToken')) {
110
- siteToken = reqSearch.get('siteToken');
111
- }
110
+ const previewToken = reqSearch.get('token');
111
+ const siteToken = reqSearch.get('siteToken');
112
112
  // check for x-craft-site header and pass it on
113
113
  const xCraftSite = csr.req.headers.get('X-Craft-Site');
114
114
  let cacheKey = null;
115
- const useCache = !previewToken && caching.isEnabled();
115
+ const useCache = !previewToken && !siteToken && caching.isEnabled();
116
116
  if (useCache) {
117
- cacheKey = await calcKey({ ...vars, qName: this.name, xCraftSite });
117
+ cacheKey = await calcKey({
118
+ ...vars,
119
+ qName: this.name,
120
+ qHash: this.queryHash,
121
+ xCraftSite,
122
+ });
118
123
  const cached = await caching.getCache(cacheKey);
119
124
  if (logInfo)
120
125
  console.log(`${logInfo} ${cached ? 'hit' : 'miss'}`);
@@ -138,6 +143,9 @@ export default class QueryGqlRoute {
138
143
  headers['X-Debug'] = xDebug;
139
144
  if (xCraftSite)
140
145
  headers['X-Craft-Site'] = xCraftSite;
146
+ if (csr.req.headers.get('X-Craft-GQL-Cache') === 'no-cache') {
147
+ headers['X-Craft-GQL-Cache'] = 'no-cache';
148
+ }
141
149
  // now execute the gql request
142
150
  let resp;
143
151
  try {
@@ -177,7 +185,7 @@ export default class QueryGqlRoute {
177
185
  }
178
186
  // now we have a valid json resp.
179
187
  // should we cache it?
180
- if (cacheKey && this.cacheIfFn?.(jsonResp.data, vars)) {
188
+ if (cacheKey && this.cacheIfFn?.(jsonResp.data, vars, csr)) {
181
189
  try {
182
190
  await caching.setCache(cacheKey, jsonResp);
183
191
  if (logInfo)
@@ -1,6 +1,5 @@
1
1
  import { QueryVar } from '../../queries/vars.js';
2
2
  import CrelteServerRequest from '../CrelteServer.js';
3
- import ServerRouter from '../ServerRouter.js';
4
3
  import { HandleFn, ValidIfFn } from './routes.js';
5
4
  export default class QueryHandleRoute {
6
5
  name: string;
@@ -8,6 +7,6 @@ export default class QueryHandleRoute {
8
7
  handleFn: HandleFn;
9
8
  vars: Record<string, QueryVar> | null;
10
9
  constructor(name: string, validIfFn: ValidIfFn | null, handleFn: HandleFn, vars: Record<string, QueryVar> | null);
11
- handle(cs: ServerRouter, csr: CrelteServerRequest): Promise<Response>;
10
+ handle(csr: CrelteServerRequest): Promise<Response>;
12
11
  }
13
12
  //# sourceMappingURL=QueryHandleRoute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryHandleRoute.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueryHandleRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AACrD,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;gBAGrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI;IAQhC,MAAM,CACX,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,QAAQ,CAAC;CAYpB"}
1
+ {"version":3,"file":"QueryHandleRoute.d.ts","sourceRoot":"","sources":["../../../src/server/queries/QueryHandleRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;gBAGrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI;IAQhC,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAYzD"}
@@ -11,11 +11,11 @@ export default class QueryHandleRoute {
11
11
  this.handleFn = handleFn;
12
12
  this.vars = vars;
13
13
  }
14
- async handle(cs, csr) {
14
+ async handle(csr) {
15
15
  let vars;
16
16
  try {
17
17
  const reqVars = await csr.req.json();
18
- vars = validateVars(this.vars, reqVars, this.validIfFn, cs);
18
+ vars = validateVars(this.vars, reqVars, this.validIfFn, csr);
19
19
  }
20
20
  catch (e) {
21
21
  return newError(e, 400);
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/server/queries/queries.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAI9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAmC1C,wBAAsB,eAAe,CACpC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAoHf"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/server/queries/queries.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAI9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAmC1C,wBAAsB,eAAe,CACpC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAmHf"}
@@ -71,13 +71,14 @@ export async function initQueryRoutes(platform, mod, router) {
71
71
  if (rb.handleFn)
72
72
  throw new Error('cannot have a handle function if a query is present');
73
73
  const route = new QueryGqlRoute(name, rb.query, rb);
74
+ await route.init();
74
75
  router.post('/queries/' + route.name, csr => route.handle(caching, csr));
75
76
  }
76
77
  else if (rb.handleFn) {
77
78
  if (rb.cacheIfFn || rb.transformFn || rb.preventCaching)
78
79
  throw new Error('caching or transform not supported');
79
80
  const route = new QueryHandleRoute(name, rb.validIfFn, rb.handleFn, rb.vars);
80
- router.post('/queries/' + route.name, csr => route.handle(caching.router, csr));
81
+ router.post('/queries/' + route.name, csr => route.handle(csr));
81
82
  }
82
83
  else {
83
84
  throw new Error(`query js/ts ${name} file needs to either have ` +
@@ -1,14 +1,13 @@
1
1
  import { QueryVar } from '../../queries/vars.js';
2
2
  import CrelteServerRequest from '../CrelteServer.js';
3
- import ServerRouter from '../ServerRouter.js';
4
- export type CacheIfFn = (response: any, vars: Record<string, any>) => boolean;
5
- export type ValidIfFn = (vars: Record<string, any>, sr: ServerRouter) => void | boolean;
3
+ export type CacheIfFn = (response: any, vars: Record<string, any>, csr: CrelteServerRequest) => boolean;
4
+ export type ValidIfFn = (vars: Record<string, any>, csr: CrelteServerRequest) => void | boolean;
6
5
  export type TransformFn = (response: any, vars: Record<string, any>, csr: CrelteServerRequest) => void | any | Promise<void | any>;
7
6
  export type HandleFn = (csr: CrelteServerRequest, vars: Record<string, any>) => Promise<any> | any;
8
7
  /**
9
8
  * Returns the validated variables if some vars were defined
10
9
  * else just returns all vars
11
10
  */
12
- export declare function validateVars(qvars: Record<string, QueryVar> | null, vars: any, validIfFn: ValidIfFn | null, sr: ServerRouter): Record<string, any>;
11
+ export declare function validateVars(qvars: Record<string, QueryVar> | null, vars: any, validIfFn: ValidIfFn | null, csr: CrelteServerRequest): Record<string, any>;
13
12
  export declare function newError(e: any, status: number): Response;
14
13
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/server/queries/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AACrD,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;AAG9E,MAAM,MAAM,SAAS,GAAG,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,EAAE,EAAE,YAAY,KACZ,IAAI,GAAG,OAAO,CAAC;AAMpB,MAAM,MAAM,WAAW,GAAG,CACzB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,mBAAmB,KACpB,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,QAAQ,GAAG,CACtB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,EACtC,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,EAAE,EAAE,YAAY,GACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEzD"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/server/queries/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,mBAAmB,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,CACvB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,mBAAmB,KACpB,OAAO,CAAC;AAGb,MAAM,MAAM,SAAS,GAAG,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,mBAAmB,KACpB,IAAI,GAAG,OAAO,CAAC;AAMpB,MAAM,MAAM,WAAW,GAAG,CACzB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,mBAAmB,KACpB,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,QAAQ,GAAG,CACtB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,EACtC,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,GAAG,EAAE,mBAAmB,GACtB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEzD"}
@@ -2,18 +2,18 @@
2
2
  * Returns the validated variables if some vars were defined
3
3
  * else just returns all vars
4
4
  */
5
- export function validateVars(qvars, vars, validIfFn, sr) {
5
+ export function validateVars(qvars, vars, validIfFn, csr) {
6
6
  if (!vars || typeof vars !== 'object')
7
7
  throw new Error('expected an object as vars');
8
8
  if (!qvars)
9
9
  return vars;
10
10
  const nVars = {};
11
11
  for (const [k, v] of Object.entries(qvars)) {
12
- nVars[k] = v.validValue(vars[k], sr);
12
+ nVars[k] = v.validValue(vars[k], csr);
13
13
  }
14
14
  if (validIfFn) {
15
15
  // or throw
16
- const valid = validIfFn(nVars, sr);
16
+ const valid = validIfFn(nVars, csr);
17
17
  if (typeof valid === 'boolean' && !valid)
18
18
  throw new Error('invalid variables for query');
19
19
  }
@@ -13,7 +13,7 @@ export type EnvData = {
13
13
  env: Map<string, string>;
14
14
  endpointUrl: string;
15
15
  endpointToken?: string;
16
- craftWebUrl: string;
16
+ craftBaseCpUrl: string;
17
17
  frontendUrl: string;
18
18
  viteEnv: Map<string, string>;
19
19
  };
@@ -23,7 +23,8 @@ export type SitesCache = {
23
23
  readSitesCache?: () => Promise<any>;
24
24
  writeSitesCache?: (data: any) => Promise<void>;
25
25
  };
26
- export declare function initSites(env: EnvData, cache?: SitesCache): Promise<SiteFromGraphQl[]>;
26
+ export declare function initSites(env: EnvData, cache?: SitesCache, siteToken?: string): Promise<SiteFromGraphQl[]>;
27
+ export declare function initRequestSites(env: EnvData, sites: SiteFromGraphQl[], req: Request): Promise<SiteFromGraphQl[]>;
27
28
  export type ModRenderOptions = {
28
29
  ssrManifest?: Record<string, string[]>;
29
30
  };
@@ -32,7 +33,7 @@ export type RenderRequest = {
32
33
  htmlTemplate: string;
33
34
  ssrManifest: Record<string, string[]>;
34
35
  endpoint: string;
35
- craftWeb: string;
36
+ craftUrl: string;
36
37
  frontend: string;
37
38
  viteEnv: Map<string, string>;
38
39
  sites: SiteFromGraphQl[];
@@ -45,7 +46,7 @@ export type RenderErrorRequest = {
45
46
  ssrManifest: Record<string, string[]>;
46
47
  acceptLang: string | null;
47
48
  endpoint: string;
48
- craftWeb: string;
49
+ craftUrl: string;
49
50
  frontend: string;
50
51
  viteEnv: Map<string, string>;
51
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/server/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/server/shared.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,9 @@ export async function initEnvData(os) {
15
15
  if (!endpointUrl)
16
16
  throw new Error('ENDPOINT_URL not set');
17
17
  const endpointToken = env.get('ENDPOINT_TOKEN');
18
- const craftWebUrl = env.get('CRAFT_WEB_URL');
19
- if (!craftWebUrl)
20
- throw new Error('CRAFT_WEB_URL not set');
18
+ const craftBaseCpUrl = env.get('CRAFT_BASE_CP_URL');
19
+ if (!craftBaseCpUrl)
20
+ throw new Error('CRAFT_BASE_CP_URL not set');
21
21
  const frontendUrl = env.get('FRONTEND_URL');
22
22
  if (!frontendUrl)
23
23
  throw new Error('FRONTEND_URL not set');
@@ -27,21 +27,29 @@ export async function initEnvData(os) {
27
27
  env,
28
28
  endpointUrl,
29
29
  endpointToken,
30
- craftWebUrl,
30
+ craftBaseCpUrl,
31
31
  frontendUrl,
32
32
  viteEnv,
33
33
  };
34
34
  }
35
- export async function initSites(env, cache) {
35
+ export async function initSites(env, cache, siteToken) {
36
36
  const queries = Queries.new(env.endpointUrl, env.frontendUrl, new SsrCache(), { bearerToken: env.endpointToken });
37
- return await loadSites(queries, cache);
37
+ return await loadSites(queries, cache, siteToken);
38
+ }
39
+ export async function initRequestSites(env, sites, req) {
40
+ const siteToken = new URL(req.url).searchParams.get('siteToken');
41
+ if (!siteToken)
42
+ return sites;
43
+ // Preview sites belong to this request, not the shared site cache.
44
+ return await initSites(env, undefined, siteToken);
38
45
  }
39
46
  // requires, GraphQl, SsrCache
40
- async function loadSites(queries, cache) {
41
- if ('CRAFT_SITES_CACHED' in globalThis) {
47
+ async function loadSites(queries, cache, siteToken) {
48
+ const useCache = !siteToken;
49
+ if (useCache && 'CRAFT_SITES_CACHED' in globalThis) {
42
50
  return globalThis['CRAFT_SITES_CACHED'];
43
51
  }
44
- if (cache?.enabled && cache?.readSitesCache) {
52
+ if (useCache && cache?.enabled && cache?.readSitesCache) {
45
53
  try {
46
54
  const sites = (await cache.readSitesCache());
47
55
  // @ts-ignore
@@ -65,11 +73,13 @@ async function loadSites(queries, cache) {
65
73
  }
66
74
  `, {},
67
75
  // don't cache since we cache ourself
68
- { caching: false }));
69
- // @ts-ignore
70
- globalThis['CRAFT_SITES_CACHED'] = resp.crelteSites;
71
- if (cache?.enabled && cache?.writeSitesCache) {
72
- await cache.writeSitesCache(resp.crelteSites);
76
+ { caching: false, craftCaching: useCache, siteToken }));
77
+ if (useCache) {
78
+ // @ts-ignore
79
+ globalThis['CRAFT_SITES_CACHED'] = resp.crelteSites;
80
+ if (cache?.enabled && cache?.writeSitesCache) {
81
+ await cache.writeSitesCache(resp.crelteSites);
82
+ }
73
83
  }
74
84
  return resp.crelteSites;
75
85
  }
@@ -79,7 +89,7 @@ export async function modRender(env, sites, mod, template, req, opts = {}) {
79
89
  htmlTemplate: template,
80
90
  ssrManifest: {},
81
91
  endpoint: env.endpointUrl,
82
- craftWeb: env.craftWebUrl,
92
+ craftUrl: env.craftBaseCpUrl,
83
93
  frontend: env.frontendUrl,
84
94
  viteEnv: env.viteEnv,
85
95
  sites,
@@ -115,7 +125,7 @@ export async function modRenderError(env, mod, thrownError, template, req, opts
115
125
  ssrManifest: {},
116
126
  acceptLang,
117
127
  endpoint: env.endpointUrl,
118
- craftWeb: env.craftWebUrl,
128
+ craftUrl: env.craftBaseCpUrl,
119
129
  frontend: env.frontendUrl,
120
130
  viteEnv: env.viteEnv,
121
131
  ...opts,
@@ -74,8 +74,8 @@ export default class SsrCache {
74
74
  z_clear(): void;
75
75
  /** @hidden */
76
76
  z_importFromHead(): void;
77
- private exportAsJson;
78
77
  /** @hidden */
79
- z_exportToHead(): string;
78
+ z_toData(): any;
80
79
  }
80
+ export declare function ssrCacheExportToHead(ssr: SsrCache): string;
81
81
  //# sourceMappingURL=SsrCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SsrCache.d.ts","sourceRoot":"","sources":["../../src/ssr/SsrCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBxD;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,OAAO,CAAC,KAAK,CAAmB;;IAMhC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAK9B;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAKnD;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D;;;;OAIG;IACG,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKzE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAcxC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAMhC,cAAc;IACd,OAAO;IAIP,cAAc;IACd,gBAAgB;IAOhB,OAAO,CAAC,YAAY;IAOpB,cAAc;IACd,cAAc,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"SsrCache.d.ts","sourceRoot":"","sources":["../../src/ssr/SsrCache.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxD;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,OAAO,CAAC,KAAK,CAAmB;;IAMhC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAK9B;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAKnD;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D;;;;OAIG;IACG,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKzE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAcxC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAMhC,cAAc;IACd,OAAO;IAIP,cAAc;IACd,gBAAgB;IAOhB,cAAc;IACd,QAAQ,IAAI,GAAG;CAGf;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,UAKjD"}
@@ -1,3 +1,5 @@
1
+ import { uneval } from 'devalue';
2
+ import { cryptoSha1Hash } from '../utils.js';
1
3
  /**
2
4
  * Calculates a key based on the json representation of the data
3
5
  *
@@ -9,17 +11,7 @@ export async function calcKey(data) {
9
11
  // specifically in the craft preview locally
10
12
  if (!crypto?.subtle)
11
13
  return json;
12
- // Convert the string data to an ArrayBuffer
13
- const encoder = new TextEncoder();
14
- const dataBuffer = encoder.encode(json);
15
- // Use the Web Crypto API to hash the data with SHA-1
16
- const hashBuffer = await crypto.subtle.digest('SHA-1', dataBuffer);
17
- // Convert the ArrayBuffer to a hex string
18
- const hashArray = Array.from(new Uint8Array(hashBuffer)); // Create an array from the buffer
19
- const hashHex = hashArray
20
- .map(b => b.toString(16).padStart(2, '0'))
21
- .join(''); // Convert to hex string
22
- return hashHex;
14
+ return await cryptoSha1Hash(json);
23
15
  }
24
16
  /**
25
17
  * A simple cache for server side rendering
@@ -132,11 +124,13 @@ export default class SsrCache {
132
124
  // @ts-ignore
133
125
  delete window._SSR_STORE;
134
126
  }
135
- exportAsJson() {
136
- return JSON.stringify(Array.from(this.store.entries())).replace(/</g, '\\u003c');
137
- }
138
127
  /** @hidden */
139
- z_exportToHead() {
140
- return `\n\t\t<script>window._SSR_STORE = ${this.exportAsJson()};</script>`;
128
+ z_toData() {
129
+ return this.store;
141
130
  }
142
131
  }
132
+ export function ssrCacheExportToHead(ssr) {
133
+ const data = Array.from(ssr.z_toData().entries());
134
+ // safety, uneval already escapes data: https://github.com/sveltejs/devalue#xss-mitigation
135
+ return `\n\t\t<script>window._SSR_STORE = ${uneval(data)};</script>`;
136
+ }