@acmekit/modules-sdk 2.13.1
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/acmekit-app.d.ts +96 -0
- package/dist/acmekit-app.d.ts.map +1 -0
- package/dist/acmekit-app.js +437 -0
- package/dist/acmekit-app.js.map +1 -0
- package/dist/acmekit-module.d.ts +149 -0
- package/dist/acmekit-module.d.ts.map +1 -0
- package/dist/acmekit-module.js +541 -0
- package/dist/acmekit-module.js.map +1 -0
- package/dist/definitions.d.ts +7 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +313 -0
- package/dist/definitions.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 +54 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +444 -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 +10 -0
- package/dist/loaders/module-loader.d.ts.map +1 -0
- package/dist/loaders/module-loader.js +56 -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 +56 -0
- package/dist/loaders/module-provider-loader.js.map +1 -0
- package/dist/loaders/register-modules.d.ts +10 -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 +53 -0
- package/dist/loaders/utils/load-internal.d.ts.map +1 -0
- package/dist/loaders/utils/load-internal.js +519 -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 +58 -0
- package/dist/remote-query/query.d.ts.map +1 -0
- package/dist/remote-query/query.js +254 -0
- package/dist/remote-query/query.js.map +1 -0
- package/dist/remote-query/remote-query.d.ts +43 -0
- package/dist/remote-query/remote-query.d.ts.map +1 -0
- package/dist/remote-query/remote-query.js +297 -0
- package/dist/remote-query/remote-query.js.map +1 -0
- package/dist/remote-query/to-remote-query.d.ts +29 -0
- package/dist/remote-query/to-remote-query.d.ts.map +1 -0
- package/dist/remote-query/to-remote-query.js +110 -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 +41 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAndAssignFilters = parseAndAssignFilters;
|
|
4
|
+
const utils_1 = require("@acmekit/utils");
|
|
5
|
+
const acmekit_module_1 = require("../acmekit-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 = acmekit_module_1.AcmeKitModule.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,58 @@
|
|
|
1
|
+
import { GraphResultSet, IIndexService, AcmeKitContainer, RemoteJoinerOptions, RemoteJoinerQuery, RemoteQueryFilters, RemoteQueryFunction, RemoteQueryInput, RemoteQueryObjectConfig, RemoteQueryObjectFromStringResult } from "@acmekit/types";
|
|
2
|
+
import { RemoteQuery } from "./remote-query";
|
|
3
|
+
/**
|
|
4
|
+
* API wrapper around the remoteQuery
|
|
5
|
+
*/
|
|
6
|
+
export declare class Query {
|
|
7
|
+
#private;
|
|
8
|
+
protected container: AcmeKitContainer;
|
|
9
|
+
/**
|
|
10
|
+
* Method to wrap execution of the graph query for instrumentation
|
|
11
|
+
*/
|
|
12
|
+
static traceGraphQuery?: (queryFn: () => Promise<any>, queryOptions: RemoteQueryInput<any>) => Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Method to wrap execution of the remoteQuery overload function
|
|
15
|
+
* for instrumentation
|
|
16
|
+
*/
|
|
17
|
+
static traceRemoteQuery?: (queryFn: () => Promise<any>, queryOptions: RemoteQueryObjectConfig<any> | RemoteQueryObjectFromStringResult<any> | RemoteJoinerQuery) => Promise<any>;
|
|
18
|
+
static instrument: {
|
|
19
|
+
graphQuery(tracer: (typeof Query)["traceGraphQuery"]): void;
|
|
20
|
+
remoteQuery(tracer: (typeof Query)["traceRemoteQuery"]): void;
|
|
21
|
+
remoteDataFetch(tracer: (typeof RemoteQuery)["traceFetchRemoteData"]): void;
|
|
22
|
+
};
|
|
23
|
+
constructor({ remoteQuery, indexModule, container, }: {
|
|
24
|
+
remoteQuery: RemoteQuery;
|
|
25
|
+
indexModule: IIndexService;
|
|
26
|
+
container: AcmeKitContainer;
|
|
27
|
+
});
|
|
28
|
+
query(queryOptions: RemoteQueryInput<any> | RemoteQueryObjectConfig<any> | RemoteQueryObjectFromStringResult<any> | RemoteJoinerQuery, options?: RemoteJoinerOptions): Promise<any>;
|
|
29
|
+
/**
|
|
30
|
+
* Query wrapper to provide specific GraphQL like API around remoteQuery.query
|
|
31
|
+
* @param query
|
|
32
|
+
* @param variables
|
|
33
|
+
* @param options
|
|
34
|
+
*/
|
|
35
|
+
gql(query: any, variables?: any, options?: any): Promise<any>;
|
|
36
|
+
/**
|
|
37
|
+
* Graph function uses the remoteQuery under the hood and
|
|
38
|
+
* returns a result set
|
|
39
|
+
*/
|
|
40
|
+
graph<const TEntry extends string>(queryOptions: RemoteQueryInput<TEntry>, options?: RemoteJoinerOptions): Promise<GraphResultSet<TEntry>>;
|
|
41
|
+
/**
|
|
42
|
+
* Index function uses the Index module to query and hydrates the data with query.graph
|
|
43
|
+
* returns a result set
|
|
44
|
+
*/
|
|
45
|
+
index<const TEntry extends string>(queryOptions: RemoteQueryInput<TEntry> & {
|
|
46
|
+
joinFilters?: RemoteQueryFilters<TEntry>;
|
|
47
|
+
}, options?: RemoteJoinerOptions): Promise<GraphResultSet<TEntry>>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* API wrapper around the remoteQuery with backward compatibility support
|
|
51
|
+
* @param remoteQuery
|
|
52
|
+
*/
|
|
53
|
+
export declare function createQuery({ remoteQuery, indexModule, container, }: {
|
|
54
|
+
remoteQuery: RemoteQuery;
|
|
55
|
+
indexModule: IIndexService;
|
|
56
|
+
container: AcmeKitContainer;
|
|
57
|
+
}): Omit<RemoteQueryFunction, symbol>;
|
|
58
|
+
//# 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,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,gBAAgB,CAAA;AASvB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAoD5C;;GAEG;AACH,qBAAa,KAAK;;IAGhB,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAA;IAErC;;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,EACV,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE;QACD,WAAW,EAAE,WAAW,CAAA;QACxB,WAAW,EAAE,aAAa,CAAA;QAC1B,SAAS,EAAE,gBAAgB,CAAA;KAC5B;IAgDK,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;IAEG,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;IAyClC;;;OAGG;IAEG,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EACrC,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG;QACvC,WAAW,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;KACzC,EACD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CAuEnC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,aAAa,CAAA;IAC1B,SAAS,EAAE,gBAAgB,CAAA;CAC5B,GAemC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CACpE"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
12
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
13
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
14
|
+
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");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
+
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");
|
|
20
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
+
};
|
|
22
|
+
var _Query_instances, _Query_remoteQuery, _Query_indexModule, _Query_unwrapQueryConfig, _Query_unwrapRemoteQueryResponse;
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.Query = void 0;
|
|
25
|
+
exports.createQuery = createQuery;
|
|
26
|
+
const utils_1 = require("@acmekit/utils");
|
|
27
|
+
const remote_query_1 = require("./remote-query");
|
|
28
|
+
const to_remote_query_1 = require("./to-remote-query");
|
|
29
|
+
function extractCacheOptions(option) {
|
|
30
|
+
return function extractKey(args) {
|
|
31
|
+
return args[1]?.cache?.[option];
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function isCacheEnabled(args) {
|
|
35
|
+
const isEnabled = extractCacheOptions("enable")(args);
|
|
36
|
+
if (isEnabled === false) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return (isEnabled === true ||
|
|
40
|
+
extractCacheOptions("key")(args) ||
|
|
41
|
+
extractCacheOptions("ttl")(args) ||
|
|
42
|
+
extractCacheOptions("tags")(args) ||
|
|
43
|
+
extractCacheOptions("autoInvalidate")(args) ||
|
|
44
|
+
extractCacheOptions("providers")(args));
|
|
45
|
+
}
|
|
46
|
+
const cacheDecoratorOptions = {
|
|
47
|
+
enable: isCacheEnabled,
|
|
48
|
+
key: async (args, cachingModule) => {
|
|
49
|
+
const key = extractCacheOptions("key")(args);
|
|
50
|
+
if (key) {
|
|
51
|
+
return key;
|
|
52
|
+
}
|
|
53
|
+
const queryOptions = args[0];
|
|
54
|
+
const remoteJoinerOptions = args[1] ?? {};
|
|
55
|
+
const { initialData, cache, ...restOptions } = remoteJoinerOptions;
|
|
56
|
+
const keyInput = {
|
|
57
|
+
queryOptions,
|
|
58
|
+
options: restOptions,
|
|
59
|
+
};
|
|
60
|
+
return await cachingModule.computeKey(keyInput);
|
|
61
|
+
},
|
|
62
|
+
ttl: extractCacheOptions("ttl"),
|
|
63
|
+
tags: extractCacheOptions("tags"),
|
|
64
|
+
autoInvalidate: extractCacheOptions("autoInvalidate"),
|
|
65
|
+
providers: extractCacheOptions("providers"),
|
|
66
|
+
container: function () {
|
|
67
|
+
return this.container;
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* API wrapper around the remoteQuery
|
|
72
|
+
*/
|
|
73
|
+
class Query {
|
|
74
|
+
constructor({ remoteQuery, indexModule, container, }) {
|
|
75
|
+
_Query_instances.add(this);
|
|
76
|
+
_Query_remoteQuery.set(this, void 0);
|
|
77
|
+
_Query_indexModule.set(this, void 0);
|
|
78
|
+
__classPrivateFieldSet(this, _Query_remoteQuery, remoteQuery, "f");
|
|
79
|
+
__classPrivateFieldSet(this, _Query_indexModule, indexModule, "f");
|
|
80
|
+
this.container = container;
|
|
81
|
+
}
|
|
82
|
+
async query(queryOptions, options) {
|
|
83
|
+
if (!(0, utils_1.isObject)(queryOptions)) {
|
|
84
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, "Invalid query, expected object and received something else.");
|
|
85
|
+
}
|
|
86
|
+
const config = __classPrivateFieldGet(this, _Query_instances, "m", _Query_unwrapQueryConfig).call(this, queryOptions);
|
|
87
|
+
if (Query.traceRemoteQuery) {
|
|
88
|
+
return await Query.traceRemoteQuery(async () => await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(config, undefined, options), queryOptions);
|
|
89
|
+
}
|
|
90
|
+
return await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(config, undefined, options);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Query wrapper to provide specific GraphQL like API around remoteQuery.query
|
|
94
|
+
* @param query
|
|
95
|
+
* @param variables
|
|
96
|
+
* @param options
|
|
97
|
+
*/
|
|
98
|
+
async gql(query, variables, options) {
|
|
99
|
+
return await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(query, variables, options);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Graph function uses the remoteQuery under the hood and
|
|
103
|
+
* returns a result set
|
|
104
|
+
*/
|
|
105
|
+
async graph(queryOptions, options) {
|
|
106
|
+
const normalizedQuery = (0, to_remote_query_1.toRemoteQuery)(queryOptions, __classPrivateFieldGet(this, _Query_remoteQuery, "f").getEntitiesMap());
|
|
107
|
+
let response;
|
|
108
|
+
/**
|
|
109
|
+
* When traceGraphQuery method is defined, we will wrap the implementation
|
|
110
|
+
* inside a callback and provide the method to the traceGraphQuery
|
|
111
|
+
*/
|
|
112
|
+
if (Query.traceGraphQuery) {
|
|
113
|
+
response = await Query.traceGraphQuery(async () => await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(normalizedQuery, undefined, options), queryOptions);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
response = await __classPrivateFieldGet(this, _Query_remoteQuery, "f").query(normalizedQuery, undefined, options);
|
|
117
|
+
}
|
|
118
|
+
const result = __classPrivateFieldGet(this, _Query_instances, "m", _Query_unwrapRemoteQueryResponse).call(this, response);
|
|
119
|
+
if (options?.locale) {
|
|
120
|
+
await (0, utils_1.applyTranslations)({
|
|
121
|
+
localeCode: options.locale,
|
|
122
|
+
objects: result.data,
|
|
123
|
+
container: this.container,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Index function uses the Index module to query and hydrates the data with query.graph
|
|
130
|
+
* returns a result set
|
|
131
|
+
*/
|
|
132
|
+
async index(queryOptions, options) {
|
|
133
|
+
if (!__classPrivateFieldGet(this, _Query_indexModule, "f")) {
|
|
134
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, "Index module is not loaded.");
|
|
135
|
+
}
|
|
136
|
+
const mainEntity = queryOptions.entity;
|
|
137
|
+
const fields = [mainEntity + ".id"];
|
|
138
|
+
const filters = queryOptions.filters
|
|
139
|
+
? { [mainEntity]: queryOptions.filters }
|
|
140
|
+
: {};
|
|
141
|
+
const joinFilters = queryOptions.joinFilters
|
|
142
|
+
? { [mainEntity]: queryOptions.joinFilters }
|
|
143
|
+
: {};
|
|
144
|
+
const pagination = queryOptions.pagination;
|
|
145
|
+
if (pagination?.order) {
|
|
146
|
+
pagination.order = {
|
|
147
|
+
[mainEntity]: (0, utils_1.unflattenObjectKeys)(pagination?.order),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const indexResponse = (await __classPrivateFieldGet(this, _Query_indexModule, "f").query({
|
|
151
|
+
fields,
|
|
152
|
+
filters,
|
|
153
|
+
joinFilters,
|
|
154
|
+
pagination,
|
|
155
|
+
idsOnly: true,
|
|
156
|
+
}));
|
|
157
|
+
delete queryOptions.filters;
|
|
158
|
+
const idFilters = {
|
|
159
|
+
id: indexResponse.data.map((item) => item.id),
|
|
160
|
+
};
|
|
161
|
+
queryOptions.filters = idFilters;
|
|
162
|
+
const graphOptions = {
|
|
163
|
+
...queryOptions,
|
|
164
|
+
pagination: {
|
|
165
|
+
// We pass through `take` to force the `select-in` query strategy
|
|
166
|
+
// There might be a better way to do this, but for now this should do
|
|
167
|
+
take: queryOptions.pagination?.take ?? indexResponse.data.length,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
let finalResultset = indexResponse;
|
|
171
|
+
if (indexResponse.data.length) {
|
|
172
|
+
finalResultset = await this.graph(graphOptions, {
|
|
173
|
+
...options,
|
|
174
|
+
initialData: indexResponse.data,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (options?.locale) {
|
|
178
|
+
await (0, utils_1.applyTranslations)({
|
|
179
|
+
localeCode: options.locale,
|
|
180
|
+
objects: finalResultset.data,
|
|
181
|
+
container: this.container,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
data: finalResultset.data,
|
|
186
|
+
metadata: indexResponse.metadata,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.Query = Query;
|
|
191
|
+
_Query_remoteQuery = new WeakMap(), _Query_indexModule = new WeakMap(), _Query_instances = new WeakSet(), _Query_unwrapQueryConfig = function _Query_unwrapQueryConfig(config) {
|
|
192
|
+
let normalizedQuery = config;
|
|
193
|
+
if ("__value" in config) {
|
|
194
|
+
normalizedQuery = config.__value;
|
|
195
|
+
}
|
|
196
|
+
else if ("entity" in normalizedQuery) {
|
|
197
|
+
normalizedQuery = (0, to_remote_query_1.toRemoteQuery)(normalizedQuery, __classPrivateFieldGet(this, _Query_remoteQuery, "f").getEntitiesMap());
|
|
198
|
+
}
|
|
199
|
+
else if ("entryPoint" in normalizedQuery ||
|
|
200
|
+
"service" in normalizedQuery) {
|
|
201
|
+
normalizedQuery = (0, utils_1.remoteQueryObjectFromString)(normalizedQuery).__value;
|
|
202
|
+
}
|
|
203
|
+
return normalizedQuery;
|
|
204
|
+
}, _Query_unwrapRemoteQueryResponse = function _Query_unwrapRemoteQueryResponse(response) {
|
|
205
|
+
if (Array.isArray(response)) {
|
|
206
|
+
return { data: response, metadata: undefined };
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
data: response.rows,
|
|
210
|
+
metadata: response.metadata,
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
Query.instrument = {
|
|
214
|
+
graphQuery(tracer) {
|
|
215
|
+
Query.traceGraphQuery = tracer;
|
|
216
|
+
},
|
|
217
|
+
remoteQuery(tracer) {
|
|
218
|
+
Query.traceRemoteQuery = tracer;
|
|
219
|
+
},
|
|
220
|
+
remoteDataFetch(tracer) {
|
|
221
|
+
remote_query_1.RemoteQuery.traceFetchRemoteData = tracer;
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
__decorate([
|
|
225
|
+
(0, utils_1.Cached)(cacheDecoratorOptions),
|
|
226
|
+
__metadata("design:type", Function),
|
|
227
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
228
|
+
__metadata("design:returntype", Promise)
|
|
229
|
+
], Query.prototype, "graph", null);
|
|
230
|
+
__decorate([
|
|
231
|
+
(0, utils_1.Cached)(cacheDecoratorOptions),
|
|
232
|
+
__metadata("design:type", Function),
|
|
233
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
234
|
+
__metadata("design:returntype", Promise)
|
|
235
|
+
], Query.prototype, "index", null);
|
|
236
|
+
/**
|
|
237
|
+
* API wrapper around the remoteQuery with backward compatibility support
|
|
238
|
+
* @param remoteQuery
|
|
239
|
+
*/
|
|
240
|
+
function createQuery({ remoteQuery, indexModule, container, }) {
|
|
241
|
+
const query = new Query({
|
|
242
|
+
remoteQuery,
|
|
243
|
+
indexModule,
|
|
244
|
+
container,
|
|
245
|
+
});
|
|
246
|
+
function backwardCompatibleQuery(...args) {
|
|
247
|
+
return query.query.apply(query, args);
|
|
248
|
+
}
|
|
249
|
+
backwardCompatibleQuery.graph = query.graph.bind(query);
|
|
250
|
+
backwardCompatibleQuery.gql = query.gql.bind(query);
|
|
251
|
+
backwardCompatibleQuery.index = query.index.bind(query);
|
|
252
|
+
return backwardCompatibleQuery;
|
|
253
|
+
}
|
|
254
|
+
//# 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,43 @@
|
|
|
1
|
+
import { RemoteFetchDataCallback } from "@acmekit/orchestration";
|
|
2
|
+
import { JoinerArgument, JoinerRelationship, LoadedModule, ModuleJoinerConfig, RemoteExpandProperty, RemoteJoinerOptions, RemoteJoinerQuery, RemoteNestedExpands } from "@acmekit/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
|
+
private fetchRemoteDataBatched;
|
|
34
|
+
remoteFetchData(expand: RemoteExpandProperty, keyField: string, ids?: (unknown | unknown[])[], relationship?: JoinerRelationship): Promise<{
|
|
35
|
+
data: unknown[] | {
|
|
36
|
+
[path: string]: unknown;
|
|
37
|
+
};
|
|
38
|
+
path?: string;
|
|
39
|
+
}>;
|
|
40
|
+
private executeFetchRequest;
|
|
41
|
+
query(query: string | RemoteJoinerQuery | object, variables?: Record<string, unknown>, options?: RemoteJoinerOptions): Promise<any>;
|
|
42
|
+
}
|
|
43
|
+
//# 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,wBAAwB,CAAA;AAC/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAElB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AAOvB,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,SAAc,EACpB,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;IAwDD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;YAUT,sBAAsB;IAgGvB,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;YAgBY,mBAAmB;IA2IpB,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"}
|