crelte 0.5.0-beta.2 → 0.5.0-beta.4
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/cookies/ServerCookies.d.ts +2 -2
- package/dist/cookies/ServerCookies.d.ts.map +1 -1
- package/dist/cookies/ServerCookies.js +6 -4
- package/dist/crelte.d.ts +16 -0
- package/dist/crelte.d.ts.map +1 -1
- package/dist/crelte.js +3 -0
- package/dist/init/client.js +1 -1
- package/dist/init/server.d.ts +3 -19
- package/dist/init/server.d.ts.map +1 -1
- package/dist/init/server.js +12 -11
- package/dist/init/shared.js +5 -5
- package/dist/loadData/Globals.d.ts +3 -3
- package/dist/loadData/Globals.d.ts.map +1 -1
- package/dist/loadData/Globals.js +3 -3
- package/dist/node/index.js +1 -1
- package/dist/queries/Queries.d.ts +1 -1
- package/dist/queries/Queries.d.ts.map +1 -1
- package/dist/queries/Queries.js +1 -1
- package/dist/queries/index.d.ts +21 -2
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +2 -2
- package/dist/queries/vars.d.ts +31 -1
- package/dist/queries/vars.d.ts.map +1 -1
- package/dist/queries/vars.js +62 -1
- package/dist/routing/Site.d.ts +1 -1
- package/dist/routing/Site.d.ts.map +1 -1
- package/dist/routing/Site.js +1 -1
- package/dist/routing/index.d.ts +2 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +2 -1
- package/dist/routing/route/BaseRoute.d.ts +5 -5
- package/dist/routing/route/BaseRoute.d.ts.map +1 -1
- package/dist/routing/route/BaseRoute.js +16 -18
- package/dist/routing/route/Request.d.ts +5 -5
- package/dist/routing/route/Request.d.ts.map +1 -1
- package/dist/routing/route/Request.js +24 -23
- package/dist/routing/route/Route.js +2 -2
- package/dist/routing/router/BaseRouter.d.ts +5 -102
- package/dist/routing/router/BaseRouter.d.ts.map +1 -1
- package/dist/routing/router/BaseRouter.js +14 -168
- package/dist/routing/router/ClientRouter.d.ts +1 -0
- package/dist/routing/router/ClientRouter.d.ts.map +1 -1
- package/dist/routing/router/ClientRouter.js +58 -67
- package/dist/routing/router/Router.d.ts +17 -1
- package/dist/routing/router/Router.d.ts.map +1 -1
- package/dist/routing/router/Router.js +68 -9
- package/dist/routing/router/ServerRouter.d.ts +9 -4
- package/dist/routing/router/ServerRouter.d.ts.map +1 -1
- package/dist/routing/router/ServerRouter.js +15 -8
- package/dist/routing/utils.d.ts +5 -3
- package/dist/routing/utils.d.ts.map +1 -1
- package/dist/routing/utils.js +20 -35
- package/dist/server/CrelteServer.d.ts +47 -4
- package/dist/server/CrelteServer.d.ts.map +1 -1
- package/dist/server/CrelteServer.js +58 -14
- package/dist/server/Request.d.ts +17 -1
- package/dist/server/Request.d.ts.map +1 -1
- package/dist/server/Request.js +25 -1
- package/dist/server/ServerRouter.d.ts +5 -1
- package/dist/server/ServerRouter.d.ts.map +1 -1
- package/dist/server/ServerRouter.js +26 -6
- package/dist/server/queries/QueriesCaching.d.ts +6 -1
- package/dist/server/queries/QueriesCaching.d.ts.map +1 -1
- package/dist/server/queries/QueriesCaching.js +10 -2
- package/dist/server/queries/queries.d.ts.map +1 -1
- package/dist/server/queries/queries.js +5 -2
- package/dist/server/queries/routes.d.ts.map +1 -1
- package/dist/server/queries/routes.js +17 -5
- package/dist/server/shared.d.ts +5 -6
- package/dist/server/shared.d.ts.map +1 -1
- package/dist/server/shared.js +4 -9
- package/dist/ssr/SsrCache.d.ts +1 -1
- package/dist/ssr/SsrCache.d.ts.map +1 -1
- package/dist/ssr/SsrCache.js +1 -1
- package/dist/std/intl/acceptLang.d.ts +6 -0
- package/dist/std/intl/acceptLang.d.ts.map +1 -0
- package/dist/std/intl/acceptLang.js +46 -0
- package/dist/std/intl/index.d.ts +2 -0
- package/dist/std/intl/index.d.ts.map +1 -0
- package/dist/std/intl/index.js +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -0
- package/dist/vite/index.js +1 -1
- package/package.json +5 -5
- package/src/cookies/ServerCookies.ts +6 -6
- package/src/crelte.ts +21 -0
- package/src/init/client.ts +1 -1
- package/src/init/server.ts +21 -37
- package/src/init/shared.ts +5 -5
- package/src/loadData/Globals.ts +3 -3
- package/src/node/index.ts +1 -1
- package/src/queries/Queries.ts +1 -1
- package/src/queries/index.ts +25 -2
- package/src/queries/vars.ts +76 -2
- package/src/routing/Site.ts +1 -1
- package/src/routing/index.ts +2 -0
- package/src/routing/route/BaseRoute.ts +17 -20
- package/src/routing/route/Request.ts +29 -25
- package/src/routing/route/Route.ts +2 -2
- package/src/routing/router/BaseRouter.ts +18 -179
- package/src/routing/router/ClientRouter.ts +64 -72
- package/src/routing/router/Router.ts +71 -9
- package/src/routing/router/ServerRouter.ts +20 -12
- package/src/routing/utils.ts +23 -45
- package/src/server/CrelteServer.ts +75 -21
- package/src/server/Request.ts +30 -1
- package/src/server/ServerRouter.ts +42 -12
- package/src/server/queries/QueriesCaching.ts +19 -2
- package/src/server/queries/queries.ts +5 -2
- package/src/server/queries/routes.ts +16 -5
- package/src/server/shared.ts +14 -18
- package/src/ssr/SsrCache.ts +1 -1
- package/src/std/intl/acceptLang.ts +52 -0
- package/src/std/intl/index.ts +1 -0
- package/src/utils.ts +7 -0
- package/src/vite/index.ts +1 -1
- package/dist/server/queries/index.d.ts +0 -4
- package/dist/server/queries/index.d.ts.map +0 -1
- package/dist/server/queries/index.js +0 -2
- package/src/server/queries/index.ts +0 -5
|
@@ -7,10 +7,10 @@ import { type SetCookie } from './utils.js';
|
|
|
7
7
|
export default class ServerCookies implements Cookies {
|
|
8
8
|
requestCookies: Map<string, string>;
|
|
9
9
|
setCookies: Map<string, SetCookie>;
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(headers: Headers);
|
|
11
11
|
get(name: string): string | null;
|
|
12
12
|
set(name: string, value: string, opts?: SetOptions): void;
|
|
13
13
|
remove(name: string, opts?: RemoveOptions): void;
|
|
14
|
-
|
|
14
|
+
_populateHeaders(headers: Headers): void;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=ServerCookies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerCookies.d.ts","sourceRoot":"","sources":["../../src/cookies/ServerCookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAgB,KAAK,SAAS,EAAqB,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,OAAO;IACpD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ServerCookies.d.ts","sourceRoot":"","sources":["../../src/cookies/ServerCookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAgB,KAAK,SAAS,EAAqB,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,OAAO;IACpD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEvB,OAAO,EAAE,OAAO;IAM5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUhC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI;IAIzD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI;IAIhD,gBAAgB,CAAC,OAAO,EAAE,OAAO;CAKjC"}
|
|
@@ -6,8 +6,8 @@ import { parseCookies, setCookieToString } from './utils.js';
|
|
|
6
6
|
export default class ServerCookies {
|
|
7
7
|
requestCookies;
|
|
8
8
|
setCookies;
|
|
9
|
-
constructor(
|
|
10
|
-
this.requestCookies = parseCookies(
|
|
9
|
+
constructor(headers) {
|
|
10
|
+
this.requestCookies = parseCookies(headers.get('cookie') ?? '');
|
|
11
11
|
this.setCookies = new Map();
|
|
12
12
|
}
|
|
13
13
|
/// Rethrns the value of the cookie with the given name, or null if it doesn't exist.
|
|
@@ -25,7 +25,9 @@ export default class ServerCookies {
|
|
|
25
25
|
remove(name, opts) {
|
|
26
26
|
this.set(name, '', { ...opts, maxAge: 0 });
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
_populateHeaders(headers) {
|
|
29
|
+
for (const setCookie of this.setCookies.values()) {
|
|
30
|
+
headers.append('set-cookie', setCookieToString(setCookie));
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
33
|
}
|
package/dist/crelte.d.ts
CHANGED
|
@@ -97,6 +97,22 @@ export type Crelte = {
|
|
|
97
97
|
getEnv(name: 'CRAFT_WEB_URL'): string;
|
|
98
98
|
getEnv(name: 'FRONTEND_URL'): string;
|
|
99
99
|
getEnv(name: string): string | null;
|
|
100
|
+
/**
|
|
101
|
+
* returns the frontend url with an optional path
|
|
102
|
+
*
|
|
103
|
+
* ## Note
|
|
104
|
+
* On the client this will always be the current origin
|
|
105
|
+
* and on the server it will be the from the env `FRONTEND_URL` env
|
|
106
|
+
* variable
|
|
107
|
+
*/
|
|
108
|
+
frontendUrl(path?: string): URL;
|
|
109
|
+
/**
|
|
110
|
+
* returns the backend url with an optional path
|
|
111
|
+
*
|
|
112
|
+
* ## Note
|
|
113
|
+
* For the origin the `ENDPOINT_URL` env variable is used
|
|
114
|
+
*/
|
|
115
|
+
backendUrl(path?: string): URL;
|
|
100
116
|
/**
|
|
101
117
|
* returns a store which contains a globalSet
|
|
102
118
|
*
|
package/dist/crelte.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crelte.d.ts","sourceRoot":"","sources":["../src/crelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"crelte.d.ts","sourceRoot":"","sources":["../src/crelte.ts"],"names":[],"mappings":"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"}
|
package/dist/crelte.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Request } from './routing/index.js';
|
|
2
|
+
import { urlWithPath } from './utils.js';
|
|
2
3
|
export function configWithDefaults(config = {}) {
|
|
3
4
|
return {
|
|
4
5
|
preloadOnMouseOver: config.preloadOnMouseOver ?? false,
|
|
@@ -21,6 +22,8 @@ export function newCrelte({ config, ssrCache, plugins, events, globals, router,
|
|
|
21
22
|
cookies,
|
|
22
23
|
getPlugin: name => plugins.get(name),
|
|
23
24
|
getEnv: key => ssrCache.get(key),
|
|
25
|
+
frontendUrl: path => urlWithPath(ssrCache.get('FRONTEND_URL'), path),
|
|
26
|
+
backendUrl: path => urlWithPath(ssrCache.get('ENDPOINT_URL'), path),
|
|
24
27
|
getGlobalStore: name => globals.getStore(name),
|
|
25
28
|
toRequest(req) {
|
|
26
29
|
// @ts-ignore
|
package/dist/init/client.js
CHANGED
|
@@ -114,7 +114,7 @@ export async function main(data) {
|
|
|
114
114
|
const route = readyForRoute();
|
|
115
115
|
cr.router._requestCompleted();
|
|
116
116
|
if (route.entryChanged)
|
|
117
|
-
cr.globals.
|
|
117
|
+
cr.globals.z_syncToStores();
|
|
118
118
|
// we should trigger the route update here
|
|
119
119
|
pluginsBeforeRender(cr, route);
|
|
120
120
|
renderApp(route);
|
package/dist/init/server.d.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type ServerData =
|
|
3
|
-
url: string;
|
|
4
|
-
htmlTemplate: string;
|
|
5
|
-
ssrManifest: Record<string, string[]>;
|
|
6
|
-
acceptLang?: string;
|
|
7
|
-
endpoint: string;
|
|
8
|
-
craftWeb: string;
|
|
9
|
-
frontend: string;
|
|
10
|
-
viteEnv: Map<string, string>;
|
|
11
|
-
cookies: string;
|
|
12
|
-
sites: SiteFromGraphQl[];
|
|
13
|
-
};
|
|
1
|
+
import { RenderRequest, RenderResponse } from '../server/shared.js';
|
|
2
|
+
export type ServerData = RenderRequest;
|
|
14
3
|
/**
|
|
15
4
|
* The main function to start the server side rendering
|
|
16
5
|
*/
|
|
@@ -40,12 +29,7 @@ export type MainData = {
|
|
|
40
29
|
* }
|
|
41
30
|
* ```
|
|
42
31
|
*/
|
|
43
|
-
export declare function main(data: MainData): Promise<
|
|
44
|
-
status: number;
|
|
45
|
-
location?: string;
|
|
46
|
-
html?: string;
|
|
47
|
-
setCookies?: string[];
|
|
48
|
-
}>;
|
|
32
|
+
export declare function main(data: MainData): Promise<RenderResponse>;
|
|
49
33
|
export type Error = {
|
|
50
34
|
status: number;
|
|
51
35
|
message: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpE,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,CAiHlE;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,CAgC5C"}
|
package/dist/init/server.js
CHANGED
|
@@ -42,12 +42,9 @@ export async function main(data) {
|
|
|
42
42
|
ssrCache.set('ENDPOINT_URL', endpoint);
|
|
43
43
|
ssrCache.set('CRAFT_WEB_URL', data.serverData.craftWeb);
|
|
44
44
|
ssrCache.set('FRONTEND_URL', data.serverData.frontend);
|
|
45
|
-
const
|
|
46
|
-
const cookies = new ServerCookies(cookiesData);
|
|
45
|
+
const cookies = new ServerCookies(data.serverData.headers);
|
|
47
46
|
ssrCache.set('crelteSites', data.serverData.sites);
|
|
48
|
-
const router = new ServerRouter(data.serverData.sites, {
|
|
49
|
-
debugTiming: config.debugTiming ?? false,
|
|
50
|
-
});
|
|
47
|
+
const router = new ServerRouter(data.serverData.sites, data.serverData.headers.get('accept-language') ?? '', { debugTiming: config.debugTiming ?? false });
|
|
51
48
|
const queries = newQueries(ssrCache, router.route.readonly(), config);
|
|
52
49
|
const crelte = newCrelte({
|
|
53
50
|
config,
|
|
@@ -69,18 +66,20 @@ export async function main(data) {
|
|
|
69
66
|
router.onRender = (cr, readyForRoute, _domUpdated) => {
|
|
70
67
|
const route = readyForRoute();
|
|
71
68
|
cr.router._requestCompleted();
|
|
72
|
-
cr.globals.
|
|
69
|
+
cr.globals.z_syncToStores();
|
|
73
70
|
pluginsBeforeRender(cr, route);
|
|
74
71
|
return route;
|
|
75
72
|
};
|
|
76
73
|
// throws if there was an error
|
|
77
|
-
const [req, route] = await router.init(data.serverData.url
|
|
74
|
+
const [req, route] = await router.init(data.serverData.url);
|
|
78
75
|
// if redirect
|
|
79
76
|
if (!route) {
|
|
77
|
+
const headers = new Headers();
|
|
78
|
+
crelte.cookies._populateHeaders(headers);
|
|
80
79
|
return {
|
|
81
80
|
status: req.statusCode ?? 302,
|
|
82
81
|
location: req.url.toString(),
|
|
83
|
-
|
|
82
|
+
headers,
|
|
84
83
|
};
|
|
85
84
|
}
|
|
86
85
|
const context = new Map([['crelte', crelte]]);
|
|
@@ -96,20 +95,22 @@ export async function main(data) {
|
|
|
96
95
|
context,
|
|
97
96
|
});
|
|
98
97
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
99
|
-
head += crelte.ssrCache.
|
|
98
|
+
head += crelte.ssrCache.exportToHead();
|
|
100
99
|
let htmlTemplate = data.serverData.htmlTemplate;
|
|
101
100
|
htmlTemplate = htmlTemplate.replace('<!--page-lang-->', route.site.language);
|
|
102
101
|
const finalHtml = htmlTemplate
|
|
103
102
|
.replace('</head>', head + '\n\t</head>')
|
|
104
103
|
.replace('<!--ssr-body-->', html);
|
|
105
104
|
const entry = route.entry;
|
|
105
|
+
const headers = new Headers();
|
|
106
|
+
crelte.cookies._populateHeaders(headers);
|
|
106
107
|
return {
|
|
107
108
|
status: req.statusCode ??
|
|
108
109
|
(entry.sectionHandle === 'error'
|
|
109
110
|
? parseInt(entry.typeHandle)
|
|
110
111
|
: 200),
|
|
111
112
|
html: finalHtml,
|
|
112
|
-
|
|
113
|
+
headers,
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
116
|
/**
|
|
@@ -143,7 +144,7 @@ export async function mainError(data) {
|
|
|
143
144
|
context,
|
|
144
145
|
});
|
|
145
146
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
146
|
-
head += ssrCache.
|
|
147
|
+
head += ssrCache.exportToHead();
|
|
147
148
|
let htmlTemplate = data.serverData.htmlTemplate;
|
|
148
149
|
htmlTemplate = htmlTemplate.replace('<!--page-lang-->', 'de');
|
|
149
150
|
const finalHtml = htmlTemplate
|
package/dist/init/shared.js
CHANGED
|
@@ -35,9 +35,9 @@ export function onNewCrelteRequest(crelte, req) {
|
|
|
35
35
|
// might refer to the wrong objects/classes
|
|
36
36
|
const nCrelte = {
|
|
37
37
|
...crelte,
|
|
38
|
-
router: crelte.router.
|
|
39
|
-
queries: crelte.queries.
|
|
40
|
-
globals: crelte.globals.
|
|
38
|
+
router: crelte.router.z_toRequest(req),
|
|
39
|
+
queries: crelte.queries.z_toRequest(req),
|
|
40
|
+
globals: crelte.globals.z_toRequest(),
|
|
41
41
|
};
|
|
42
42
|
return crelteToRequest(nCrelte, req);
|
|
43
43
|
}
|
|
@@ -120,12 +120,12 @@ export async function loadFn(cr, app, loadOpts) {
|
|
|
120
120
|
!(await Promise.any([loadGlobalDataProm, timeout(2000)]))) {
|
|
121
121
|
console.error('DEV: globals took longer than 2 seconds to load. ' +
|
|
122
122
|
'Resolving globals now to fix potential deadlocks');
|
|
123
|
-
cr.globals.
|
|
123
|
+
cr.globals.z_globalsLoaded();
|
|
124
124
|
}
|
|
125
125
|
const [_global, [entry, template]] = await loadGlobalDataProm;
|
|
126
126
|
if (isCanceled())
|
|
127
127
|
return;
|
|
128
|
-
cr.globals.
|
|
128
|
+
cr.globals.z_globalsLoaded();
|
|
129
129
|
// loading progress is at 60%
|
|
130
130
|
loadOpts?.setProgress(0.6);
|
|
131
131
|
const pluginsLoadData = cr.events.trigger('loadData', cr, entry);
|
|
@@ -48,17 +48,17 @@ export default class Globals {
|
|
|
48
48
|
* @hidden
|
|
49
49
|
* call this before starting the loadGlobalData phase
|
|
50
50
|
*/
|
|
51
|
-
|
|
51
|
+
z_toRequest(): Globals;
|
|
52
52
|
/**
|
|
53
53
|
* @hidden
|
|
54
54
|
* call this after the loadGlobalData phase
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
z_globalsLoaded(): void;
|
|
57
57
|
/**
|
|
58
58
|
* @hidden
|
|
59
59
|
* call this after the loadData phase once the CrelteRequest
|
|
60
60
|
* gets completed
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
z_syncToStores(): void;
|
|
63
63
|
}
|
|
64
64
|
//# sourceMappingURL=Globals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Globals.d.ts","sourceRoot":"","sources":["../../src/loadData/Globals.ts"],"names":[],"mappings":"AASA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AAEjD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAK3B,OAAO,CAAC,OAAO,CAAyC;IAIxD,OAAO,CAAC,OAAO,CAA0B;IAGzC,OAAO,CAAC,MAAM,CAA6B;gBAE/B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAM/C;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAWpC;;;;;;;OAOG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAkB7D;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IA4B5B;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"Globals.d.ts","sourceRoot":"","sources":["../../src/loadData/Globals.ts"],"names":[],"mappings":"AASA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AAEjD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAK3B,OAAO,CAAC,OAAO,CAAyC;IAIxD,OAAO,CAAC,OAAO,CAA0B;IAGzC,OAAO,CAAC,MAAM,CAA6B;gBAE/B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAM/C;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAWpC;;;;;;;OAOG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAkB7D;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IA4B5B;;;OAGG;IACH,WAAW;IAQX;;;OAGG;IACH,eAAe;IAYf;;;;OAIG;IACH,cAAc;CAyBd"}
|
package/dist/loadData/Globals.js
CHANGED
|
@@ -106,7 +106,7 @@ export default class Globals {
|
|
|
106
106
|
* @hidden
|
|
107
107
|
* call this before starting the loadGlobalData phase
|
|
108
108
|
*/
|
|
109
|
-
|
|
109
|
+
z_toRequest() {
|
|
110
110
|
const nGlobals = new Globals(this.stores);
|
|
111
111
|
nGlobals.waiters = new Map();
|
|
112
112
|
nGlobals.newData = new Map();
|
|
@@ -116,7 +116,7 @@ export default class Globals {
|
|
|
116
116
|
* @hidden
|
|
117
117
|
* call this after the loadGlobalData phase
|
|
118
118
|
*/
|
|
119
|
-
|
|
119
|
+
z_globalsLoaded() {
|
|
120
120
|
if (!this.waiters)
|
|
121
121
|
return;
|
|
122
122
|
for (const [name, listeners] of this.waiters.entries()) {
|
|
@@ -131,7 +131,7 @@ export default class Globals {
|
|
|
131
131
|
* call this after the loadData phase once the CrelteRequest
|
|
132
132
|
* gets completed
|
|
133
133
|
*/
|
|
134
|
-
|
|
134
|
+
z_syncToStores() {
|
|
135
135
|
const setToNull = new Set(this.stores.keys());
|
|
136
136
|
for (const [name, data] of this.newData.entries()) {
|
|
137
137
|
setToNull.delete(name);
|
package/dist/node/index.js
CHANGED
|
@@ -43,7 +43,7 @@ export default async function createServer(serverMod, buildTime) {
|
|
|
43
43
|
const req = requestToWebRequest(baseUrl, nReq);
|
|
44
44
|
let thrownError = null;
|
|
45
45
|
try {
|
|
46
|
-
const routeResp = await router.
|
|
46
|
+
const routeResp = await router.z_handle(req);
|
|
47
47
|
if (routeResp) {
|
|
48
48
|
await webResponseToResponse(routeResp, res);
|
|
49
49
|
return;
|
|
@@ -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;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GACd;IACA,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACb,GACD;IACA,SAAS,EAAE,MAAM,CAAC;CACjB,CAAC;AAEL,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,MAAM,CAAC,GAAG,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE,cAAmB;IAS1B;;;;;;;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;IAwBnB;;;OAGG;IACH,
|
|
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;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GACd;IACA,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACb,GACD;IACA,SAAS,EAAE,MAAM,CAAC;CACjB,CAAC;AAEL,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,MAAM,CAAC,GAAG,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE,cAAmB;IAS1B;;;;;;;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;IAwBnB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;CAGxB"}
|
package/dist/queries/Queries.js
CHANGED
package/dist/queries/index.d.ts
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import Queries, { isQuery, QueriesOptions, Query, QueryOptions } from '../queries/Queries.js';
|
|
2
2
|
import { gql } from './gql.js';
|
|
3
3
|
import QueryError from './QueryError.js';
|
|
4
|
-
import {
|
|
5
|
-
export { Queries, type QueriesOptions, type QueryOptions, type Query, isQuery, QueryError, gql, vars, type ValidIf, QueryVar,
|
|
4
|
+
import { QueryVar, ValidIf, vars } from './vars.js';
|
|
5
|
+
export { Queries, type QueriesOptions, type QueryOptions, type Query, isQuery, QueryError, gql, vars, type ValidIf, QueryVar, };
|
|
6
|
+
type InferQueryVarType<T> = T extends QueryVar<infer U> ? U : never;
|
|
7
|
+
type InferVariableTypes<T> = {
|
|
8
|
+
[K in keyof T]: InferQueryVarType<T[K]>;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* ## Example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { vars, Caching } from 'crelte/queries';
|
|
14
|
+
*
|
|
15
|
+
* export const variables = {
|
|
16
|
+
* siteId: vars.siteId(),
|
|
17
|
+
* category: vars.id()
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* export const caching: Caching<typeof variables> =
|
|
21
|
+
* (queryResponse, variables) => !!queryResponse.entries.length;
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export type Caching<T extends Record<string, QueryVar<any>> = Record<string, QueryVar<any>>> = boolean | ((response: any, vars: InferVariableTypes<T>) => boolean);
|
|
6
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EACf,OAAO,EACP,cAAc,EACd,KAAK,EACL,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EACf,OAAO,EACP,cAAc,EACd,KAAK,EACL,YAAY,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EACN,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,OAAO,EACP,UAAU,EACV,GAAG,EACH,IAAI,EACJ,KAAK,OAAO,EACZ,QAAQ,GACR,CAAC;AAEF,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpE,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,OAAO,CAClB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IACpE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC"}
|
package/dist/queries/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Queries, { isQuery, } from '../queries/Queries.js';
|
|
2
2
|
import { gql } from './gql.js';
|
|
3
3
|
import QueryError from './QueryError.js';
|
|
4
|
-
import {
|
|
5
|
-
export { Queries, isQuery, QueryError, gql, vars, QueryVar,
|
|
4
|
+
import { QueryVar, vars } from './vars.js';
|
|
5
|
+
export { Queries, isQuery, QueryError, gql, vars, QueryVar, };
|
package/dist/queries/vars.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export declare const vars: {
|
|
|
3
3
|
any: () => QueryVar<any>;
|
|
4
4
|
number: () => QueryVar<number>;
|
|
5
5
|
string: () => QueryVar<string>;
|
|
6
|
+
id: () => QueryVar<number>;
|
|
7
|
+
ids: () => QueryVar<number[]>;
|
|
6
8
|
siteId: () => QueryVar<number>;
|
|
7
9
|
};
|
|
8
10
|
export type ValidIf<T> = (v: T, cs: ServerRouter) => boolean;
|
|
@@ -14,6 +16,34 @@ export declare class QueryVar<T = any> {
|
|
|
14
16
|
constructor();
|
|
15
17
|
string(): QueryVar<string>;
|
|
16
18
|
number(): QueryVar<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Id is almost the same as number but will also parse
|
|
21
|
+
* strings, but only allow non negative integers
|
|
22
|
+
*
|
|
23
|
+
* ## Warning
|
|
24
|
+
* Ids are not automatically safe to be cached
|
|
25
|
+
* you need to validate the response to make sure filters
|
|
26
|
+
* with this id returned something
|
|
27
|
+
*/
|
|
28
|
+
id(): QueryVar<number>;
|
|
29
|
+
/**
|
|
30
|
+
* Ids is an array of ids
|
|
31
|
+
* it will also convert a single id to an array with one element
|
|
32
|
+
* the returned array will **never be empty**, but might be null if
|
|
33
|
+
* allowed. Id's are always non negative integers
|
|
34
|
+
*
|
|
35
|
+
* ## Warning
|
|
36
|
+
* Ids are not automatically safe to be cached, it is also not
|
|
37
|
+
* enough to just check if the filter returned some results.
|
|
38
|
+
* Since for example a `relatedTo` filter works like an `or` and
|
|
39
|
+
* not an `and` meaning if you request ids `[1,2,3]` and
|
|
40
|
+
* only 1 and 3 have related entries you will get results
|
|
41
|
+
* even though id 2 did not return anything.
|
|
42
|
+
*
|
|
43
|
+
* To mitigate this you could do a second query with the filtered
|
|
44
|
+
* ids in the field, and check if the return matches the length.
|
|
45
|
+
*/
|
|
46
|
+
ids(): QueryVar<number[]>;
|
|
17
47
|
nullable(): QueryVar<T | null>;
|
|
18
48
|
/**
|
|
19
49
|
* Set a validation function for this variable
|
|
@@ -27,7 +57,7 @@ export declare class QueryVar<T = any> {
|
|
|
27
57
|
* @hidden
|
|
28
58
|
* Internal method to set the name of the variable
|
|
29
59
|
*/
|
|
30
|
-
|
|
60
|
+
z_setName(name: string): QueryVar<T>;
|
|
31
61
|
__QueryVar__(): void;
|
|
32
62
|
}
|
|
33
63
|
export declare function isQueryVar(v: any): v is QueryVar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../src/queries/vars.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,eAAO,MAAM,IAAI;eACP,QAAQ,CAAC,GAAG,CAAC;kBACV,QAAQ,CAAC,MAAM,CAAC;kBAChB,QAAQ,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../src/queries/vars.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,eAAO,MAAM,IAAI;eACP,QAAQ,CAAC,GAAG,CAAC;kBACV,QAAQ,CAAC,MAAM,CAAC;kBAChB,QAAQ,CAAC,MAAM,CAAC;cACpB,QAAQ,CAAC,MAAM,CAAC;eACf,QAAQ,CAAC,MAAM,EAAE,CAAC;kBACf,QAAQ,CAAC,MAAM,CAAC;CAM5B,CAAC;AAIF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC;AAE7D,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC5B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,IAAI,CAA6C;IACzD,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,SAAS,CAAa;;IAS9B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IAK1B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IAK1B;;;;;;;;OAQG;IACH,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC;IAKtB;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;IAKzB,QAAQ,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;IAK9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAKpC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,GAAG,CAAC,GAAG,IAAI;IAkE9C;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAKpC,YAAY;CACZ;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAEhD"}
|
package/dist/queries/vars.js
CHANGED
|
@@ -2,6 +2,8 @@ export const vars = {
|
|
|
2
2
|
any: () => new QueryVar(),
|
|
3
3
|
number: () => new QueryVar().number(),
|
|
4
4
|
string: () => new QueryVar().string(),
|
|
5
|
+
id: () => new QueryVar().id(),
|
|
6
|
+
ids: () => new QueryVar().ids(),
|
|
5
7
|
siteId: () => new QueryVar()
|
|
6
8
|
.number()
|
|
7
9
|
.validIf((num, router) => !!router.sites.find(site => site.id === num)),
|
|
@@ -25,6 +27,40 @@ export class QueryVar {
|
|
|
25
27
|
this.type = 'number';
|
|
26
28
|
return this;
|
|
27
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Id is almost the same as number but will also parse
|
|
32
|
+
* strings, but only allow non negative integers
|
|
33
|
+
*
|
|
34
|
+
* ## Warning
|
|
35
|
+
* Ids are not automatically safe to be cached
|
|
36
|
+
* you need to validate the response to make sure filters
|
|
37
|
+
* with this id returned something
|
|
38
|
+
*/
|
|
39
|
+
id() {
|
|
40
|
+
this.type = 'id';
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Ids is an array of ids
|
|
45
|
+
* it will also convert a single id to an array with one element
|
|
46
|
+
* the returned array will **never be empty**, but might be null if
|
|
47
|
+
* allowed. Id's are always non negative integers
|
|
48
|
+
*
|
|
49
|
+
* ## Warning
|
|
50
|
+
* Ids are not automatically safe to be cached, it is also not
|
|
51
|
+
* enough to just check if the filter returned some results.
|
|
52
|
+
* Since for example a `relatedTo` filter works like an `or` and
|
|
53
|
+
* not an `and` meaning if you request ids `[1,2,3]` and
|
|
54
|
+
* only 1 and 3 have related entries you will get results
|
|
55
|
+
* even though id 2 did not return anything.
|
|
56
|
+
*
|
|
57
|
+
* To mitigate this you could do a second query with the filtered
|
|
58
|
+
* ids in the field, and check if the return matches the length.
|
|
59
|
+
*/
|
|
60
|
+
ids() {
|
|
61
|
+
this.type = 'ids';
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
28
64
|
nullable() {
|
|
29
65
|
this.flagNullable = true;
|
|
30
66
|
return this;
|
|
@@ -59,6 +95,27 @@ export class QueryVar {
|
|
|
59
95
|
if (typeof v !== 'number')
|
|
60
96
|
throw new Error(`variable ${this.name} is not a number`);
|
|
61
97
|
break;
|
|
98
|
+
case 'id':
|
|
99
|
+
if (typeof v === 'string')
|
|
100
|
+
v = parseInt(v);
|
|
101
|
+
if (!isValidId(v))
|
|
102
|
+
throw new Error(`variable ${this.name} is not a valid id`);
|
|
103
|
+
break;
|
|
104
|
+
case 'ids':
|
|
105
|
+
if (typeof v === 'string' || typeof v === 'number')
|
|
106
|
+
v = [v];
|
|
107
|
+
if (!Array.isArray(v))
|
|
108
|
+
throw new Error(`variable ${this.name} is not an id or a list of ids`);
|
|
109
|
+
if (v.length <= 0) {
|
|
110
|
+
if (this.flagNullable)
|
|
111
|
+
return null;
|
|
112
|
+
throw new Error(`variable ${this.name} is not allowed to be empty`);
|
|
113
|
+
}
|
|
114
|
+
// convert strings to numbers
|
|
115
|
+
v = v.map(v => (typeof v === 'string' ? parseInt(v) : v));
|
|
116
|
+
if (!v.every(isValidId))
|
|
117
|
+
throw new Error(`variable ${this.name} is not a list of valid ids`);
|
|
118
|
+
break;
|
|
62
119
|
default:
|
|
63
120
|
throw new Error('uknown type ' + this.type);
|
|
64
121
|
}
|
|
@@ -70,7 +127,7 @@ export class QueryVar {
|
|
|
70
127
|
* @hidden
|
|
71
128
|
* Internal method to set the name of the variable
|
|
72
129
|
*/
|
|
73
|
-
|
|
130
|
+
z_setName(name) {
|
|
74
131
|
this.name = name;
|
|
75
132
|
return this;
|
|
76
133
|
}
|
|
@@ -79,3 +136,7 @@ export class QueryVar {
|
|
|
79
136
|
export function isQueryVar(v) {
|
|
80
137
|
return v && typeof v === 'object' && typeof v.__QueryVar__ === 'function';
|
|
81
138
|
}
|
|
139
|
+
// does not do string to number conversion
|
|
140
|
+
function isValidId(id) {
|
|
141
|
+
return typeof id === 'number' && Number.isInteger(id) && id >= 0;
|
|
142
|
+
}
|
package/dist/routing/Site.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AAED,wBAAgB,WAAW,CAAC,
|
|
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;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAsBhE"}
|
package/dist/routing/Site.js
CHANGED
|
@@ -46,7 +46,7 @@ export default class Site {
|
|
|
46
46
|
return trimSlashEnd(this.url.pathname);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
export function siteFromUrl(
|
|
49
|
+
export function siteFromUrl(sites, url) {
|
|
50
50
|
let site = null;
|
|
51
51
|
// get the site which matches the url the most
|
|
52
52
|
for (const s of sites) {
|
package/dist/routing/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ import Route, { type RouteOptions } from './route/Route.js';
|
|
|
3
3
|
import Request, { type RequestOptions, type DelayRender } from './route/Request.js';
|
|
4
4
|
import Site from './Site.js';
|
|
5
5
|
import BaseRoute from './route/BaseRoute.js';
|
|
6
|
-
|
|
6
|
+
import { shouldInterceptClick } from './utils.js';
|
|
7
|
+
export { Router, UpdateRequest, BaseRoute, Route, RouteOptions, Site, Request, DelayRender, RequestOptions, shouldInterceptClick, };
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,OAAO,EAAE,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,OAAO,EAAE,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,cAAc,EACd,oBAAoB,GACpB,CAAC"}
|
package/dist/routing/index.js
CHANGED
|
@@ -3,4 +3,5 @@ import Route from './route/Route.js';
|
|
|
3
3
|
import Request from './route/Request.js';
|
|
4
4
|
import Site from './Site.js';
|
|
5
5
|
import BaseRoute from './route/BaseRoute.js';
|
|
6
|
-
|
|
6
|
+
import { shouldInterceptClick } from './utils.js';
|
|
7
|
+
export { Router, BaseRoute, Route, Site, Request, shouldInterceptClick, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Site from '../Site.js';
|
|
2
2
|
export type BaseRouteOptions = {
|
|
3
|
-
scrollY?: number;
|
|
3
|
+
scrollY?: number | null;
|
|
4
4
|
index?: number;
|
|
5
5
|
origin?: RouteOrigin;
|
|
6
6
|
state?: Record<string, any>;
|
|
@@ -65,7 +65,7 @@ export default class BaseRoute {
|
|
|
65
65
|
* @hidden
|
|
66
66
|
* State data that can be used to store additional information
|
|
67
67
|
*/
|
|
68
|
-
|
|
68
|
+
z_state: Record<string, any>;
|
|
69
69
|
/**
|
|
70
70
|
* @hidden
|
|
71
71
|
* Any data that should be passed to onRoute and onRequest handlers
|
|
@@ -77,7 +77,7 @@ export default class BaseRoute {
|
|
|
77
77
|
* Consider using state instead. This will not be cloned in the clone
|
|
78
78
|
* call so will always be the same object
|
|
79
79
|
*/
|
|
80
|
-
|
|
80
|
+
z_context: Record<string, any>;
|
|
81
81
|
/**
|
|
82
82
|
* Creates a new Route
|
|
83
83
|
*/
|
|
@@ -248,8 +248,8 @@ export default class BaseRoute {
|
|
|
248
248
|
*/
|
|
249
249
|
clone(): BaseRoute;
|
|
250
250
|
/** @hidden */
|
|
251
|
-
|
|
251
|
+
z_fillFromState(state: any): void;
|
|
252
252
|
/** @hidden */
|
|
253
|
-
|
|
253
|
+
z_toState(): any;
|
|
254
254
|
}
|
|
255
255
|
//# sourceMappingURL=BaseRoute.d.ts.map
|