crelte 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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.map +1 -1
- package/dist/init/server.js +3 -2
- 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/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/index.d.ts +2 -2
- package/dist/routing/index.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 +9 -2
- 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
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Pattern } from 'trouter';
|
|
2
|
+
import { Crelte, CrelteRequest, Entry, QueryOptions } from '../index.js';
|
|
3
|
+
import { CrelteEntryRequest } from './index.js';
|
|
4
|
+
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
5
|
+
export type EntryRouteHandler = (cr: CrelteEntryRequest) => Promise<Entry | null | undefined> | Entry | null | undefined | void;
|
|
6
|
+
export type EntryRoutes = (router: EntryRouter) => Promise<void> | void;
|
|
7
|
+
export default class EntryRouter {
|
|
8
|
+
private _crelte;
|
|
9
|
+
private inner;
|
|
10
|
+
constructor(crelte: Crelte);
|
|
11
|
+
add(pattern: Pattern, ...handlers: EntryRouteHandler[]): this;
|
|
12
|
+
/**
|
|
13
|
+
* returns an env variable from the craft/.env file.
|
|
14
|
+
*/
|
|
15
|
+
getEnv(name: 'ENDPOINT_URL'): string;
|
|
16
|
+
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
17
|
+
getEnv(name: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Run a GraphQl Query
|
|
20
|
+
*
|
|
21
|
+
* @param query the default export from a graphql file or the gql`query {}`
|
|
22
|
+
* function
|
|
23
|
+
* @param variables variables that should be passed to the
|
|
24
|
+
* graphql query
|
|
25
|
+
*/
|
|
26
|
+
query(query: GraphQlQuery, variables?: Record<string, unknown>, opts?: QueryOptions): Promise<unknown>;
|
|
27
|
+
/** @hidden */
|
|
28
|
+
_handle(cr: CrelteRequest): Promise<Entry | null>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=EntryRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntryRouter.d.ts","sourceRoot":"","sources":["../../../../src/entry/EntryRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAgB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,CAC/B,EAAE,EAAE,kBAAkB,KAClB,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA6B;gBAE9B,MAAM,EAAE,MAAM;IAK1B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAK7D;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IACpC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IAKnB,cAAc;IACR,OAAO,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAiBvD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Trouter } from 'trouter';
|
|
2
|
+
import { CrelteEntryRequest, EntryRequest } from './index.js';
|
|
3
|
+
export default class EntryRouter {
|
|
4
|
+
_crelte;
|
|
5
|
+
inner;
|
|
6
|
+
constructor(crelte) {
|
|
7
|
+
this._crelte = crelte;
|
|
8
|
+
this.inner = new Trouter();
|
|
9
|
+
}
|
|
10
|
+
add(pattern, ...handlers) {
|
|
11
|
+
this.inner.add('GET', pattern, ...handlers);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
getEnv(name) {
|
|
15
|
+
return this._crelte.getEnv(name);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run a GraphQl Query
|
|
19
|
+
*
|
|
20
|
+
* @param query the default export from a graphql file or the gql`query {}`
|
|
21
|
+
* function
|
|
22
|
+
* @param variables variables that should be passed to the
|
|
23
|
+
* graphql query
|
|
24
|
+
*/
|
|
25
|
+
async query(query, variables = {}, opts = {}) {
|
|
26
|
+
// this function is added as convenience
|
|
27
|
+
return this._crelte.graphQl.query(query, variables, opts);
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
async _handle(cr) {
|
|
31
|
+
const { params, handlers } = this.inner.find('GET', cr.req.uri);
|
|
32
|
+
if (!handlers.length)
|
|
33
|
+
return null;
|
|
34
|
+
const er = new EntryRequest(cr.req.url, cr.req.site, {
|
|
35
|
+
params: new Map(Object.entries(params)),
|
|
36
|
+
});
|
|
37
|
+
const cer = new CrelteEntryRequest(cr, er);
|
|
38
|
+
for (const handler of handlers) {
|
|
39
|
+
const res = await handler(cer);
|
|
40
|
+
if (res)
|
|
41
|
+
return res;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
export { EntryRouter, type EntryRouteHandler, type EntryRoutes };
|
|
5
|
+
export type Entry = {
|
|
6
|
+
sectionHandle: string;
|
|
7
|
+
typeHandle: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
};
|
|
10
|
+
export type EntryRequestOptions = RequestOptions & {
|
|
11
|
+
params?: Map<string, string>;
|
|
12
|
+
};
|
|
13
|
+
export declare class EntryRequest extends Request {
|
|
14
|
+
private params;
|
|
15
|
+
constructor(url: string | URL, site: Site, opts?: EntryRequestOptions);
|
|
16
|
+
/**
|
|
17
|
+
* returns the url params from the request
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```js
|
|
21
|
+
* router.get('/blog/:slug', async (cs, req) => {
|
|
22
|
+
* return Response.json({ slug: cs.getParam('slug') });
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
getParam(name: string): string | null;
|
|
27
|
+
}
|
|
28
|
+
export declare class CrelteEntryRequest extends CrelteRequest {
|
|
29
|
+
req: EntryRequest;
|
|
30
|
+
constructor(inner: Crelte, req: EntryRequest);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,WAAW,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,CAAC;AAEjE,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,mBAAmB,GAAG,cAAc,GAAG;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,qBAAa,YAAa,SAAQ,OAAO;IACxC,OAAO,CAAC,MAAM,CAAsB;gBAExB,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,mBAAwB;IAMzE;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGrC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACpD,GAAG,EAAE,YAAY,CAAC;gBAEN,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY;CAI5C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CrelteRequest } from '../index.js';
|
|
2
|
+
import { Request } from '../routing/index.js';
|
|
3
|
+
import EntryRouter from './EntryRouter.js';
|
|
4
|
+
export { EntryRouter };
|
|
5
|
+
export class EntryRequest extends Request {
|
|
6
|
+
params;
|
|
7
|
+
constructor(url, site, opts = {}) {
|
|
8
|
+
super(url, site, opts);
|
|
9
|
+
this.params = opts.params ?? new Map();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* returns the url params from the request
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```js
|
|
16
|
+
* router.get('/blog/:slug', async (cs, req) => {
|
|
17
|
+
* return Response.json({ slug: cs.getParam('slug') });
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
getParam(name) {
|
|
22
|
+
return this.params.get(name) ?? null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class CrelteEntryRequest extends CrelteRequest {
|
|
26
|
+
req;
|
|
27
|
+
constructor(inner, req) {
|
|
28
|
+
super(inner, req);
|
|
29
|
+
this.req = req;
|
|
30
|
+
}
|
|
31
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,8 @@ import type { Global } from './loadData/Globals.js';
|
|
|
9
9
|
import type { Cookies } from './cookies/index.js';
|
|
10
10
|
import type { Readable } from 'crelte-std/stores';
|
|
11
11
|
import { LoadData, LoadDataArray, LoadDataFn, LoadDataObj } from './loadData/index.js';
|
|
12
|
-
|
|
12
|
+
import { Entry } from './entry/index.js';
|
|
13
|
+
export { Crelte, CrelteRequest, type Config, type QueryOptions, type LoadData, type LoadDataFn, type LoadDataObj, type LoadDataArray, type Entry, };
|
|
13
14
|
/**
|
|
14
15
|
* Get Crelte from the current context
|
|
15
16
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,MAAM,EAAE,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,WAAW,EACX,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,MAAM,EAAE,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,WAAW,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EACN,MAAM,EACN,aAAa,EACb,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,KAAK,GACV,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAK1C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAKxC;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;AACrD,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;AACtD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAKpD;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,QAOjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,QAOxD"}
|
package/dist/init/client.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/init/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/init/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,8BAA8B;IAC9B,SAAS,EAAE,GAAG,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAaF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,iBA6IxC"}
|
package/dist/init/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
-
import {
|
|
3
|
+
import { pluginsBeforeRender, prepareLoadFn, setupPlugins } from './shared.js';
|
|
4
4
|
import { tick } from 'svelte';
|
|
5
5
|
const mainDataDefault = {
|
|
6
6
|
preloadOnMouseOver: false,
|
|
@@ -30,7 +30,7 @@ const mainDataDefault = {
|
|
|
30
30
|
* });
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
export function main(data) {
|
|
33
|
+
export async function main(data) {
|
|
34
34
|
data = { ...mainDataDefault, ...data };
|
|
35
35
|
// rendering steps
|
|
36
36
|
// loadSites (first time)
|
|
@@ -66,10 +66,11 @@ export function main(data) {
|
|
|
66
66
|
}
|
|
67
67
|
// setup plugins
|
|
68
68
|
setupPlugins(crelte, data.app.plugins ?? []);
|
|
69
|
+
const loadFn = await prepareLoadFn(crelte, data.app, data.entryQuery, data.globalQuery);
|
|
69
70
|
// setup load Data
|
|
70
71
|
crelte.router._internal.onLoad = (req, opts) => {
|
|
71
72
|
const cr = new CrelteRequest(crelte, req);
|
|
72
|
-
return loadFn(cr,
|
|
73
|
+
return loadFn(cr, opts);
|
|
73
74
|
};
|
|
74
75
|
// render Space
|
|
75
76
|
let appInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/init/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAO,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/init/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAO,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,iDAAiD;IACjD,UAAU,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,CAiFD;AAED,MAAM,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAE3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IAEf,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,aAAa,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B5C"}
|
package/dist/init/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CrelteBuilder } from '../Crelte.js';
|
|
2
|
-
import {
|
|
2
|
+
import { pluginsBeforeRender, prepareLoadFn, setupPlugins } from './shared.js';
|
|
3
3
|
import SsrComponents from '../ssr/SsrComponents.js';
|
|
4
4
|
import SsrCache from '../ssr/SsrCache.js';
|
|
5
5
|
import CrelteRequest from '../CrelteRequest.js';
|
|
@@ -42,10 +42,11 @@ export async function main(data) {
|
|
|
42
42
|
const crelte = builder.build();
|
|
43
43
|
// setup plugins
|
|
44
44
|
setupPlugins(crelte, data.app.plugins ?? []);
|
|
45
|
+
const loadFn = await prepareLoadFn(crelte, data.app, data.entryQuery, data.globalQuery);
|
|
45
46
|
// setup load Data
|
|
46
47
|
crelte.router._internal.onLoad = req => {
|
|
47
48
|
const cr = new CrelteRequest(crelte, req);
|
|
48
|
-
return loadFn(cr
|
|
49
|
+
return loadFn(cr);
|
|
49
50
|
};
|
|
50
51
|
const { success, redirect, req, props } = await crelte.router._internal.initServer(data.serverData.url, data.serverData.acceptLang);
|
|
51
52
|
if (!success)
|
package/dist/init/shared.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Crelte from '../Crelte.js';
|
|
2
2
|
import CrelteRequest from '../CrelteRequest.js';
|
|
3
|
+
import { EntryRoutes } from '../entry/EntryRouter.js';
|
|
3
4
|
import { GraphQlQuery } from '../graphql/GraphQl.js';
|
|
4
5
|
import { LoadData } from '../loadData/index.js';
|
|
5
6
|
import { PluginCreator } from '../plugins/Plugins.js';
|
|
@@ -8,6 +9,7 @@ interface App<E, T> {
|
|
|
8
9
|
loadGlobalData?: LoadData<null>;
|
|
9
10
|
loadEntryData?: LoadData<any>;
|
|
10
11
|
templates?: Record<string, LazyTemplateModule<E, T>>;
|
|
12
|
+
entryRoutes?: EntryRoutes;
|
|
11
13
|
}
|
|
12
14
|
interface TemplateModule<E, T> {
|
|
13
15
|
default: any;
|
|
@@ -25,6 +27,6 @@ export declare function pluginsBeforeRender(cr: CrelteRequest): void;
|
|
|
25
27
|
* sectionHandle will be automatically set to product
|
|
26
28
|
*/
|
|
27
29
|
export declare function getEntry(page: any): any;
|
|
28
|
-
export declare function
|
|
30
|
+
export declare function prepareLoadFn<E, T>(crelte: Crelte, app: App<E, T>, entryQuery: GraphQlQuery, globalQuery?: GraphQlQuery): Promise<(cr: CrelteRequest, loadOpts?: LoadOptions) => Promise<any>>;
|
|
29
31
|
export {};
|
|
30
32
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGhC,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/init/shared.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAGhC,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC;IAE5B,OAAO,EAAE,GAAG,CAAC;IAEb,QAAQ,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnD;AAED,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IACzB,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACrC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAKpE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAYvC;AAGD,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAmBtE"}
|
package/dist/init/shared.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import EntryRouter from '../entry/EntryRouter.js';
|
|
1
2
|
import { callLoadData } from '../loadData/index.js';
|
|
2
3
|
export function setupPlugins(crelte, plugins) {
|
|
3
4
|
for (const plugin of plugins) {
|
|
@@ -29,7 +30,19 @@ export function getEntry(page) {
|
|
|
29
30
|
typeHandle: '404',
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
// todo it would be nice to call this only once per server start
|
|
34
|
+
export async function prepareLoadFn(crelte, app, entryQuery, globalQuery) {
|
|
35
|
+
const templateModules = prepareTemplates(app.templates ?? {});
|
|
36
|
+
let entryRouter = null;
|
|
37
|
+
if (app.entryRoutes) {
|
|
38
|
+
entryRouter = new EntryRouter(crelte);
|
|
39
|
+
await app.entryRoutes(entryRouter);
|
|
40
|
+
}
|
|
41
|
+
return async (cr, loadOpts) => {
|
|
42
|
+
return await loadFn(cr, app, templateModules, entryRouter, entryQuery, globalQuery, loadOpts);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async function loadFn(cr, app, templateModules, entryRouter, entryQuery, globalQuery, loadOpts) {
|
|
33
46
|
let dataProm = null;
|
|
34
47
|
// @ts-ignore
|
|
35
48
|
if (app.loadData) {
|
|
@@ -53,39 +66,24 @@ export async function loadFn(cr, app, entryQuery, globalQuery, loadOpts) {
|
|
|
53
66
|
return res;
|
|
54
67
|
})();
|
|
55
68
|
}
|
|
56
|
-
|
|
57
|
-
if (cr.req.siteMatches()) {
|
|
58
|
-
let uri = decodeURI(cr.req.uri);
|
|
59
|
-
if (uri.startsWith('/'))
|
|
60
|
-
uri = uri.substring(1);
|
|
61
|
-
if (uri === '' || uri === '/')
|
|
62
|
-
uri = '__home__';
|
|
63
|
-
pageProm = cr.query(entryQuery, {
|
|
64
|
-
uri,
|
|
65
|
-
siteId: cr.site.id,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
69
|
+
const entryProm = queryEntry(cr, app, entryRouter, entryQuery);
|
|
68
70
|
const pluginsLoadGlobalData = cr.events.trigger('loadGlobalData', cr);
|
|
69
71
|
// loading progress is at 20%
|
|
70
72
|
loadOpts?.setProgress(0.2);
|
|
71
|
-
const [data, global,
|
|
73
|
+
const [data, global, entry] = await Promise.all([
|
|
72
74
|
dataProm,
|
|
73
75
|
globalProm,
|
|
74
|
-
|
|
76
|
+
entryProm,
|
|
75
77
|
...pluginsLoadGlobalData,
|
|
76
78
|
]);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// we need to set the global data to an empty object
|
|
82
|
-
// so any waiters get's triggered
|
|
83
|
-
cr.globals._setData(cr.site.id, {});
|
|
79
|
+
// global is only set if !wasLoaded but we need to store something
|
|
80
|
+
// even if no globalQuery exists
|
|
81
|
+
if (global || !cr.globals._wasLoaded(cr.site.id)) {
|
|
82
|
+
cr.globals._setData(cr.site.id, global ?? {});
|
|
84
83
|
}
|
|
85
|
-
const entry = getEntry(page);
|
|
86
84
|
let template;
|
|
87
85
|
if (app.templates) {
|
|
88
|
-
template = await loadTemplate(
|
|
86
|
+
template = await loadTemplate(templateModules, entry);
|
|
89
87
|
}
|
|
90
88
|
else {
|
|
91
89
|
throw new Error('App must have templates or loadTemplate method');
|
|
@@ -125,14 +123,37 @@ function parseFilename(path) {
|
|
|
125
123
|
const ext = filename.substring(extPos + 1);
|
|
126
124
|
return [name, ext];
|
|
127
125
|
}
|
|
128
|
-
async function
|
|
126
|
+
async function queryEntry(cr, app, entryRouter, entryQuery) {
|
|
127
|
+
// check
|
|
128
|
+
if (entryRouter) {
|
|
129
|
+
const entry = await entryRouter._handle(cr);
|
|
130
|
+
if (entry)
|
|
131
|
+
return entry;
|
|
132
|
+
}
|
|
133
|
+
if (cr.req.siteMatches()) {
|
|
134
|
+
let uri = decodeURI(cr.req.uri);
|
|
135
|
+
if (uri.startsWith('/'))
|
|
136
|
+
uri = uri.substring(1);
|
|
137
|
+
if (uri === '' || uri === '/')
|
|
138
|
+
uri = '__home__';
|
|
139
|
+
const page = await cr.query(entryQuery, {
|
|
140
|
+
uri,
|
|
141
|
+
siteId: cr.site.id,
|
|
142
|
+
});
|
|
143
|
+
return getEntry(page);
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
function prepareTemplates(rawModules) {
|
|
129
148
|
// parse modules
|
|
130
|
-
|
|
149
|
+
return new Map(Object.entries(rawModules)
|
|
131
150
|
.map(([path, mod]) => {
|
|
132
151
|
const [name, _ext] = parseFilename(path);
|
|
133
152
|
return [name, mod];
|
|
134
153
|
})
|
|
135
154
|
.filter(([name, _mod]) => !!name));
|
|
155
|
+
}
|
|
156
|
+
async function loadTemplate(modules, entry) {
|
|
136
157
|
const entr = entry;
|
|
137
158
|
const handle = `${entr.sectionHandle}-${entr.typeHandle}`;
|
|
138
159
|
if (
|
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":["../../../../src/routing/Route.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,MAAM,YAAY,GAAG;IAC1B,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;CAC9B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GACpB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,KAAK,GACL,SAAS,GACT,MAAM,CAAC;AAEV;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IAET;;;;;;;;;OASG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;;;;;;;;OASG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5B;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B;;OAEG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,YAAiB;IAWlE;;;;;;;;;;;;;;;OAeG;IACH,IAAI,GAAG,IAAI,MAAM,CAQhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,IAAI,OAAO,IAAI,MAAM,CAIpB;IAED;;;;;;;;;;;OAWG;IACH,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;;;;OAQG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAa1D;;OAEG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAIxC;;;;;;;;;OASG;IACH,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS;IAQpD;;OAEG;IACH,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI1C;;;;;;;;OAQG;IACH,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS;IAOtD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,WAAW,IAAI,OAAO;IAatB;;;;;;;;OAQG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAStB;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAkB5B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI1B;;OAEG;IACH,KAAK;IAUL,cAAc;IACd,cAAc,CAAC,KAAK,EAAE,GAAG;IAYzB,cAAc;IACd,QAAQ,IAAI,GAAG;CASf"}
|
|
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":["../../../../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;AAEvD,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../../src/routing/Router.ts"],"names":[],"mappings":"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"}
|