crelte 0.5.12 → 0.5.14

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 (78) 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 +18 -1
  4. package/dist/bodyClass/BodyClass.d.ts.map +1 -1
  5. package/dist/bodyClass/BodyClass.js +21 -2
  6. package/dist/bodyClass/ClientBodyClass.d.ts +7 -2
  7. package/dist/bodyClass/ClientBodyClass.d.ts.map +1 -1
  8. package/dist/bodyClass/ClientBodyClass.js +29 -15
  9. package/dist/bodyClass/ServerBodyClass.d.ts +7 -1
  10. package/dist/bodyClass/ServerBodyClass.d.ts.map +1 -1
  11. package/dist/bodyClass/ServerBodyClass.js +19 -5
  12. package/dist/bodyClass/utils.d.ts +39 -0
  13. package/dist/bodyClass/utils.d.ts.map +1 -0
  14. package/dist/bodyClass/utils.js +84 -0
  15. package/dist/crelte.d.ts.map +1 -1
  16. package/dist/crelte.js +2 -0
  17. package/dist/init/client.js +1 -1
  18. package/dist/init/server.d.ts.map +1 -1
  19. package/dist/init/server.js +1 -0
  20. package/dist/init/shared.d.ts.map +1 -1
  21. package/dist/init/shared.js +3 -0
  22. package/dist/loadData/entry.d.ts +11 -2
  23. package/dist/loadData/entry.d.ts.map +1 -1
  24. package/dist/loadData/entry.js +11 -2
  25. package/dist/queries/Queries.d.ts +3 -0
  26. package/dist/queries/Queries.d.ts.map +1 -1
  27. package/dist/queries/Queries.js +3 -0
  28. package/dist/queries/index.d.ts +22 -1
  29. package/dist/queries/index.d.ts.map +1 -1
  30. package/dist/queries/vars.d.ts +25 -2
  31. package/dist/queries/vars.d.ts.map +1 -1
  32. package/dist/queries/vars.js +42 -1
  33. package/dist/routing/route/BaseRoute.d.ts.map +1 -1
  34. package/dist/routing/route/BaseRoute.js +4 -17
  35. package/dist/server/queries/QueryGqlRoute.d.ts +3 -1
  36. package/dist/server/queries/QueryGqlRoute.d.ts.map +1 -1
  37. package/dist/server/queries/QueryGqlRoute.js +7 -5
  38. package/dist/server/queries/QueryHandleRoute.d.ts +3 -2
  39. package/dist/server/queries/QueryHandleRoute.d.ts.map +1 -1
  40. package/dist/server/queries/QueryHandleRoute.js +4 -2
  41. package/dist/server/queries/queries.d.ts.map +1 -1
  42. package/dist/server/queries/queries.js +12 -2
  43. package/dist/server/queries/routes.d.ts +4 -3
  44. package/dist/server/queries/routes.d.ts.map +1 -1
  45. package/dist/server/queries/routes.js +9 -3
  46. package/dist/std/index.d.ts +1 -0
  47. package/dist/std/index.d.ts.map +1 -1
  48. package/dist/std/index.js +1 -0
  49. package/dist/std/url/index.d.ts +40 -0
  50. package/dist/std/url/index.d.ts.map +1 -0
  51. package/dist/std/url/index.js +65 -0
  52. package/dist/std/url/utils.d.ts +19 -0
  53. package/dist/std/url/utils.d.ts.map +1 -0
  54. package/dist/std/url/utils.js +40 -0
  55. package/dist/vite/index.js +3 -2
  56. package/package.json +5 -1
  57. package/src/blocks/Blocks.ts +1 -1
  58. package/src/bodyClass/BodyClass.ts +25 -3
  59. package/src/bodyClass/ClientBodyClass.ts +37 -20
  60. package/src/bodyClass/ServerBodyClass.ts +28 -7
  61. package/src/bodyClass/utils.ts +118 -0
  62. package/src/crelte.ts +3 -0
  63. package/src/init/client.ts +1 -1
  64. package/src/init/server.ts +1 -0
  65. package/src/init/shared.ts +3 -0
  66. package/src/loadData/entry.ts +12 -2
  67. package/src/queries/Queries.ts +3 -0
  68. package/src/queries/index.ts +30 -1
  69. package/src/queries/vars.ts +58 -3
  70. package/src/routing/route/BaseRoute.ts +8 -22
  71. package/src/server/queries/QueryGqlRoute.ts +20 -4
  72. package/src/server/queries/QueryHandleRoute.ts +5 -2
  73. package/src/server/queries/queries.ts +29 -3
  74. package/src/server/queries/routes.ts +18 -3
  75. package/src/std/index.ts +1 -0
  76. package/src/std/url/index.ts +78 -0
  77. package/src/std/url/utils.ts +48 -0
  78. package/src/vite/index.ts +4 -2
@@ -58,7 +58,7 @@ export declare class BlockModules {
58
58
  * );
59
59
  * ```
60
60
  */
61
- export declare function blockModules(modules: Record<string, AsyncModule>, opts?: BlockModulesOptions): BlockModules;
61
+ export declare function blockModules(modules: Record<string, (() => Promise<any>) | Module>, opts?: BlockModulesOptions): BlockModules;
62
62
  /**
63
63
  * Load blocks data
64
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Blocks.d.ts","sourceRoot":"","sources":["../../src/blocks/Blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,MAAM;IACtB,uBAAuB;IACvB,OAAO,EAAE,GAAG,CAAC;IAEb,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3B,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,EAAE,CACV,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,YAAY,KACd,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IACjC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,IAAI,GAAE,mBAAwB;IAgC/B;;;;OAIG;IACG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAmBtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,IAAI,GAAE,mBAAwB,GAC5B,YAAY,CAEd;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CACnC,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,GAAG,EAAE,EACb,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC9B,MAAM,EAAE,GAAG,EAAE,EACb,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEjB,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAMjD,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE;CAclC"}
1
+ {"version":3,"file":"Blocks.d.ts","sourceRoot":"","sources":["../../src/blocks/Blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,MAAM;IACtB,uBAAuB;IACvB,OAAO,EAAE,GAAG,CAAC;IAEb,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3B,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,EAAE,CACV,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,YAAY,KACd,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IACjC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,IAAI,GAAE,mBAAwB;IAgC/B;;;;OAIG;IACG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAmBtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EACtD,IAAI,GAAE,mBAAwB,GAC5B,YAAY,CAEd;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CACnC,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,GAAG,EAAE,EACb,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC9B,MAAM,EAAE,GAAG,EAAE,EACb,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEjB,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAMjD,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE;CAclC"}
@@ -22,7 +22,23 @@ export default class BodyClass {
22
22
  * it.
23
23
  */
24
24
  toggle(cls: string, force?: boolean): void;
25
+ /**
26
+ * Removes the given classes from the body
27
+ */
25
28
  remove(...classes: string[]): void;
29
+ /**
30
+ * Sets the class for the given variant removing the old class for that
31
+ * variant, if cls is null it will remove the variant class
32
+ *
33
+ * If you just have like a dark or light mode and only for the dark mode a
34
+ * class, **prefer** `toggle('dark', isDarkMode)` over
35
+ * `setVariant('mode', isDarkMode ? 'dark' : null)`
36
+ *
37
+ * ## Note
38
+ * The variant name is only used for the internal state management
39
+ * and has no inpact on the actual class name
40
+ */
41
+ setVariant(variant: string, cls: string | null): void;
26
42
  /** @hidden */
27
43
  z_toRequest(): BodyClass;
28
44
  /** @hidden */
@@ -31,8 +47,9 @@ export default class BodyClass {
31
47
  export interface PlatformBodyClass {
32
48
  contains(cls: string): boolean;
33
49
  add(...classes: string[]): void;
34
- toggle(cls: string, force?: boolean): void;
50
+ toggle(cls: string, force?: boolean): boolean;
35
51
  remove(...classes: string[]): void;
52
+ setVariant(variant: string, cls: string | null): boolean;
36
53
  toRequest(): PlatformBodyClass;
37
54
  render?: () => void;
38
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/BodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;IAKlE,SAAS,CACR,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,EAC5B,UAAU,CAAC,EAAE,MAAM,IAAI,GACrB,MAAM,IAAI;IAIb;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAK1C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC,cAAc;IACd,WAAW,IAAI,SAAS;IAIxB,cAAc;IACd,QAAQ,IAAI,IAAI;CAIhB;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,SAAS,IAAI,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB"}
1
+ {"version":3,"file":"BodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/BodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;IAKlE,SAAS,CACR,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,EAC5B,UAAU,CAAC,EAAE,MAAM,IAAI,GACrB,MAAM,IAAI;IAIb;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAI1C;;OAEG;IACH,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIrD,cAAc;IACd,WAAW,IAAI,SAAS;IAIxB,cAAc;IACd,QAAQ,IAAI,IAAI;CAIhB;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAGhC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEnC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IACzD,SAAS,IAAI,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB"}
@@ -32,13 +32,32 @@ export default class BodyClass {
32
32
  * it.
33
33
  */
34
34
  toggle(cls, force) {
35
- this.inner.toggle(cls, force);
36
- this.store.set();
35
+ if (this.inner.toggle(cls, force))
36
+ this.store.set();
37
37
  }
38
+ /**
39
+ * Removes the given classes from the body
40
+ */
38
41
  remove(...classes) {
39
42
  this.inner.remove(...classes);
40
43
  this.store.set();
41
44
  }
45
+ /**
46
+ * Sets the class for the given variant removing the old class for that
47
+ * variant, if cls is null it will remove the variant class
48
+ *
49
+ * If you just have like a dark or light mode and only for the dark mode a
50
+ * class, **prefer** `toggle('dark', isDarkMode)` over
51
+ * `setVariant('mode', isDarkMode ? 'dark' : null)`
52
+ *
53
+ * ## Note
54
+ * The variant name is only used for the internal state management
55
+ * and has no inpact on the actual class name
56
+ */
57
+ setVariant(variant, cls) {
58
+ if (this.inner.setVariant(variant, cls))
59
+ this.store.set();
60
+ }
42
61
  /** @hidden */
43
62
  z_toRequest() {
44
63
  return new BodyClass(this.inner.toRequest(), this.store.stage());
@@ -1,11 +1,16 @@
1
+ import SsrCache from '../ssr/SsrCache.js';
1
2
  import { PlatformBodyClass } from './BodyClass.js';
3
+ import { ClassSet, Variants } from './utils.js';
2
4
  export default class ClientBodyClass implements PlatformBodyClass {
5
+ private variants;
3
6
  private inner;
4
- constructor(inner?: Set<string>);
7
+ constructor(variants: Variants, inner?: ClassSet);
8
+ static fromSsrCache(ssrCache: SsrCache): ClientBodyClass;
5
9
  contains(cls: string): boolean;
6
10
  add(...classes: string[]): void;
7
- toggle(cls: string, force?: boolean): void;
11
+ toggle(cls: string, force?: boolean): boolean;
8
12
  remove(...classes: string[]): void;
13
+ setVariant(variant: string, cls: string | null): boolean;
9
14
  toRequest(): ClientBodyClass;
10
15
  render(): void;
11
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientBodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/ClientBodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,iBAAiB;IAChE,OAAO,CAAC,KAAK,CAAqB;gBAEtB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAI/B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK9B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAY1C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC,SAAS,IAAI,eAAe;IAK5B,MAAM,IAAI,IAAI;CAgBd"}
1
+ {"version":3,"file":"ClientBodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/ClientBodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAsB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,KAAK,CAAkB;gBAEnB,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ;IAKhD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe;IAKxD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK9B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAM/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAe7C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAWxD,SAAS,IAAI,eAAe;IAK5B,MAAM,IAAI,IAAI;CAQd"}
@@ -1,8 +1,16 @@
1
+ import { ClassSet, ssrCacheToVariants } from './utils.js';
1
2
  export default class ClientBodyClass {
3
+ variants;
4
+ // during the request store the classes here
2
5
  inner;
3
- constructor(inner) {
6
+ constructor(variants, inner) {
7
+ this.variants = variants;
4
8
  this.inner = inner ?? null;
5
9
  }
10
+ static fromSsrCache(ssrCache) {
11
+ const variants = ssrCacheToVariants(ssrCache);
12
+ return new ClientBodyClass(variants);
13
+ }
6
14
  contains(cls) {
7
15
  if (this.inner)
8
16
  return this.inner.has(cls);
@@ -14,10 +22,13 @@ export default class ClientBodyClass {
14
22
  else
15
23
  cl().add(...classes);
16
24
  }
25
+ // returns true if the value was changed
17
26
  toggle(cls, force) {
27
+ const exists = this.contains(cls);
28
+ const shouldExist = typeof force === 'boolean' ? force : !exists;
29
+ const changed = shouldExist !== exists;
18
30
  if (this.inner) {
19
- const add = typeof force === 'boolean' ? force : !this.inner.has(cls);
20
- if (add)
31
+ if (shouldExist)
21
32
  this.inner.add(cls);
22
33
  else
23
34
  this.inner.delete(cls);
@@ -25,6 +36,7 @@ export default class ClientBodyClass {
25
36
  else {
26
37
  cl().toggle(cls, force);
27
38
  }
39
+ return changed;
28
40
  }
29
41
  remove(...classes) {
30
42
  if (this.inner)
@@ -32,24 +44,26 @@ export default class ClientBodyClass {
32
44
  else
33
45
  cl().remove(...classes);
34
46
  }
47
+ setVariant(variant, cls) {
48
+ if (this.inner)
49
+ return this.inner.setVariant(variant, cls);
50
+ const { remove, add } = this.variants.set(variant, cls);
51
+ if (remove)
52
+ cl().remove(remove);
53
+ if (add)
54
+ cl().add(add);
55
+ return !!remove || !!add;
56
+ }
35
57
  toRequest() {
36
- const inner = new Set(cl());
37
- return new ClientBodyClass(inner);
58
+ const inner = new ClassSet(cl(), this.variants.entries(), true);
59
+ return new ClientBodyClass(this.variants, inner);
38
60
  }
39
61
  render() {
40
62
  if (!this.inner)
41
63
  throw new Error('call toRequest first');
42
- const current = new Set(cl());
43
- for (const cls of this.inner) {
44
- const existed = current.delete(cls);
45
- if (!existed)
46
- cl().add(cls);
47
- }
48
- // now lets remove all classes that still exist in current
49
- for (const cls of current) {
50
- cl().remove(cls);
51
- }
64
+ const inner = this.inner;
52
65
  this.inner = null;
66
+ inner.applyHistory(this);
53
67
  }
54
68
  }
55
69
  function cl() {
@@ -1,12 +1,18 @@
1
+ import SsrCache from '../ssr/SsrCache.js';
1
2
  import { PlatformBodyClass } from './BodyClass.js';
2
3
  export default class ServerBodyClass implements PlatformBodyClass {
3
4
  private inner;
4
5
  constructor();
5
6
  contains(cls: string): boolean;
6
7
  add(...classes: string[]): void;
7
- toggle(cls: string, force?: boolean): void;
8
+ toggle(cls: string, force?: boolean): boolean;
8
9
  remove(...classes: string[]): void;
10
+ /**
11
+ * @returns Returns true if the value was changed
12
+ */
13
+ setVariant(variant: string, cls: string | null): boolean;
9
14
  toRequest(): ServerBodyClass;
15
+ z_populateSsrCache(ssrCache: SsrCache): void;
10
16
  z_processHtmlTemplate(html: string): string;
11
17
  }
12
18
  //# sourceMappingURL=ServerBodyClass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServerBodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/ServerBodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,iBAAiB;IAChE,OAAO,CAAC,KAAK,CAAc;;IAM3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAiB1C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC,SAAS,IAAI,eAAe;IAI5B,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAU3C"}
1
+ {"version":3,"file":"ServerBodyClass.d.ts","sourceRoot":"","sources":["../../src/bodyClass/ServerBodyClass.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,iBAAiB;IAChE,OAAO,CAAC,KAAK,CAAW;;IAMxB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAqB7C,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAIxD,SAAS,IAAI,eAAe;IAK5B,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI5C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAa3C"}
@@ -1,7 +1,8 @@
1
+ import { ClassSet, variantsToSsrCache } from './utils.js';
1
2
  export default class ServerBodyClass {
2
3
  inner;
3
4
  constructor() {
4
- this.inner = new Set();
5
+ this.inner = new ClassSet();
5
6
  }
6
7
  contains(cls) {
7
8
  return this.inner.has(cls);
@@ -17,25 +18,38 @@ export default class ServerBodyClass {
17
18
  'to unexpected results. Because in a loadData the server will add it ' +
18
19
  'and the client will afterwards remove it.');
19
20
  }
20
- const add = typeof force === 'boolean' ? force : !this.inner.has(cls);
21
- if (add)
21
+ const exists = this.inner.has(cls);
22
+ const shouldExist = typeof force === 'boolean' ? force : !exists;
23
+ const changed = shouldExist !== exists;
24
+ if (shouldExist)
22
25
  this.inner.add(cls);
23
26
  else
24
27
  this.inner.delete(cls);
28
+ return changed;
25
29
  }
26
30
  remove(...classes) {
27
31
  validate(classes);
28
32
  classes.forEach(cls => this.inner.delete(cls));
29
33
  }
34
+ /**
35
+ * @returns Returns true if the value was changed
36
+ */
37
+ setVariant(variant, cls) {
38
+ return this.inner.setVariant(variant, cls);
39
+ }
30
40
  toRequest() {
41
+ // no second request should ever start on the server
31
42
  return this;
32
43
  }
44
+ z_populateSsrCache(ssrCache) {
45
+ variantsToSsrCache(this.inner.z_variants, ssrCache);
46
+ }
33
47
  z_processHtmlTemplate(html) {
34
48
  const SEARCH_STR = '<!--body-class-->';
35
- if (this.inner.size && !html.includes(SEARCH_STR)) {
49
+ if (this.inner.length && !html.includes(SEARCH_STR)) {
36
50
  throw new Error('index.html needs to contain `class="<!--body-class-->"`');
37
51
  }
38
- return html.replace(SEARCH_STR, Array.from(this.inner).join(' '));
52
+ return html.replace(SEARCH_STR, Array.from(this.inner.classes()).join(' '));
39
53
  }
40
54
  }
41
55
  function validate(classes) {
@@ -0,0 +1,39 @@
1
+ import SsrCache from '../ssr/SsrCache.js';
2
+ export type HistoryClassSet = {
3
+ add(cls: string): void;
4
+ remove(cls: string): void;
5
+ setVariant(variant: string, cls: string | null): void;
6
+ };
7
+ export declare class ClassSet {
8
+ private _classes;
9
+ /** @hidden */
10
+ z_variants: Variants;
11
+ private history;
12
+ constructor(classes?: Iterable<string>, variants?: Iterable<[string, string]>, history?: boolean);
13
+ classes(): Iterable<string>;
14
+ get length(): number;
15
+ has(cls: string): boolean;
16
+ add(cls: string): void;
17
+ delete(cls: string): void;
18
+ /**
19
+ * @returns Returns true if the value was changed
20
+ */
21
+ setVariant(variant: string, cls: string | null): boolean;
22
+ /**
23
+ * Fails if no history is active.
24
+ */
25
+ applyHistory(cl: HistoryClassSet): void;
26
+ }
27
+ export type VariantSetReturn = {
28
+ remove?: string;
29
+ add?: string;
30
+ };
31
+ export declare class Variants {
32
+ private inner;
33
+ constructor(entries?: Iterable<[string, string]>);
34
+ set(variant: string, cls: string | null): VariantSetReturn;
35
+ entries(): Iterable<[string, string]>;
36
+ }
37
+ export declare function ssrCacheToVariants(ssrCache: SsrCache): Variants;
38
+ export declare function variantsToSsrCache(variants: Variants, ssrCache: SsrCache): void;
39
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bodyClass/utils.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,qBAAa,QAAQ;IACpB,OAAO,CAAC,QAAQ,CAAc;IAC9B,cAAc;IACd,UAAU,EAAE,QAAQ,CAAC;IACrB,OAAO,CAAC,OAAO,CAA2C;gBAGzD,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACrC,OAAO,GAAE,OAAe;IAOzB,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC;IAI3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAaxD;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;CAGvC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,QAAQ;IAEpB,OAAO,CAAC,KAAK,CAAsB;gBAEvB,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIhD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB;IAkB1D,OAAO,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAGrC;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/D;AAGD,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAChB,IAAI,CAEN"}
@@ -0,0 +1,84 @@
1
+ export class ClassSet {
2
+ _classes;
3
+ /** @hidden */
4
+ z_variants;
5
+ history;
6
+ constructor(classes, variants, history = false) {
7
+ this._classes = new Set(classes);
8
+ this.z_variants = new Variants();
9
+ this.history = history ? [] : null;
10
+ }
11
+ classes() {
12
+ return this._classes;
13
+ }
14
+ get length() {
15
+ return this._classes.size;
16
+ }
17
+ has(cls) {
18
+ return this._classes.has(cls);
19
+ }
20
+ add(cls) {
21
+ this._classes.add(cls);
22
+ if (this.history)
23
+ this.history.push(c => c.add(cls));
24
+ }
25
+ delete(cls) {
26
+ this._classes.delete(cls);
27
+ if (this.history)
28
+ this.history.push(c => c.remove(cls));
29
+ }
30
+ /**
31
+ * @returns Returns true if the value was changed
32
+ */
33
+ setVariant(variant, cls) {
34
+ const { remove, add } = this.z_variants.set(variant, cls);
35
+ if (remove)
36
+ this.delete(remove);
37
+ if (add)
38
+ this.add(add);
39
+ const changed = !!remove || !!add;
40
+ if (this.history)
41
+ this.history.push(c => c.setVariant(variant, cls));
42
+ return changed;
43
+ }
44
+ /**
45
+ * Fails if no history is active.
46
+ */
47
+ applyHistory(cl) {
48
+ this.history.forEach(fn => fn(cl));
49
+ }
50
+ }
51
+ export class Variants {
52
+ // list of active variant classes
53
+ inner;
54
+ constructor(entries) {
55
+ this.inner = new Map(entries);
56
+ }
57
+ set(variant, cls) {
58
+ const current = this.inner.get(variant) ?? null;
59
+ if (current === cls)
60
+ return {};
61
+ const obj = {};
62
+ if (current)
63
+ obj.remove = current;
64
+ if (cls) {
65
+ obj.add = cls;
66
+ this.inner.set(variant, cls);
67
+ }
68
+ else {
69
+ this.inner.delete(variant);
70
+ }
71
+ return obj;
72
+ }
73
+ entries() {
74
+ return this.inner.entries();
75
+ }
76
+ }
77
+ // separate function for tree shaking
78
+ export function ssrCacheToVariants(ssrCache) {
79
+ return new Variants(ssrCache.get('BODY_CLASS_VAR'));
80
+ }
81
+ // separate function for tree shaking
82
+ export function variantsToSsrCache(variants, ssrCache) {
83
+ ssrCache.set('BODY_CLASS_VAR', Array.from(variants.entries()));
84
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"crelte.d.ts","sourceRoot":"","sources":["../src/crelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crelte.d.ts","sourceRoot":"","sources":["../src/crelte.ts"],"names":[],"mappings":"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"}
package/dist/crelte.js CHANGED
@@ -21,6 +21,8 @@ export function newCrelte({ config, ssrCache, plugins, events, globals, router,
21
21
  queries,
22
22
  cookies,
23
23
  bodyClass,
24
+ // when adding a new helper function make sure to add it to
25
+ // onNewCrelteRequest if needed
24
26
  getPlugin: name => plugins.get(name),
25
27
  getEnv: key => ssrCache.get(key),
26
28
  frontendUrl: path => urlWithPath(ssrCache.get('FRONTEND_URL'), path),
@@ -61,7 +61,7 @@ export async function main(data) {
61
61
  router: new Router(router),
62
62
  queries,
63
63
  cookies: new Cookies(new ClientCookies()),
64
- bodyClass: new BodyClass(new ClientBodyClass()),
64
+ bodyClass: new BodyClass(ClientBodyClass.fromSsrCache(ssrCache)),
65
65
  });
66
66
  const app = new InternalApp(data.app);
67
67
  // setup plugins
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IAET,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAsHlE;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,kBAAkB,CAAC;CAC/B,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,CAgC5C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IAET,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAuHlE;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,kBAAkB,CAAC;CAC/B,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,CAgC5C"}
@@ -101,6 +101,7 @@ export async function main(data) {
101
101
  props: { route: routeProp },
102
102
  context,
103
103
  });
104
+ bodyClass.z_populateSsrCache(ssrCache);
104
105
  head += ssrComponents.toHead(data.serverData.ssrManifest);
105
106
  head += crelte.ssrCache.z_exportToHead();
106
107
  let htmlTemplate = data.serverData.htmlTemplate;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/init/shared.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,WAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AAC9E,OAAO,OAA2B,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAExE;AAED,wBAAgB,UAAU,CACzB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,EAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAcxB;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,OAAO,GACV,aAAa,CAcf;AAsBD,wBAAsB,MAAM,CAC3B,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,WAAW,EAChB,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAwHf"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/init/shared.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,WAA+B,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AAC9E,OAAO,OAA2B,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAExE;AAED,wBAAgB,UAAU,CACzB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,EAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAcxB;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,OAAO,GACV,aAAa,CAiBf;AAsBD,wBAAsB,MAAM,CAC3B,EAAE,EAAE,aAAa,EACjB,GAAG,EAAE,WAAW,EAChB,QAAQ,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAwHf"}
@@ -46,6 +46,9 @@ export function onNewCrelteRequest(crelte, req) {
46
46
  cookies: crelte.cookies.z_toRequest(),
47
47
  bodyClass: crelte.bodyClass.z_toRequest(),
48
48
  };
49
+ // make sure helper funcitons link to the correct instances
50
+ nCrelte.getPlugin = name => nCrelte.plugins.get(name);
51
+ nCrelte.getGlobalStore = name => nCrelte.globals.getStore(name);
49
52
  return crelteToRequest(nCrelte, req);
50
53
  }
51
54
  async function eventsLoadEntry(cr) {
@@ -1,5 +1,5 @@
1
1
  import { CrelteRequest } from '../index.js';
2
- import { Query } from '../queries/Queries.js';
2
+ import { Query, QueryOptions } from '../queries/Queries.js';
3
3
  export type Entry = {
4
4
  sectionHandle: string;
5
5
  typeHandle: string;
@@ -11,7 +11,16 @@ export type EntryQueryVars = {
11
11
  [key: string]: any;
12
12
  };
13
13
  export declare function entryQueryVars(cr: CrelteRequest): EntryQueryVars;
14
- export declare function queryEntry(cr: CrelteRequest, entryQuery: Query, vars: EntryQueryVars): Promise<Entry>;
14
+ /**
15
+ * ## Example
16
+ * `App.svelte`
17
+ * ```ts
18
+ * import entryQuery from '@/queries/entry.graphql';
19
+ *
20
+ * export const loadEntry => cr => queryEntry(cr, entryQuery, entryQueryVars(cr));
21
+ * ```
22
+ */
23
+ export declare function queryEntry(cr: CrelteRequest, entryQuery: Query, vars: EntryQueryVars, opts?: QueryOptions): Promise<Entry>;
15
24
  export declare const ENTRY_ERROR_404: Entry;
16
25
  /**
17
26
  * Get the entry from the page
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/loadData/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,MAAM,MAAM,KAAK,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IAGf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,cAAc,CAchE;AAED,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,cAAc,GAClB,OAAO,CAAC,KAAK,CAAC,CAGhB;AAED,eAAO,MAAM,eAAe,EAAE,KAG7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAUpD"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/loadData/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,KAAK,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IAGf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,cAAc,CAchE;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,KAAK,CAAC,CAGhB;AAED,eAAO,MAAM,eAAe,EAAE,KAG7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAUpD"}
@@ -11,8 +11,17 @@ export function entryQueryVars(cr) {
11
11
  siteId: cr.site.id,
12
12
  };
13
13
  }
14
- export async function queryEntry(cr, entryQuery, vars) {
15
- const page = await cr.query(entryQuery, vars);
14
+ /**
15
+ * ## Example
16
+ * `App.svelte`
17
+ * ```ts
18
+ * import entryQuery from '@/queries/entry.graphql';
19
+ *
20
+ * export const loadEntry => cr => queryEntry(cr, entryQuery, entryQueryVars(cr));
21
+ * ```
22
+ */
23
+ export async function queryEntry(cr, entryQuery, vars, opts) {
24
+ const page = await cr.query(entryQuery, vars, opts);
16
25
  return extractEntry(page) ?? ENTRY_ERROR_404;
17
26
  }
18
27
  export const ENTRY_ERROR_404 = {
@@ -41,6 +41,9 @@ export type NamedQuery = {
41
41
  * Create a NamedQuery for the given server query name.
42
42
  *
43
43
  * Prefer importing a graphql file instead.
44
+ *
45
+ * #### Note
46
+ * This needs to match the name of the js/ts file.
44
47
  */
45
48
  export declare function namedQuery(name: string): NamedQuery;
46
49
  /** Returns true if the passed object is a GraphQlQuery */
@@ -1 +1 @@
1
- {"version":3,"file":"Queries.d.ts","sourceRoot":"","sources":["../../src/queries/Queries.ts"],"names":[],"mappings":"AAAA,OAAO,QAAwC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAa,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAI9C;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAgC;IAE7C,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO;IAUP;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,QAAyB,EACnC,IAAI,GAAE,cAAmB,GACvB,OAAO;IAQV;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAQnE;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IA0BnB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;CAGxB"}
1
+ {"version":3,"file":"Queries.d.ts","sourceRoot":"","sources":["../../src/queries/Queries.ts"],"names":[],"mappings":"AAAA,OAAO,QAAwC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAa,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAI9C;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAgC;IAE7C,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO;IAUP;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,QAAyB,EACnC,IAAI,GAAE,cAAmB,GACvB,OAAO;IAQV;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAQnE;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IA0BnB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;CAGxB"}
@@ -4,6 +4,9 @@ import QueryError from './QueryError.js';
4
4
  * Create a NamedQuery for the given server query name.
5
5
  *
6
6
  * Prefer importing a graphql file instead.
7
+ *
8
+ * #### Note
9
+ * This needs to match the name of the js/ts file.
7
10
  */
8
11
  export function namedQuery(name) {
9
12
  return { queryName: name };
@@ -1,5 +1,6 @@
1
1
  import Queries, { InlineQuery, isQuery, namedQuery, NamedQuery, QueriesOptions, Query, QueryOptions } from '../queries/Queries.js';
2
2
  import type CrelteServerRequest from '../server/CrelteServer.js';
3
+ import ServerRouter from '../server/ServerRouter.js';
3
4
  import { gql } from './gql.js';
4
5
  import QueryError, { QueryErrorResponse } from './QueryError.js';
5
6
  import { QueryVar, ValidIf, vars, varsIdsEqual } from './vars.js';
@@ -10,6 +11,26 @@ export type InferQueryVarType<T> = T extends QueryVar<infer U> ? U : never;
10
11
  export type InferVariableTypes<T> = {
11
12
  [K in keyof T]: InferQueryVarType<T[K]>;
12
13
  };
14
+ /**
15
+ * Defines wether the query variables are valid.
16
+ *
17
+ * Either throw or return a boolean.
18
+ *
19
+ * #### Example
20
+ * ```ts
21
+ * import { vars, ValidVars } from 'crelte/queries';
22
+ *
23
+ * export const variables = {
24
+ * siteId: vars.siteId(),
25
+ * category: vars.id()
26
+ * };
27
+ *
28
+ * export const validVars: ValidVars<typeof variables> = (vars, sr) => {
29
+ * if (!vars.category === 5) throw new Error('category needs to be 5');
30
+ * };
31
+ * ```
32
+ */
33
+ export type ValidVars<T extends Record<string, QueryVar<any>>> = (vars: InferVariableTypes<T>, sr: ServerRouter) => void | boolean;
13
34
  /**
14
35
  * Defines when a query can safely be cached.
15
36
  *
@@ -41,7 +62,7 @@ export type TransformFn<T extends Record<string, QueryVar<any>> = Record<string,
41
62
  * };
42
63
  * ```
43
64
  */
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>>;
65
+ 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
66
  /** use {@link Handle} */
46
67
  export type HandleFn<T extends Record<string, QueryVar<any>> = Record<string, QueryVar<any>>> = (csr: CrelteServerRequest, vars: InferVariableTypes<T>) => any;
47
68
  /**
@@ -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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"}