@jetshop/core 5.17.0-alpha.240f9d97 → 5.17.0-alpha.2d418770
Sign up to get free protection for your applications and to get access to all the features.
- package/analytics/webVitals.js +5 -5
- package/analytics/webVitals.js.map +1 -1
- package/components/DynamicRoute/RouteResolver.js +1 -0
- package/components/DynamicRoute/RouteResolver.js.map +1 -1
- package/package.json +11 -13
- package/integrations/addwishSchemaExtension.d.ts +0 -35
- package/integrations/addwishSchemaExtension.js +0 -141
- package/integrations/addwishSchemaExtension.js.map +0 -1
- package/integrations/nostoSchemaExtension.d.ts +0 -5
- package/integrations/nostoSchemaExtension.js +0 -77
- package/integrations/nostoSchemaExtension.js.map +0 -1
package/analytics/webVitals.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { onCLS, onLCP, onFID } from 'web-vitals';
|
2
2
|
import { createApiReporter, getDeviceInfo } from 'web-vitals-reporter';
|
3
3
|
import { routeList } from '../boot/addMissingConfig';
|
4
4
|
let globalPageType = undefined;
|
@@ -11,7 +11,7 @@ export function webVitals({ shopId, apiUrl }) {
|
|
11
11
|
var _a;
|
12
12
|
// Init report callback with information about the browser.
|
13
13
|
const deviceInfo = getDeviceInfo();
|
14
|
-
Object.keys(routeList).forEach(route => {
|
14
|
+
Object.keys(routeList).forEach((route) => {
|
15
15
|
var _a;
|
16
16
|
if ((_a = deviceInfo === null || deviceInfo === void 0 ? void 0 : deviceInfo.url) === null || _a === void 0 ? void 0 : _a.includes(routeList[route])) {
|
17
17
|
globalPageType = route;
|
@@ -32,8 +32,8 @@ export function webVitals({ shopId, apiUrl }) {
|
|
32
32
|
}
|
33
33
|
});
|
34
34
|
// Setup web-vitals
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
onLCP(sendToAnalytics);
|
36
|
+
onFID(sendToAnalytics);
|
37
|
+
onCLS(sendToAnalytics);
|
38
38
|
}
|
39
39
|
//# sourceMappingURL=webVitals.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webVitals.js","sourceRoot":"","sources":["webVitals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"webVitals.js","sourceRoot":"","sources":["webVitals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,IAAI,cAAc,GAAuB,SAAS,CAAC;AAEnD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,IAAI,CAAC;KACvB;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,EACN,MAAM,EAIP;;IACC,2DAA2D;IAC3D,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;QACvC,IAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,0CAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YAC/C,cAAc,GAAG,KAAK,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,MAAM,mBAAmB,EAAE;QACtE,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS;YAChC,MAAM,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM;YAC1B,IAAI,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI;YACtB,UAAU,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,0CAAE,aAAa;SAClD;QACD,UAAU,EAAE,GAAG,EAAE;YACf,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,KAAK,CAAC,eAAe,CAAC,CAAC;IACvB,KAAK,CAAC,eAAe,CAAC,CAAC;IACvB,KAAK,CAAC,eAAe,CAAC,CAAC;AACzB,CAAC"}
|
@@ -33,6 +33,7 @@ const Loading = (LoadingPage) => LoadingPage ? React.createElement(LoadingPage,
|
|
33
33
|
const RouteResolver = ({ productPage, categoryPage, contentPage, notFoundPage: NotFoundPage, ErrorPage, LoadingPage, result, pathname, state, search }) => {
|
34
34
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
35
35
|
setPageType((_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.route) === null || _b === void 0 ? void 0 : _b.object) === null || _c === void 0 ? void 0 : _c.__typename);
|
36
|
+
result.error && console.error(result.error);
|
36
37
|
if (((_f = (_e = (_d = result === null || result === void 0 ? void 0 : result.data) === null || _d === void 0 ? void 0 : _d.route) === null || _e === void 0 ? void 0 : _e.path) !== null && _f !== void 0 ? _f : pathname) !== pathname) {
|
37
38
|
return (React.createElement(Status, { code: 301 },
|
38
39
|
React.createElement(Redirect, { to: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["RouteResolver.tsx"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["RouteResolver.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jetshop/core",
|
3
|
-
"version": "5.17.0-alpha.
|
3
|
+
"version": "5.17.0-alpha.2d418770",
|
4
4
|
"license": "MIT",
|
5
5
|
"files": [
|
6
6
|
"**/*.js",
|
@@ -38,16 +38,11 @@
|
|
38
38
|
"@graphql-tools/stitch": "^7.5.1",
|
39
39
|
"@graphql-tools/wrap": "^7.0.5",
|
40
40
|
"@loadable/component": "^5.11.0",
|
41
|
-
"@loadable/server": "^5.
|
41
|
+
"@loadable/server": "^5.16.0",
|
42
42
|
"@sentry/browser": "^6.15.0",
|
43
43
|
"@sentry/core": "^6.15.0",
|
44
44
|
"@sentry/node": "^6.15.0",
|
45
45
|
"@tanem/react-nprogress": "^5.0.44",
|
46
|
-
"@types/accept-language-parser": "^1.5.1",
|
47
|
-
"@types/gtag.js": "^0.0.10",
|
48
|
-
"@types/loadable__component": "^5.10.0",
|
49
|
-
"@types/loadable__server": "^5.9.1",
|
50
|
-
"@types/react-router-dom": "^5.1.8",
|
51
46
|
"@xstate/react": "^0.8.1",
|
52
47
|
"accept-language-parser": "^1.5.0",
|
53
48
|
"apollo-server": "~2.6.9",
|
@@ -55,7 +50,6 @@
|
|
55
50
|
"apollo-server-express": "~2.6.9",
|
56
51
|
"compression": "^1.7.2",
|
57
52
|
"dnscache": "^1.0.2",
|
58
|
-
"esm": "^3.0.84",
|
59
53
|
"eventemitter3": "^3.1.2",
|
60
54
|
"express": "^4.16.3",
|
61
55
|
"express-graphql": "^0.12.0",
|
@@ -64,7 +58,7 @@
|
|
64
58
|
"graphql": "^15.3.0",
|
65
59
|
"immer": "^10.0.2",
|
66
60
|
"intl": "^1.2.5",
|
67
|
-
"isbot": "^
|
61
|
+
"isbot": "^3.6.12",
|
68
62
|
"lodash.merge": "^4.6.1",
|
69
63
|
"lodash.pick": "^4.4.0",
|
70
64
|
"mobile-detect": "^1.4.4",
|
@@ -77,23 +71,26 @@
|
|
77
71
|
"react-media": "^1.10.0",
|
78
72
|
"react-router-dom": "^5.2.1",
|
79
73
|
"request-ip": "^2.1.3",
|
80
|
-
"schema-dts": "^
|
81
|
-
"ts-node": "^7.0.1",
|
74
|
+
"schema-dts": "^1.1.2",
|
82
75
|
"typed-emitter": "^0.1.0",
|
83
76
|
"universal-cookie-express": "^4.0.3",
|
84
77
|
"uuid": "^8.3.2",
|
85
|
-
"web-vitals": "^
|
86
|
-
"web-vitals-reporter": "^0.
|
78
|
+
"web-vitals": "^3.4.0",
|
79
|
+
"web-vitals-reporter": "^1.0.0",
|
87
80
|
"xstate": "^4.13.0"
|
88
81
|
},
|
89
82
|
"devDependencies": {
|
90
83
|
"@graphql-codegen/typescript": "^1.21.0",
|
91
84
|
"@react-mock/localstorage": "^0.1.2",
|
85
|
+
"@types/accept-language-parser": "^1.5.1",
|
92
86
|
"@types/compression": "^0.0.36",
|
93
87
|
"@types/express": "^4.11.1",
|
94
88
|
"@types/fontfaceobserver": "^0.0.6",
|
95
89
|
"@types/graphql": "^14.2.2",
|
90
|
+
"@types/gtag.js": "^0.0.10",
|
96
91
|
"@types/jest": "^24.0.12",
|
92
|
+
"@types/loadable__component": "^5.10.0",
|
93
|
+
"@types/loadable__server": "^5.9.1",
|
97
94
|
"@types/lodash.isequal": "^4.5.3",
|
98
95
|
"@types/lodash.merge": "^4.6.4",
|
99
96
|
"@types/lodash.pick": "^4.4.4",
|
@@ -112,6 +109,7 @@
|
|
112
109
|
"lint-staged": "^8.1.5",
|
113
110
|
"nock": "^10.0.6",
|
114
111
|
"prettier": "^2.3.2",
|
112
|
+
"ts-node": "^7.0.1",
|
115
113
|
"typescript": "^4.8.3"
|
116
114
|
},
|
117
115
|
"peerDependencies": {
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import { SchemaExtension } from './../boot/server/createApolloServer';
|
2
|
-
export interface AddwishGetRecommendationsResponseBoxItem {
|
3
|
-
/**
|
4
|
-
* Article number
|
5
|
-
* @see https://www.addwish.com/api/v1/product-recommendation/getProductBoxes?ids=5aaf90dc65f8014ff3957e9e%2C5aaf90da65f8014ff3957e91&url=https%3A%2F%2Fwww.scstyling.com&format=json
|
6
|
-
*/
|
7
|
-
productNumber: string;
|
8
|
-
url: string;
|
9
|
-
[key: string]: any;
|
10
|
-
}
|
11
|
-
export interface AddwishGetRecommendationsResponseBox {
|
12
|
-
result?: AddwishGetRecommendationsResponseBoxItem[];
|
13
|
-
errorCode?: string;
|
14
|
-
countAfterSource?: string;
|
15
|
-
}
|
16
|
-
export interface AddwishGetRecommendationsResponse {
|
17
|
-
result: {
|
18
|
-
[key: string]: AddwishGetRecommendationsResponseBox;
|
19
|
-
};
|
20
|
-
}
|
21
|
-
export declare function validateResponseBox({ response, id }: {
|
22
|
-
response: AddwishGetRecommendationsResponse;
|
23
|
-
id: string;
|
24
|
-
}): void;
|
25
|
-
export declare function fetchAddwishRecommendations({ ids, url }: {
|
26
|
-
/**
|
27
|
-
* List of recommendation box IDs. Separate multiple IDs with a comma.
|
28
|
-
*/
|
29
|
-
ids: string[];
|
30
|
-
/**
|
31
|
-
* This url specifies the product you want to find relations for. Note that you can also specify specific urls for each recommendation box.
|
32
|
-
*/
|
33
|
-
url?: string;
|
34
|
-
}): Promise<AddwishGetRecommendationsResponse>;
|
35
|
-
export declare const addwishSchemaExtension: SchemaExtension;
|
@@ -1,141 +0,0 @@
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
-
});
|
9
|
-
};
|
10
|
-
import { gql } from '@apollo/client';
|
11
|
-
import { print } from 'graphql';
|
12
|
-
import fetch from 'node-fetch';
|
13
|
-
import qs from 'qs';
|
14
|
-
const typeDefs = gql `
|
15
|
-
type GetAddwishProductsResponse {
|
16
|
-
# Addwish Box ID
|
17
|
-
id: String!
|
18
|
-
products: [Product!]
|
19
|
-
errorCode: String
|
20
|
-
countAfterSource: String
|
21
|
-
}
|
22
|
-
extend type Query {
|
23
|
-
getAddwishProducts(
|
24
|
-
# Recommendation box ID
|
25
|
-
id: String!
|
26
|
-
# This url specifies the product you want to find relations for. Note that you can also specify specific urls for each recommendation box.
|
27
|
-
url: String
|
28
|
-
): GetAddwishProductsResponse!
|
29
|
-
}
|
30
|
-
`;
|
31
|
-
class UnexpectedResponseError extends Error {
|
32
|
-
constructor(message, { id, response, box }) {
|
33
|
-
super(message);
|
34
|
-
console.warn(message, { id, response, box });
|
35
|
-
}
|
36
|
-
}
|
37
|
-
export function validateResponseBox({ response, id }) {
|
38
|
-
const box = response.result[id];
|
39
|
-
if (!box) {
|
40
|
-
throw new UnexpectedResponseError('Box not found in the rsponse.', {
|
41
|
-
id,
|
42
|
-
response,
|
43
|
-
box
|
44
|
-
});
|
45
|
-
}
|
46
|
-
if (box.errorCode) {
|
47
|
-
throw new UnexpectedResponseError(`Box error: "${box.errorCode}"`, {
|
48
|
-
id,
|
49
|
-
response,
|
50
|
-
box
|
51
|
-
});
|
52
|
-
}
|
53
|
-
if (!Array.isArray(box.result)) {
|
54
|
-
throw new UnexpectedResponseError("Result property wasn't an array", {
|
55
|
-
id,
|
56
|
-
response,
|
57
|
-
box
|
58
|
-
});
|
59
|
-
}
|
60
|
-
if (box.result.length > 0 &&
|
61
|
-
typeof box.result[0].productNumber !== 'string') {
|
62
|
-
throw new UnexpectedResponseError('"productNumber" needs to be a string', {
|
63
|
-
id,
|
64
|
-
response,
|
65
|
-
box
|
66
|
-
});
|
67
|
-
}
|
68
|
-
}
|
69
|
-
const ADDWISH_GET_PRODUCTBOXES_URL = `https://www.addwish.com/api/v1/product-recommendation/getProductBoxes`;
|
70
|
-
export function fetchAddwishRecommendations({ ids, url }) {
|
71
|
-
return __awaiter(this, void 0, void 0, function* () {
|
72
|
-
const addwishUrl = `${ADDWISH_GET_PRODUCTBOXES_URL}?${qs.stringify({
|
73
|
-
format: 'json',
|
74
|
-
url,
|
75
|
-
ids: ids.join(',')
|
76
|
-
})}`;
|
77
|
-
return fetch(addwishUrl).then((res) => res.json());
|
78
|
-
});
|
79
|
-
}
|
80
|
-
export const addwishSchemaExtension = ({ remoteSchema }) => {
|
81
|
-
const resolvers = {
|
82
|
-
Query: {
|
83
|
-
getAddwishProducts: {
|
84
|
-
resolve(_source, { id, url }) {
|
85
|
-
return __awaiter(this, void 0, void 0, function* () {
|
86
|
-
// Don't fail the whole API response because Addwish is down etc
|
87
|
-
try {
|
88
|
-
// Could be refactored to use DataLoader
|
89
|
-
const response = yield fetchAddwishRecommendations({
|
90
|
-
ids: [id],
|
91
|
-
url
|
92
|
-
});
|
93
|
-
validateResponseBox({ response, id });
|
94
|
-
const box = response.result[id];
|
95
|
-
return {
|
96
|
-
id,
|
97
|
-
box,
|
98
|
-
errorCode: null,
|
99
|
-
countAfterSource: box.countAfterSource
|
100
|
-
};
|
101
|
-
}
|
102
|
-
catch (err) {
|
103
|
-
return {
|
104
|
-
id,
|
105
|
-
errorCode: err.message || 'Something went wrong',
|
106
|
-
box: null
|
107
|
-
};
|
108
|
-
}
|
109
|
-
});
|
110
|
-
}
|
111
|
-
}
|
112
|
-
},
|
113
|
-
GetAddwishProductsResponse: {
|
114
|
-
products: {
|
115
|
-
resolve({ box }, _args, context, info) {
|
116
|
-
return __awaiter(this, void 0, void 0, function* () {
|
117
|
-
if (!box) {
|
118
|
-
return null;
|
119
|
-
}
|
120
|
-
if (box.result.length <= 0) {
|
121
|
-
return [];
|
122
|
-
}
|
123
|
-
const articleNumbers = box.result.map((item) => item.productNumber);
|
124
|
-
return info.mergeInfo.delegateToSchema({
|
125
|
-
schema: remoteSchema,
|
126
|
-
operation: 'query',
|
127
|
-
fieldName: 'products',
|
128
|
-
args: {
|
129
|
-
articleNumbers
|
130
|
-
},
|
131
|
-
context,
|
132
|
-
info
|
133
|
-
});
|
134
|
-
});
|
135
|
-
}
|
136
|
-
}
|
137
|
-
}
|
138
|
-
};
|
139
|
-
return { schema: print(typeDefs), resolvers };
|
140
|
-
};
|
141
|
-
//# sourceMappingURL=addwishSchemaExtension.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"addwishSchemaExtension.js","sourceRoot":"","sources":["addwishSchemaExtension.ts"],"names":[],"mappings":"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"}
|
@@ -1,77 +0,0 @@
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
-
});
|
9
|
-
};
|
10
|
-
import { HttpLink } from '@apollo/client';
|
11
|
-
import { setContext } from '@apollo/client/link/context';
|
12
|
-
import fetch from 'node-fetch';
|
13
|
-
import { introspectSchema, makeRemoteExecutableSchema, transformSchema, RenameTypes, RenameRootFields } from 'graphql-tools';
|
14
|
-
function getNostoSchema({ nostoApiToken }) {
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
16
|
-
const http = new HttpLink({
|
17
|
-
uri: `https://api.nosto.com/v1/graphql`,
|
18
|
-
fetch: fetch
|
19
|
-
});
|
20
|
-
// on introspect, get headers from conf/env
|
21
|
-
const introspectLink = setContext(() => ({
|
22
|
-
headers: {
|
23
|
-
Authorization: `Basic ${Buffer.from(`:${nostoApiToken}`).toString('base64')}`
|
24
|
-
}
|
25
|
-
})).concat(http);
|
26
|
-
// We could do this build-time to speed up start
|
27
|
-
const schema = yield introspectSchema(introspectLink);
|
28
|
-
const executableSchema = makeRemoteExecutableSchema({
|
29
|
-
schema,
|
30
|
-
link: introspectLink
|
31
|
-
});
|
32
|
-
const transformedNostoSchema = transformSchema(executableSchema, [
|
33
|
-
new RenameTypes((name) => `Nosto${name}`),
|
34
|
-
new RenameRootFields((_operation, name) => `nosto${name.substring(0, 1).toUpperCase()}${name.substring(1)}`)
|
35
|
-
]);
|
36
|
-
return transformedNostoSchema;
|
37
|
-
});
|
38
|
-
}
|
39
|
-
export const createNostoSchemaExtension = ({ nostoApiToken }) => {
|
40
|
-
const nostoSchemaExtension = ({ remoteSchema }) => __awaiter(void 0, void 0, void 0, function* () {
|
41
|
-
const schema = yield getNostoSchema({ nostoApiToken });
|
42
|
-
const resolvers = {
|
43
|
-
NostoRecommendedProduct: {
|
44
|
-
product: {
|
45
|
-
fragment: `... on RecommendedProduct { productId }`,
|
46
|
-
resolve(recommendedProduct, _args, context, info) {
|
47
|
-
return info.mergeInfo.delegateToSchema({
|
48
|
-
schema: remoteSchema,
|
49
|
-
operation: 'query',
|
50
|
-
fieldName: 'product',
|
51
|
-
args: {
|
52
|
-
id: parseInt(recommendedProduct.productId)
|
53
|
-
},
|
54
|
-
context,
|
55
|
-
info
|
56
|
-
});
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
};
|
61
|
-
return {
|
62
|
-
schema,
|
63
|
-
resolvers
|
64
|
-
};
|
65
|
-
});
|
66
|
-
return nostoSchemaExtension;
|
67
|
-
};
|
68
|
-
export const getNostoSchemaLinkTypeDefs = () => {
|
69
|
-
return {
|
70
|
-
schema: `
|
71
|
-
extend type NostoRecommendedProduct {
|
72
|
-
product: Product
|
73
|
-
}
|
74
|
-
`
|
75
|
-
};
|
76
|
-
};
|
77
|
-
//# sourceMappingURL=nostoSchemaExtension.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"nostoSchemaExtension.js","sourceRoot":"","sources":["nostoSchemaExtension.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,WAAW,EACX,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAIvB,SAAe,cAAc,CAAC,EAC5B,aAAa,EAGd;;QACC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC;YACxB,GAAG,EAAE,kCAAkC;YACvC,KAAK,EAAE,KAAY;SACpB,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,QAAQ,CAC/D,QAAQ,CACT,EAAE;aACJ;SACF,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjB,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;YAClD,MAAM;YACN,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,eAAe,CAAC,gBAAgB,EAAE;YAC/D,IAAI,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;YACjD,IAAI,gBAAgB,CAClB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACnE;SACF,CAAC,CAAC;QAEH,OAAO,sBAAsB,CAAC;IAChC,CAAC;CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,aAAa,EAGd,EAAE,EAAE;IACH,MAAM,oBAAoB,GAAoB,CAAO,EAAE,YAAY,EAAE,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,GAAyB;YACtC,uBAAuB,EAAE;gBACvB,OAAO,EAAE;oBACP,QAAQ,EAAE,yCAAyC;oBACnD,OAAO,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;wBAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,SAAS,EAAE,OAAO;4BAClB,SAAS,EAAE,SAAS;4BACpB,IAAI,EAAE;gCACJ,EAAE,EAAE,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC;6BAC3C;4BACD,OAAO;4BACP,IAAI;yBACL,CAAC,CAAC;oBACL,CAAC;iBACF;aACF;SACF,CAAC;QACF,OAAO;YACL,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC,CAAA,CAAC;IACF,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAoB,GAAG,EAAE;IAC9D,OAAO;QACL,MAAM,EAAE;;;;GAIT;KACA,CAAC;AACJ,CAAC,CAAC"}
|