crelte 0.5.7 → 0.5.9
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/blocks/Blocks.d.ts +36 -0
- package/dist/blocks/Blocks.d.ts.map +1 -1
- package/dist/blocks/Blocks.js +42 -0
- package/dist/blocks/Blocks.svelte +2 -16
- package/dist/blocks/Blocks.svelte.d.ts +20 -37
- package/dist/blocks/Blocks.svelte.d.ts.map +1 -1
- package/dist/blocks/index.d.ts +2 -2
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +2 -2
- package/dist/cookies/ServerCookies.d.ts +1 -1
- package/dist/cookies/ServerCookies.js +1 -1
- package/dist/cookies/index.d.ts +1 -1
- package/dist/crelte.d.ts +21 -10
- package/dist/crelte.d.ts.map +1 -1
- package/dist/index.d.ts +19 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -13
- package/dist/init/client.d.ts +2 -2
- package/dist/init/client.d.ts.map +1 -1
- package/dist/init/client.js +3 -2
- package/dist/init/server.d.ts +7 -6
- package/dist/init/server.d.ts.map +1 -1
- package/dist/init/server.js +6 -6
- package/dist/loadData/Globals.d.ts +3 -3
- package/dist/loadData/Globals.js +3 -3
- package/dist/loadData/loadData.d.ts +8 -18
- package/dist/loadData/loadData.d.ts.map +1 -1
- package/dist/loadData/loadData.js +2 -2
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +84 -35
- package/dist/plugins/Events.d.ts +4 -4
- package/dist/plugins/Plugins.d.ts +2 -2
- package/dist/plugins/index.d.ts +2 -3
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +2 -1
- package/dist/queries/Queries.d.ts +9 -0
- package/dist/queries/Queries.d.ts.map +1 -1
- package/dist/queries/Queries.js +29 -17
- package/dist/queries/QueryError.d.ts +2 -0
- package/dist/queries/QueryError.d.ts.map +1 -1
- package/dist/queries/QueryError.js +6 -1
- package/dist/queries/gql.d.ts +2 -2
- package/dist/queries/gql.js +2 -2
- package/dist/queries/index.d.ts +7 -5
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/vars.d.ts +7 -7
- package/dist/queries/vars.d.ts.map +1 -1
- package/dist/queries/vars.js +10 -8
- package/dist/routing/LoadRunner.d.ts +1 -1
- package/dist/routing/LoadRunner.js +1 -1
- package/dist/routing/index.d.ts +4 -4
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/route/BaseRoute.d.ts +25 -25
- package/dist/routing/route/BaseRoute.js +24 -24
- package/dist/routing/route/Request.d.ts +4 -4
- package/dist/routing/route/Request.js +4 -4
- package/dist/routing/route/Route.d.ts +2 -2
- package/dist/routing/route/Route.js +2 -2
- package/dist/routing/router/BaseRouter.d.ts +4 -4
- package/dist/routing/router/BaseRouter.js +3 -3
- package/dist/routing/router/ClientRouter.d.ts +1 -1
- package/dist/routing/router/ClientRouter.js +1 -1
- package/dist/routing/router/Router.d.ts +27 -25
- package/dist/routing/router/Router.d.ts.map +1 -1
- package/dist/routing/router/Router.js +24 -21
- package/dist/routing/router/ServerRouter.d.ts +1 -1
- package/dist/routing/router/ServerRouter.js +1 -1
- package/dist/server/CrelteServer.d.ts +5 -5
- package/dist/server/CrelteServer.d.ts.map +1 -1
- package/dist/server/CrelteServer.js +4 -4
- package/dist/server/Request.d.ts +7 -1
- package/dist/server/Request.d.ts.map +1 -1
- package/dist/server/Request.js +7 -1
- package/dist/server/ServerRouter.d.ts +1 -1
- package/dist/server/ServerRouter.d.ts.map +1 -1
- package/dist/server/index.d.ts +4 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/queries/queries.d.ts.map +1 -1
- package/dist/server/queries/queries.js +14 -1
- package/dist/server/queries/routes.d.ts +10 -1
- package/dist/server/queries/routes.d.ts.map +1 -1
- package/dist/server/queries/routes.js +22 -5
- package/dist/server/shared.d.ts +7 -13
- package/dist/server/shared.d.ts.map +1 -1
- package/dist/server/shared.js +14 -16
- package/dist/ssr/SsrCache.d.ts +56 -4
- package/dist/ssr/SsrCache.d.ts.map +1 -1
- package/dist/ssr/SsrCache.js +94 -20
- package/dist/std/index.d.ts +13 -0
- package/dist/std/index.d.ts.map +1 -1
- package/dist/std/index.js +13 -0
- package/dist/std/rand/index.d.ts +34 -0
- package/dist/std/rand/index.d.ts.map +1 -0
- package/dist/std/rand/index.js +45 -0
- package/dist/std/rand/internal.d.ts +8 -0
- package/dist/std/rand/internal.d.ts.map +1 -0
- package/dist/std/rand/internal.js +15 -0
- package/dist/std/stores/Writable.d.ts +1 -1
- package/dist/std/stores/Writable.js +1 -1
- package/dist/translations/index.d.ts +28 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +31 -0
- package/dist/translations/loadTranslations.d.ts +23 -0
- package/dist/translations/loadTranslations.d.ts.map +1 -0
- package/dist/translations/loadTranslations.js +26 -0
- package/dist/translations/loader/GlobalLoader.d.ts +34 -0
- package/dist/translations/loader/GlobalLoader.d.ts.map +1 -0
- package/dist/translations/loader/GlobalLoader.js +45 -0
- package/dist/translations/loader/fileLoader/ClientFileLoader.d.ts +10 -0
- package/dist/translations/loader/fileLoader/ClientFileLoader.d.ts.map +1 -0
- package/dist/translations/loader/fileLoader/ClientFileLoader.js +24 -0
- package/dist/translations/loader/fileLoader/NodeFileLoader.d.ts +9 -0
- package/dist/translations/loader/fileLoader/NodeFileLoader.d.ts.map +1 -0
- package/dist/translations/loader/fileLoader/NodeFileLoader.js +21 -0
- package/dist/translations/loader/fileLoader/fileLoader.d.ts +5 -0
- package/dist/translations/loader/fileLoader/fileLoader.d.ts.map +1 -0
- package/dist/translations/loader/fileLoader/fileLoader.js +16 -0
- package/dist/translations/loader/index.d.ts +7 -0
- package/dist/translations/loader/index.d.ts.map +1 -0
- package/dist/translations/loader/index.js +1 -0
- package/dist/translations/translationsPlugin.d.ts +64 -0
- package/dist/translations/translationsPlugin.d.ts.map +1 -0
- package/dist/translations/translationsPlugin.js +110 -0
- package/dist/translations/utils.d.ts +8 -0
- package/dist/translations/utils.d.ts.map +1 -0
- package/dist/translations/utils.js +15 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +30 -38
- package/package.json +9 -1
- package/src/blocks/Blocks.svelte +4 -63
- package/src/blocks/Blocks.ts +53 -0
- package/src/blocks/index.ts +2 -2
- package/src/cookies/ServerCookies.ts +1 -1
- package/src/cookies/index.ts +1 -1
- package/src/crelte.ts +21 -10
- package/src/index.ts +19 -14
- package/src/init/client.ts +3 -2
- package/src/init/server.ts +14 -8
- package/src/loadData/Globals.ts +3 -3
- package/src/loadData/loadData.ts +8 -18
- package/src/node/index.ts +100 -39
- package/src/plugins/Events.ts +4 -4
- package/src/plugins/Plugins.ts +2 -2
- package/src/plugins/index.ts +2 -3
- package/src/queries/Queries.ts +35 -18
- package/src/queries/QueryError.ts +10 -1
- package/src/queries/gql.ts +2 -2
- package/src/queries/index.ts +7 -4
- package/src/queries/vars.ts +12 -8
- package/src/routing/LoadRunner.ts +1 -1
- package/src/routing/index.ts +13 -3
- package/src/routing/route/BaseRoute.ts +25 -25
- package/src/routing/route/Request.ts +4 -4
- package/src/routing/route/Route.ts +2 -2
- package/src/routing/router/BaseRouter.ts +4 -4
- package/src/routing/router/ClientRouter.ts +1 -1
- package/src/routing/router/Router.ts +28 -25
- package/src/routing/router/ServerRouter.ts +1 -1
- package/src/server/CrelteServer.ts +5 -5
- package/src/server/Request.ts +7 -1
- package/src/server/ServerRouter.ts +1 -2
- package/src/server/index.ts +17 -3
- package/src/server/queries/queries.ts +21 -3
- package/src/server/queries/routes.ts +41 -10
- package/src/server/shared.ts +28 -33
- package/src/ssr/SsrCache.ts +104 -22
- package/src/std/index.ts +14 -0
- package/src/std/rand/index.ts +55 -0
- package/src/std/rand/internal.ts +17 -0
- package/src/std/stores/Writable.ts +1 -1
- package/src/translations/index.ts +56 -0
- package/src/translations/loadTranslations.ts +33 -0
- package/src/translations/loader/GlobalLoader.ts +62 -0
- package/src/translations/loader/fileLoader/ClientFileLoader.ts +40 -0
- package/src/translations/loader/fileLoader/NodeFileLoader.ts +32 -0
- package/src/translations/loader/fileLoader/fileLoader.ts +19 -0
- package/src/translations/loader/index.ts +8 -0
- package/src/translations/translationsPlugin.ts +145 -0
- package/src/translations/utils.ts +17 -0
- package/src/vite/index.ts +43 -39
package/dist/init/server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { RenderRequest, RenderResponse } from '../server/shared.js';
|
|
1
|
+
import { RenderErrorRequest, RenderRequest, RenderResponse } from '../server/shared.js';
|
|
2
|
+
export { type RenderRequest, type RenderResponse } from '../server/shared.js';
|
|
2
3
|
export type ServerData = RenderRequest;
|
|
3
4
|
/**
|
|
4
5
|
* The main function to start the server side rendering
|
|
@@ -12,8 +13,8 @@ export type MainData = {
|
|
|
12
13
|
/**
|
|
13
14
|
* The main function to start the server side rendering
|
|
14
15
|
*
|
|
15
|
-
*
|
|
16
|
-
* ```
|
|
16
|
+
* #### Example
|
|
17
|
+
* ```js
|
|
17
18
|
* import * as app from './App.svelte';
|
|
18
19
|
* import entryQuery from './queries/entry.graphql';
|
|
19
20
|
* import globalQuery from './queries/global.graphql';
|
|
@@ -37,14 +38,14 @@ export type Error = {
|
|
|
37
38
|
export type MainErrorData = {
|
|
38
39
|
error: Error;
|
|
39
40
|
errorPage: any;
|
|
40
|
-
serverData:
|
|
41
|
+
serverData: RenderErrorRequest;
|
|
41
42
|
};
|
|
42
43
|
/**
|
|
43
44
|
* The main function to start the server side rendering
|
|
44
45
|
* if there was an error
|
|
45
46
|
*
|
|
46
|
-
*
|
|
47
|
-
* ```
|
|
47
|
+
* #### Example
|
|
48
|
+
* ```js
|
|
48
49
|
* import * as errorPage from './Error.svelte';
|
|
49
50
|
*
|
|
50
51
|
* export function renderError(error, serverData) {
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/init/server.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IAET,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,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,kBAAkB,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,aAAa,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC5C"}
|
package/dist/init/server.js
CHANGED
|
@@ -14,8 +14,8 @@ import { Writable } from '../std/stores/index.js';
|
|
|
14
14
|
/**
|
|
15
15
|
* The main function to start the server side rendering
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
* ```
|
|
17
|
+
* #### Example
|
|
18
|
+
* ```js
|
|
19
19
|
* import * as app from './App.svelte';
|
|
20
20
|
* import entryQuery from './queries/entry.graphql';
|
|
21
21
|
* import globalQuery from './queries/global.graphql';
|
|
@@ -95,7 +95,7 @@ export async function main(data) {
|
|
|
95
95
|
context,
|
|
96
96
|
});
|
|
97
97
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
98
|
-
head += crelte.ssrCache.
|
|
98
|
+
head += crelte.ssrCache.z_exportToHead();
|
|
99
99
|
let htmlTemplate = data.serverData.htmlTemplate;
|
|
100
100
|
htmlTemplate = htmlTemplate.replace('<!--page-lang-->', route.site.language);
|
|
101
101
|
const finalHtml = htmlTemplate
|
|
@@ -117,8 +117,8 @@ export async function main(data) {
|
|
|
117
117
|
* The main function to start the server side rendering
|
|
118
118
|
* if there was an error
|
|
119
119
|
*
|
|
120
|
-
*
|
|
121
|
-
* ```
|
|
120
|
+
* #### Example
|
|
121
|
+
* ```js
|
|
122
122
|
* import * as errorPage from './Error.svelte';
|
|
123
123
|
*
|
|
124
124
|
* export function renderError(error, serverData) {
|
|
@@ -144,7 +144,7 @@ export async function mainError(data) {
|
|
|
144
144
|
context,
|
|
145
145
|
});
|
|
146
146
|
head += ssrComponents.toHead(data.serverData.ssrManifest);
|
|
147
|
-
head += ssrCache.
|
|
147
|
+
head += ssrCache.z_exportToHead();
|
|
148
148
|
let htmlTemplate = data.serverData.htmlTemplate;
|
|
149
149
|
htmlTemplate = htmlTemplate.replace('<!--page-lang-->', 'de');
|
|
150
150
|
const finalHtml = htmlTemplate
|
|
@@ -18,7 +18,7 @@ export default class Globals {
|
|
|
18
18
|
/**
|
|
19
19
|
* returns a globalValue
|
|
20
20
|
*
|
|
21
|
-
*
|
|
21
|
+
* #### Note
|
|
22
22
|
* This only works in loadData, in loadGlobalData this will
|
|
23
23
|
* throw an error. In that context you should use `.getAsync`
|
|
24
24
|
*/
|
|
@@ -26,7 +26,7 @@ export default class Globals {
|
|
|
26
26
|
/**
|
|
27
27
|
* returns a store which contains a globalSet
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* #### Note
|
|
30
30
|
* This only works in loadData, in loadGlobalData this will
|
|
31
31
|
* always return null. In that context you should use
|
|
32
32
|
* `.getAsync`
|
|
@@ -35,7 +35,7 @@ export default class Globals {
|
|
|
35
35
|
/**
|
|
36
36
|
* Get a store which contains a globalSet and wait until it is loaded
|
|
37
37
|
*
|
|
38
|
-
*
|
|
38
|
+
* #### Note
|
|
39
39
|
* This is only useful in loadGlobalData in all other cases
|
|
40
40
|
* you can use `.get` which does not return a Promise
|
|
41
41
|
*/
|
package/dist/loadData/Globals.js
CHANGED
|
@@ -35,7 +35,7 @@ export default class Globals {
|
|
|
35
35
|
/**
|
|
36
36
|
* returns a globalValue
|
|
37
37
|
*
|
|
38
|
-
*
|
|
38
|
+
* #### Note
|
|
39
39
|
* This only works in loadData, in loadGlobalData this will
|
|
40
40
|
* throw an error. In that context you should use `.getAsync`
|
|
41
41
|
*/
|
|
@@ -49,7 +49,7 @@ export default class Globals {
|
|
|
49
49
|
/**
|
|
50
50
|
* returns a store which contains a globalSet
|
|
51
51
|
*
|
|
52
|
-
*
|
|
52
|
+
* #### Note
|
|
53
53
|
* This only works in loadData, in loadGlobalData this will
|
|
54
54
|
* always return null. In that context you should use
|
|
55
55
|
* `.getAsync`
|
|
@@ -60,7 +60,7 @@ export default class Globals {
|
|
|
60
60
|
/**
|
|
61
61
|
* Get a store which contains a globalSet and wait until it is loaded
|
|
62
62
|
*
|
|
63
|
-
*
|
|
63
|
+
* #### Note
|
|
64
64
|
* This is only useful in loadGlobalData in all other cases
|
|
65
65
|
* you can use `.get` which does not return a Promise
|
|
66
66
|
*/
|
|
@@ -13,11 +13,11 @@ export interface LoadDataArray<A1 = any> extends Array<LoadData<A1>> {
|
|
|
13
13
|
*
|
|
14
14
|
* There are three main ways `loadData` can be defined:
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* #### Object
|
|
17
17
|
* This is the most common way loadData will be used.
|
|
18
18
|
* Each property should be a loadData type, each one is called in parallel.
|
|
19
19
|
* And will be available to your component with the same name.
|
|
20
|
-
* ```
|
|
20
|
+
* ```js
|
|
21
21
|
* import entriesQuery from '@/queries/entries.graphql';
|
|
22
22
|
* import { loadData as headerLoadData } from '@/layout/header.svelte';
|
|
23
23
|
*
|
|
@@ -27,30 +27,20 @@ export interface LoadDataArray<A1 = any> extends Array<LoadData<A1>> {
|
|
|
27
27
|
* };
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
|
-
*
|
|
30
|
+
* #### GraphQl
|
|
31
31
|
* You can just export a graphql query as a loadData type.
|
|
32
32
|
* This will export all queries from the graphql file as properties.
|
|
33
|
-
* ```
|
|
33
|
+
* ```js
|
|
34
34
|
* import blogsQuery from '@/queries/blogs.graphql';
|
|
35
35
|
*
|
|
36
36
|
* export const loadData = blogsQuery;
|
|
37
|
-
*
|
|
38
|
-
* // or another option
|
|
39
|
-
* import { gql } from '@craft-svelte/core/graphql';
|
|
40
|
-
*
|
|
41
|
-
* export const loadData = gql`query {
|
|
42
|
-
* blogs: entries(section: "blogs") {
|
|
43
|
-
* title
|
|
44
|
-
* url
|
|
45
|
-
* }
|
|
46
|
-
* }`;
|
|
47
37
|
* ```
|
|
48
38
|
*
|
|
49
|
-
*
|
|
39
|
+
* #### Function
|
|
50
40
|
* Using a function gives you the most flexibility but also is the
|
|
51
41
|
* most cumbersome.
|
|
52
42
|
*
|
|
53
|
-
* ```
|
|
43
|
+
* ```js
|
|
54
44
|
* import articlesQuery from '@/queries/articles.graphql';
|
|
55
45
|
*
|
|
56
46
|
* export async function loadData(cr, entry) {
|
|
@@ -79,8 +69,8 @@ export declare function callLoadData<A1 = any>(ld: LoadData<A1>, cr: CrelteReque
|
|
|
79
69
|
*
|
|
80
70
|
* Prefer to use the array syntax.
|
|
81
71
|
*
|
|
82
|
-
*
|
|
83
|
-
* ```
|
|
72
|
+
* #### Example
|
|
73
|
+
* ```js
|
|
84
74
|
* export const loadData = mergeLoadData(
|
|
85
75
|
* {
|
|
86
76
|
* filter: (cr) => cr.route.search.get('filter'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadData.d.ts","sourceRoot":"","sources":["../../src/loadData/loadData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAW,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,UAAU,CAAC,EAAE,GAAG,GAAG;IACnC,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW,CAAC,EAAE,GAAG,GAAG;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;CAC5B;AAGD,MAAM,WAAW,aAAa,CAAC,EAAE,GAAG,GAAG,CAAE,SAAQ,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CAAG;AAKvE
|
|
1
|
+
{"version":3,"file":"loadData.d.ts","sourceRoot":"","sources":["../../src/loadData/loadData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAW,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,UAAU,CAAC,EAAE,GAAG,GAAG;IACnC,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW,CAAC,EAAE,GAAG,GAAG;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;CAC5B;AAGD,MAAM,WAAW,aAAa,CAAC,EAAE,GAAG,GAAG,CAAE,SAAQ,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CAAG;AAKvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG,IAC1B,UAAU,CAAC,EAAE,CAAC,GACd,KAAK,GACL,WAAW,CAAC,EAAE,CAAC,GACf,aAAa,CAAC,EAAE,CAAC,GACjB,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;AAOb,wBAAsB,YAAY,CAAC,EAAE,GAAG,GAAG,EAC1C,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAChB,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,EAAE,EACR,GAAG,IAAI,EAAE,GAAG,EAAE,GACZ,OAAO,CAAC,GAAG,CAAC,CA6Bd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,EAAE,GAAG,GAAG,EACrC,GAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,GACpB,UAAU,CAAC,EAAE,CAAC,CAUhB"}
|
|
@@ -29,8 +29,8 @@ export async function callLoadData(ld, cr, arg1, ...args) {
|
|
|
29
29
|
*
|
|
30
30
|
* Prefer to use the array syntax.
|
|
31
31
|
*
|
|
32
|
-
*
|
|
33
|
-
* ```
|
|
32
|
+
* #### Example
|
|
33
|
+
* ```js
|
|
34
34
|
* export const loadData = mergeLoadData(
|
|
35
35
|
* {
|
|
36
36
|
* filter: (cr) => cr.route.search.get('filter'),
|
package/dist/node/index.d.ts
CHANGED
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAiEA;;;;GAIG;AACH,wBAA8B,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,iBAmG3E"}
|
package/dist/node/index.js
CHANGED
|
@@ -2,11 +2,12 @@ import http from 'node:http';
|
|
|
2
2
|
import path, { join } from 'node:path';
|
|
3
3
|
import fs from 'node:fs/promises';
|
|
4
4
|
import { createReadStream } from 'node:fs';
|
|
5
|
-
import { initEnvData, modRender, modRenderError, } from '../server/shared.js';
|
|
5
|
+
import { initEnvData, initSites, modRender, modRenderError, } from '../server/shared.js';
|
|
6
6
|
import ServerRouter from '../server/ServerRouter.js';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
8
|
import { initQueryRoutes } from '../server/queries/queries.js';
|
|
9
9
|
import { PLATFORM, readFile, requestToWebRequest, webResponseToResponse, writeFile, } from './utils.js';
|
|
10
|
+
import { timeout } from '../std/index.js';
|
|
10
11
|
function localDir(...args) {
|
|
11
12
|
return join(path.dirname(fileURLToPath(import.meta.url)), ...args);
|
|
12
13
|
}
|
|
@@ -16,64 +17,112 @@ async function readSitesCache() {
|
|
|
16
17
|
async function writeSitesCache(data) {
|
|
17
18
|
return await writeFile(localDir('sites.json'), JSON.stringify(data));
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
const
|
|
20
|
+
async function initRouter(serverMod, env) {
|
|
21
|
+
const sites = await initSites(env, {
|
|
21
22
|
enabled: process.env.NODE_ENV === 'production',
|
|
22
23
|
writeSitesCache,
|
|
23
24
|
readSitesCache,
|
|
24
25
|
});
|
|
25
|
-
const
|
|
26
|
-
const globalEtag = '"' + buildTime + '"';
|
|
27
|
-
const ssrManifest = JSON.parse(await readFile(localDir('ssr-manifest.json')));
|
|
28
|
-
const router = new ServerRouter(env.endpointUrl, env.frontendUrl, env.env, env.sites, {
|
|
26
|
+
const router = new ServerRouter(env.endpointUrl, env.frontendUrl, env.env, sites, {
|
|
29
27
|
endpointToken: env.endpointToken,
|
|
30
28
|
});
|
|
31
29
|
await initQueryRoutes(PLATFORM, serverMod, router);
|
|
32
30
|
if (typeof serverMod.routes === 'function') {
|
|
33
31
|
await serverMod.routes(router);
|
|
34
32
|
}
|
|
33
|
+
return [sites, router];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create and start the server
|
|
37
|
+
*
|
|
38
|
+
* Generally this call should automatically happen via the vite build step.
|
|
39
|
+
*/
|
|
40
|
+
export default async function createServer(serverMod, buildTime) {
|
|
41
|
+
const env = await initEnvData(PLATFORM);
|
|
42
|
+
const template = await readFile(localDir('index.html'));
|
|
43
|
+
const globalEtag = '"' + buildTime + '"';
|
|
44
|
+
const ssrManifest = JSON.parse(await readFile(localDir('ssr-manifest.json')));
|
|
45
|
+
let sites = null;
|
|
46
|
+
let router = null;
|
|
47
|
+
let routesError = null;
|
|
48
|
+
// let's try to init the router
|
|
49
|
+
// if it fails we start a retry loop
|
|
50
|
+
// this way the server can start even if the endpoint is not yet available
|
|
51
|
+
try {
|
|
52
|
+
[sites, router] = await initRouter(serverMod, env);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
routesError = e;
|
|
56
|
+
console.error('Failed to setup router:', e);
|
|
57
|
+
// retry loop
|
|
58
|
+
(async () => {
|
|
59
|
+
while (!router) {
|
|
60
|
+
await timeout(1000);
|
|
61
|
+
try {
|
|
62
|
+
[sites, router] = await initRouter(serverMod, env);
|
|
63
|
+
routesError = null;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
routesError = e;
|
|
67
|
+
console.error('Failed to setup router:', e);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
}
|
|
35
72
|
const publicDir = localDir('public');
|
|
36
|
-
|
|
37
|
-
if
|
|
73
|
+
const handle = async (req, res) => {
|
|
74
|
+
// if router is not set, just render the error page
|
|
75
|
+
if (routesError || !router || !sites) {
|
|
76
|
+
throw routesError ?? new Error('Router not initialized');
|
|
77
|
+
}
|
|
78
|
+
const routeResp = await router.z_handle(req);
|
|
79
|
+
if (routeResp) {
|
|
80
|
+
await webResponseToResponse(routeResp, res);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (await basicAuthCheck(req, res, env))
|
|
38
84
|
return;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
85
|
+
const response = await modRender(env, sites, serverMod, template, req, {
|
|
86
|
+
ssrManifest,
|
|
87
|
+
});
|
|
88
|
+
await webResponseToResponse(response, res);
|
|
89
|
+
};
|
|
90
|
+
http.createServer(async (nodeReq, res) => {
|
|
91
|
+
let req = null;
|
|
92
|
+
let err;
|
|
45
93
|
try {
|
|
46
|
-
|
|
47
|
-
if (routeResp) {
|
|
48
|
-
await webResponseToResponse(routeResp, res);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (await basicAuthCheck(nReq, res, env))
|
|
94
|
+
if (await servePublic(nodeReq, res, publicDir, globalEtag))
|
|
52
95
|
return;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
96
|
+
// todo this is not safe if we are not in a trusted environment
|
|
97
|
+
const baseUrl = (nodeReq.headers['x-forwarded-proto'] ?? 'http') +
|
|
98
|
+
'://' +
|
|
99
|
+
nodeReq.headers['host'];
|
|
100
|
+
req = requestToWebRequest(baseUrl, nodeReq);
|
|
101
|
+
await handle(req, res);
|
|
57
102
|
return;
|
|
58
103
|
}
|
|
59
104
|
catch (e) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
105
|
+
err = e;
|
|
106
|
+
}
|
|
107
|
+
if (typeof serverMod.renderError !== 'function' || !req) {
|
|
108
|
+
basicError(res, err);
|
|
109
|
+
return;
|
|
65
110
|
}
|
|
66
111
|
try {
|
|
67
|
-
const response = await modRenderError(env, serverMod,
|
|
112
|
+
const response = await modRenderError(env, serverMod, err, template, req, { ssrManifest });
|
|
68
113
|
await webResponseToResponse(response, res);
|
|
69
|
-
return;
|
|
70
114
|
}
|
|
71
115
|
catch (e) {
|
|
72
|
-
|
|
73
|
-
throw e;
|
|
116
|
+
basicError(res, e);
|
|
74
117
|
}
|
|
75
118
|
}).listen(8080);
|
|
76
119
|
}
|
|
120
|
+
function basicError(res, err) {
|
|
121
|
+
console.error('Internal Server Error:', err);
|
|
122
|
+
res.statusCode = 500;
|
|
123
|
+
res.end('Internal Server Error: ' + err?.message);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
77
126
|
const MIME_TYPES = {
|
|
78
127
|
'.html': 'text/html',
|
|
79
128
|
'.css': 'text/css',
|
|
@@ -150,7 +199,7 @@ async function basicAuthCheck(req, res, { env }) {
|
|
|
150
199
|
// ignore if one information is missing
|
|
151
200
|
if (!user || !password)
|
|
152
201
|
return false;
|
|
153
|
-
const authHeader = req.headers
|
|
202
|
+
const authHeader = req.headers.get('authorization');
|
|
154
203
|
if (!authHeader || !authHeader.startsWith('Basic ')) {
|
|
155
204
|
res.statusCode = 401;
|
|
156
205
|
res.setHeader('WWW-Authenticate', 'Basic realm="Restricted"');
|
package/dist/plugins/Events.d.ts
CHANGED
|
@@ -7,23 +7,23 @@ export default class Events {
|
|
|
7
7
|
/**
|
|
8
8
|
* Listens for an event.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* #### beforeRequest
|
|
11
11
|
* Please prefer to return not return a promise only if you need to wait
|
|
12
12
|
* for something. This allows a push request to be done without a microtask.
|
|
13
13
|
* Allowing for a better DX.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* #### loadEntry
|
|
16
16
|
* This will execute all listeners in sequence and stop on the first one
|
|
17
17
|
* which returns an entry.
|
|
18
18
|
* Will be executed in preload as well.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* #### beforeQueryEntry
|
|
21
21
|
* This allows to modify the entry query variables before the entry query
|
|
22
22
|
* is executed.
|
|
23
23
|
* Will be executed in preload as well.
|
|
24
24
|
*
|
|
25
25
|
*
|
|
26
|
-
*
|
|
26
|
+
* #### afterLoadEntry
|
|
27
27
|
* Will be executed in preload as well.
|
|
28
28
|
*
|
|
29
29
|
* @returns a function to remove the listener
|
|
@@ -13,8 +13,8 @@ export interface Plugin {
|
|
|
13
13
|
* a configurePluginname function which will be called by youre user and should
|
|
14
14
|
* return a createPlugin function.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
* ```
|
|
16
|
+
* #### Example App.svelte in module="context"
|
|
17
|
+
* ```js
|
|
18
18
|
* import { createPlugin, configurePlugin } from 'some-plugin';
|
|
19
19
|
*
|
|
20
20
|
* export plugins = [createPlugin, configurePlugin({ enableFeature: true })];
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Events from './Events.js';
|
|
2
|
-
import { Plugin, PluginCreator } from './Plugins.js';
|
|
3
|
-
export
|
|
4
|
-
export { Events };
|
|
2
|
+
import Plugins, { type Plugin, type PluginCreator } from './Plugins.js';
|
|
3
|
+
export { Plugins, Events, Plugin, PluginCreator };
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAAO,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -65,6 +65,15 @@ export default class Queries {
|
|
|
65
65
|
private route;
|
|
66
66
|
private request;
|
|
67
67
|
private constructor();
|
|
68
|
+
/**
|
|
69
|
+
* Create a new Queries instance
|
|
70
|
+
*
|
|
71
|
+
* @param endpoint the craft GraphQl endpoint
|
|
72
|
+
* @param frontend the frontend url where the server queries are reachable
|
|
73
|
+
* @param ssrCache the ssrCache to use for caching
|
|
74
|
+
* @param opts options
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
68
77
|
static new(endpoint: string, frontend: string, ssrCache: SsrCache, opts?: QueriesOptions): Queries;
|
|
69
78
|
/**
|
|
70
79
|
* Run a GraphQl Query
|
|
@@ -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;
|
|
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;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,GAAE,cAAmB,GACvB,OAAO;IAQV;;;;;;;OAOG;IACG,KAAK,CACV,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,IAAI,GAAE,YAAiB,GACrB,OAAO,CAAC,OAAO,CAAC;IA0BnB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO;CAGxB"}
|
package/dist/queries/Queries.js
CHANGED
|
@@ -22,6 +22,15 @@ export default class Queries {
|
|
|
22
22
|
this.route = route;
|
|
23
23
|
this.request = request;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new Queries instance
|
|
27
|
+
*
|
|
28
|
+
* @param endpoint the craft GraphQl endpoint
|
|
29
|
+
* @param frontend the frontend url where the server queries are reachable
|
|
30
|
+
* @param ssrCache the ssrCache to use for caching
|
|
31
|
+
* @param opts options
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
25
34
|
static new(endpoint, frontend, ssrCache, opts = {}) {
|
|
26
35
|
return new Queries(new Inner(endpoint, frontend, ssrCache, opts), opts?.route ?? null, null);
|
|
27
36
|
}
|
|
@@ -44,6 +53,7 @@ export default class Queries {
|
|
|
44
53
|
// for convenience we set the siteId as variable if it is known
|
|
45
54
|
if (siteId !== null)
|
|
46
55
|
vars = { siteId, ...vars };
|
|
56
|
+
// todo, maybe we should set the XCraftSiteId, with the siteId from vars?
|
|
47
57
|
return this.inner.query(query, vars, {
|
|
48
58
|
previewToken,
|
|
49
59
|
siteToken,
|
|
@@ -104,24 +114,20 @@ class Inner {
|
|
|
104
114
|
if (key) {
|
|
105
115
|
// todo maybe we should objClone here?
|
|
106
116
|
this.ssrCache.set(key, resp);
|
|
107
|
-
// ! because the listeners get's in the previous
|
|
108
|
-
// always be set when the key is set
|
|
117
|
+
// ! (never null) because the listeners get's in the previous
|
|
118
|
+
// if statement and will always be set when the key is set
|
|
109
119
|
const listeners = this.listeners.get(key);
|
|
110
|
-
listeners.forEach(([resolve, _error]) =>
|
|
111
|
-
resolve(resp);
|
|
112
|
-
});
|
|
120
|
+
listeners.forEach(([resolve, _error]) => resolve(resp));
|
|
113
121
|
this.listeners.delete(key);
|
|
114
122
|
}
|
|
115
123
|
return resp;
|
|
116
124
|
}
|
|
117
125
|
catch (e) {
|
|
118
126
|
if (key) {
|
|
119
|
-
// ! because the listeners get's in the previous
|
|
120
|
-
// always be set when the key is set
|
|
127
|
+
// ! (never null) because the listeners get's in the previous
|
|
128
|
+
// if statement and will always be set when the key is set
|
|
121
129
|
const listeners = this.listeners.get(key);
|
|
122
|
-
listeners.forEach(([_resolve, error]) =>
|
|
123
|
-
error(e);
|
|
124
|
-
});
|
|
130
|
+
listeners.forEach(([_resolve, error]) => error(e));
|
|
125
131
|
this.listeners.delete(key);
|
|
126
132
|
}
|
|
127
133
|
throw e;
|
|
@@ -163,11 +169,17 @@ class Inner {
|
|
|
163
169
|
else {
|
|
164
170
|
body = { query: query.query, variables: vars };
|
|
165
171
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
172
|
+
let resp;
|
|
173
|
+
try {
|
|
174
|
+
resp = await fetch(url, {
|
|
175
|
+
method: 'POST',
|
|
176
|
+
headers,
|
|
177
|
+
body: JSON.stringify(body),
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
throw new Error(`query to '${url}' failed with: ${e.message}`);
|
|
182
|
+
}
|
|
171
183
|
if (!resp.ok) {
|
|
172
184
|
throw new QueryError({ status: resp.status, body: await resp.text() }, 'resp not ok');
|
|
173
185
|
}
|
|
@@ -184,8 +196,8 @@ class Inner {
|
|
|
184
196
|
throw new QueryError({ status: resp.status }, e);
|
|
185
197
|
}
|
|
186
198
|
if ('errors' in jsonResp) {
|
|
187
|
-
console.
|
|
188
|
-
throw new QueryError({ status: resp.status
|
|
199
|
+
console.error(logName + ' errors', jsonResp.errors);
|
|
200
|
+
throw new QueryError({ status: resp.status, errors: jsonResp.errors }, 'received errors');
|
|
189
201
|
}
|
|
190
202
|
return jsonResp.data ?? null;
|
|
191
203
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type QueryErrorResponse = {
|
|
2
2
|
status?: number;
|
|
3
3
|
body?: string;
|
|
4
|
+
errors?: any[];
|
|
4
5
|
};
|
|
5
6
|
/**
|
|
6
7
|
* A QueryError error
|
|
@@ -19,4 +20,5 @@ export default class QueryError extends Error {
|
|
|
19
20
|
*/
|
|
20
21
|
get message(): string;
|
|
21
22
|
}
|
|
23
|
+
export declare function isQueryError(err: any): err is QueryError;
|
|
22
24
|
//# sourceMappingURL=QueryError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryError.d.ts","sourceRoot":"","sources":["../../src/queries/QueryError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryError.d.ts","sourceRoot":"","sources":["../../src/queries/QueryError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CACf,CAAC;AAGF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK;IAC5C,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,GAAG,CAAC;gBAGG,IAAI,EAAE,kBAAkB,EAAE,GAAG,GAAE,GAAU;IAOrD;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB,cAAc;IAEd;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;CACD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,UAAU,CAMxD"}
|
|
@@ -22,6 +22,11 @@ export default class QueryError extends Error {
|
|
|
22
22
|
* The error message in string form
|
|
23
23
|
*/
|
|
24
24
|
get message() {
|
|
25
|
-
return 'QueryError: ' + JSON.stringify(this.resp);
|
|
25
|
+
return 'QueryError: ' + JSON.stringify(this.resp, null, ' ');
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
+
export function isQueryError(err) {
|
|
29
|
+
return (typeof err === 'object' &&
|
|
30
|
+
err !== null &&
|
|
31
|
+
typeof err.__QueryError__ === 'function');
|
|
32
|
+
}
|
package/dist/queries/gql.d.ts
CHANGED