crelte 0.5.11 → 0.5.13

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 (110) hide show
  1. package/dist/blocks/Blocks.d.ts +1 -1
  2. package/dist/blocks/Blocks.d.ts.map +1 -1
  3. package/dist/bodyClass/BodyClass.d.ts +56 -0
  4. package/dist/bodyClass/BodyClass.d.ts.map +1 -0
  5. package/dist/bodyClass/BodyClass.js +70 -0
  6. package/dist/bodyClass/ClientBodyClass.d.ts +17 -0
  7. package/dist/bodyClass/ClientBodyClass.d.ts.map +1 -0
  8. package/dist/bodyClass/ClientBodyClass.js +71 -0
  9. package/dist/bodyClass/ServerBodyClass.d.ts +18 -0
  10. package/dist/bodyClass/ServerBodyClass.d.ts.map +1 -0
  11. package/dist/bodyClass/ServerBodyClass.js +61 -0
  12. package/dist/bodyClass/index.d.ts +2 -0
  13. package/dist/bodyClass/index.d.ts.map +1 -0
  14. package/dist/bodyClass/index.js +1 -0
  15. package/dist/bodyClass/utils.d.ts +39 -0
  16. package/dist/bodyClass/utils.d.ts.map +1 -0
  17. package/dist/bodyClass/utils.js +84 -0
  18. package/dist/cookies/ClientCookies.d.ts +8 -3
  19. package/dist/cookies/ClientCookies.d.ts.map +1 -1
  20. package/dist/cookies/ClientCookies.js +31 -7
  21. package/dist/cookies/Cookies.d.ts +42 -0
  22. package/dist/cookies/Cookies.d.ts.map +1 -0
  23. package/dist/cookies/Cookies.js +44 -0
  24. package/dist/cookies/ServerCookies.d.ts +3 -2
  25. package/dist/cookies/ServerCookies.d.ts.map +1 -1
  26. package/dist/cookies/ServerCookies.js +6 -4
  27. package/dist/cookies/index.d.ts +1 -25
  28. package/dist/cookies/index.d.ts.map +1 -1
  29. package/dist/cookies/index.js +1 -1
  30. package/dist/crelte.d.ts +7 -1
  31. package/dist/crelte.d.ts.map +1 -1
  32. package/dist/crelte.js +4 -1
  33. package/dist/index.d.ts +13 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -0
  36. package/dist/init/client.d.ts.map +1 -1
  37. package/dist/init/client.js +23 -14
  38. package/dist/init/server.d.ts.map +1 -1
  39. package/dist/init/server.js +12 -3
  40. package/dist/init/shared.d.ts +1 -0
  41. package/dist/init/shared.d.ts.map +1 -1
  42. package/dist/init/shared.js +19 -5
  43. package/dist/loadData/Globals.d.ts.map +1 -1
  44. package/dist/loadData/entry.d.ts +11 -2
  45. package/dist/loadData/entry.d.ts.map +1 -1
  46. package/dist/loadData/entry.js +11 -2
  47. package/dist/node/index.js +1 -1
  48. package/dist/plugins/Events.d.ts +6 -1
  49. package/dist/plugins/Events.d.ts.map +1 -1
  50. package/dist/plugins/Plugins.d.ts +36 -1
  51. package/dist/plugins/Plugins.d.ts.map +1 -1
  52. package/dist/plugins/Plugins.js +32 -0
  53. package/dist/queries/index.d.ts +1 -1
  54. package/dist/queries/index.d.ts.map +1 -1
  55. package/dist/routing/route/Request.d.ts +1 -1
  56. package/dist/routing/route/Request.d.ts.map +1 -1
  57. package/dist/routing/route/Request.js +7 -3
  58. package/dist/routing/router/ClientRouter.d.ts.map +1 -1
  59. package/dist/routing/router/ClientRouter.js +18 -11
  60. package/dist/routing/router/Router.d.ts.map +1 -1
  61. package/dist/routing/router/Router.js +8 -12
  62. package/dist/server/CrelteServer.d.ts +1 -0
  63. package/dist/server/CrelteServer.d.ts.map +1 -1
  64. package/dist/server/CrelteServer.js +5 -2
  65. package/dist/server/queries/QueryGqlRoute.d.ts.map +1 -1
  66. package/dist/server/queries/QueryGqlRoute.js +3 -3
  67. package/dist/server/queries/routes.d.ts +1 -1
  68. package/dist/server/queries/routes.d.ts.map +1 -1
  69. package/dist/std/stores/StagedWritable.d.ts +48 -0
  70. package/dist/std/stores/StagedWritable.d.ts.map +1 -0
  71. package/dist/std/stores/StagedWritable.js +84 -0
  72. package/dist/std/stores/index.d.ts +2 -1
  73. package/dist/std/stores/index.d.ts.map +1 -1
  74. package/dist/std/stores/index.js +2 -1
  75. package/dist/std/sync/Barrier.js +1 -1
  76. package/dist/utils.d.ts +9 -0
  77. package/dist/utils.d.ts.map +1 -1
  78. package/dist/utils.js +11 -0
  79. package/package.json +5 -1
  80. package/src/blocks/Blocks.ts +1 -1
  81. package/src/bodyClass/BodyClass.ts +94 -0
  82. package/src/bodyClass/ClientBodyClass.ts +79 -0
  83. package/src/bodyClass/ServerBodyClass.ts +86 -0
  84. package/src/bodyClass/index.ts +1 -0
  85. package/src/bodyClass/utils.ts +118 -0
  86. package/src/cookies/ClientCookies.ts +41 -10
  87. package/src/cookies/Cookies.ts +70 -0
  88. package/src/cookies/ServerCookies.ts +9 -6
  89. package/src/cookies/index.ts +5 -29
  90. package/src/crelte.ts +12 -0
  91. package/src/index.ts +15 -1
  92. package/src/init/client.ts +26 -14
  93. package/src/init/server.ts +12 -3
  94. package/src/init/shared.ts +21 -6
  95. package/src/loadData/Globals.ts +1 -1
  96. package/src/loadData/entry.ts +12 -2
  97. package/src/node/index.ts +1 -1
  98. package/src/plugins/Events.ts +12 -1
  99. package/src/plugins/Plugins.ts +66 -1
  100. package/src/queries/index.ts +5 -1
  101. package/src/routing/route/Request.ts +11 -4
  102. package/src/routing/router/ClientRouter.ts +23 -14
  103. package/src/routing/router/Router.ts +8 -10
  104. package/src/server/CrelteServer.ts +4 -2
  105. package/src/server/queries/QueryGqlRoute.ts +3 -2
  106. package/src/server/queries/routes.ts +1 -0
  107. package/src/std/stores/StagedWritable.ts +96 -0
  108. package/src/std/stores/index.ts +2 -1
  109. package/src/std/sync/Barrier.ts +1 -1
  110. package/src/utils.ts +15 -0
@@ -1,9 +1,28 @@
1
- import { Crelte } from '../crelte.js';
1
+ import { Crelte, CrelteRequest } from '../crelte.js';
2
+ import { Request, Route } from '../routing/index.js';
2
3
  /**
3
4
  * A plugin
4
5
  */
5
6
  export interface Plugin {
6
7
  name: string;
8
+ /**
9
+ * The returned value will be used inside of CrelteRequest
10
+ */
11
+ toRequest?: (req: Request) => Plugin;
12
+ /**
13
+ * This will be called during the loadGlobalData phase.
14
+ */
15
+ loadGlobalData?: (cr: CrelteRequest) => Promise<void> | void;
16
+ /**
17
+ * This will be called during the loadData phase.
18
+ */
19
+ loadData?: (cr: CrelteRequest) => Promise<void> | void;
20
+ /**
21
+ * This will be called before the dom gets updated.
22
+ *
23
+ * At this point you can update variables or stores.
24
+ */
25
+ render?: (cr: CrelteRequest, route: Route) => void;
7
26
  }
8
27
  /**
9
28
  * A plugin create function
@@ -34,5 +53,21 @@ export default class Plugins {
34
53
  */
35
54
  add(plugin: Plugin): void;
36
55
  get(name: string): Plugin | null;
56
+ /**
57
+ * @hidden
58
+ */
59
+ z_toRequest(req: Request): Plugins;
60
+ /**
61
+ * @hidden
62
+ */
63
+ z_loadGlobalData(cr: CrelteRequest): (Promise<void> | void | undefined)[];
64
+ /**
65
+ * @hidden
66
+ */
67
+ z_loadData(cr: CrelteRequest): (Promise<void> | void | undefined)[];
68
+ /**
69
+ * @hidden
70
+ */
71
+ z_render(cr: CrelteRequest, route: Route): void;
37
72
  }
38
73
  //# sourceMappingURL=Plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Plugins.d.ts","sourceRoot":"","sources":["../../src/plugins/Plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAM7B;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM;IAIlB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"Plugins.d.ts","sourceRoot":"","sources":["../../src/plugins/Plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE7D;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvD;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAM7B;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM;IAIlB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAalC;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAMzE;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAMnE;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAK/C"}
@@ -17,4 +17,36 @@ export default class Plugins {
17
17
  get(name) {
18
18
  return this.plugins.get(name) ?? null;
19
19
  }
20
+ /**
21
+ * @hidden
22
+ */
23
+ z_toRequest(req) {
24
+ const nPlugins = new Plugins();
25
+ for (let plugin of this.plugins.values()) {
26
+ if (typeof plugin.toRequest === 'function')
27
+ plugin = plugin.toRequest(req);
28
+ nPlugins.add(plugin);
29
+ }
30
+ return nPlugins;
31
+ }
32
+ /**
33
+ * @hidden
34
+ */
35
+ z_loadGlobalData(cr) {
36
+ return Array.from(this.plugins.values()).map(plugin => plugin.loadGlobalData?.(cr));
37
+ }
38
+ /**
39
+ * @hidden
40
+ */
41
+ z_loadData(cr) {
42
+ return Array.from(this.plugins.values()).map(plugin => plugin.loadData?.(cr));
43
+ }
44
+ /**
45
+ * @hidden
46
+ */
47
+ z_render(cr, route) {
48
+ for (const plugin of this.plugins.values()) {
49
+ plugin.render?.(cr, route);
50
+ }
51
+ }
20
52
  }
@@ -41,7 +41,7 @@ export type TransformFn<T extends Record<string, QueryVar<any>> = Record<string,
41
41
  * };
42
42
  * ```
43
43
  */
44
- export type Transform<T extends Record<string, QueryVar<any>> = Record<string, QueryVar<any>>, F extends TransformFn<T> = TransformFn<T>> = (response: any, vars: InferVariableTypes<T>) => Awaited<ReturnType<F>>;
44
+ export type Transform<T extends Record<string, QueryVar<any>> = Record<string, QueryVar<any>>, F extends TransformFn<T> = TransformFn<T>> = (response: any, vars: InferVariableTypes<T>, csr: CrelteServerRequest) => Awaited<ReturnType<F>>;
45
45
  /** use {@link Handle} */
46
46
  export type HandleFn<T extends Record<string, QueryVar<any>> = Record<string, QueryVar<any>>> = (csr: CrelteServerRequest, vars: InferVariableTypes<T>) => any;
47
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"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"}
@@ -141,7 +141,7 @@ export type DelayRender = {
141
141
  *
142
142
  * @returns if the render was cancelled
143
143
  */
144
- ready: () => Promise<boolean>;
144
+ ready: () => Promise<boolean> | boolean;
145
145
  /**
146
146
  * If youre not interested when the render happens anymore
147
147
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../../src/routing/route/Request.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAC;AAE9B,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,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;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;IAC7C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvC;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,cAAc;IACd,eAAe,EAAE,aAAa,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAU;IAE5B;;OAEG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,cAAmB;IAapE;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,cAAmB;IAWxD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,IAAI,WAAW;IAI1B;;OAEG;IACH,MAAM;IAKN;;;;;;OAMG;IACH,KAAK;IAsBL;;;;;;OAMG;IACH,OAAO;IA8BP,cAAc;IACd,YAAY,CAAC,IAAI,GAAE,cAAmB;CAmBtC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,CAElD;AAED,cAAM,aAAa;IAClB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;;IAQlB,MAAM,IAAI,OAAO;IAIjB,GAAG,IAAI,WAAW;IAclB,cAAc;IACd,MAAM;IAWN,cAAc;IACd,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;CAGnC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../../src/routing/route/Request.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAC;AAE9B,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,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;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;IAC7C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvC;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,cAAc;IACd,eAAe,EAAE,aAAa,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAU;IAE5B;;OAEG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,cAAmB;IAapE;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,cAAmB;IAWxD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,IAAI,WAAW;IAI1B;;OAEG;IACH,MAAM;IAKN;;;;;;OAMG;IACH,KAAK;IAsBL;;;;;;OAMG;IACH,OAAO;IA8BP,cAAc;IACd,YAAY,CAAC,IAAI,GAAE,cAAmB;CAmBtC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,OAAO,CAElD;AAED,cAAM,aAAa;IAClB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;;IAQlB,MAAM,IAAI,OAAO;IAIjB,GAAG,IAAI,WAAW;IAqBlB,cAAc;IACd,MAAM;IAWN,cAAc;IACd,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;CAGnC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAExC;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { objClone } from '../../utils.js';
1
+ import { objClone, promiseThen } from '../../utils.js';
2
2
  import BaseRoute from './BaseRoute.js';
3
3
  import Route from './Route.js';
4
4
  import { Barrier } from '../../std/sync/index.js';
@@ -193,9 +193,13 @@ class RenderBarrier {
193
193
  add() {
194
194
  const action = this.inner.add();
195
195
  return {
196
- ready: async () => {
196
+ ready: () => {
197
197
  if (!this.inner.isOpen())
198
- await action.ready(null);
198
+ return promiseThen(
199
+ // wait for action.ready
200
+ action.ready(null),
201
+ // then return if it was cancelled
202
+ () => this.cancelled);
199
203
  return this.cancelled;
200
204
  },
201
205
  remove: () => {
@@ -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;IAiB7D,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;IA+DN,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;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"}
@@ -75,21 +75,15 @@ export default class ClientRouter extends BaseRouter {
75
75
  }
76
76
  async pushRequest(req, _opts = {}) {
77
77
  const url = req.url;
78
- return await this.handleRequest(req, route => {
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
- try {
85
- return await this.handleRequest(req, () => {
86
- window.history.replaceState(req.z_toState(), '', url.pathname + url.search + url.hash);
87
- });
88
- }
89
- catch (e) {
90
- console.warn('replacing route failed', e);
91
- throw e;
92
- }
84
+ return this.handleRequest(req, () => {
85
+ window.history.replaceState(req.z_toState(), '', url.pathname + url.search + url.hash);
86
+ });
93
87
  }
94
88
  back() {
95
89
  window.history.back();
@@ -117,6 +111,7 @@ export default class ClientRouter extends BaseRouter {
117
111
  const req = this.targetToRequest(link.href, {
118
112
  origin: 'click',
119
113
  context: { ...link.dataset },
114
+ disableScroll: attributeToBool(link, 'data-disable-scroll'),
120
115
  });
121
116
  const currRoute = this.route.get();
122
117
  const routeEq = currRoute && currRoute.eqUrl(req) && currRoute.eqSearch(req);
@@ -137,7 +132,9 @@ export default class ClientRouter extends BaseRouter {
137
132
  if (link && link.target.toLowerCase() === '_blank')
138
133
  return;
139
134
  if (link &&
140
- !link.hasAttribute('data-no-preload') &&
135
+ // todo remove data-no-preload
136
+ !attributeToBool(link, 'data-no-preload') &&
137
+ !attributeToBool(link, 'data-disable-preload') &&
141
138
  link.href) {
142
139
  this.preload(link.href);
143
140
  }
@@ -235,3 +232,13 @@ export default class ClientRouter extends BaseRouter {
235
232
  }
236
233
  }
237
234
  }
235
+ function attributeToBool(el, attr) {
236
+ switch (el.getAttribute(attr)) {
237
+ case '':
238
+ case 'true':
239
+ return true;
240
+ case 'false':
241
+ default:
242
+ return false;
243
+ }
244
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/routing/router/Router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAiB;gBAErB,KAAK,EAAE,GAAG;IAKtB;;;;;;;;OAQG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAElC;IAED;;;;;;;;;;OAUG;IACH,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAEhC;IAED;;;;;;;;OAQG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAElC;IAED;;;;;;;;OAQG;IACH,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAMxB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,CAEtC;IAED;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,IAAI,CACT,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,EACtD,IAAI,GAAE,cAAmB,GACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAsBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,IAAI,CACT,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,aAAa,EACtC,IAAI,GAAE,cAAmB;IAqB1B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAKhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,OAAO,CACZ,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,aAAa,EACtC,IAAI,GAAE,cAAmB;IAmB1B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAKnC;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAKpB;;;;OAIG;IACH,IAAI;IAKJ;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK;IAIpC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAIvD;;;;;;OAMG;IACH,eAAe,CACd,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,EACtC,IAAI,GAAE,cAAmB,GACvB,OAAO;IAIV;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;IAMxB,cAAc;IACd,kBAAkB;CAGlB"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/routing/router/Router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAiB;gBAErB,KAAK,EAAE,GAAG;IAKtB;;;;;;;;OAQG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAElC;IAED;;;;;;;;;;OAUG;IACH,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAEhC;IAED;;;;;;;;OAQG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAElC;IAED;;;;;;;;OAQG;IACH,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAMxB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,CAEtC;IAED;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,IAAI,IAAI,GAAG,IAAI;IAI5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,IAAI,CACT,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,EACtD,IAAI,GAAE,cAAmB,GACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAsBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,IAAI,CACT,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,aAAa,EACtC,IAAI,GAAE,cAAmB;IAmB1B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAMhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,OAAO,CACZ,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,aAAa,EACtC,IAAI,GAAE,cAAmB;IAiB1B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAMnC;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAKpB;;;;OAIG;IACH,IAAI;IAKJ;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK;IAIpC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAIvD;;;;;;OAMG;IACH,eAAe,CACd,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,EACtC,IAAI,GAAE,cAAmB,GACvB,OAAO;IAIV;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;IAMxB,cAAc;IACd,kBAAkB;CAGlB"}
@@ -187,19 +187,17 @@ export default class Router {
187
187
  });
188
188
  if (!req)
189
189
  return;
190
- try {
191
- return await this.inner.pushRequest(req, opts);
192
- }
193
- catch (e) {
190
+ return this.inner.pushRequest(req, opts).catch(e => {
194
191
  console.warn('pushing route failed', e);
195
192
  throw e;
196
- }
193
+ });
197
194
  }
198
195
  /**
199
196
  * @deprecated use push instead
200
197
  */
201
198
  pushState(route) {
202
- console.warn('pushState is deprecated, use push instead');
199
+ if (import.meta.env.DEV)
200
+ console.warn('pushState is deprecated, use push instead');
203
201
  this.push(route);
204
202
  }
205
203
  /**
@@ -244,19 +242,17 @@ export default class Router {
244
242
  });
245
243
  if (!req)
246
244
  return;
247
- try {
248
- return await this.inner.replaceRequest(req, opts);
249
- }
250
- catch (e) {
245
+ return this.inner.replaceRequest(req, opts).catch(e => {
251
246
  console.warn('replacing route failed', e);
252
247
  throw e;
253
- }
248
+ });
254
249
  }
255
250
  /**
256
251
  * @deprecated use replace instead
257
252
  */
258
253
  replaceState(route) {
259
- console.warn('replaceState is deprecated, use replace instead');
254
+ if (import.meta.env.DEV)
255
+ console.warn('replaceState is deprecated, use replace instead');
260
256
  this.replace(route);
261
257
  }
262
258
  /**
@@ -19,6 +19,7 @@ export default class CrelteServerRequest {
19
19
  private _sites;
20
20
  private _langs;
21
21
  private _queries;
22
+ private _scookies;
22
23
  private _cookies;
23
24
  constructor(req: ServerRequest, opts: CrelteServerRequestOptions);
24
25
  /**
@@ -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,QAAQ,CAAU;gBAEd,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,0BAA0B;IAchE;;;;;;;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,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,3 +1,4 @@
1
+ import { Cookies } from '../cookies/index.js';
1
2
  import ServerCookies from '../cookies/ServerCookies.js';
2
3
  import { Request } from '../routing/index.js';
3
4
  import { urlWithPath } from '../utils.js';
@@ -11,6 +12,7 @@ export default class CrelteServerRequest {
11
12
  _sites;
12
13
  _langs;
13
14
  _queries;
15
+ _scookies;
14
16
  _cookies;
15
17
  constructor(req, opts) {
16
18
  this.req = req;
@@ -19,7 +21,8 @@ export default class CrelteServerRequest {
19
21
  this._langs = opts.languages;
20
22
  this.prefSite = opts.preferredSite;
21
23
  this._queries = opts.queries.z_toRequest(new Request(new URL(req.url), req.site));
22
- this._cookies = new ServerCookies(req.headers);
24
+ this._scookies = new ServerCookies(req.headers);
25
+ this._cookies = new Cookies(this._scookies);
23
26
  }
24
27
  /**
25
28
  * Easy access to this.req.site
@@ -104,6 +107,6 @@ export default class CrelteServerRequest {
104
107
  }
105
108
  /** @hidden */
106
109
  z_finishResponse(resp) {
107
- this.cookies._populateHeaders(resp.headers);
110
+ this._scookies._populateHeaders(resp.headers);
108
111
  }
109
112
  }
@@ -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,EAAE,SAAS,EAAY,WAAW,EAAgB,MAAM,aAAa,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,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,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IA2B3D,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;YAuBX,SAAS;IAUjB,MAAM,CACX,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,QAAQ,CAAC;CAkHpB"}
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,EAAE,SAAS,EAAY,WAAW,EAAgB,MAAM,aAAa,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,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,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY;IA2B3D,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;CAkHpB"}
@@ -76,10 +76,10 @@ export default class QueryGqlRoute {
76
76
  ' https://github.com/crelte/crelte/issues/114 for infos');
77
77
  }
78
78
  }
79
- async transform(jsonResp, vars) {
79
+ async transform(jsonResp, vars, csr) {
80
80
  if (!this.transformFn || !jsonResp.data)
81
81
  return;
82
- const transformed = await this.transformFn(jsonResp.data, vars);
82
+ const transformed = await this.transformFn(jsonResp.data, vars, csr);
83
83
  if (typeof transformed !== 'undefined')
84
84
  jsonResp.data = transformed;
85
85
  }
@@ -164,7 +164,7 @@ export default class QueryGqlRoute {
164
164
  jsonResp = await resp.json();
165
165
  if (!jsonResp || typeof jsonResp !== 'object')
166
166
  throw new Error('invalid json response');
167
- await this.transform(jsonResp, vars);
167
+ await this.transform(jsonResp, vars, csr);
168
168
  }
169
169
  catch (e) {
170
170
  return newError(e, 500);
@@ -2,7 +2,7 @@ import { QueryVar } from '../../queries/vars.js';
2
2
  import CrelteServerRequest from '../CrelteServer.js';
3
3
  import ServerRouter from '../ServerRouter.js';
4
4
  export type CacheIfFn = (response: any, vars: Record<string, any>) => boolean;
5
- export type TransformFn = (response: any, vars: Record<string, any>) => void | any | Promise<void | any>;
5
+ export type TransformFn = (response: any, vars: Record<string, any>, csr: CrelteServerRequest) => void | any | Promise<void | any>;
6
6
  export type HandleFn = (csr: CrelteServerRequest, vars: Record<string, any>) => Promise<any> | any;
7
7
  /**
8
8
  * Returns the validated variables if some vars where defined
@@ -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;AAM9E,MAAM,MAAM,WAAW,GAAG,CACzB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACrB,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,EAAE,EAAE,YAAY,GACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAarB;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;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;AAM9E,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,EAAE,EAAE,YAAY,GACd,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAarB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEzD"}
@@ -0,0 +1,48 @@
1
+ import { CloneableOrPrimitive } from '../index.js';
2
+ import { Readable } from './index.js';
3
+ export default class StagedWritable<T> {
4
+ private inner;
5
+ private mode;
6
+ private staged;
7
+ /**
8
+ * Creates a new StagedWritable
9
+ *
10
+ * @param def A default value
11
+ */
12
+ constructor(def: T);
13
+ /**
14
+ * Returns true if the store is currently staged
15
+ */
16
+ isStaged(): boolean;
17
+ /**
18
+ * Returns a new StagedWritable which is staged and has the same value as the current one
19
+ * To commit the staged value, call `commit` on the returned StagedWritable
20
+ */
21
+ stage(): StagedWritable<T>;
22
+ /**
23
+ * The function get's called once with the current value and then when the
24
+ * values changes
25
+ *
26
+ * #### Note
27
+ * This does not check for equality like svelte.
28
+ *
29
+ * @return a function which should be called to unsubscribe
30
+ */
31
+ subscribe(fn: (val: T) => void, invalidate?: () => void): () => void;
32
+ /**
33
+ * Either updates the store and calls all subscribers with the value or
34
+ * updates the stateful value if previously toStateful was called
35
+ */
36
+ set(inner: T): void;
37
+ /**
38
+ * If the value was staged, then update the store and call all subscribers with the value
39
+ */
40
+ commit(): void;
41
+ /**
42
+ * Get the current value either staged or not
43
+ */
44
+ get(): T;
45
+ readonly(): Readable<T>;
46
+ readclone<U extends T & CloneableOrPrimitive>(this: StagedWritable<U>): Readable<U>;
47
+ }
48
+ //# sourceMappingURL=StagedWritable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StagedWritable.d.ts","sourceRoot":"","sources":["../../../src/std/stores/StagedWritable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,CAAC,OAAO,OAAO,cAAc,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAc;IAE3B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;OAIG;gBACS,GAAG,EAAE,CAAC;IAMlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC;IAQ1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAIpE;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,CAAC;IASZ;;OAEG;IACH,MAAM;IASN;;OAEG;IACH,GAAG,IAAI,CAAC;IAKR,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIvB,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,oBAAoB,EAC3C,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GACrB,QAAQ,CAAC,CAAC,CAAC;CAGd"}
@@ -0,0 +1,84 @@
1
+ import Writable from './Writable.js';
2
+ export default class StagedWritable {
3
+ inner;
4
+ // -1 = not staged, 0 = staged but no new value, 1 = staged
5
+ mode;
6
+ staged;
7
+ /**
8
+ * Creates a new StagedWritable
9
+ *
10
+ * @param def A default value
11
+ */
12
+ constructor(def) {
13
+ this.inner = new Writable(def);
14
+ this.mode = -1;
15
+ this.staged = undefined;
16
+ }
17
+ /**
18
+ * Returns true if the store is currently staged
19
+ */
20
+ isStaged() {
21
+ return this.mode >= 0;
22
+ }
23
+ /**
24
+ * Returns a new StagedWritable which is staged and has the same value as the current one
25
+ * To commit the staged value, call `commit` on the returned StagedWritable
26
+ */
27
+ stage() {
28
+ const n = Object.create(this);
29
+ n.inner = this.inner;
30
+ n.mode = 0;
31
+ n.staged = undefined;
32
+ return n;
33
+ }
34
+ /**
35
+ * The function get's called once with the current value and then when the
36
+ * values changes
37
+ *
38
+ * #### Note
39
+ * This does not check for equality like svelte.
40
+ *
41
+ * @return a function which should be called to unsubscribe
42
+ */
43
+ subscribe(fn, invalidate) {
44
+ return this.inner.subscribe(fn, invalidate);
45
+ }
46
+ /**
47
+ * Either updates the store and calls all subscribers with the value or
48
+ * updates the stateful value if previously toStateful was called
49
+ */
50
+ set(inner) {
51
+ if (this.mode >= 0) {
52
+ this.mode = 1;
53
+ this.staged = inner;
54
+ }
55
+ else {
56
+ this.inner.set(inner);
57
+ }
58
+ }
59
+ /**
60
+ * If the value was staged, then update the store and call all subscribers with the value
61
+ */
62
+ commit() {
63
+ if (this.mode < 0)
64
+ throw new Error('not staged, call stage first');
65
+ if (this.mode === 1)
66
+ this.inner.set(this.staged);
67
+ this.staged = undefined;
68
+ this.mode = -1;
69
+ }
70
+ /**
71
+ * Get the current value either staged or not
72
+ */
73
+ get() {
74
+ if (this.mode === 1)
75
+ return this.staged;
76
+ return this.inner.get();
77
+ }
78
+ readonly() {
79
+ return this.inner.readonly();
80
+ }
81
+ readclone() {
82
+ return this.inner.readclone();
83
+ }
84
+ }
@@ -1,5 +1,6 @@
1
1
  import Readable from './Readable.js';
2
2
  import Writable from './Writable.js';
3
3
  import Readclone from './Readclone.js';
4
- export { Writable, Readable, Readclone };
4
+ import StagedWritable from './StagedWritable.js';
5
+ export { Writable, Readable, Readclone, StagedWritable };
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/std/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/std/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import Readable from './Readable.js';
2
2
  import Writable from './Writable.js';
3
3
  import Readclone from './Readclone.js';
4
- export { Writable, Readable, Readclone };
4
+ import StagedWritable from './StagedWritable.js';
5
+ export { Writable, Readable, Readclone, StagedWritable };
@@ -61,7 +61,7 @@ export default class Barrier {
61
61
  }
62
62
  _maybeTrigger() {
63
63
  const ready = this.listeners.every(v => v === null || v.ready);
64
- // if all are ready
64
+ // if not all are ready
65
65
  if (!ready)
66
66
  return false;
67
67
  // send the last value to all of them
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,13 @@
1
1
  export declare function objClone(obj: any): any;
2
2
  export declare function isPromise<T>(p: Promise<T> | T): p is Promise<T>;
3
+ /**
4
+ * A helper to chain promises without needing a microtask if its not a promise
5
+ * Equivalent to:
6
+ * ```
7
+ * const val = await p;
8
+ * then(val);
9
+ * ```
10
+ */
11
+ export declare function promiseThen<T, R = void>(p: Promise<T> | T, then: (val: T) => R): Promise<R> | R;
3
12
  export declare function urlWithPath(url: string, path?: string): URL;
4
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAMtC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAE/D;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAI3D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAMtC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EACtC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GACjB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAEhB;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAI3D"}
package/dist/utils.js CHANGED
@@ -9,6 +9,17 @@ export function objClone(obj) {
9
9
  export function isPromise(p) {
10
10
  return typeof p?.then === 'function';
11
11
  }
12
+ /**
13
+ * A helper to chain promises without needing a microtask if its not a promise
14
+ * Equivalent to:
15
+ * ```
16
+ * const val = await p;
17
+ * then(val);
18
+ * ```
19
+ */
20
+ export function promiseThen(p, then) {
21
+ return isPromise(p) ? p.then(then) : then(p);
22
+ }
12
23
  // the pathname is always replaced
13
24
  export function urlWithPath(url, path) {
14
25
  const u = new URL(url);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crelte",
3
- "version": "0.5.11",
3
+ "version": "0.5.13",
4
4
  "author": "Crelte <support@crelte.com>",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -72,6 +72,10 @@
72
72
  "types": "./dist/cookies/index.d.ts",
73
73
  "default": "./dist/cookies/index.js"
74
74
  },
75
+ "./bodyClass": {
76
+ "types": "./dist/bodyClass/index.d.ts",
77
+ "default": "./dist/bodyClass/index.js"
78
+ },
75
79
  "./blocks": {
76
80
  "types": "./dist/blocks/index.d.ts",
77
81
  "default": "./dist/blocks/index.js"
@@ -125,7 +125,7 @@ export class BlockModules {
125
125
  * ```
126
126
  */
127
127
  export function blockModules(
128
- modules: Record<string, AsyncModule>,
128
+ modules: Record<string, (() => Promise<any>) | Module>,
129
129
  opts: BlockModulesOptions = {},
130
130
  ): BlockModules {
131
131
  return new BlockModules(modules, opts);