@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.
Files changed (82) hide show
  1. package/dist/acmekit-app.d.ts +96 -0
  2. package/dist/acmekit-app.d.ts.map +1 -0
  3. package/dist/acmekit-app.js +437 -0
  4. package/dist/acmekit-app.js.map +1 -0
  5. package/dist/acmekit-module.d.ts +149 -0
  6. package/dist/acmekit-module.d.ts.map +1 -0
  7. package/dist/acmekit-module.js +541 -0
  8. package/dist/acmekit-module.js.map +1 -0
  9. package/dist/definitions.d.ts +7 -0
  10. package/dist/definitions.d.ts.map +1 -0
  11. package/dist/definitions.js +313 -0
  12. package/dist/definitions.js.map +1 -0
  13. package/dist/index.d.ts +9 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +25 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/link.d.ts +54 -0
  18. package/dist/link.d.ts.map +1 -0
  19. package/dist/link.js +444 -0
  20. package/dist/link.js.map +1 -0
  21. package/dist/loaders/index.d.ts +4 -0
  22. package/dist/loaders/index.d.ts.map +1 -0
  23. package/dist/loaders/index.js +20 -0
  24. package/dist/loaders/index.js.map +1 -0
  25. package/dist/loaders/module-loader.d.ts +10 -0
  26. package/dist/loaders/module-loader.d.ts.map +1 -0
  27. package/dist/loaders/module-loader.js +56 -0
  28. package/dist/loaders/module-loader.js.map +1 -0
  29. package/dist/loaders/module-provider-loader.d.ts +8 -0
  30. package/dist/loaders/module-provider-loader.d.ts.map +1 -0
  31. package/dist/loaders/module-provider-loader.js +56 -0
  32. package/dist/loaders/module-provider-loader.js.map +1 -0
  33. package/dist/loaders/register-modules.d.ts +10 -0
  34. package/dist/loaders/register-modules.d.ts.map +1 -0
  35. package/dist/loaders/register-modules.js +102 -0
  36. package/dist/loaders/register-modules.js.map +1 -0
  37. package/dist/loaders/utils/index.d.ts +2 -0
  38. package/dist/loaders/utils/index.d.ts.map +1 -0
  39. package/dist/loaders/utils/index.js +18 -0
  40. package/dist/loaders/utils/index.js.map +1 -0
  41. package/dist/loaders/utils/load-internal.d.ts +53 -0
  42. package/dist/loaders/utils/load-internal.d.ts.map +1 -0
  43. package/dist/loaders/utils/load-internal.js +519 -0
  44. package/dist/loaders/utils/load-internal.js.map +1 -0
  45. package/dist/remote-query/index.d.ts +3 -0
  46. package/dist/remote-query/index.d.ts.map +1 -0
  47. package/dist/remote-query/index.js +19 -0
  48. package/dist/remote-query/index.js.map +1 -0
  49. package/dist/remote-query/parse-filters.d.ts +15 -0
  50. package/dist/remote-query/parse-filters.d.ts.map +1 -0
  51. package/dist/remote-query/parse-filters.js +178 -0
  52. package/dist/remote-query/parse-filters.js.map +1 -0
  53. package/dist/remote-query/query.d.ts +58 -0
  54. package/dist/remote-query/query.d.ts.map +1 -0
  55. package/dist/remote-query/query.js +254 -0
  56. package/dist/remote-query/query.js.map +1 -0
  57. package/dist/remote-query/remote-query.d.ts +43 -0
  58. package/dist/remote-query/remote-query.d.ts.map +1 -0
  59. package/dist/remote-query/remote-query.js +297 -0
  60. package/dist/remote-query/remote-query.js.map +1 -0
  61. package/dist/remote-query/to-remote-query.d.ts +29 -0
  62. package/dist/remote-query/to-remote-query.d.ts.map +1 -0
  63. package/dist/remote-query/to-remote-query.js +110 -0
  64. package/dist/remote-query/to-remote-query.js.map +1 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -0
  66. package/dist/types/index.d.ts +5 -0
  67. package/dist/types/index.d.ts.map +1 -0
  68. package/dist/types/index.js +9 -0
  69. package/dist/types/index.js.map +1 -0
  70. package/dist/utils/convert-data-to-link-definition.d.ts +3 -0
  71. package/dist/utils/convert-data-to-link-definition.d.ts.map +1 -0
  72. package/dist/utils/convert-data-to-link-definition.js +28 -0
  73. package/dist/utils/convert-data-to-link-definition.js.map +1 -0
  74. package/dist/utils/index.d.ts +3 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/index.js +19 -0
  77. package/dist/utils/index.js.map +1 -0
  78. package/dist/utils/linking-error.d.ts +14 -0
  79. package/dist/utils/linking-error.d.ts.map +1 -0
  80. package/dist/utils/linking-error.js +18 -0
  81. package/dist/utils/linking-error.js.map +1 -0
  82. 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"}