crelte 0.3.1 → 0.4.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.
- package/dist/Crelte.d.ts.map +1 -1
- package/dist/CrelteRequest.d.ts.map +1 -1
- package/dist/blocks/Blocks.d.ts.map +1 -1
- package/dist/blocks/Blocks.svelte.d.ts.map +1 -1
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/cookies/ClientCookies.d.ts.map +1 -1
- package/dist/cookies/ServerCookies.d.ts.map +1 -1
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/internal.d.ts.map +1 -1
- package/dist/cookies/utils.d.ts.map +1 -1
- package/dist/entry/EntryRouter.d.ts +30 -0
- package/dist/entry/EntryRouter.d.ts.map +1 -0
- package/dist/entry/EntryRouter.js +45 -0
- package/dist/entry/index.d.ts +32 -0
- package/dist/entry/index.d.ts.map +1 -0
- package/dist/entry/index.js +31 -0
- package/dist/graphql/GraphQl.d.ts.map +1 -1
- package/dist/graphql/gql.test.d.ts.map +1 -1
- package/dist/graphql/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/init/client.d.ts +1 -1
- package/dist/init/client.d.ts.map +1 -1
- package/dist/init/client.js +4 -3
- package/dist/init/server.d.ts +3 -3
- package/dist/init/server.d.ts.map +1 -1
- package/dist/init/server.js +6 -46
- package/dist/init/shared.d.ts +3 -1
- package/dist/init/shared.d.ts.map +1 -1
- package/dist/init/shared.js +47 -26
- package/dist/loadData/Globals.d.ts.map +1 -1
- package/dist/loadData/index.d.ts.map +1 -1
- package/dist/plugins/Events.d.ts.map +1 -1
- package/dist/plugins/Plugins.d.ts.map +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/routing/History.d.ts.map +1 -1
- package/dist/routing/InnerRouter.d.ts.map +1 -1
- package/dist/routing/PageLoader.d.ts.map +1 -1
- package/dist/routing/Request.d.ts.map +1 -1
- package/dist/routing/Route.d.ts +11 -0
- package/dist/routing/Route.d.ts.map +1 -1
- package/dist/routing/Route.js +13 -0
- package/dist/routing/Router.d.ts +47 -10
- package/dist/routing/Router.d.ts.map +1 -1
- package/dist/routing/Router.js +74 -17
- package/dist/routing/Site.d.ts.map +1 -1
- package/dist/routing/index.d.ts +2 -2
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/utils.d.ts.map +1 -1
- package/dist/ssr/SsrCache.d.ts.map +1 -1
- package/dist/ssr/SsrComponents.d.ts.map +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +9 -4
- package/src/entry/EntryRouter.ts +71 -0
- package/src/entry/index.ts +48 -0
- package/src/index.ts +2 -0
- package/src/init/client.ts +10 -3
- package/src/init/server.ts +15 -59
- package/src/init/shared.ts +78 -28
- package/src/routing/Route.ts +14 -0
- package/src/routing/Router.ts +102 -20
- package/src/routing/index.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/routing/History.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,OAAO,WAAW,OAAO;IAC/B,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,IAAI,CAAC;CACb;AAED,qBAAa,aAAc,YAAW,OAAO;IAC5C,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIxB,IAAI,IAAI,IAAI;CAGZ;AAED,qBAAa,aAAc,YAAW,OAAO;IAC5C,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;;IAQpB,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3C,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAMvC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxB,IAAI,IAAI,IAAI;CAGZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InnerRouter.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"InnerRouter.d.ts","sourceRoot":"","sources":["../../src/routing/InnerRouter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,OAAO,EAAE,EAAa,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC7B,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEpC,OAAO,CAAC,qBAAqB,CAAa;IAE1C;;;;;OAKG;gBACS,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe;IAkB3D;;OAEG;IACH,UAAU;IAgBV;;OAEG;IACH,UAAU;IAEV;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAsCxD;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKjC;;;;;;OAMG;IACH,eAAe,CACd,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,EACtC,IAAI,GAAE,cAAmB,GACvB,OAAO;IA0BV;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK;IAgCjC,MAAM;IAoGN;;;;;;;;;OASG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO;IA4CjB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO;IAuBjB;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO;IAuBpB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO;IAW9C,QAAQ,CAAC,GAAG,EAAE,OAAO;CAsErB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageLoader.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"PageLoader.d.ts","sourceRoot":"","sources":["../../src/routing/PageLoader.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,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,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAE7E,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,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjE,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,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;IAiC7B,OAAO,CAAC,GAAG,EAAE,OAAO;CAc1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../src/routing/Request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,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,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,KAAK;IACzC;;;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,cAAc,EAAE,aAAa,CAAC;IAE9B;;OAEG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,cAAmB;IASpE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,cAAmB;IAWxD;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,IAAI,WAAW;IAI1B;;OAEG;IACH,KAAK;IAYL;;OAEG;IACH,OAAO;IAUP,cAAc;IACd,WAAW,CAAC,IAAI,GAAE,cAAmB;CASrC;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;IAQN,cAAc;IACd,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAGzB;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"}
|
package/dist/routing/Route.d.ts
CHANGED
|
@@ -139,6 +139,17 @@ export default class Route {
|
|
|
139
139
|
* ```
|
|
140
140
|
*/
|
|
141
141
|
get hash(): string;
|
|
142
|
+
/**
|
|
143
|
+
* Set the hash of the route
|
|
144
|
+
*
|
|
145
|
+
* ## Example
|
|
146
|
+
* ```
|
|
147
|
+
* const route = new Route('https://example.com/foo/bar/', null);
|
|
148
|
+
* route.hash = '#hash';
|
|
149
|
+
* console.log(route.url.href); // 'https://example.com/foo/bar/#hash'
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
set hash(hash: string);
|
|
142
153
|
/**
|
|
143
154
|
* Checks if there are previous routes which would allow it to go back
|
|
144
155
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/routing/Route.ts"],"names":[],"mappings":"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"}
|
package/dist/routing/Route.js
CHANGED
|
@@ -139,6 +139,19 @@ export default class Route {
|
|
|
139
139
|
get hash() {
|
|
140
140
|
return this.url.hash;
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Set the hash of the route
|
|
144
|
+
*
|
|
145
|
+
* ## Example
|
|
146
|
+
* ```
|
|
147
|
+
* const route = new Route('https://example.com/foo/bar/', null);
|
|
148
|
+
* route.hash = '#hash';
|
|
149
|
+
* console.log(route.url.href); // 'https://example.com/foo/bar/#hash'
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
set hash(hash) {
|
|
153
|
+
this.url.hash = hash;
|
|
154
|
+
}
|
|
142
155
|
/**
|
|
143
156
|
* Checks if there are previous routes which would allow it to go back
|
|
144
157
|
*/
|
package/dist/routing/Router.d.ts
CHANGED
|
@@ -7,6 +7,17 @@ export type RouterOptions = {
|
|
|
7
7
|
preloadOnMouseOver?: boolean;
|
|
8
8
|
debugTiming?: boolean;
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Allows to easely modify a Request
|
|
12
|
+
*
|
|
13
|
+
* If you return `false` the request will be aborted
|
|
14
|
+
*
|
|
15
|
+
* ## Example
|
|
16
|
+
* ```
|
|
17
|
+
* router.replace(req => (req.hash = ''));
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export type UpdateRequest = (req: Request) => boolean | null | undefined | void;
|
|
10
21
|
/**
|
|
11
22
|
* internal only
|
|
12
23
|
*/
|
|
@@ -106,7 +117,7 @@ export default class Router {
|
|
|
106
117
|
* // the following page will be opened https://example.com/de/foo/bar
|
|
107
118
|
* ```
|
|
108
119
|
*/
|
|
109
|
-
open(target: string | URL | Route | Request, opts?: RequestOptions): void;
|
|
120
|
+
open(target: string | URL | Route | Request | UpdateRequest, opts?: RequestOptions): void;
|
|
110
121
|
/**
|
|
111
122
|
* This pushes the new route without triggering a new pageload
|
|
112
123
|
*
|
|
@@ -118,7 +129,17 @@ export default class Router {
|
|
|
118
129
|
* And will clear the scrollY value if you not provide a new one via the `opts`
|
|
119
130
|
* This will disableLoadData by default if you not provide an override via the `opts`
|
|
120
131
|
*
|
|
121
|
-
* ## Example
|
|
132
|
+
* ## Example using the update function
|
|
133
|
+
* ```
|
|
134
|
+
* import { getRouter } from 'crelte';
|
|
135
|
+
*
|
|
136
|
+
* const router = getRouter();
|
|
137
|
+
*
|
|
138
|
+
* const page = 1;
|
|
139
|
+
* router.push(req => req.setSearchParam('page', page || null));
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* ## Example using the route object
|
|
122
143
|
* ```
|
|
123
144
|
* import { getRouter } from 'crelte';
|
|
124
145
|
*
|
|
@@ -130,22 +151,32 @@ export default class Router {
|
|
|
130
151
|
* router.push(route);
|
|
131
152
|
* ```
|
|
132
153
|
*/
|
|
133
|
-
push(route: Route | Request, opts?: RequestOptions): void;
|
|
154
|
+
push(route: Route | Request | UpdateRequest, opts?: RequestOptions): void;
|
|
134
155
|
/**
|
|
135
156
|
* @deprecated use push instead
|
|
136
157
|
*/
|
|
137
158
|
pushState(route: Route | Request): void;
|
|
138
159
|
/**
|
|
139
|
-
* This replaces the state of the route without triggering
|
|
160
|
+
* This replaces the state of the route without triggering a new pageload
|
|
140
161
|
*
|
|
141
162
|
* You can use this when using some filters for example a search filter
|
|
142
163
|
*
|
|
143
164
|
* ## Note
|
|
144
165
|
* This will always set the origin to 'replace'
|
|
145
|
-
* And will clear the scrollY value if you
|
|
146
|
-
* This will disableLoadData by default if you
|
|
166
|
+
* And will clear the scrollY value if you don't provide a new one via the `opts`
|
|
167
|
+
* This will disableLoadData by default if you don't provide an override via the `opts`
|
|
147
168
|
*
|
|
148
|
-
* ## Example
|
|
169
|
+
* ## Example using the update function
|
|
170
|
+
* ```
|
|
171
|
+
* import { getRouter } from 'crelte';
|
|
172
|
+
*
|
|
173
|
+
* const router = getRouter();
|
|
174
|
+
*
|
|
175
|
+
* const search = 'foo';
|
|
176
|
+
* router.replace(req => req.setSearchParam('search', search));
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* ## Example using the route object
|
|
149
180
|
* ```
|
|
150
181
|
* import { getRouter } from 'crelte';
|
|
151
182
|
*
|
|
@@ -153,11 +184,11 @@ export default class Router {
|
|
|
153
184
|
*
|
|
154
185
|
* const search = 'foo';
|
|
155
186
|
* const route = router.route.get();
|
|
156
|
-
* route.setSearchParam('search', search
|
|
157
|
-
* router.
|
|
187
|
+
* route.setSearchParam('search', search);
|
|
188
|
+
* router.replace(route);
|
|
158
189
|
* ```
|
|
159
190
|
*/
|
|
160
|
-
replace(route: Route | Request, opts?: RequestOptions): void;
|
|
191
|
+
replace(route: Route | Request | UpdateRequest, opts?: RequestOptions): void;
|
|
161
192
|
/**
|
|
162
193
|
* @deprecated use replace instead
|
|
163
194
|
*/
|
|
@@ -209,6 +240,12 @@ export default class Router {
|
|
|
209
240
|
private _onLoaded;
|
|
210
241
|
private _onNothingLoaded;
|
|
211
242
|
private _onProgress;
|
|
243
|
+
/**
|
|
244
|
+
* Transforms a target to a request
|
|
245
|
+
*
|
|
246
|
+
* returns null if the request was canceled by the update request
|
|
247
|
+
*/
|
|
248
|
+
private targetOrUpdateToRequest;
|
|
212
249
|
}
|
|
213
250
|
export {};
|
|
214
251
|
//# sourceMappingURL=Router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/routing/Router.ts"],"names":[],"mappings":"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"}
|
package/dist/routing/Router.js
CHANGED
|
@@ -54,6 +54,8 @@ export default class Router {
|
|
|
54
54
|
this._loading = new Writable(false);
|
|
55
55
|
this._loadingProgress = new Writable(0);
|
|
56
56
|
this._onRequest = new Listeners();
|
|
57
|
+
// these functions are exposed to the init "module"
|
|
58
|
+
// but should not be used by anybody else
|
|
57
59
|
this._internal = {
|
|
58
60
|
onLoaded: () => { },
|
|
59
61
|
onNothingLoaded: () => { },
|
|
@@ -130,10 +132,11 @@ export default class Router {
|
|
|
130
132
|
* ```
|
|
131
133
|
*/
|
|
132
134
|
open(target, opts = {}) {
|
|
133
|
-
const req = this.
|
|
134
|
-
...opts,
|
|
135
|
+
const req = this.targetOrUpdateToRequest(target, opts, {
|
|
135
136
|
origin: 'manual',
|
|
136
137
|
});
|
|
138
|
+
if (!req)
|
|
139
|
+
return;
|
|
137
140
|
this.inner.open(req);
|
|
138
141
|
}
|
|
139
142
|
/**
|
|
@@ -147,7 +150,17 @@ export default class Router {
|
|
|
147
150
|
* And will clear the scrollY value if you not provide a new one via the `opts`
|
|
148
151
|
* This will disableLoadData by default if you not provide an override via the `opts`
|
|
149
152
|
*
|
|
150
|
-
* ## Example
|
|
153
|
+
* ## Example using the update function
|
|
154
|
+
* ```
|
|
155
|
+
* import { getRouter } from 'crelte';
|
|
156
|
+
*
|
|
157
|
+
* const router = getRouter();
|
|
158
|
+
*
|
|
159
|
+
* const page = 1;
|
|
160
|
+
* router.push(req => req.setSearchParam('page', page || null));
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* ## Example using the route object
|
|
151
164
|
* ```
|
|
152
165
|
* import { getRouter } from 'crelte';
|
|
153
166
|
*
|
|
@@ -160,14 +173,15 @@ export default class Router {
|
|
|
160
173
|
* ```
|
|
161
174
|
*/
|
|
162
175
|
push(route, opts = {}) {
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
const req = this.
|
|
166
|
-
...opts,
|
|
176
|
+
// theoretically string and URL also work but we might
|
|
177
|
+
// change that in the future
|
|
178
|
+
const req = this.targetOrUpdateToRequest(route, opts, {
|
|
167
179
|
origin: 'push',
|
|
168
180
|
scrollY: opts.scrollY ?? undefined,
|
|
169
181
|
disableLoadData: opts.disableLoadData ?? true,
|
|
170
182
|
});
|
|
183
|
+
if (!req)
|
|
184
|
+
return;
|
|
171
185
|
this.inner.push(req);
|
|
172
186
|
}
|
|
173
187
|
/**
|
|
@@ -178,16 +192,26 @@ export default class Router {
|
|
|
178
192
|
this.push(route);
|
|
179
193
|
}
|
|
180
194
|
/**
|
|
181
|
-
* This replaces the state of the route without triggering
|
|
195
|
+
* This replaces the state of the route without triggering a new pageload
|
|
182
196
|
*
|
|
183
197
|
* You can use this when using some filters for example a search filter
|
|
184
198
|
*
|
|
185
199
|
* ## Note
|
|
186
200
|
* This will always set the origin to 'replace'
|
|
187
|
-
* And will clear the scrollY value if you
|
|
188
|
-
* This will disableLoadData by default if you
|
|
201
|
+
* And will clear the scrollY value if you don't provide a new one via the `opts`
|
|
202
|
+
* This will disableLoadData by default if you don't provide an override via the `opts`
|
|
189
203
|
*
|
|
190
|
-
* ## Example
|
|
204
|
+
* ## Example using the update function
|
|
205
|
+
* ```
|
|
206
|
+
* import { getRouter } from 'crelte';
|
|
207
|
+
*
|
|
208
|
+
* const router = getRouter();
|
|
209
|
+
*
|
|
210
|
+
* const search = 'foo';
|
|
211
|
+
* router.replace(req => req.setSearchParam('search', search));
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* ## Example using the route object
|
|
191
215
|
* ```
|
|
192
216
|
* import { getRouter } from 'crelte';
|
|
193
217
|
*
|
|
@@ -195,18 +219,20 @@ export default class Router {
|
|
|
195
219
|
*
|
|
196
220
|
* const search = 'foo';
|
|
197
221
|
* const route = router.route.get();
|
|
198
|
-
* route.setSearchParam('search', search
|
|
199
|
-
* router.
|
|
222
|
+
* route.setSearchParam('search', search);
|
|
223
|
+
* router.replace(route);
|
|
200
224
|
* ```
|
|
201
225
|
*/
|
|
202
226
|
replace(route, opts = {}) {
|
|
203
|
-
//
|
|
204
|
-
|
|
205
|
-
const req = this.
|
|
227
|
+
// theoretically string and URL also work but we might
|
|
228
|
+
// change that in the future
|
|
229
|
+
const req = this.targetOrUpdateToRequest(route, opts, {
|
|
206
230
|
origin: 'replace',
|
|
207
231
|
scrollY: opts.scrollY ?? undefined,
|
|
208
232
|
disableLoadData: opts.disableLoadData ?? true,
|
|
209
233
|
});
|
|
234
|
+
if (!req)
|
|
235
|
+
return;
|
|
210
236
|
this.inner.replace(req);
|
|
211
237
|
}
|
|
212
238
|
/**
|
|
@@ -325,6 +351,7 @@ export default class Router {
|
|
|
325
351
|
}
|
|
326
352
|
return resp;
|
|
327
353
|
}
|
|
354
|
+
// gets called by the InnerRouter when a new route is requested
|
|
328
355
|
_onRoute(req, changeHistory) {
|
|
329
356
|
this.destroyRequest();
|
|
330
357
|
this._request = req;
|
|
@@ -338,6 +365,7 @@ export default class Router {
|
|
|
338
365
|
this.pageLoader.load(req, { changeHistory });
|
|
339
366
|
}
|
|
340
367
|
else {
|
|
368
|
+
this.pageLoader.discard();
|
|
341
369
|
this._onNothingLoaded(req, { changeHistory });
|
|
342
370
|
}
|
|
343
371
|
}
|
|
@@ -350,12 +378,13 @@ export default class Router {
|
|
|
350
378
|
_onPreload(req) {
|
|
351
379
|
this.pageLoader.preload(req);
|
|
352
380
|
}
|
|
381
|
+
// gets called by the pageLoader when teh loadData completes
|
|
353
382
|
async _onLoaded(resp, req, more) {
|
|
354
383
|
// check if the render was cancelled
|
|
355
384
|
if (await req._renderBarrier.ready())
|
|
356
385
|
return;
|
|
357
386
|
// when the data is loaded let's update the route of the inner
|
|
358
|
-
// this
|
|
387
|
+
// this will only happen if no other route has been requested
|
|
359
388
|
// in the meantime
|
|
360
389
|
more.changeHistory();
|
|
361
390
|
const route = req.toRoute();
|
|
@@ -365,6 +394,7 @@ export default class Router {
|
|
|
365
394
|
return resp.data;
|
|
366
395
|
});
|
|
367
396
|
}
|
|
397
|
+
// this gets called if loadData is not called
|
|
368
398
|
async _onNothingLoaded(req, more) {
|
|
369
399
|
// check if the render was cancelled
|
|
370
400
|
if (await req._renderBarrier.ready())
|
|
@@ -380,10 +410,37 @@ export default class Router {
|
|
|
380
410
|
this.setNewRoute(route);
|
|
381
411
|
});
|
|
382
412
|
}
|
|
413
|
+
// this is called by the pageLoader if we get a progress update
|
|
383
414
|
_onProgress(loading, progress) {
|
|
384
415
|
if (this._loading.get() !== loading)
|
|
385
416
|
this._loading.set(loading);
|
|
386
417
|
if (typeof progress === 'number')
|
|
387
418
|
this._loadingProgress.set(progress);
|
|
388
419
|
}
|
|
420
|
+
/**
|
|
421
|
+
* Transforms a target to a request
|
|
422
|
+
*
|
|
423
|
+
* returns null if the request was canceled by the update request
|
|
424
|
+
*/
|
|
425
|
+
targetOrUpdateToRequest(target, opts = {}, forcedOpts = {}) {
|
|
426
|
+
// we have an update request
|
|
427
|
+
if (typeof target === 'function') {
|
|
428
|
+
const route = this.route.get();
|
|
429
|
+
if (!route) {
|
|
430
|
+
throw new Error('route to update missing in first loadData call');
|
|
431
|
+
}
|
|
432
|
+
// first get a req
|
|
433
|
+
const req = this.inner.targetToRequest(route, opts);
|
|
434
|
+
// check if the request was canceled by the update request
|
|
435
|
+
if (target(req) === false)
|
|
436
|
+
return null;
|
|
437
|
+
// now we add the forcedOpts
|
|
438
|
+
req._updateOpts(forcedOpts);
|
|
439
|
+
return req;
|
|
440
|
+
}
|
|
441
|
+
return this.inner.targetToRequest(target, {
|
|
442
|
+
...opts,
|
|
443
|
+
...forcedOpts,
|
|
444
|
+
});
|
|
445
|
+
}
|
|
389
446
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Site.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Site.d.ts","sourceRoot":"","sources":["../../src/routing/Site.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,IAAI;IACxB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IAET;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;gBAEL,GAAG,EAAE,eAAe;IAShC;;;;OAIG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;CACD"}
|
package/dist/routing/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Router from './Router.js';
|
|
1
|
+
import Router, { type UpdateRequest } from './Router.js';
|
|
2
2
|
import Route, { type RouteOptions } from './Route.js';
|
|
3
3
|
import Request, { type RequestOptions, type DelayRender } from './Request.js';
|
|
4
4
|
import Site from './Site.js';
|
|
5
|
-
export { Router, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, };
|
|
5
|
+
export { Router, UpdateRequest, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, };
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,OAAO,EAAE,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACN,MAAM,EACN,aAAa,EACb,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,GACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/routing/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SsrCache.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"SsrCache.d.ts","sourceRoot":"","sources":["../../src/ssr/SsrCache.ts"],"names":[],"mappings":"AAAA,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,mBAoBtC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,OAAO,CAAC,KAAK,CAAsB;;IAYnC;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAO/C;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI7B;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAI9B,cAAc;IACd,KAAK;IAIL,OAAO,CAAC,YAAY;IAIpB,cAAc;IACd,aAAa,IAAI,MAAM;CAGvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SsrComponents.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"SsrComponents.d.ts","sourceRoot":"","sources":["../../src/ssr/SsrComponents.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,MAAM,CAAC,OAAO,OAAO,aAAa;IACjC,OAAO,CAAC,OAAO,CAAc;;IAO7B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAOlC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAkB5C"}
|
package/dist/ssr/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssr/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAMtC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"author": "Crelte <support@crelte.com>",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -44,6 +44,10 @@
|
|
|
44
44
|
"types": "./dist/routing/index.d.ts",
|
|
45
45
|
"default": "./dist/routing/index.js"
|
|
46
46
|
},
|
|
47
|
+
"./entry": {
|
|
48
|
+
"types": "./dist/entry/index.d.ts",
|
|
49
|
+
"default": "./dist/entry/index.js"
|
|
50
|
+
},
|
|
47
51
|
"./ssr": {
|
|
48
52
|
"types": "./dist/ssr/index.d.ts",
|
|
49
53
|
"default": "./dist/ssr/index.js"
|
|
@@ -71,14 +75,15 @@
|
|
|
71
75
|
},
|
|
72
76
|
"dependencies": {
|
|
73
77
|
"crelte-std": "^0.1.1",
|
|
74
|
-
"svelte": "^4.2.12"
|
|
78
|
+
"svelte": "^4.2.12",
|
|
79
|
+
"trouter": "^4.0.0"
|
|
75
80
|
},
|
|
76
81
|
"devDependencies": {
|
|
77
82
|
"@sveltejs/package": "^2.3.1",
|
|
78
83
|
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
|
79
84
|
"svelte-check": "^4.1.4",
|
|
80
85
|
"typescript-svelte-plugin": "^0.3.45",
|
|
81
|
-
"
|
|
82
|
-
"
|
|
86
|
+
"vite": "^5.0",
|
|
87
|
+
"vitest": "^2.0.0"
|
|
83
88
|
}
|
|
84
89
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Pattern, Trouter } from 'trouter';
|
|
2
|
+
import { Crelte, CrelteRequest, Entry, QueryOptions } from '../index.js';
|
|
3
|
+
import { CrelteEntryRequest, EntryRequest } from './index.js';
|
|
4
|
+
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
5
|
+
|
|
6
|
+
export type EntryRouteHandler = (
|
|
7
|
+
cr: CrelteEntryRequest,
|
|
8
|
+
) => Promise<Entry | null | undefined> | Entry | null | undefined | void;
|
|
9
|
+
|
|
10
|
+
export type EntryRoutes = (router: EntryRouter) => Promise<void> | void;
|
|
11
|
+
|
|
12
|
+
export default class EntryRouter {
|
|
13
|
+
private _crelte: Crelte;
|
|
14
|
+
private inner: Trouter<EntryRouteHandler>;
|
|
15
|
+
|
|
16
|
+
constructor(crelte: Crelte) {
|
|
17
|
+
this._crelte = crelte;
|
|
18
|
+
this.inner = new Trouter();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
add(pattern: Pattern, ...handlers: EntryRouteHandler[]): this {
|
|
22
|
+
this.inner.add('GET', pattern, ...handlers);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* returns an env variable from the craft/.env file.
|
|
28
|
+
*/
|
|
29
|
+
getEnv(name: 'ENDPOINT_URL'): string;
|
|
30
|
+
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
31
|
+
getEnv(name: string): string | null;
|
|
32
|
+
getEnv(name: string): string | null {
|
|
33
|
+
return this._crelte.getEnv(name);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Run a GraphQl Query
|
|
38
|
+
*
|
|
39
|
+
* @param query the default export from a graphql file or the gql`query {}`
|
|
40
|
+
* function
|
|
41
|
+
* @param variables variables that should be passed to the
|
|
42
|
+
* graphql query
|
|
43
|
+
*/
|
|
44
|
+
async query(
|
|
45
|
+
query: GraphQlQuery,
|
|
46
|
+
variables: Record<string, unknown> = {},
|
|
47
|
+
opts: QueryOptions = {},
|
|
48
|
+
): Promise<unknown> {
|
|
49
|
+
// this function is added as convenience
|
|
50
|
+
return this._crelte.graphQl.query(query, variables, opts);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** @hidden */
|
|
54
|
+
async _handle(cr: CrelteRequest): Promise<Entry | null> {
|
|
55
|
+
const { params, handlers } = this.inner.find('GET', cr.req.uri);
|
|
56
|
+
|
|
57
|
+
if (!handlers.length) return null;
|
|
58
|
+
|
|
59
|
+
const er = new EntryRequest(cr.req.url, cr.req.site, {
|
|
60
|
+
params: new Map(Object.entries(params)),
|
|
61
|
+
});
|
|
62
|
+
const cer = new CrelteEntryRequest(cr, er);
|
|
63
|
+
|
|
64
|
+
for (const handler of handlers) {
|
|
65
|
+
const res = await handler(cer);
|
|
66
|
+
if (res) return res;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Crelte, CrelteRequest } from '../index.js';
|
|
2
|
+
import { Request, RequestOptions, Site } from '../routing/index.js';
|
|
3
|
+
import EntryRouter, { EntryRouteHandler, EntryRoutes } from './EntryRouter.js';
|
|
4
|
+
|
|
5
|
+
export { EntryRouter, type EntryRouteHandler, type EntryRoutes };
|
|
6
|
+
|
|
7
|
+
export type Entry = {
|
|
8
|
+
sectionHandle: string;
|
|
9
|
+
typeHandle: string;
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type EntryRequestOptions = RequestOptions & {
|
|
14
|
+
params?: Map<string, string>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export class EntryRequest extends Request {
|
|
18
|
+
private params: Map<string, string>;
|
|
19
|
+
|
|
20
|
+
constructor(url: string | URL, site: Site, opts: EntryRequestOptions = {}) {
|
|
21
|
+
super(url, site, opts);
|
|
22
|
+
|
|
23
|
+
this.params = opts.params ?? new Map();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* returns the url params from the request
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```js
|
|
31
|
+
* router.get('/blog/:slug', async (cs, req) => {
|
|
32
|
+
* return Response.json({ slug: cs.getParam('slug') });
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
getParam(name: string): string | null {
|
|
37
|
+
return this.params.get(name) ?? null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export class CrelteEntryRequest extends CrelteRequest {
|
|
42
|
+
req: EntryRequest;
|
|
43
|
+
|
|
44
|
+
constructor(inner: Crelte, req: EntryRequest) {
|
|
45
|
+
super(inner, req);
|
|
46
|
+
this.req = req;
|
|
47
|
+
}
|
|
48
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
LoadDataFn,
|
|
16
16
|
LoadDataObj,
|
|
17
17
|
} from './loadData/index.js';
|
|
18
|
+
import { Entry } from './entry/index.js';
|
|
18
19
|
|
|
19
20
|
export {
|
|
20
21
|
Crelte,
|
|
@@ -25,6 +26,7 @@ export {
|
|
|
25
26
|
type LoadDataFn,
|
|
26
27
|
type LoadDataObj,
|
|
27
28
|
type LoadDataArray,
|
|
29
|
+
type Entry,
|
|
28
30
|
};
|
|
29
31
|
|
|
30
32
|
/**
|