@etohq/modules-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/definitions.d.ts +7 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +290 -0
- package/dist/definitions.js.map +1 -0
- package/dist/eto-app.d.ts +79 -0
- package/dist/eto-app.d.ts.map +1 -0
- package/dist/eto-app.js +382 -0
- package/dist/eto-app.js.map +1 -0
- package/dist/eto-module.d.ts +136 -0
- package/dist/eto-module.d.ts.map +1 -0
- package/dist/eto-module.js +496 -0
- package/dist/eto-module.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +53 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +320 -0
- package/dist/link.js.map +1 -0
- package/dist/loaders/index.d.ts +4 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +20 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/loaders/module-loader.d.ts +9 -0
- package/dist/loaders/module-loader.d.ts.map +1 -0
- package/dist/loaders/module-loader.js +53 -0
- package/dist/loaders/module-loader.js.map +1 -0
- package/dist/loaders/module-provider-loader.d.ts +8 -0
- package/dist/loaders/module-provider-loader.d.ts.map +1 -0
- package/dist/loaders/module-provider-loader.js +53 -0
- package/dist/loaders/module-provider-loader.js.map +1 -0
- package/dist/loaders/register-modules.d.ts +4 -0
- package/dist/loaders/register-modules.d.ts.map +1 -0
- package/dist/loaders/register-modules.js +102 -0
- package/dist/loaders/register-modules.js.map +1 -0
- package/dist/loaders/utils/index.d.ts +2 -0
- package/dist/loaders/utils/index.d.ts.map +1 -0
- package/dist/loaders/utils/index.js +18 -0
- package/dist/loaders/utils/index.js.map +1 -0
- package/dist/loaders/utils/load-internal.d.ts +44 -0
- package/dist/loaders/utils/load-internal.d.ts.map +1 -0
- package/dist/loaders/utils/load-internal.js +488 -0
- package/dist/loaders/utils/load-internal.js.map +1 -0
- package/dist/remote-query/index.d.ts +3 -0
- package/dist/remote-query/index.d.ts.map +1 -0
- package/dist/remote-query/index.js +19 -0
- package/dist/remote-query/index.js.map +1 -0
- package/dist/remote-query/parse-filters.d.ts +15 -0
- package/dist/remote-query/parse-filters.d.ts.map +1 -0
- package/dist/remote-query/parse-filters.js +178 -0
- package/dist/remote-query/parse-filters.js.map +1 -0
- package/dist/remote-query/query.d.ts +42 -0
- package/dist/remote-query/query.d.ts.map +1 -0
- package/dist/remote-query/query.js +115 -0
- package/dist/remote-query/query.js.map +1 -0
- package/dist/remote-query/remote-query.d.ts +41 -0
- package/dist/remote-query/remote-query.d.ts.map +1 -0
- package/dist/remote-query/remote-query.js +175 -0
- package/dist/remote-query/remote-query.js.map +1 -0
- package/dist/remote-query/to-remote-query.d.ts +27 -0
- package/dist/remote-query/to-remote-query.d.ts.map +1 -0
- package/dist/remote-query/to-remote-query.js +96 -0
- package/dist/remote-query/to-remote-query.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/convert-data-to-link-definition.d.ts +3 -0
- package/dist/utils/convert-data-to-link-definition.d.ts.map +1 -0
- package/dist/utils/convert-data-to-link-definition.js +28 -0
- package/dist/utils/convert-data-to-link-definition.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/linking-error.d.ts +14 -0
- package/dist/utils/linking-error.d.ts.map +1 -0
- package/dist/utils/linking-error.js +18 -0
- package/dist/utils/linking-error.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAndAssignFilters = parseAndAssignFilters;
|
|
4
|
+
const utils_1 = require("@etohq/utils");
|
|
5
|
+
const eto_module_1 = require("../eto-module");
|
|
6
|
+
const joinerConfigMapCache = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Parse and assign filters to remote query object to the corresponding relation level
|
|
9
|
+
* @param entryPoint
|
|
10
|
+
* @param filters
|
|
11
|
+
* @param remoteQueryObject
|
|
12
|
+
* @param isFieldAliasNestedRelation
|
|
13
|
+
* @param entitiesMap
|
|
14
|
+
*/
|
|
15
|
+
function parseAndAssignFilters({ entryPoint, filters, remoteQueryObject, isFieldAliasNestedRelation, }, entitiesMap) {
|
|
16
|
+
const joinerConfigs = eto_module_1.EtoModule.getAllJoinerConfigs();
|
|
17
|
+
for (const [filterKey, filterValue] of Object.entries(filters)) {
|
|
18
|
+
/*let entryAlias!: JoinerServiceConfigAlias*/
|
|
19
|
+
let entryJoinerConfig;
|
|
20
|
+
const { joinerConfig /*alias*/ } = retrieveJoinerConfigFromPropertyName({
|
|
21
|
+
entryPoint: entryPoint,
|
|
22
|
+
joinerConfigs,
|
|
23
|
+
});
|
|
24
|
+
/*JoinerServiceConfigentryAlias = alias!*/
|
|
25
|
+
entryJoinerConfig = joinerConfig;
|
|
26
|
+
// TODO: This check is not used further than to validate the entity is part of the graphql schema
|
|
27
|
+
// This can't be used right now as we have not migrated the entire code base to DML from which the graphql schema is generated
|
|
28
|
+
/*const entryEntity = entitiesMap[entryAlias.entity!]
|
|
29
|
+
if (!entryEntity) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
`Entity ${entryAlias.entity} not found in the public schema of the joiner config from ${entryJoinerConfig.serviceName}`
|
|
32
|
+
)
|
|
33
|
+
}*/
|
|
34
|
+
if ((0, utils_1.isObject)(filterValue)) {
|
|
35
|
+
for (const [nestedFilterKey, nestedFilterValue] of Object.entries(filterValue)) {
|
|
36
|
+
const { joinerConfig: filterKeyJoinerConfig } = retrieveJoinerConfigFromPropertyName({
|
|
37
|
+
entryPoint: nestedFilterKey,
|
|
38
|
+
parentJoinerConfig: joinerConfig,
|
|
39
|
+
joinerConfigs,
|
|
40
|
+
});
|
|
41
|
+
if (!filterKeyJoinerConfig ||
|
|
42
|
+
filterKeyJoinerConfig.serviceName === entryJoinerConfig.serviceName) {
|
|
43
|
+
assignNestedRemoteQueryObject({
|
|
44
|
+
entryPoint,
|
|
45
|
+
filterKey,
|
|
46
|
+
nestedFilterKey,
|
|
47
|
+
filterValue,
|
|
48
|
+
nestedFilterValue,
|
|
49
|
+
remoteQueryObject,
|
|
50
|
+
isFieldAliasNestedRelation,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const isFieldAliasNestedRelation_ = isFieldAliasNestedRelationHelper({
|
|
55
|
+
nestedFilterKey,
|
|
56
|
+
entryJoinerConfig,
|
|
57
|
+
joinerConfigs,
|
|
58
|
+
filterKeyJoinerConfig,
|
|
59
|
+
});
|
|
60
|
+
parseAndAssignFilters({
|
|
61
|
+
entryPoint: nestedFilterKey,
|
|
62
|
+
filters: nestedFilterValue,
|
|
63
|
+
remoteQueryObject: remoteQueryObject[entryPoint][filterKey],
|
|
64
|
+
isFieldAliasNestedRelation: isFieldAliasNestedRelation_,
|
|
65
|
+
}, entitiesMap);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
assignRemoteQueryObject({
|
|
71
|
+
entryPoint,
|
|
72
|
+
filterKey,
|
|
73
|
+
filterValue,
|
|
74
|
+
remoteQueryObject,
|
|
75
|
+
isFieldAliasNestedRelation,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function retrieveJoinerConfigFromPropertyName({ entryPoint, parentJoinerConfig, joinerConfigs, }) {
|
|
80
|
+
if (parentJoinerConfig) {
|
|
81
|
+
const res = findAliasFromJoinerConfig({
|
|
82
|
+
joinerConfig: parentJoinerConfig,
|
|
83
|
+
entryPoint,
|
|
84
|
+
});
|
|
85
|
+
if (res) {
|
|
86
|
+
return res;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (joinerConfigMapCache.has(entryPoint)) {
|
|
90
|
+
return joinerConfigMapCache.get(entryPoint);
|
|
91
|
+
}
|
|
92
|
+
for (const joinerConfig of joinerConfigs) {
|
|
93
|
+
const joinerConfigAlias = joinerConfig.alias ?? [];
|
|
94
|
+
const aliases = Array.isArray(joinerConfigAlias)
|
|
95
|
+
? joinerConfigAlias
|
|
96
|
+
: [joinerConfigAlias];
|
|
97
|
+
const entryPointAlias = aliases.find((alias) => {
|
|
98
|
+
const aliasNames = Array.isArray(alias.name) ? alias.name : [alias.name];
|
|
99
|
+
return aliasNames.some((alias) => alias === entryPoint);
|
|
100
|
+
});
|
|
101
|
+
if (entryPointAlias) {
|
|
102
|
+
joinerConfigMapCache.set(entryPoint, {
|
|
103
|
+
joinerConfig,
|
|
104
|
+
alias: entryPointAlias,
|
|
105
|
+
});
|
|
106
|
+
return { joinerConfig, alias: entryPointAlias };
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
function findAliasFromJoinerConfig({ joinerConfig, entryPoint, }) {
|
|
112
|
+
const joinerConfigAlias = joinerConfig.alias ?? [];
|
|
113
|
+
const aliases = Array.isArray(joinerConfigAlias)
|
|
114
|
+
? joinerConfigAlias
|
|
115
|
+
: [joinerConfigAlias];
|
|
116
|
+
const entryPointAlias = aliases.find((alias) => {
|
|
117
|
+
const aliasNames = Array.isArray(alias.name) ? alias.name : [alias.name];
|
|
118
|
+
return aliasNames.some((alias) => alias === entryPoint);
|
|
119
|
+
});
|
|
120
|
+
if (entryPointAlias) {
|
|
121
|
+
joinerConfigMapCache.set(entryPoint, {
|
|
122
|
+
joinerConfig,
|
|
123
|
+
alias: entryPointAlias,
|
|
124
|
+
});
|
|
125
|
+
return { joinerConfig, alias: entryPointAlias };
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
function assignRemoteQueryObject({ entryPoint, filterKey, filterValue, remoteQueryObject, isFieldAliasNestedRelation, }) {
|
|
130
|
+
remoteQueryObject[entryPoint] ??= {};
|
|
131
|
+
remoteQueryObject[entryPoint].__args ??= {};
|
|
132
|
+
remoteQueryObject[entryPoint].__args["filters"] ??= {};
|
|
133
|
+
if (!isFieldAliasNestedRelation) {
|
|
134
|
+
remoteQueryObject[entryPoint].__args["filters"][filterKey] = filterValue;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// In case of field alias that refers to a relation of linked entity we need to assign the filter on the relation filter itself instead of top level of the args\
|
|
138
|
+
remoteQueryObject[entryPoint].__args["filters"][entryPoint] ??= {};
|
|
139
|
+
remoteQueryObject[entryPoint].__args["filters"][entryPoint][filterKey] =
|
|
140
|
+
filterValue;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function assignNestedRemoteQueryObject({ entryPoint, filterKey, nestedFilterKey, nestedFilterValue, remoteQueryObject, isFieldAliasNestedRelation, }) {
|
|
144
|
+
remoteQueryObject[entryPoint] ??= {};
|
|
145
|
+
remoteQueryObject[entryPoint]["__args"] ??= {};
|
|
146
|
+
remoteQueryObject[entryPoint]["__args"]["filters"] ??= {};
|
|
147
|
+
if (!isFieldAliasNestedRelation) {
|
|
148
|
+
remoteQueryObject[entryPoint]["__args"]["filters"][filterKey] ??= {};
|
|
149
|
+
remoteQueryObject[entryPoint]["__args"]["filters"][filterKey][nestedFilterKey] = nestedFilterValue;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// In case of field alias that refers to a relation of linked entity we need to assign the filter on the relation filter itself instead of top level of the args
|
|
153
|
+
remoteQueryObject[entryPoint]["__args"]["filters"][entryPoint] ??= {};
|
|
154
|
+
remoteQueryObject[entryPoint]["__args"]["filters"][entryPoint][filterKey] ??= {};
|
|
155
|
+
remoteQueryObject[entryPoint]["__args"]["filters"][entryPoint][filterKey][nestedFilterKey] = nestedFilterValue;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function isFieldAliasNestedRelationHelper({ nestedFilterKey, entryJoinerConfig, joinerConfigs, filterKeyJoinerConfig, }) {
|
|
159
|
+
const linkJoinerConfig = joinerConfigs.find((joinerConfig) => {
|
|
160
|
+
return joinerConfig.relationships?.every((rel) => rel.serviceName === entryJoinerConfig.serviceName ||
|
|
161
|
+
rel.serviceName === filterKeyJoinerConfig.serviceName);
|
|
162
|
+
});
|
|
163
|
+
const relationsAlias = linkJoinerConfig?.relationships?.map((r) => r.alias);
|
|
164
|
+
let isFieldAliasNestedRelation = false;
|
|
165
|
+
if (linkJoinerConfig && relationsAlias?.length) {
|
|
166
|
+
const fieldAlias = linkJoinerConfig.extends?.find((extend) => extend.fieldAlias?.[nestedFilterKey])?.fieldAlias;
|
|
167
|
+
if (fieldAlias) {
|
|
168
|
+
const path = (0, utils_1.isString)(fieldAlias?.[nestedFilterKey])
|
|
169
|
+
? fieldAlias?.[nestedFilterKey]
|
|
170
|
+
: (fieldAlias?.[nestedFilterKey]).path;
|
|
171
|
+
if (!relationsAlias.includes(path.split(".").pop())) {
|
|
172
|
+
isFieldAliasNestedRelation = true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return isFieldAliasNestedRelation;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=parse-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-filters.js","sourceRoot":"","sources":["../../src/remote-query/parse-filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { GraphResultSet, RemoteJoinerOptions, RemoteJoinerQuery, RemoteQueryFunction, RemoteQueryInput, RemoteQueryObjectConfig, RemoteQueryObjectFromStringResult } from "@etohq/types";
|
|
2
|
+
import { RemoteQuery } from "./remote-query";
|
|
3
|
+
/**
|
|
4
|
+
* API wrapper around the remoteQuery
|
|
5
|
+
*/
|
|
6
|
+
export declare class Query {
|
|
7
|
+
#private;
|
|
8
|
+
/**
|
|
9
|
+
* Method to wrap execution of the graph query for instrumentation
|
|
10
|
+
*/
|
|
11
|
+
static traceGraphQuery?: (queryFn: () => Promise<any>, queryOptions: RemoteQueryInput<any>) => Promise<any>;
|
|
12
|
+
/**
|
|
13
|
+
* Method to wrap execution of the remoteQuery overload function
|
|
14
|
+
* for instrumentation
|
|
15
|
+
*/
|
|
16
|
+
static traceRemoteQuery?: (queryFn: () => Promise<any>, queryOptions: RemoteQueryObjectConfig<any> | RemoteQueryObjectFromStringResult<any> | RemoteJoinerQuery) => Promise<any>;
|
|
17
|
+
static instrument: {
|
|
18
|
+
graphQuery(tracer: (typeof Query)["traceGraphQuery"]): void;
|
|
19
|
+
remoteQuery(tracer: (typeof Query)["traceRemoteQuery"]): void;
|
|
20
|
+
remoteDataFetch(tracer: (typeof RemoteQuery)["traceFetchRemoteData"]): void;
|
|
21
|
+
};
|
|
22
|
+
constructor(remoteQuery: RemoteQuery);
|
|
23
|
+
query(queryOptions: RemoteQueryInput<any> | RemoteQueryObjectConfig<any> | RemoteQueryObjectFromStringResult<any> | RemoteJoinerQuery, options?: RemoteJoinerOptions): Promise<any>;
|
|
24
|
+
/**
|
|
25
|
+
* Query wrapper to provide specific GraphQL like API around remoteQuery.query
|
|
26
|
+
* @param query
|
|
27
|
+
* @param variables
|
|
28
|
+
* @param options
|
|
29
|
+
*/
|
|
30
|
+
gql(query: any, variables?: any, options?: any): Promise<any>;
|
|
31
|
+
/**
|
|
32
|
+
* Graph function uses the remoteQuery under the hood and
|
|
33
|
+
* returns a result set
|
|
34
|
+
*/
|
|
35
|
+
graph<const TEntry extends string>(queryOptions: RemoteQueryInput<TEntry>, options?: RemoteJoinerOptions): Promise<GraphResultSet<TEntry>>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* API wrapper around the remoteQuery with backward compatibility support
|
|
39
|
+
* @param remoteQuery
|
|
40
|
+
*/
|
|
41
|
+
export declare function createQuery(remoteQuery: RemoteQuery): Omit<RemoteQueryFunction, symbol>;
|
|
42
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/remote-query/query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,cAAc,CAAA;AAMrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C;;GAEG;AACH,qBAAa,KAAK;;IAGhB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,EAAE,CACvB,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAChC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEjB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,EAAE,CACxB,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,YAAY,EACR,uBAAuB,CAAC,GAAG,CAAC,GAC5B,iCAAiC,CAAC,GAAG,CAAC,GACtC,iBAAiB,KAClB,OAAO,CAAC,GAAG,CAAC,CAAA;IAEjB,MAAM,CAAC,UAAU;2BACI,CAAC,OAAO,KAAK,EAAE,iBAAiB,CAAC;4BAGhC,CAAC,OAAO,KAAK,EAAE,kBAAkB,CAAC;gCAG9B,CAAC,OAAO,WAAW,EAAE,sBAAsB,CAAC;MAGrE;gBAEW,WAAW,EAAE,WAAW;IA8C9B,KAAK,CACT,YAAY,EACR,gBAAgB,CAAC,GAAG,CAAC,GACrB,uBAAuB,CAAC,GAAG,CAAC,GAC5B,iCAAiC,CAAC,GAAG,CAAC,GACtC,iBAAiB,EACrB,OAAO,CAAC,EAAE,mBAAmB;IAoB/B;;;;;OAKG;IACG,GAAG,CAAC,KAAK,KAAA,EAAE,SAAS,CAAC,KAAA,EAAE,OAAO,CAAC,KAAA;IAIrC;;;OAGG;IACG,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EACrC,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,EACtC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CA6BnC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,GAUhB,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CACpE"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _Query_instances, _Query_remoteQuery, _Query_unwrapQueryConfig, _Query_unwrapRemoteQueryResponse;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.Query = void 0;
|
|
16
|
+
exports.createQuery = createQuery;
|
|
17
|
+
const utils_1 = require("@etohq/utils");
|
|
18
|
+
const remote_query_1 = require("./remote-query");
|
|
19
|
+
const to_remote_query_1 = require("./to-remote-query");
|
|
20
|
+
/**
|
|
21
|
+
* API wrapper around the remoteQuery
|
|
22
|
+
*/
|
|
23
|
+
class Query {
|
|
24
|
+
constructor(remoteQuery) {
|
|
25
|
+
_Query_instances.add(this);
|
|
26
|
+
_Query_remoteQuery.set(this, void 0);
|
|
27
|
+
__classPrivateFieldSet(this, _Query_remoteQuery, remoteQuery, "f");
|
|
28
|
+
}
|
|
29
|
+
async query(queryOptions, options) {
|
|
30
|
+
if (!(0, utils_1.isObject)(queryOptions)) {
|
|
31
|
+
throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "Invalid query, expected object and received something else.");
|
|
32
|
+
}
|
|
33
|
+
const config = __classPrivateFieldGet(this, _Query_instances, "m", _Query_unwrapQueryConfig).call(this, queryOptions);
|
|
34
|
+
if (Query.traceRemoteQuery) {
|
|
35
|
+
return await Query.traceRemoteQuery(async () => await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(config, undefined, options), queryOptions);
|
|
36
|
+
}
|
|
37
|
+
return await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(config, undefined, options);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Query wrapper to provide specific GraphQL like API around remoteQuery.query
|
|
41
|
+
* @param query
|
|
42
|
+
* @param variables
|
|
43
|
+
* @param options
|
|
44
|
+
*/
|
|
45
|
+
async gql(query, variables, options) {
|
|
46
|
+
return await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(query, variables, options);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Graph function uses the remoteQuery under the hood and
|
|
50
|
+
* returns a result set
|
|
51
|
+
*/
|
|
52
|
+
async graph(queryOptions, options) {
|
|
53
|
+
const normalizedQuery = (0, to_remote_query_1.toRemoteQuery)(queryOptions, __classPrivateFieldGet(this, _Query_remoteQuery, "f").getEntitiesMap());
|
|
54
|
+
let response;
|
|
55
|
+
/**
|
|
56
|
+
* When traceGraphQuery method is defined, we will wrap the implementation
|
|
57
|
+
* inside a callback and provide the method to the traceGraphQuery
|
|
58
|
+
*/
|
|
59
|
+
if (Query.traceGraphQuery) {
|
|
60
|
+
response = await Query.traceGraphQuery(async () => await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(normalizedQuery, undefined, options), queryOptions);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
response = await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(normalizedQuery, undefined, options);
|
|
64
|
+
}
|
|
65
|
+
return __classPrivateFieldGet(this, _Query_instances, "m", _Query_unwrapRemoteQueryResponse).call(this, response);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.Query = Query;
|
|
69
|
+
_Query_remoteQuery = new WeakMap(), _Query_instances = new WeakSet(), _Query_unwrapQueryConfig = function _Query_unwrapQueryConfig(config) {
|
|
70
|
+
let normalizedQuery = config;
|
|
71
|
+
if ("__value" in config) {
|
|
72
|
+
normalizedQuery = config.__value;
|
|
73
|
+
}
|
|
74
|
+
else if ("entity" in normalizedQuery) {
|
|
75
|
+
normalizedQuery = (0, to_remote_query_1.toRemoteQuery)(normalizedQuery, __classPrivateFieldGet(this, _Query_remoteQuery, "f").getEntitiesMap());
|
|
76
|
+
}
|
|
77
|
+
else if ("entryPoint" in normalizedQuery ||
|
|
78
|
+
"service" in normalizedQuery) {
|
|
79
|
+
normalizedQuery = (0, utils_1.remoteQueryObjectFromString)(normalizedQuery).__value;
|
|
80
|
+
}
|
|
81
|
+
return normalizedQuery;
|
|
82
|
+
}, _Query_unwrapRemoteQueryResponse = function _Query_unwrapRemoteQueryResponse(response) {
|
|
83
|
+
if (Array.isArray(response)) {
|
|
84
|
+
return { data: response, metadata: undefined };
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
data: response.rows,
|
|
88
|
+
metadata: response.metadata,
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
Query.instrument = {
|
|
92
|
+
graphQuery(tracer) {
|
|
93
|
+
Query.traceGraphQuery = tracer;
|
|
94
|
+
},
|
|
95
|
+
remoteQuery(tracer) {
|
|
96
|
+
Query.traceRemoteQuery = tracer;
|
|
97
|
+
},
|
|
98
|
+
remoteDataFetch(tracer) {
|
|
99
|
+
remote_query_1.RemoteQuery.traceFetchRemoteData = tracer;
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* API wrapper around the remoteQuery with backward compatibility support
|
|
104
|
+
* @param remoteQuery
|
|
105
|
+
*/
|
|
106
|
+
function createQuery(remoteQuery) {
|
|
107
|
+
const query = new Query(remoteQuery);
|
|
108
|
+
function backwardCompatibleQuery(...args) {
|
|
109
|
+
return query.query.apply(query, args);
|
|
110
|
+
}
|
|
111
|
+
backwardCompatibleQuery.graph = query.graph.bind(query);
|
|
112
|
+
backwardCompatibleQuery.gql = query.gql.bind(query);
|
|
113
|
+
return backwardCompatibleQuery;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/remote-query/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { RemoteFetchDataCallback } from "@etohq/orchestration";
|
|
2
|
+
import { JoinerArgument, JoinerRelationship, LoadedModule, ModuleJoinerConfig, RemoteExpandProperty, RemoteJoinerOptions, RemoteJoinerQuery, RemoteNestedExpands } from "@etohq/types";
|
|
3
|
+
export declare class RemoteQuery {
|
|
4
|
+
private remoteJoiner;
|
|
5
|
+
private modulesMap;
|
|
6
|
+
private customRemoteFetchData?;
|
|
7
|
+
private entitiesMap;
|
|
8
|
+
static traceFetchRemoteData?: (fetcher: () => Promise<any>, serviceName: string, method: string, options: {
|
|
9
|
+
select?: string[];
|
|
10
|
+
relations: string[];
|
|
11
|
+
}) => Promise<any>;
|
|
12
|
+
constructor({ modulesLoaded, customRemoteFetchData, servicesConfig, entitiesMap, }: {
|
|
13
|
+
modulesLoaded?: LoadedModule[];
|
|
14
|
+
customRemoteFetchData?: RemoteFetchDataCallback;
|
|
15
|
+
servicesConfig?: ModuleJoinerConfig[];
|
|
16
|
+
entitiesMap: Map<string, any>;
|
|
17
|
+
});
|
|
18
|
+
getEntitiesMap(): Map<string, any>;
|
|
19
|
+
setFetchDataCallback(remoteFetchData: (expand: RemoteExpandProperty, keyField: string, ids?: (unknown | unknown[])[], relationship?: any) => Promise<{
|
|
20
|
+
data: unknown[] | {
|
|
21
|
+
[path: string]: unknown[];
|
|
22
|
+
};
|
|
23
|
+
path?: string;
|
|
24
|
+
}>): void;
|
|
25
|
+
static getAllFieldsAndRelations(expand: RemoteExpandProperty | RemoteNestedExpands[number], prefix?: string, args?: JoinerArgument): {
|
|
26
|
+
select?: string[];
|
|
27
|
+
relations: string[];
|
|
28
|
+
args: JoinerArgument;
|
|
29
|
+
take?: number | null;
|
|
30
|
+
};
|
|
31
|
+
private hasPagination;
|
|
32
|
+
private buildPagination;
|
|
33
|
+
remoteFetchData(expand: RemoteExpandProperty, keyField: string, ids?: (unknown | unknown[])[], relationship?: JoinerRelationship): Promise<{
|
|
34
|
+
data: unknown[] | {
|
|
35
|
+
[path: string]: unknown;
|
|
36
|
+
};
|
|
37
|
+
path?: string;
|
|
38
|
+
}>;
|
|
39
|
+
query(query: string | RemoteJoinerQuery | object, variables?: Record<string, unknown>, options?: RemoteJoinerOptions): Promise<any>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=remote-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-query.d.ts","sourceRoot":"","sources":["../../src/remote-query/remote-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAGxB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAElB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAIrB,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,qBAAqB,CAAC,CAAyB;IACvD,OAAO,CAAC,WAAW,CAA8B;IAEjD,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,KAChD,OAAO,CAAC,GAAG,CAAC,CAAA;gBAEL,EACV,aAAa,EACb,qBAAqB,EACrB,cAAmB,EACnB,WAAW,GACZ,EAAE;QACD,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;QAC9B,qBAAqB,CAAC,EAAE,uBAAuB,CAAA;QAC/C,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;QACrC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC9B;IAuCM,cAAc;IAId,oBAAoB,CACzB,eAAe,EAAE,CACf,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,EAAE,EAC7B,YAAY,CAAC,EAAE,GAAG,KACf,OAAO,CAAC;QACX,IAAI,EAAE,OAAO,EAAE,GAAG;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAAE,CAAA;QAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAC,GACD,IAAI;WAIO,wBAAwB,CACpC,MAAM,EAAE,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAC1D,MAAM,SAAK,EACX,IAAI,GAAE,cAAqC,GAC1C;QACD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,IAAI,EAAE,cAAc,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KACrB;IA4CD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IAUV,eAAe,CAC1B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,EAAE,EAC7B,YAAY,CAAC,EAAE,kBAAkB,GAChC,OAAO,CAAC;QACT,IAAI,EAAE,OAAO,EAAE,GAAG;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;QAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAC;IAgGW,KAAK,CAChB,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM,EAC1C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,GAAG,CAAC;CAWhB"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoteQuery = void 0;
|
|
4
|
+
const orchestration_1 = require("@etohq/orchestration");
|
|
5
|
+
const utils_1 = require("@etohq/utils");
|
|
6
|
+
const eto_module_1 = require("../eto-module");
|
|
7
|
+
class RemoteQuery {
|
|
8
|
+
constructor({ modulesLoaded, customRemoteFetchData, servicesConfig = [], entitiesMap, }) {
|
|
9
|
+
this.modulesMap = new Map();
|
|
10
|
+
this.entitiesMap = new Map();
|
|
11
|
+
const servicesConfig_ = [...servicesConfig];
|
|
12
|
+
this.entitiesMap = entitiesMap;
|
|
13
|
+
if (!modulesLoaded?.length) {
|
|
14
|
+
modulesLoaded = eto_module_1.EtoModule.getLoadedModules().map((mod) => Object.values(mod)[0]);
|
|
15
|
+
}
|
|
16
|
+
for (const mod of modulesLoaded || []) {
|
|
17
|
+
if (!mod.__definition.isQueryable) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const serviceName = mod.__definition.key;
|
|
21
|
+
if (this.modulesMap.has(serviceName)) {
|
|
22
|
+
throw new Error(`Duplicated instance of module ${serviceName} is not allowed.`);
|
|
23
|
+
}
|
|
24
|
+
this.modulesMap.set(serviceName, mod);
|
|
25
|
+
servicesConfig_.push(mod.__joinerConfig);
|
|
26
|
+
}
|
|
27
|
+
this.customRemoteFetchData = customRemoteFetchData;
|
|
28
|
+
this.remoteJoiner = new orchestration_1.RemoteJoiner(servicesConfig_, this.remoteFetchData.bind(this), {
|
|
29
|
+
autoCreateServiceNameAlias: false,
|
|
30
|
+
entitiesMap,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getEntitiesMap() {
|
|
34
|
+
return this.entitiesMap;
|
|
35
|
+
}
|
|
36
|
+
setFetchDataCallback(remoteFetchData) {
|
|
37
|
+
this.remoteJoiner.setFetchDataCallback(remoteFetchData);
|
|
38
|
+
}
|
|
39
|
+
static getAllFieldsAndRelations(expand, prefix = "", args = {}) {
|
|
40
|
+
expand = JSON.parse(JSON.stringify(expand));
|
|
41
|
+
let fields = new Set();
|
|
42
|
+
let relations = [];
|
|
43
|
+
let shouldSelectAll = false;
|
|
44
|
+
for (const field of expand.fields ?? []) {
|
|
45
|
+
if (field === "*") {
|
|
46
|
+
shouldSelectAll = true;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
fields.add(prefix ? `${prefix}.${field}` : field);
|
|
50
|
+
}
|
|
51
|
+
args[prefix] = expand.args;
|
|
52
|
+
for (const property in expand.expands ?? {}) {
|
|
53
|
+
const newPrefix = prefix ? `${prefix}.${property}` : property;
|
|
54
|
+
relations.push(newPrefix);
|
|
55
|
+
fields.delete(newPrefix);
|
|
56
|
+
const result = RemoteQuery.getAllFieldsAndRelations(expand.expands[property], newPrefix, args);
|
|
57
|
+
result.select?.forEach(fields.add, fields);
|
|
58
|
+
relations = relations.concat(result.relations);
|
|
59
|
+
}
|
|
60
|
+
const allFields = Array.from(fields);
|
|
61
|
+
const select = allFields.length && !shouldSelectAll
|
|
62
|
+
? allFields
|
|
63
|
+
: shouldSelectAll
|
|
64
|
+
? undefined
|
|
65
|
+
: [];
|
|
66
|
+
return { select, relations, args };
|
|
67
|
+
}
|
|
68
|
+
hasPagination(options) {
|
|
69
|
+
if (!options) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const attrs = ["skip", "cursor"];
|
|
73
|
+
return Object.keys(options).some((key) => attrs.includes(key));
|
|
74
|
+
}
|
|
75
|
+
buildPagination(options, count) {
|
|
76
|
+
return {
|
|
77
|
+
skip: options.skip,
|
|
78
|
+
take: options.take,
|
|
79
|
+
// cursor: options.cursor, not yet supported
|
|
80
|
+
// TODO: next cursor
|
|
81
|
+
count,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async remoteFetchData(expand, keyField, ids, relationship) {
|
|
85
|
+
if (this.customRemoteFetchData) {
|
|
86
|
+
const resp = await this.customRemoteFetchData(expand, keyField, ids);
|
|
87
|
+
if (resp !== undefined) {
|
|
88
|
+
return resp;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const serviceConfig = expand.serviceConfig;
|
|
92
|
+
const service = this.modulesMap.get(serviceConfig.serviceName);
|
|
93
|
+
let filters = {};
|
|
94
|
+
const options = {
|
|
95
|
+
...RemoteQuery.getAllFieldsAndRelations(expand),
|
|
96
|
+
};
|
|
97
|
+
const availableOptions = [
|
|
98
|
+
"skip",
|
|
99
|
+
"take",
|
|
100
|
+
"limit",
|
|
101
|
+
"offset",
|
|
102
|
+
"cursor",
|
|
103
|
+
"sort",
|
|
104
|
+
"order",
|
|
105
|
+
"withDeleted",
|
|
106
|
+
];
|
|
107
|
+
const availableOptionsAlias = new Map([
|
|
108
|
+
["limit", "take"],
|
|
109
|
+
["offset", "skip"],
|
|
110
|
+
]);
|
|
111
|
+
for (const arg of expand.args || []) {
|
|
112
|
+
if (arg.name === "filters" && arg.value) {
|
|
113
|
+
filters = { ...filters, ...arg.value };
|
|
114
|
+
}
|
|
115
|
+
else if (arg.name === "context" && arg.value) {
|
|
116
|
+
filters["context"] = arg.value;
|
|
117
|
+
}
|
|
118
|
+
else if (availableOptions.includes(arg.name)) {
|
|
119
|
+
const argName = availableOptionsAlias.has(arg.name)
|
|
120
|
+
? availableOptionsAlias.get(arg.name)
|
|
121
|
+
: arg.name;
|
|
122
|
+
options[argName] = arg.value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (ids) {
|
|
126
|
+
filters[keyField] = ids;
|
|
127
|
+
}
|
|
128
|
+
const hasPagination = this.hasPagination(options);
|
|
129
|
+
let methodName = hasPagination ? "listAndCount" : "list";
|
|
130
|
+
if (relationship?.args?.methodSuffix) {
|
|
131
|
+
methodName += (0, utils_1.toPascalCase)(relationship.args.methodSuffix);
|
|
132
|
+
}
|
|
133
|
+
else if (serviceConfig?.args?.methodSuffix) {
|
|
134
|
+
methodName += (0, utils_1.toPascalCase)(serviceConfig.args.methodSuffix);
|
|
135
|
+
}
|
|
136
|
+
if (typeof service[methodName] !== "function") {
|
|
137
|
+
throw new Error(`Method "${methodName}" does not exist on "${serviceConfig.serviceName}"`);
|
|
138
|
+
}
|
|
139
|
+
if (ids?.length && !hasPagination) {
|
|
140
|
+
options.take = null;
|
|
141
|
+
}
|
|
142
|
+
let result;
|
|
143
|
+
if (RemoteQuery.traceFetchRemoteData) {
|
|
144
|
+
result = await RemoteQuery.traceFetchRemoteData(async () => service[methodName](filters, options), serviceConfig.serviceName, methodName, options);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
result = await service[methodName](filters, options);
|
|
148
|
+
}
|
|
149
|
+
if (hasPagination) {
|
|
150
|
+
const [data, count] = result;
|
|
151
|
+
return {
|
|
152
|
+
data: {
|
|
153
|
+
rows: data,
|
|
154
|
+
metadata: this.buildPagination(options, count),
|
|
155
|
+
},
|
|
156
|
+
path: "rows",
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
data: result,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
async query(query, variables, options) {
|
|
164
|
+
let finalQuery = query;
|
|
165
|
+
if ((0, utils_1.isString)(query)) {
|
|
166
|
+
finalQuery = orchestration_1.RemoteJoiner.parseQuery(query, variables);
|
|
167
|
+
}
|
|
168
|
+
else if (!(0, utils_1.isString)(finalQuery?.service) && !(0, utils_1.isString)(finalQuery?.alias)) {
|
|
169
|
+
finalQuery = (0, orchestration_1.toRemoteJoinerQuery)(query, variables);
|
|
170
|
+
}
|
|
171
|
+
return await this.remoteJoiner.query(finalQuery, options);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.RemoteQuery = RemoteQuery;
|
|
175
|
+
//# sourceMappingURL=remote-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-query.js","sourceRoot":"","sources":["../../src/remote-query/remote-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RemoteQueryEntryPoints, RemoteQueryFilters, RemoteQueryGraph, RemoteQueryInput } from "@etohq/types";
|
|
2
|
+
/**
|
|
3
|
+
* convert a specific API configuration to a remote query object
|
|
4
|
+
*
|
|
5
|
+
* @param config
|
|
6
|
+
* @param entitiesMap
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const remoteQueryObject = toRemoteQuery({
|
|
10
|
+
* entity: "product",
|
|
11
|
+
* fields,
|
|
12
|
+
* filters: { variants: QueryFilter({ sku: "abc" }) },
|
|
13
|
+
* context: {
|
|
14
|
+
* variants: { calculated_price: QueryContext({ region_id: "reg_123" }) }
|
|
15
|
+
* }
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* console.log(remoteQueryObject);
|
|
19
|
+
*/
|
|
20
|
+
export declare function toRemoteQuery<const TEntity extends string>(config: {
|
|
21
|
+
entity: TEntity | keyof RemoteQueryEntryPoints;
|
|
22
|
+
fields: RemoteQueryInput<TEntity>["fields"];
|
|
23
|
+
filters?: RemoteQueryFilters<TEntity>;
|
|
24
|
+
pagination?: Partial<RemoteQueryInput<TEntity>["pagination"]>;
|
|
25
|
+
context?: Record<string, any>;
|
|
26
|
+
}, entitiesMap: Map<string, any>): RemoteQueryGraph<TEntity>;
|
|
27
|
+
//# sourceMappingURL=to-remote-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-remote-query.d.ts","sourceRoot":"","sources":["../../src/remote-query/to-remote-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,cAAc,CAAA;AAOrB;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,aAAa,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,EACxD,MAAM,EAAE;IACN,MAAM,EAAE,OAAO,GAAG,MAAM,sBAAsB,CAAA;IAC9C,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B,EACD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,gBAAgB,CAAC,OAAO,CAAC,CAyF3B"}
|