crelte 0.1.0

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 (130) hide show
  1. package/LICENSE.md +41 -0
  2. package/dist/Crelte.d.ts +55 -0
  3. package/dist/Crelte.d.ts.map +1 -0
  4. package/dist/Crelte.js +106 -0
  5. package/dist/CrelteBase.d.ts +16 -0
  6. package/dist/CrelteBase.d.ts.map +1 -0
  7. package/dist/CrelteBase.js +1 -0
  8. package/dist/CrelteRouted.d.ts +50 -0
  9. package/dist/CrelteRouted.d.ts.map +1 -0
  10. package/dist/CrelteRouted.js +88 -0
  11. package/dist/blocks/Blocks.d.ts +35 -0
  12. package/dist/blocks/Blocks.d.ts.map +1 -0
  13. package/dist/blocks/Blocks.js +100 -0
  14. package/dist/blocks/Blocks.svelte +21 -0
  15. package/dist/blocks/Blocks.svelte.d.ts +24 -0
  16. package/dist/blocks/Blocks.svelte.d.ts.map +1 -0
  17. package/dist/blocks/index.d.ts +5 -0
  18. package/dist/blocks/index.d.ts.map +1 -0
  19. package/dist/blocks/index.js +3 -0
  20. package/dist/cookies/ClientCookies.d.ts +9 -0
  21. package/dist/cookies/ClientCookies.d.ts.map +1 -0
  22. package/dist/cookies/ClientCookies.js +22 -0
  23. package/dist/cookies/ServerCookies.d.ts +13 -0
  24. package/dist/cookies/ServerCookies.d.ts.map +1 -0
  25. package/dist/cookies/ServerCookies.js +31 -0
  26. package/dist/cookies/index.d.ts +20 -0
  27. package/dist/cookies/index.d.ts.map +1 -0
  28. package/dist/cookies/index.js +1 -0
  29. package/dist/cookies/utils.d.ts +12 -0
  30. package/dist/cookies/utils.d.ts.map +1 -0
  31. package/dist/cookies/utils.js +32 -0
  32. package/dist/graphql/GraphQl.d.ts +60 -0
  33. package/dist/graphql/GraphQl.d.ts.map +1 -0
  34. package/dist/graphql/GraphQl.js +197 -0
  35. package/dist/graphql/gql.test.d.ts +2 -0
  36. package/dist/graphql/gql.test.d.ts.map +1 -0
  37. package/dist/graphql/gql.test.js +80 -0
  38. package/dist/graphql/index.d.ts +3 -0
  39. package/dist/graphql/index.d.ts.map +1 -0
  40. package/dist/graphql/index.js +2 -0
  41. package/dist/index.d.ts +67 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +83 -0
  44. package/dist/init/client.d.ts +13 -0
  45. package/dist/init/client.d.ts.map +1 -0
  46. package/dist/init/client.js +129 -0
  47. package/dist/init/server.d.ts +38 -0
  48. package/dist/init/server.d.ts.map +1 -0
  49. package/dist/init/server.js +95 -0
  50. package/dist/init/shared.d.ts +29 -0
  51. package/dist/init/shared.d.ts.map +1 -0
  52. package/dist/init/shared.js +154 -0
  53. package/dist/loadData/Globals.d.ts +33 -0
  54. package/dist/loadData/Globals.d.ts.map +1 -0
  55. package/dist/loadData/Globals.js +119 -0
  56. package/dist/loadData/index.d.ts +25 -0
  57. package/dist/loadData/index.d.ts.map +1 -0
  58. package/dist/loadData/index.js +39 -0
  59. package/dist/plugins/Events.d.ts +11 -0
  60. package/dist/plugins/Events.d.ts.map +1 -0
  61. package/dist/plugins/Events.js +29 -0
  62. package/dist/plugins/Plugins.d.ts +12 -0
  63. package/dist/plugins/Plugins.d.ts.map +1 -0
  64. package/dist/plugins/Plugins.js +12 -0
  65. package/dist/plugins/index.d.ts +5 -0
  66. package/dist/plugins/index.d.ts.map +1 -0
  67. package/dist/plugins/index.js +2 -0
  68. package/dist/routing/History.d.ts +22 -0
  69. package/dist/routing/History.d.ts.map +1 -0
  70. package/dist/routing/History.js +36 -0
  71. package/dist/routing/InnerRouter.d.ts +111 -0
  72. package/dist/routing/InnerRouter.d.ts.map +1 -0
  73. package/dist/routing/InnerRouter.js +397 -0
  74. package/dist/routing/PageLoader.d.ts +37 -0
  75. package/dist/routing/PageLoader.d.ts.map +1 -0
  76. package/dist/routing/PageLoader.js +72 -0
  77. package/dist/routing/Route.d.ts +82 -0
  78. package/dist/routing/Route.d.ts.map +1 -0
  79. package/dist/routing/Route.js +134 -0
  80. package/dist/routing/Router.d.ts +162 -0
  81. package/dist/routing/Router.d.ts.map +1 -0
  82. package/dist/routing/Router.js +333 -0
  83. package/dist/routing/Site.d.ts +47 -0
  84. package/dist/routing/Site.d.ts.map +1 -0
  85. package/dist/routing/Site.js +48 -0
  86. package/dist/routing/index.d.ts +5 -0
  87. package/dist/routing/index.d.ts.map +1 -0
  88. package/dist/routing/index.js +4 -0
  89. package/dist/ssr/SsrCache.d.ts +12 -0
  90. package/dist/ssr/SsrCache.d.ts.map +1 -0
  91. package/dist/ssr/SsrCache.js +50 -0
  92. package/dist/ssr/SsrComponents.d.ts +7 -0
  93. package/dist/ssr/SsrComponents.d.ts.map +1 -0
  94. package/dist/ssr/SsrComponents.js +30 -0
  95. package/dist/ssr/index.d.ts +4 -0
  96. package/dist/ssr/index.d.ts.map +1 -0
  97. package/dist/ssr/index.js +3 -0
  98. package/package.json +79 -0
  99. package/src/Crelte.ts +135 -0
  100. package/src/CrelteBase.ts +24 -0
  101. package/src/CrelteRouted.ts +128 -0
  102. package/src/blocks/Blocks.svelte +68 -0
  103. package/src/blocks/Blocks.ts +155 -0
  104. package/src/blocks/index.ts +14 -0
  105. package/src/cookies/ClientCookies.ts +30 -0
  106. package/src/cookies/ServerCookies.ts +42 -0
  107. package/src/cookies/index.ts +24 -0
  108. package/src/cookies/utils.ts +53 -0
  109. package/src/graphql/GraphQl.ts +281 -0
  110. package/src/graphql/gql.test.ts +123 -0
  111. package/src/graphql/index.ts +8 -0
  112. package/src/index.ts +109 -0
  113. package/src/init/client.ts +190 -0
  114. package/src/init/server.ts +177 -0
  115. package/src/init/shared.ts +221 -0
  116. package/src/loadData/Globals.ts +150 -0
  117. package/src/loadData/index.ts +67 -0
  118. package/src/plugins/Events.ts +50 -0
  119. package/src/plugins/Plugins.ts +23 -0
  120. package/src/plugins/index.ts +5 -0
  121. package/src/routing/History.ts +52 -0
  122. package/src/routing/InnerRouter.ts +469 -0
  123. package/src/routing/PageLoader.ts +112 -0
  124. package/src/routing/Route.ts +184 -0
  125. package/src/routing/Router.ts +476 -0
  126. package/src/routing/Site.ts +65 -0
  127. package/src/routing/index.ts +5 -0
  128. package/src/ssr/SsrCache.ts +61 -0
  129. package/src/ssr/SsrComponents.ts +34 -0
  130. package/src/ssr/index.ts +4 -0
@@ -0,0 +1,37 @@
1
+ import Route from './Route.js';
2
+ import Site from './Site.js';
3
+ export type PageLoaderOptions = {
4
+ debugTiming: boolean;
5
+ };
6
+ export type LoadResponse = {
7
+ success: boolean;
8
+ data: any;
9
+ };
10
+ export type LoadFn = (route: Route, site: Site, opts: LoadOptions) => Promise<any> | any;
11
+ export type LoadOptions = {
12
+ setProgress: (num: number) => void;
13
+ };
14
+ /**
15
+ * The PageLoader which is responsible for loading page Data
16
+ */
17
+ export default class PageLoader<More> {
18
+ private debugTiming;
19
+ private preloadedUrls;
20
+ private loadingVersion;
21
+ onLoaded: (resp: LoadResponse, route: Route, site: Site, more: More) => void;
22
+ onProgress: (loading: boolean, progress?: number) => void;
23
+ loadFn: LoadFn;
24
+ /**
25
+ * Creates a new PageLoader
26
+ *
27
+ * @param {Object} options `{debugTiming}`
28
+ */
29
+ constructor(options: PageLoaderOptions);
30
+ /**
31
+ * Discard the current page load if one is happening
32
+ */
33
+ discard(): void;
34
+ load(route: Route, site: Site, more: More): Promise<void>;
35
+ preload(route: Route, site: Site): Promise<void>;
36
+ }
37
+ //# sourceMappingURL=PageLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageLoader.d.ts","sourceRoot":"","sources":["../../../../src/routing/PageLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,CACpB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,KACb,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,IAAI;IACnC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAc;IAEnC,OAAO,CAAC,cAAc,CAAS;IAE/B,QAAQ,EAAE,CACT,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,KACN,IAAI,CAAC;IACV,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;gBACS,OAAO,EAAE,iBAAiB;IAWtC;;OAEG;IACH,OAAO;IAKD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAiCzC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;CActC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The PageLoader which is responsible for loading page Data
3
+ */
4
+ export default class PageLoader {
5
+ debugTiming;
6
+ preloadedUrls;
7
+ loadingVersion;
8
+ onLoaded;
9
+ onProgress;
10
+ loadFn;
11
+ /**
12
+ * Creates a new PageLoader
13
+ *
14
+ * @param {Object} options `{debugTiming}`
15
+ */
16
+ constructor(options) {
17
+ this.debugTiming = options.debugTiming;
18
+ this.preloadedUrls = new Set();
19
+ this.loadingVersion = 0;
20
+ this.onLoaded = () => null;
21
+ this.onProgress = () => null;
22
+ this.loadFn = () => null;
23
+ }
24
+ /**
25
+ * Discard the current page load if one is happening
26
+ */
27
+ discard() {
28
+ this.loadingVersion++;
29
+ this.onProgress(false);
30
+ }
31
+ async load(route, site, more) {
32
+ this.onProgress(true);
33
+ const version = ++this.loadingVersion;
34
+ const startTime = this.debugTiming ? Date.now() : null;
35
+ const setProgress = (num) => {
36
+ if (this.loadingVersion !== version)
37
+ return;
38
+ this.onProgress(true, num);
39
+ };
40
+ const resp = { success: false, data: null };
41
+ try {
42
+ resp.data = await this.loadFn(route, site, { setProgress });
43
+ resp.success = true;
44
+ }
45
+ catch (e) {
46
+ resp.success = false;
47
+ resp.data = e;
48
+ }
49
+ if (startTime)
50
+ console.log('page load took ' + (Date.now() - startTime) + 'ms');
51
+ // if were the last that called loading, trigger the loaded event
52
+ if (this.loadingVersion !== version)
53
+ return console.log('route changed quickly, ignoring response');
54
+ this.onProgress(false);
55
+ this.onLoaded(resp, route, site, more);
56
+ }
57
+ // you don't need to wait on this call
58
+ async preload(route, site) {
59
+ const url = route.url.origin + route.url.pathname;
60
+ if (this.preloadedUrls.has(url))
61
+ return;
62
+ this.preloadedUrls.add(url);
63
+ try {
64
+ await this.loadFn(route, site, { setProgress: () => null });
65
+ }
66
+ catch (e) {
67
+ console.log('preload failed');
68
+ // retry at another time
69
+ this.preloadedUrls.delete(url);
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,82 @@
1
+ import Site from './Site.js';
2
+ export type RouteOpts = {
3
+ scrollY?: number;
4
+ index?: number;
5
+ origin?: RouteOrigin;
6
+ };
7
+ /**
8
+ * RouteOrigin represents the origin of a route.
9
+ * This type is non-exhaustive and might expand in the future.
10
+ *
11
+ * - `'init'`: is set on the first page load
12
+ * - `'manual'`: is set when a route is triggered manually via `Router.open`
13
+ * - `'live-preview-init'`: is set on the first page load in live preview mode
14
+ * - `'click'`: is set when a route is triggered by a click event
15
+ * - `'pop'`: is set when a route is triggered by a popstate event (back/forward)
16
+ */
17
+ export type RouteOrigin = 'init' | 'live-preview-init' | 'manual' | 'click' | 'pop';
18
+ /**
19
+ * A Route contains information about the current page for example the url and
20
+ * the site id
21
+ *
22
+ * ## Note
23
+ * Never update the route directly, clone it before
24
+ */
25
+ export default class Route {
26
+ /**
27
+ * The url of the route
28
+ */
29
+ url: URL;
30
+ /**
31
+ * The site of the route if it could be defined
32
+ */
33
+ site: Site | null;
34
+ /**
35
+ * The scroll position of the current route
36
+ */
37
+ scrollY: number | null;
38
+ /**
39
+ * the position in the browser history of this route
40
+ * this allows to find out if we can go back
41
+ */
42
+ index: number;
43
+ /**
44
+ * The origin of this route
45
+ *
46
+ * Might pop, click or init (non exclusive)
47
+ */
48
+ origin: RouteOrigin;
49
+ /**
50
+ * Creates a new Route
51
+ */
52
+ constructor(url: string | URL, site: Site | null, opts?: RouteOpts);
53
+ /**
54
+ * Returns the uri of the route
55
+ *
56
+ * Never ends with a slash
57
+ */
58
+ get uri(): string;
59
+ /**
60
+ * Never ends with a slash
61
+ */
62
+ get baseUrl(): string;
63
+ get search(): URLSearchParams;
64
+ get hash(): string;
65
+ eq(route: Route): boolean;
66
+ /**
67
+ * Checks if there are previous routes which would allow it to go back
68
+ */
69
+ canGoBack(): boolean;
70
+ /**
71
+ * Gets the search param
72
+ */
73
+ getSearchParam(key: string): string | null;
74
+ /**
75
+ * Sets the search param or removes it if the value is null or undefined
76
+ */
77
+ setSearchParam(key: string, value?: string | number | null): void;
78
+ clone(): Route;
79
+ _fillFromState(state: any): void;
80
+ _toState(): any;
81
+ }
82
+ //# sourceMappingURL=Route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../../../src/routing/Route.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,SAAS,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACpB,MAAM,GACN,mBAAmB,GACnB,QAAQ,GACR,OAAO,GACP,KAAK,CAAC;AAET;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IAET;;OAEG;IACH,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,MAAM,EAAE,WAAW,CAAC;IAEpB;;OAEG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAE,SAAc;IAStE;;;;OAIG;IACH,IAAI,GAAG,IAAI,MAAM,CAShB;IAGD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAIpB;IAED,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,EAAE,CAAC,KAAK,EAAE,KAAK;IAwBf;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ1D,KAAK;IASL,cAAc,CAAC,KAAK,EAAE,GAAG;IASzB,QAAQ,IAAI,GAAG;CAQf"}
@@ -0,0 +1,134 @@
1
+ import { trimSlashEnd } from './Router.js';
2
+ /**
3
+ * A Route contains information about the current page for example the url and
4
+ * the site id
5
+ *
6
+ * ## Note
7
+ * Never update the route directly, clone it before
8
+ */
9
+ export default class Route {
10
+ /**
11
+ * The url of the route
12
+ */
13
+ url;
14
+ /**
15
+ * The site of the route if it could be defined
16
+ */
17
+ site;
18
+ /**
19
+ * The scroll position of the current route
20
+ */
21
+ scrollY;
22
+ /**
23
+ * the position in the browser history of this route
24
+ * this allows to find out if we can go back
25
+ */
26
+ index;
27
+ /**
28
+ * The origin of this route
29
+ *
30
+ * Might pop, click or init (non exclusive)
31
+ */
32
+ origin;
33
+ /**
34
+ * Creates a new Route
35
+ */
36
+ constructor(url, site, opts = {}) {
37
+ this.url = new URL(url);
38
+ this.site = site;
39
+ this.scrollY = opts.scrollY ?? null;
40
+ this.index = opts.index ?? 0;
41
+ this.origin = opts.origin ?? 'manual';
42
+ }
43
+ /**
44
+ * Returns the uri of the route
45
+ *
46
+ * Never ends with a slash
47
+ */
48
+ get uri() {
49
+ // todo check if this is correct
50
+ if (this.site) {
51
+ return trimSlashEnd(this.url.pathname.substring(this.site.uri.length));
52
+ }
53
+ return trimSlashEnd(this.url.pathname);
54
+ }
55
+ // todo is this correct and do we wan't it?
56
+ /**
57
+ * Never ends with a slash
58
+ */
59
+ get baseUrl() {
60
+ if (this.site)
61
+ return trimSlashEnd(this.site.url.href);
62
+ return this.url.origin;
63
+ }
64
+ get search() {
65
+ return this.url.searchParams;
66
+ }
67
+ get hash() {
68
+ return this.url.hash;
69
+ }
70
+ eq(route) {
71
+ const searchEq = (a, b) => {
72
+ if (a.size !== b.size)
73
+ return false;
74
+ a.sort();
75
+ b.sort();
76
+ const aEntries = Array.from(a.entries());
77
+ const bEntries = Array.from(b.entries());
78
+ return aEntries
79
+ .map((a, i) => [a, bEntries[i]])
80
+ .every(([[ak, av], [bk, bv]]) => ak === bk && av === bv);
81
+ };
82
+ return (route &&
83
+ this.url.pathname === route.url.pathname &&
84
+ this.url.origin === route.url.origin &&
85
+ searchEq(this.search, route.search) &&
86
+ this.hash === route.hash);
87
+ }
88
+ /**
89
+ * Checks if there are previous routes which would allow it to go back
90
+ */
91
+ canGoBack() {
92
+ return !!this.index;
93
+ }
94
+ /**
95
+ * Gets the search param
96
+ */
97
+ getSearchParam(key) {
98
+ return this.search.get(key);
99
+ }
100
+ /**
101
+ * Sets the search param or removes it if the value is null or undefined
102
+ */
103
+ setSearchParam(key, value) {
104
+ if (typeof value !== 'undefined' && value !== null) {
105
+ this.search.set(key, value);
106
+ }
107
+ else {
108
+ this.search.delete(key);
109
+ }
110
+ }
111
+ clone() {
112
+ return new Route(this.url.href, this.site, {
113
+ scrollY: this.scrollY ?? undefined,
114
+ index: this.index,
115
+ origin: this.origin,
116
+ });
117
+ }
118
+ // internal function
119
+ _fillFromState(state) {
120
+ if (typeof state?.route?.scrollY === 'number')
121
+ this.scrollY = state.route.scrollY;
122
+ if (typeof state?.route?.index === 'number')
123
+ this.index = state.route.index;
124
+ }
125
+ // internal function
126
+ _toState() {
127
+ return {
128
+ route: {
129
+ scrollY: this.scrollY,
130
+ index: this.index,
131
+ },
132
+ };
133
+ }
134
+ }
@@ -0,0 +1,162 @@
1
+ import Route from './Route.js';
2
+ import Site, { SiteFromGraphQl } from './Site.js';
3
+ import { LoadFn } from './PageLoader.js';
4
+ import { Readable } from 'crelte-std/stores';
5
+ export type RouterOpts = {
6
+ preloadOnMouseOver?: boolean;
7
+ debugTiming?: boolean;
8
+ };
9
+ /**
10
+ * internal only
11
+ */
12
+ type Internal = {
13
+ onLoaded: (success: boolean, route: Route, site: Site, ready: () => any) => void;
14
+ onLoad: LoadFn;
15
+ domReady: (route: Route) => void;
16
+ initClient: () => void;
17
+ initServer: (url: string, acceptLang?: string) => Promise<ServerInited>;
18
+ };
19
+ type ServerInited = {
20
+ success: boolean;
21
+ redirect: boolean;
22
+ route: Route;
23
+ site: Site;
24
+ props: any;
25
+ };
26
+ export declare function trimSlashEnd(str: string): string;
27
+ export type OnNextRouteOpts = {
28
+ /**
29
+ * If you call delayRender you need to call ready or the render will never happen
30
+ */
31
+ delayRender: () => DelayRender;
32
+ };
33
+ export default class Router {
34
+ /**
35
+ * The current route
36
+ */
37
+ private _route;
38
+ /**
39
+ * The current site
40
+ */
41
+ private _site;
42
+ /**
43
+ * The next route which is currently being loaded
44
+ */
45
+ private _nextRoute;
46
+ /**
47
+ * The next site which is currently being loaded
48
+ */
49
+ private _nextSite;
50
+ /**
51
+ * The loading flag, specifies if a page is currently
52
+ * getting loaded
53
+ */
54
+ private _loading;
55
+ /**
56
+ * The loading progress, the value is between 0 and 1
57
+ */
58
+ private _loadingProgress;
59
+ private _onRouteEv;
60
+ private _onNextRoute;
61
+ private _renderBarrier;
62
+ _internal: Internal;
63
+ private inner;
64
+ private pageLoader;
65
+ constructor(sites: SiteFromGraphQl[], opts?: RouterOpts);
66
+ /**
67
+ * The current route
68
+ *
69
+ * this is a svelte store
70
+ */
71
+ get route(): Readable<Route>;
72
+ /**
73
+ * The current site
74
+ */
75
+ get site(): Readable<Site>;
76
+ /**
77
+ * The next route which is currently being loaded
78
+ */
79
+ get nextRoute(): Readable<Route>;
80
+ /**
81
+ * The next site which is currently being loaded
82
+ */
83
+ get nextSite(): Readable<Site>;
84
+ /**
85
+ * The sites which are available
86
+ */
87
+ get sites(): Site[];
88
+ /**
89
+ * The loading flag, specifies if a page is currently
90
+ * getting loaded
91
+ */
92
+ get loading(): Readable<boolean>;
93
+ /**
94
+ * The loading progress, the value is between 0 and 1
95
+ */
96
+ get loadingProgress(): Readable<number>;
97
+ /**
98
+ * Open a new route
99
+ *
100
+ * @param target the target to open can be an url or a route
101
+ * the url needs to start with http or with a / which will be considered as
102
+ * the site baseUrl
103
+ */
104
+ open(target: string | URL | Route): void;
105
+ /**
106
+ * This pushes the state of the route without triggering an event
107
+ *
108
+ * You can use this when using pagination for example change the route object
109
+ * (search argument) and then call pushState
110
+ *
111
+ * @param route
112
+ */
113
+ pushState(route: Route): void;
114
+ /**
115
+ * This replaces the state of the route without triggering an event
116
+ *
117
+ * @param route
118
+ */
119
+ replaceState(route: Route): void;
120
+ /**
121
+ * Checks if there are previous routes which would allow it to go back
122
+ */
123
+ canGoBack(): boolean;
124
+ /**
125
+ * Go back in the history
126
+ */
127
+ back(): void;
128
+ /**
129
+ * Preload a url
130
+ */
131
+ preload(target: string | URL | Route): void;
132
+ /**
133
+ * Add a listener for the onRoute event
134
+ *
135
+ * This differs from router.route.subscribe in the way that
136
+ * it will only trigger if a new render / load will occur
137
+ */
138
+ onRoute(fn: (route: Route, site: Site) => void): () => void;
139
+ onNextRoute(fn: (route: Route, site: Site, opts: OnNextRouteOpts) => void): () => void;
140
+ private setNewRoute;
141
+ private _initClient;
142
+ private _initServer;
143
+ private _onRoute;
144
+ private _onPreload;
145
+ private _onLoaded;
146
+ private _onProgress;
147
+ }
148
+ export type DelayRender = {
149
+ /**
150
+ * Call this when you're ready for the render to happen
151
+ * the promise will resolve when the render is done or was cancelled
152
+ *
153
+ * @returns if the render was cancelled
154
+ */
155
+ ready: () => Promise<boolean>;
156
+ /**
157
+ * If youre not interested in the render anymore
158
+ */
159
+ remove: () => void;
160
+ };
161
+ export {};
162
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../../src/routing/Router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAElD,OAAmB,EAAE,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAY,MAAM,mBAAmB,CAAC;AAGvD,MAAM,MAAM,UAAU,GAAG;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAWF;;GAEG;AACH,KAAK,QAAQ,GAAG;IACf,QAAQ,EAAE,CACT,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EAKV,KAAK,EAAE,MAAM,GAAG,KACZ,IAAI,CAAC;IAEV,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACxE,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,WAAW,CAAC;CAC/B,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAkB;IAEhC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAiB;IAE9B;;OAEG;IACH,OAAO,CAAC,UAAU,CAAkB;IAEpC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAiB;IAElC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAoB;IAEpC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAuB;IAG7C,SAAS,EAAE,QAAQ,CAAC;IAEpB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAAyB;gBAE/B,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,GAAE,UAAe;IA2C3D;;;;OAIG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,CAE3B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAEzB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,CAEtC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK;IAIjC;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK;IAMtB;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK;IAMzB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,IAAI;IAIJ;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK;IAIpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAI3D,WAAW,CACV,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,GAC3D,MAAM,IAAI;IAIb,OAAO,CAAC,WAAW;YAkBL,WAAW;YAIX,WAAW;IAyDzB,OAAO,CAAC,QAAQ;IAyBhB,OAAO,CAAC,UAAU;YAIJ,SAAS;IAmCvB,OAAO,CAAC,WAAW;CAKnB;AAoCD,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"}