crelte 0.1.0 → 0.1.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 (114) hide show
  1. package/dist/Crelte.d.ts +89 -25
  2. package/dist/Crelte.d.ts.map +1 -1
  3. package/dist/Crelte.js +79 -38
  4. package/dist/CrelteRequest.d.ts +63 -0
  5. package/dist/CrelteRequest.d.ts.map +1 -0
  6. package/dist/CrelteRequest.js +94 -0
  7. package/dist/blocks/Blocks.d.ts +27 -3
  8. package/dist/blocks/Blocks.d.ts.map +1 -1
  9. package/dist/blocks/Blocks.js +8 -0
  10. package/dist/blocks/Blocks.svelte +1 -1
  11. package/dist/blocks/Blocks.svelte.d.ts +36 -4
  12. package/dist/blocks/Blocks.svelte.d.ts.map +1 -1
  13. package/dist/blocks/index.d.ts +6 -3
  14. package/dist/blocks/index.d.ts.map +1 -1
  15. package/dist/blocks/index.js +3 -2
  16. package/dist/cookies/ServerCookies.d.ts +1 -1
  17. package/dist/cookies/ServerCookies.d.ts.map +1 -1
  18. package/dist/cookies/index.d.ts +7 -0
  19. package/dist/cookies/index.d.ts.map +1 -1
  20. package/dist/graphql/GraphQl.d.ts +53 -14
  21. package/dist/graphql/GraphQl.d.ts.map +1 -1
  22. package/dist/graphql/GraphQl.js +44 -23
  23. package/dist/graphql/index.d.ts +1 -1
  24. package/dist/graphql/index.d.ts.map +1 -1
  25. package/dist/graphql/index.js +2 -2
  26. package/dist/index.d.ts +55 -22
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +50 -23
  29. package/dist/init/client.d.ts +43 -2
  30. package/dist/init/client.d.ts.map +1 -1
  31. package/dist/init/client.js +26 -6
  32. package/dist/init/server.d.ts +49 -2
  33. package/dist/init/server.d.ts.map +1 -1
  34. package/dist/init/server.js +56 -6
  35. package/dist/init/shared.d.ts +5 -4
  36. package/dist/init/shared.d.ts.map +1 -1
  37. package/dist/init/shared.js +3 -3
  38. package/dist/loadData/Globals.d.ts +41 -2
  39. package/dist/loadData/Globals.d.ts.map +1 -1
  40. package/dist/loadData/Globals.js +33 -5
  41. package/dist/loadData/index.d.ts +74 -11
  42. package/dist/loadData/index.d.ts.map +1 -1
  43. package/dist/loadData/index.js +5 -8
  44. package/dist/plugins/Events.d.ts +18 -5
  45. package/dist/plugins/Events.d.ts.map +1 -1
  46. package/dist/plugins/Events.js +3 -0
  47. package/dist/plugins/Plugins.d.ts +28 -2
  48. package/dist/plugins/Plugins.d.ts.map +1 -1
  49. package/dist/plugins/Plugins.js +8 -0
  50. package/dist/routing/History.d.ts +6 -3
  51. package/dist/routing/History.d.ts.map +1 -1
  52. package/dist/routing/History.js +7 -1
  53. package/dist/routing/InnerRouter.d.ts +10 -9
  54. package/dist/routing/InnerRouter.d.ts.map +1 -1
  55. package/dist/routing/InnerRouter.js +47 -35
  56. package/dist/routing/PageLoader.d.ts +5 -5
  57. package/dist/routing/PageLoader.d.ts.map +1 -1
  58. package/dist/routing/PageLoader.js +7 -7
  59. package/dist/routing/Request.d.ts +102 -0
  60. package/dist/routing/Request.d.ts.map +1 -0
  61. package/dist/routing/Request.js +128 -0
  62. package/dist/routing/Route.d.ts +73 -5
  63. package/dist/routing/Route.d.ts.map +1 -1
  64. package/dist/routing/Route.js +71 -6
  65. package/dist/routing/Router.d.ts +59 -52
  66. package/dist/routing/Router.d.ts.map +1 -1
  67. package/dist/routing/Router.js +95 -116
  68. package/dist/routing/Site.d.ts +1 -1
  69. package/dist/routing/Site.js +1 -1
  70. package/dist/routing/index.d.ts +4 -3
  71. package/dist/routing/index.d.ts.map +1 -1
  72. package/dist/routing/index.js +2 -1
  73. package/dist/ssr/SsrCache.d.ts +17 -0
  74. package/dist/ssr/SsrCache.d.ts.map +1 -1
  75. package/dist/ssr/SsrCache.js +17 -4
  76. package/dist/ssr/SsrComponents.d.ts +1 -0
  77. package/dist/ssr/SsrComponents.d.ts.map +1 -1
  78. package/dist/ssr/SsrComponents.js +1 -0
  79. package/package.json +6 -6
  80. package/src/Crelte.ts +124 -52
  81. package/src/CrelteRequest.ts +124 -0
  82. package/src/blocks/Blocks.svelte +35 -18
  83. package/src/blocks/Blocks.ts +38 -6
  84. package/src/blocks/index.ts +19 -10
  85. package/src/cookies/ServerCookies.ts +1 -1
  86. package/src/cookies/index.ts +7 -1
  87. package/src/graphql/GraphQl.ts +79 -27
  88. package/src/graphql/index.ts +7 -1
  89. package/src/index.ts +65 -29
  90. package/src/init/client.ts +55 -10
  91. package/src/init/server.ts +70 -10
  92. package/src/init/shared.ts +8 -7
  93. package/src/loadData/Globals.ts +43 -7
  94. package/src/loadData/index.ts +76 -13
  95. package/src/plugins/Events.ts +16 -5
  96. package/src/plugins/Plugins.ts +28 -2
  97. package/src/routing/History.ts +13 -4
  98. package/src/routing/InnerRouter.ts +55 -39
  99. package/src/routing/PageLoader.ts +10 -10
  100. package/src/routing/Request.ts +175 -0
  101. package/src/routing/Route.ts +73 -8
  102. package/src/routing/Router.ts +108 -162
  103. package/src/routing/Site.ts +1 -1
  104. package/src/routing/index.ts +12 -3
  105. package/src/ssr/SsrCache.ts +17 -4
  106. package/src/ssr/SsrComponents.ts +1 -0
  107. package/dist/CrelteBase.d.ts +0 -16
  108. package/dist/CrelteBase.d.ts.map +0 -1
  109. package/dist/CrelteBase.js +0 -1
  110. package/dist/CrelteRouted.d.ts +0 -50
  111. package/dist/CrelteRouted.d.ts.map +0 -1
  112. package/dist/CrelteRouted.js +0 -88
  113. package/src/CrelteBase.ts +0 -24
  114. package/src/CrelteRouted.ts +0 -128
@@ -1,4 +1,5 @@
1
1
  import { CrelteBuilder } from '../Crelte.js';
2
+ import CrelteRequest from '../CrelteRequest.js';
2
3
  import { loadFn, pluginsBeforeRender, setupPlugins } from './shared.js';
3
4
  import { tick } from 'svelte';
4
5
  const mainDataDefault = {
@@ -9,6 +10,25 @@ const mainDataDefault = {
9
10
  graphQlDebug: false,
10
11
  debugTiming: false,
11
12
  };
13
+ /**
14
+ * The main function to start the client side rendering
15
+ *
16
+ * ## Example
17
+ * ```
18
+ * import * as app from './App.svelte';
19
+ * import * as errorPage from './Error.svelte';
20
+ * import entryQuery from './queries/entry.graphql';
21
+ * import globalQuery from './queries/global.graphql';
22
+ * import { main } from 'crelte/client';
23
+ *
24
+ * main({
25
+ * app,
26
+ * errorPage,
27
+ * entryQuery,
28
+ * globalQuery,
29
+ * });
30
+ * ```
31
+ */
12
32
  export function main(data) {
13
33
  data = { ...mainDataDefault, ...data };
14
34
  // rendering steps
@@ -29,7 +49,7 @@ export function main(data) {
29
49
  debug: data.graphQlDebug,
30
50
  debugTiming: data.debugTiming,
31
51
  });
32
- // on the client the cookies are always comming from document.cookie
52
+ // on the client the cookies are always coming from document.cookie
33
53
  builder.setupCookies('');
34
54
  const csites = builder.ssrCache.get('crelteSites');
35
55
  builder.setupRouter(csites, {
@@ -51,8 +71,8 @@ export function main(data) {
51
71
  // setup plugins
52
72
  setupPlugins(crelte, data.app.plugins ?? []);
53
73
  // setup load Data
54
- crelte.router._internal.onLoad = (route, site, opts) => {
55
- const cr = crelte.toRouted(route, site);
74
+ crelte.router._internal.onLoad = (req, site, opts) => {
75
+ const cr = new CrelteRequest(crelte, req, site);
56
76
  return loadFn(cr, data.app, data.entryQuery, data.globalQuery, opts);
57
77
  };
58
78
  // render Space
@@ -72,7 +92,7 @@ export function main(data) {
72
92
  }
73
93
  };
74
94
  let firstLoad = true;
75
- crelte.router._internal.onLoaded = async (success, route, site, readyForProps) => {
95
+ crelte.router._internal.onLoaded = async (success, req, site, readyForProps) => {
76
96
  const isFirstLoad = firstLoad;
77
97
  firstLoad = false;
78
98
  if (!success) {
@@ -87,7 +107,7 @@ export function main(data) {
87
107
  }
88
108
  return handleLoadError(readyForProps());
89
109
  }
90
- const cr = crelte.toRouted(route, site);
110
+ const cr = new CrelteRequest(crelte, req, site);
91
111
  const startTime = data.debugTiming ? Date.now() : null;
92
112
  let render = async () => {
93
113
  // we should trigger the route update here
@@ -98,7 +118,7 @@ export function main(data) {
98
118
  if (startTime) {
99
119
  console.log('dom update took ' + (Date.now() - startTime) + 'ms');
100
120
  }
101
- crelte.router._internal.domReady(route);
121
+ crelte.router._internal.domReady(cr.req);
102
122
  };
103
123
  // render with view Transition if enabled and not in hydration
104
124
  if (data.viewTransition &&
@@ -1,3 +1,4 @@
1
+ import { GraphQlQuery } from '../graphql/GraphQl.js';
1
2
  export type ServerData = {
2
3
  url: string;
3
4
  htmlTemplate: string;
@@ -8,14 +9,43 @@ export type ServerData = {
8
9
  viteEnv: Map<string, string>;
9
10
  cookies?: string;
10
11
  };
12
+ /**
13
+ * The main function to start the server side rendering
14
+ */
11
15
  export type MainData = {
16
+ /** The App.svelte module */
12
17
  app: any;
13
- entryQuery: any;
14
- globalQuery?: any;
18
+ /** The entry query from queries/entry.graphql */
19
+ entryQuery: GraphQlQuery;
20
+ /** The global query from queries/global.graphql */
21
+ globalQuery?: GraphQlQuery;
22
+ /** Server data provided by crelte-node */
15
23
  serverData: ServerData;
24
+ /** Enable graphql query debugging */
16
25
  graphQlDebug?: boolean;
26
+ /** Enable request and render timing measurement */
17
27
  debugTiming?: boolean;
18
28
  };
29
+ /**
30
+ * The main function to start the server side rendering
31
+ *
32
+ * ## Example
33
+ * ```
34
+ * import * as app from './App.svelte';
35
+ * import entryQuery from './queries/entry.graphql';
36
+ * import globalQuery from './queries/global.graphql';
37
+ * import { main } from 'crelte/server';
38
+ *
39
+ * export function render(serverData) {
40
+ * return main({
41
+ * app,
42
+ * entryQuery,
43
+ * globalQuery,
44
+ * serverData,
45
+ * });
46
+ * }
47
+ * ```
48
+ */
19
49
  export declare function main(data: MainData): Promise<{
20
50
  status: number;
21
51
  location?: string;
@@ -31,6 +61,23 @@ export type MainErrorData = {
31
61
  errorPage: any;
32
62
  serverData: ServerData;
33
63
  };
64
+ /**
65
+ * The main function to start the server side rendering
66
+ * if there was an error
67
+ *
68
+ * ## Example
69
+ * ```
70
+ * import * as errorPage from './Error.svelte';
71
+ *
72
+ * export function renderError(error, serverData) {
73
+ * return mainError({
74
+ * error,
75
+ * errorPage,
76
+ * serverData
77
+ * });
78
+ * }
79
+ * ```
80
+ */
34
81
  export declare function mainError(data: MainErrorData): Promise<{
35
82
  status: number;
36
83
  html?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/init/server.ts"],"names":[],"mappings":"AAOA,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;CACjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IAEtB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,CAAC,EAAE,GAAG,CAAC;IAElB,UAAU,EAAE,UAAU,CAAC;IAGvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,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,CA4ED;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,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;CACjB,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,CA4ED;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"}
@@ -2,6 +2,28 @@ import { CrelteBuilder } from '../Crelte.js';
2
2
  import { loadFn, pluginsBeforeRender, setupPlugins } from './shared.js';
3
3
  import SsrComponents from '../ssr/SsrComponents.js';
4
4
  import SsrCache from '../ssr/SsrCache.js';
5
+ import CrelteRequest from '../CrelteRequest.js';
6
+ import { gql } from '../graphql/GraphQl.js';
7
+ /**
8
+ * The main function to start the server side rendering
9
+ *
10
+ * ## Example
11
+ * ```
12
+ * import * as app from './App.svelte';
13
+ * import entryQuery from './queries/entry.graphql';
14
+ * import globalQuery from './queries/global.graphql';
15
+ * import { main } from 'crelte/server';
16
+ *
17
+ * export function render(serverData) {
18
+ * return main({
19
+ * app,
20
+ * entryQuery,
21
+ * globalQuery,
22
+ * serverData,
23
+ * });
24
+ * }
25
+ * ```
26
+ */
5
27
  export async function main(data) {
6
28
  const builder = new CrelteBuilder();
7
29
  // setup viteEnv
@@ -24,23 +46,23 @@ export async function main(data) {
24
46
  // setup plugins
25
47
  setupPlugins(crelte, data.app.plugins ?? []);
26
48
  // setup load Data
27
- crelte.router._internal.onLoad = (route, site) => {
28
- const cr = crelte.toRouted(route, site);
49
+ crelte.router._internal.onLoad = (req, site) => {
50
+ const cr = new CrelteRequest(crelte, req, site);
29
51
  return loadFn(cr, data.app, data.entryQuery, data.globalQuery);
30
52
  };
31
- const { success, redirect, route, site, props } = await crelte.router._internal.initServer(data.serverData.url, data.serverData.acceptLang);
53
+ const { success, redirect, req, site, props } = await crelte.router._internal.initServer(data.serverData.url, data.serverData.acceptLang);
32
54
  if (!success)
33
55
  throw props;
34
56
  if (redirect) {
35
57
  return {
36
58
  status: 302,
37
- location: route.url.toString(),
59
+ location: req.url.toString(),
38
60
  };
39
61
  }
40
62
  const context = crelte._getContext();
41
63
  const ssrComponents = new SsrComponents();
42
64
  ssrComponents.addToContext(context);
43
- pluginsBeforeRender(crelte.toRouted(route, site));
65
+ pluginsBeforeRender(new CrelteRequest(crelte, req, site));
44
66
  crelte.globals._updateSiteId(site.id);
45
67
  // eslint-disable-next-line prefer-const
46
68
  let { html, head } = data.app.default.render(props, { context });
@@ -58,6 +80,23 @@ export async function main(data) {
58
80
  setCookies: crelte.cookies._getSetCookiesHeaders(),
59
81
  };
60
82
  }
83
+ /**
84
+ * The main function to start the server side rendering
85
+ * if there was an error
86
+ *
87
+ * ## Example
88
+ * ```
89
+ * import * as errorPage from './Error.svelte';
90
+ *
91
+ * export function renderError(error, serverData) {
92
+ * return mainError({
93
+ * error,
94
+ * errorPage,
95
+ * serverData
96
+ * });
97
+ * }
98
+ * ```
99
+ */
61
100
  export async function mainError(data) {
62
101
  const ssrCache = new SsrCache();
63
102
  const context = new Map();
@@ -86,7 +125,18 @@ async function loadSites(builder) {
86
125
  // @ts-ignore
87
126
  return globalThis['CRAFT_SITES_CACHED'];
88
127
  }
89
- const resp = (await builder.graphQl.request('query { crelteSites { id baseUrl language name handle primary } }', {},
128
+ const resp = (await builder.graphQl.query(gql `
129
+ query {
130
+ crelteSites {
131
+ id
132
+ baseUrl
133
+ language
134
+ name
135
+ handle
136
+ primary
137
+ }
138
+ }
139
+ `, {},
90
140
  // don't cache since we cache ourself
91
141
  { caching: false }));
92
142
  // @ts-ignore
@@ -1,5 +1,6 @@
1
- import CrelteRouted, { GraphQlQuery } from '../CrelteRouted.js';
2
1
  import Crelte from '../Crelte.js';
2
+ import CrelteRequest from '../CrelteRequest.js';
3
+ import { GraphQlQuery } from '../graphql/GraphQl.js';
3
4
  import { LoadData } from '../loadData/index.js';
4
5
  import { PluginCreator } from '../plugins/Plugins.js';
5
6
  import { LoadOptions } from '../routing/PageLoader.js';
@@ -10,11 +11,11 @@ interface App<D, E, T> {
10
11
  }
11
12
  interface TemplateModule<E, T> {
12
13
  default: any;
13
- loadData?(cr: CrelteRouted, entry: E): Promise<T>;
14
+ loadData?(cr: CrelteRequest, entry: E): Promise<T>;
14
15
  }
15
16
  type LazyTemplateModule<E, T> = (() => Promise<TemplateModule<E, T>>) | TemplateModule<E, T>;
16
17
  export declare function setupPlugins(crelte: Crelte, plugins: PluginCreator[]): void;
17
- export declare function pluginsBeforeRender(cr: CrelteRouted): void;
18
+ export declare function pluginsBeforeRender(cr: CrelteRequest): void;
18
19
  /**
19
20
  * Get the entry from the page
20
21
  *
@@ -24,6 +25,6 @@ export declare function pluginsBeforeRender(cr: CrelteRouted): void;
24
25
  * sectionHandle will be automatically set to product
25
26
  */
26
27
  export declare function getEntry(page: any): any;
27
- export declare function loadFn<D, E, T>(cr: CrelteRouted, app: App<D, E, T>, entryQuery: GraphQlQuery, globalQuery?: GraphQlQuery, loadOpts?: LoadOptions): Promise<any>;
28
+ export declare function loadFn<D, E, T>(cr: CrelteRequest, app: App<D, E, T>, entryQuery: GraphQlQuery, globalQuery?: GraphQlQuery, loadOpts?: LoadOptions): Promise<any>;
28
29
  export {};
29
30
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAG7B,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACrD;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC;IAE5B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClD;AAED,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IACzB,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACrC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAYvC;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,CAsGd"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAG7B,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACrD;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC;IAE5B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnD;AAED,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IACzB,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACrC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAYvC;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,CAsGd"}
@@ -52,15 +52,15 @@ export async function loadFn(cr, app, entryQuery, globalQuery, loadOpts) {
52
52
  })();
53
53
  }
54
54
  let pageProm = null;
55
- if (cr.route.site) {
56
- let uri = decodeURI(cr.route.uri);
55
+ if (cr.req.site) {
56
+ let uri = decodeURI(cr.req.uri);
57
57
  if (uri.startsWith('/'))
58
58
  uri = uri.substring(1);
59
59
  if (uri === '' || uri === '/')
60
60
  uri = '__home__';
61
61
  pageProm = cr.query(entryQuery, {
62
62
  uri,
63
- siteId: cr.route.site.id,
63
+ siteId: cr.req.site.id,
64
64
  });
65
65
  }
66
66
  const pluginsLoadGlobalData = cr.events.trigger('loadGlobalData', cr);
@@ -5,16 +5,44 @@ export default class Globals {
5
5
  private loaded;
6
6
  private prevSiteId;
7
7
  constructor();
8
- get(name: string): Global<any> | null;
9
- getAsync(name: string): Promise<Global<any> | null> | Global<any> | null;
8
+ /**
9
+ * returns a store which contains a globalSet
10
+ *
11
+ * ## Note
12
+ * This only works in loadData, in loadGlobalData this will
13
+ * always return null. In that context you should use
14
+ * `.getGlobalAsync`
15
+ */
16
+ get<T extends GlobalData>(name: string): Global<T> | null;
17
+ /**
18
+ * Get a store which contains a globalSet and wait until it is loaded
19
+ *
20
+ * ## Note
21
+ * This is only useful in loadGlobalData in all other cases
22
+ * you can use `.getGlobal` which does return a Promise
23
+ */
24
+ getAsync<T extends GlobalData>(name: string): Promise<Global<T> | null> | Global<T> | null;
25
+ /** @hidden */
10
26
  _wasLoaded(): boolean;
27
+ /** @hidden */
11
28
  _setData(siteId: number, data: any): void;
29
+ /** @hidden */
12
30
  _globalsBySite(siteId: number): Map<string, any>;
31
+ /** @hidden */
13
32
  _updateSiteId(siteId: number): void;
14
33
  }
34
+ /**
35
+ * A globalSet Data
36
+ *
37
+ * Each global query should contain the siteId
38
+ */
15
39
  export interface GlobalData {
16
40
  siteId?: number;
41
+ [key: string]: any;
17
42
  }
43
+ /**
44
+ * A globalSet store
45
+ */
18
46
  export declare class Global<T extends GlobalData> {
19
47
  private inner;
20
48
  private languages;
@@ -26,8 +54,19 @@ export declare class Global<T extends GlobalData> {
26
54
  * @return a function which should be called to unsubscribe
27
55
  */
28
56
  subscribe(fn: (val: T) => void): () => void;
57
+ /**
58
+ * The current value
59
+ */
29
60
  get(): T;
61
+ /**
62
+ * Get the value based on the siteId
63
+ *
64
+ * ## Note
65
+ * If you pass a siteId which comes from craft
66
+ * you will never receive null
67
+ */
30
68
  bySiteId(siteId: number): T | null;
69
+ /** @hidden */
31
70
  _updateSiteId(siteId: number): void;
32
71
  }
33
72
  //# sourceMappingURL=Globals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Globals.d.ts","sourceRoot":"","sources":["../../../../src/loadData/Globals.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,OAAO;IAG3B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAgB;;IASlC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;IAMrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;IAexE,UAAU,IAAI,OAAO;IAQrB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAgBlC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAUhD,aAAa,CAAC,MAAM,EAAE,MAAM;CAM5B;AAED,MAAM,WAAW,UAAU;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,UAAU;IACvC,OAAO,CAAC,KAAK,CAAc;IAE3B,OAAO,CAAC,SAAS,CAAa;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;IAsBvD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAI3C,GAAG,IAAI,CAAC;IAKR,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAOlC,aAAa,CAAC,MAAM,EAAE,MAAM;CAM5B"}
1
+ {"version":3,"file":"Globals.d.ts","sourceRoot":"","sources":["../../../../src/loadData/Globals.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,OAAO;IAG3B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAgB;;IASlC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzD;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,SAAS,UAAU,EAC5B,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAc/C,cAAc;IACd,UAAU,IAAI,OAAO;IAOrB,cAAc;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAgBlC,cAAc;IACd,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAUhD,cAAc;IACd,aAAa,CAAC,MAAM,EAAE,MAAM;CAM5B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,SAAS,UAAU;IACvC,OAAO,CAAC,KAAK,CAAc;IAE3B,OAAO,CAAC,SAAS,CAAa;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;IAsBvD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAI3C;;OAEG;IACH,GAAG,IAAI,CAAC;IAIR;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAOlC,cAAc;IACd,aAAa,CAAC,MAAM,EAAE,MAAM;CAM5B"}
@@ -19,11 +19,24 @@ export default class Globals {
19
19
  this.loaded = false;
20
20
  this.prevSiteId = null;
21
21
  }
22
+ /**
23
+ * returns a store which contains a globalSet
24
+ *
25
+ * ## Note
26
+ * This only works in loadData, in loadGlobalData this will
27
+ * always return null. In that context you should use
28
+ * `.getGlobalAsync`
29
+ */
22
30
  get(name) {
23
31
  return this.entries.get(name) ?? null;
24
32
  }
25
- // call this only in loadGlobalData when by default the global
26
- // is not available
33
+ /**
34
+ * Get a store which contains a globalSet and wait until it is loaded
35
+ *
36
+ * ## Note
37
+ * This is only useful in loadGlobalData in all other cases
38
+ * you can use `.getGlobal` which does return a Promise
39
+ */
27
40
  getAsync(name) {
28
41
  if (this.loaded)
29
42
  return this.get(name);
@@ -36,14 +49,14 @@ export default class Globals {
36
49
  waiter.push(resolve);
37
50
  });
38
51
  }
39
- // hidden
52
+ /** @hidden */
40
53
  _wasLoaded() {
41
54
  return this.loaded;
42
55
  }
43
- // hidden
44
56
  // data is the data from the global graphql
45
57
  // so it contains some keys and data which should be parsed
46
58
  // and created a store for each key
59
+ /** @hidden */
47
60
  _setData(siteId, data) {
48
61
  const wasLoaded = this.loaded;
49
62
  this.loaded = true;
@@ -57,6 +70,7 @@ export default class Globals {
57
70
  this.waiters.clear();
58
71
  }
59
72
  }
73
+ /** @hidden */
60
74
  _globalsBySite(siteId) {
61
75
  const map = new Map();
62
76
  for (const [key, global] of this.entries) {
@@ -64,6 +78,7 @@ export default class Globals {
64
78
  }
65
79
  return map;
66
80
  }
81
+ /** @hidden */
67
82
  _updateSiteId(siteId) {
68
83
  // todo we should only trigger
69
84
  if (this.prevSiteId === siteId)
@@ -71,6 +86,9 @@ export default class Globals {
71
86
  this.entries.forEach(global => global._updateSiteId(siteId));
72
87
  }
73
88
  }
89
+ /**
90
+ * A globalSet store
91
+ */
74
92
  export class Global {
75
93
  inner;
76
94
  /// if languages is null this means we always have the same data
@@ -101,15 +119,25 @@ export class Global {
101
119
  subscribe(fn) {
102
120
  return this.inner.subscribe(fn);
103
121
  }
122
+ /**
123
+ * The current value
124
+ */
104
125
  get() {
105
126
  return this.inner.get();
106
127
  }
107
- /// if you pass a siteId which comes from craft then you will never receive null
128
+ /**
129
+ * Get the value based on the siteId
130
+ *
131
+ * ## Note
132
+ * If you pass a siteId which comes from craft
133
+ * you will never receive null
134
+ */
108
135
  bySiteId(siteId) {
109
136
  if (this.languages)
110
137
  return this.languages.find(d => d.siteId === siteId) ?? null;
111
138
  return this.inner.get();
112
139
  }
140
+ /** @hidden */
113
141
  _updateSiteId(siteId) {
114
142
  if (!this.languages)
115
143
  return;
@@ -1,24 +1,87 @@
1
- /**
2
- *
3
- */
4
- import type CrelteRouted from '../CrelteRouted.js';
1
+ import CrelteRequest from '../CrelteRequest.js';
5
2
  import { type GraphQlQuery } from '../graphql/GraphQl.js';
6
3
  import type Globals from './Globals.js';
7
4
  import type { Global } from './Globals.js';
8
5
  export type { Globals, Global };
9
- export type LoadData<T> = ((cr: CrelteRouted, ...args: any[]) => Promise<T>) | GraphQlQuery | T;
10
- export declare function callLoadData(ld: LoadData<unknown>, cr: CrelteRouted, ...args: any[]): Promise<unknown>;
6
+ /**
7
+ * Load data function
8
+ *
9
+ * There are three main ways `loadData` can be defined:
10
+ *
11
+ * ## Object
12
+ * This is the most common way loadData will be used.
13
+ * Each property should be a loadData type, each one is called in parallel.
14
+ * And will be available to your component with the same name.
15
+ * ```
16
+ * export const loadData = {
17
+ *
18
+ * import entriesQuery from '@/queries/entries.graphql';
19
+ * import { loadData as headerLoadData } from '@/layout/header.svelte';
20
+ *
21
+ * export const loadData = {
22
+ * entries: entriesQuery,
23
+ * header: headerLoadData
24
+ * };
25
+ * ```
26
+ *
27
+ * ## GraphQl
28
+ * You can just export a graphql query as a loadData type.
29
+ * This will export all queries from the graphql file as properties.
30
+ * ```
31
+ * import blogsQuery from '@/queries/blogs.graphql';
32
+ *
33
+ * export const loadData = blogsQuery;
34
+ *
35
+ * // or another option
36
+ * import { gql } from '@craft-svelte/core/graphql';
37
+ *
38
+ * export const loadData = gql`query {
39
+ * blogs: entries(section: "blogs") {
40
+ * title
41
+ * url
42
+ * }
43
+ * }`;
44
+ * ```
45
+ *
46
+ * ## Function
47
+ * Using a function gives you the most flexibility but also is the
48
+ * most cumbersome.
49
+ *
50
+ * ```
51
+ * import articlesQuery from '@/queries/articles.graphql';
52
+ *
53
+ * export async function loadData(cr, entry) {
54
+ * return await cr.query(articlesQuery, {
55
+ * category: entry.category
56
+ * });
57
+ * }
58
+ *
59
+ * // or
60
+ * export const loadData = (cr, entry) => cr.query(articlesQuery, {
61
+ * category: entry.category
62
+ * });
63
+ *
64
+ * // or if you're in the context of an object
65
+ * export const loadData = {
66
+ * articles: (cr, entry) => cr.query(articlesQuery, {
67
+ * category: entry.category
68
+ * })
69
+ * }
70
+ * ```
71
+ */
72
+ export type LoadData<T> = ((cr: CrelteRequest, ...args: any[]) => Promise<T>) | GraphQlQuery | T;
73
+ export declare function callLoadData(ld: LoadData<unknown>, cr: CrelteRequest, ...args: any[]): Promise<unknown>;
11
74
  /**
12
75
  * Spread the data of two loadData functions.
13
76
  *
14
77
  * ## Example
15
78
  * ```
16
79
  * export const loadData = mergeLoadData(
17
- * {
18
- * filter: (cr) => cr.route.search.get('filter'),
19
- * },
20
- * (cr) => cr.query(myQuery, { siteId: cr.site.id })
21
- * )
80
+ * {
81
+ * filter: (cr) => cr.route.search.get('filter'),
82
+ * },
83
+ * (cr) => cr.query(myQuery, { siteId: cr.site.id })
84
+ * );
22
85
  * ```
23
86
  */
24
87
  export declare function mergeLoadData(...lds: LoadData<object>[]): LoadData<object>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/loadData/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,IACnB,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAClD,YAAY,GACZ,CAAC,CAAC;AAEL,wBAAsB,YAAY,CACjC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EACrB,EAAE,EAAE,YAAY,EAChB,GAAG,IAAI,EAAE,GAAG,EAAE,GACZ,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAQ1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/loadData/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAEH,MAAM,MAAM,QAAQ,CAAC,CAAC,IACnB,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACnD,YAAY,GACZ,CAAC,CAAC;AAEL,wBAAsB,YAAY,CACjC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EACrB,EAAE,EAAE,aAAa,EACjB,GAAG,IAAI,EAAE,GAAG,EAAE,GACZ,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAQ1E"}
@@ -1,6 +1,3 @@
1
- /**
2
- *
3
- */
4
1
  import { isGraphQlQuery } from '../graphql/GraphQl.js';
5
2
  export async function callLoadData(ld, cr, ...args) {
6
3
  // either we have a function
@@ -24,11 +21,11 @@ export async function callLoadData(ld, cr, ...args) {
24
21
  * ## Example
25
22
  * ```
26
23
  * export const loadData = mergeLoadData(
27
- * {
28
- * filter: (cr) => cr.route.search.get('filter'),
29
- * },
30
- * (cr) => cr.query(myQuery, { siteId: cr.site.id })
31
- * )
24
+ * {
25
+ * filter: (cr) => cr.route.search.get('filter'),
26
+ * },
27
+ * (cr) => cr.query(myQuery, { siteId: cr.site.id })
28
+ * );
32
29
  * ```
33
30
  */
34
31
  export function mergeLoadData(...lds) {
@@ -1,11 +1,24 @@
1
- import { CrelteRouted } from '../index.js';
1
+ import { CrelteRequest } from '../index.js';
2
2
  export default class Events {
3
3
  inner: Map<string, Set<any>>;
4
4
  constructor();
5
- on(ev: 'loadGlobalData', fn: (cr: CrelteRouted) => Promise<any>): () => void;
6
- on(ev: 'loadData', fn: (cr: CrelteRouted, entry: any, data: any) => Promise<any>): () => void;
7
- on(ev: 'beforeRender', fn: (cr: CrelteRouted) => void): () => void;
5
+ /**
6
+ * Listens for an event.
7
+ *
8
+ * @returns a function to remove the listener
9
+ */
10
+ on(ev: 'loadGlobalData', fn: (cr: CrelteRequest) => Promise<any>): () => void;
11
+ on(ev: 'loadData', fn: (cr: CrelteRequest, entry: any) => Promise<any>): () => void;
12
+ on(ev: 'beforeRender', fn: (cr: CrelteRequest) => void): () => void;
13
+ /**
14
+ * Remove a listener
15
+ */
8
16
  remove(ev: string, fn: any): void;
9
- trigger(ev: string, ...args: any[]): any[];
17
+ /**
18
+ * Trigger an event
19
+ */
20
+ trigger(ev: 'loadGlobalData', cr: CrelteRequest): Promise<any>[];
21
+ trigger(ev: 'loadData', cr: CrelteRequest, entry: any): Promise<any>[];
22
+ trigger(ev: 'beforeRender', cr: CrelteRequest): void[];
10
23
  }
11
24
  //# sourceMappingURL=Events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../../src/plugins/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAU7B,EAAE,CACD,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,GACpC,MAAM,IAAI;IACb,EAAE,CACD,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAC3D,MAAM,IAAI;IACb,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAelE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG;IAO1B,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;CAM1C"}
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../../src/plugins/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAM7B;;;;OAIG;IAEH,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,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,MAAM,IAAI;IACb,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAenE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG;IAO1B;;OAEG;IACH,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,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;IACtE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,GAAG,IAAI,EAAE;CAOtD"}
@@ -14,6 +14,9 @@ export default class Events {
14
14
  set.delete(fn);
15
15
  };
16
16
  }
17
+ /**
18
+ * Remove a listener
19
+ */
17
20
  remove(ev, fn) {
18
21
  const set = this.inner.get(ev);
19
22
  if (!set)