@medusajs/query 2.17.2

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 (46) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +19 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/joiner/helpers.d.ts +3 -0
  6. package/dist/joiner/helpers.d.ts.map +1 -0
  7. package/dist/joiner/helpers.js +69 -0
  8. package/dist/joiner/helpers.js.map +1 -0
  9. package/dist/joiner/index.d.ts +3 -0
  10. package/dist/joiner/index.d.ts.map +1 -0
  11. package/dist/joiner/index.js +19 -0
  12. package/dist/joiner/index.js.map +1 -0
  13. package/dist/joiner/remote-joiner.d.ts +43 -0
  14. package/dist/joiner/remote-joiner.d.ts.map +1 -0
  15. package/dist/joiner/remote-joiner.js +1279 -0
  16. package/dist/joiner/remote-joiner.js.map +1 -0
  17. package/dist/medusa-module.d.ts +13 -0
  18. package/dist/medusa-module.d.ts.map +1 -0
  19. package/dist/medusa-module.js +17 -0
  20. package/dist/medusa-module.js.map +1 -0
  21. package/dist/remote-query/index.d.ts +3 -0
  22. package/dist/remote-query/index.d.ts.map +1 -0
  23. package/dist/remote-query/index.js +19 -0
  24. package/dist/remote-query/index.js.map +1 -0
  25. package/dist/remote-query/parse-filters.d.ts +15 -0
  26. package/dist/remote-query/parse-filters.d.ts.map +1 -0
  27. package/dist/remote-query/parse-filters.js +178 -0
  28. package/dist/remote-query/parse-filters.js.map +1 -0
  29. package/dist/remote-query/query.d.ts +58 -0
  30. package/dist/remote-query/query.d.ts.map +1 -0
  31. package/dist/remote-query/query.js +254 -0
  32. package/dist/remote-query/query.js.map +1 -0
  33. package/dist/remote-query/remote-query.d.ts +43 -0
  34. package/dist/remote-query/remote-query.d.ts.map +1 -0
  35. package/dist/remote-query/remote-query.js +297 -0
  36. package/dist/remote-query/remote-query.js.map +1 -0
  37. package/dist/remote-query/to-remote-query.d.ts +29 -0
  38. package/dist/remote-query/to-remote-query.d.ts.map +1 -0
  39. package/dist/remote-query/to-remote-query.js +110 -0
  40. package/dist/remote-query/to-remote-query.js.map +1 -0
  41. package/dist/testing/medusa-module-mock.d.ts +2 -0
  42. package/dist/testing/medusa-module-mock.d.ts.map +1 -0
  43. package/dist/testing/medusa-module-mock.js +16 -0
  44. package/dist/testing/medusa-module-mock.js.map +1 -0
  45. package/dist/tsconfig.tsbuildinfo +1 -0
  46. package/package.json +43 -0
@@ -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("@medusajs/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.MedusaError(utils_1.MedusaError.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.MedusaError(utils_1.MedusaError.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 { JoinerArgument, JoinerRelationship, LoadedModule, ModuleJoinerConfig, RemoteExpandProperty, RemoteJoinerOptions, RemoteJoinerQuery, RemoteNestedExpands } from "@medusajs/types";
2
+ import { RemoteFetchDataCallback } from "../joiner";
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,cAAc,EACd,kBAAkB,EAElB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,uBAAuB,EAGxB,MAAM,WAAW,CAAA;AAMlB,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"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoteQuery = void 0;
4
+ const utils_1 = require("@medusajs/utils");
5
+ const joiner_1 = require("../joiner");
6
+ const medusa_module_1 = require("../medusa-module");
7
+ const BASE_PREFIX = "";
8
+ const MAX_BATCH_SIZE = 4000;
9
+ const MAX_CONCURRENT_REQUESTS = 10;
10
+ class RemoteQuery {
11
+ constructor({ modulesLoaded, customRemoteFetchData, servicesConfig = [], entitiesMap, }) {
12
+ this.modulesMap = new Map();
13
+ this.entitiesMap = new Map();
14
+ const servicesConfig_ = [...servicesConfig];
15
+ this.entitiesMap = entitiesMap;
16
+ if (!modulesLoaded?.length) {
17
+ modulesLoaded = medusa_module_1.MedusaModule.getLoadedModules().map((mod) => Object.values(mod)[0]);
18
+ }
19
+ for (const mod of modulesLoaded || []) {
20
+ if (!mod.__definition.isQueryable) {
21
+ continue;
22
+ }
23
+ const serviceName = mod.__definition.key;
24
+ if (this.modulesMap.has(serviceName)) {
25
+ throw new Error(`Duplicated instance of module ${serviceName} is not allowed.`);
26
+ }
27
+ this.modulesMap.set(serviceName, mod);
28
+ servicesConfig_.push(mod.__joinerConfig);
29
+ }
30
+ this.customRemoteFetchData = customRemoteFetchData;
31
+ this.remoteJoiner = new joiner_1.RemoteJoiner(servicesConfig_, this.remoteFetchData.bind(this), {
32
+ autoCreateServiceNameAlias: false,
33
+ entitiesMap,
34
+ });
35
+ }
36
+ getEntitiesMap() {
37
+ return this.entitiesMap;
38
+ }
39
+ setFetchDataCallback(remoteFetchData) {
40
+ this.remoteJoiner.setFetchDataCallback(remoteFetchData);
41
+ }
42
+ static getAllFieldsAndRelations(expand, prefix = BASE_PREFIX, args = {}) {
43
+ expand = JSON.parse(JSON.stringify(expand));
44
+ let fields = new Set();
45
+ let relations = [];
46
+ let shouldSelectAll = false;
47
+ for (const field of expand.fields ?? []) {
48
+ if (field === "*") {
49
+ shouldSelectAll = true;
50
+ break;
51
+ }
52
+ fields.add(prefix ? `${prefix}.${field}` : field);
53
+ }
54
+ const filters = expand.args?.find((arg) => arg.name === "filters")?.value ?? {};
55
+ if ((0, utils_1.isPresent)(filters)) {
56
+ args[prefix] = filters;
57
+ }
58
+ else if ((0, utils_1.isPresent)(expand.args)) {
59
+ args[prefix] = expand.args;
60
+ }
61
+ for (const property in expand.expands ?? {}) {
62
+ const newPrefix = prefix ? `${prefix}.${property}` : property;
63
+ relations.push(newPrefix);
64
+ fields.delete(newPrefix);
65
+ const result = RemoteQuery.getAllFieldsAndRelations(expand.expands[property], newPrefix, args);
66
+ result.select?.forEach(fields.add, fields);
67
+ relations = relations.concat(result.relations);
68
+ }
69
+ const allFields = Array.from(fields);
70
+ const select = allFields.length && !shouldSelectAll
71
+ ? allFields
72
+ : shouldSelectAll
73
+ ? undefined
74
+ : [];
75
+ return {
76
+ select,
77
+ relations,
78
+ args,
79
+ };
80
+ }
81
+ hasPagination(options) {
82
+ if (!options) {
83
+ return false;
84
+ }
85
+ const attrs = ["skip", "cursor"];
86
+ return Object.keys(options).some((key) => attrs.includes(key));
87
+ }
88
+ buildPagination(options, count) {
89
+ return {
90
+ skip: options.skip,
91
+ take: options.take,
92
+ // cursor: options.cursor, not yet supported
93
+ // TODO: next cursor
94
+ count,
95
+ };
96
+ }
97
+ async fetchRemoteDataBatched(args) {
98
+ const { serviceName, keyField, service, methodName, filters, options, ids, } = args;
99
+ const getBatch = function* (idArray, batchSize) {
100
+ for (let i = 0; i < idArray.length; i += batchSize) {
101
+ yield idArray.slice(i, i + batchSize);
102
+ }
103
+ };
104
+ const idsToFetch = getBatch(ids, MAX_BATCH_SIZE);
105
+ const results = [];
106
+ let running = 0;
107
+ const fetchPromises = [];
108
+ const processBatch = async (batch) => {
109
+ running++;
110
+ const batchFilters = { ...filters, [keyField]: batch };
111
+ let result;
112
+ try {
113
+ if (RemoteQuery.traceFetchRemoteData) {
114
+ result = await RemoteQuery.traceFetchRemoteData(async () => service[methodName](batchFilters, options), serviceName, methodName, options);
115
+ }
116
+ else {
117
+ result = await service[methodName](batchFilters, options);
118
+ }
119
+ results.push(result);
120
+ }
121
+ finally {
122
+ running--;
123
+ processAllBatches();
124
+ }
125
+ };
126
+ let batchesDone = () => { };
127
+ const awaitBatches = new Promise((ok) => {
128
+ batchesDone = ok;
129
+ });
130
+ const processAllBatches = async () => {
131
+ let isDone = false;
132
+ while (running < MAX_CONCURRENT_REQUESTS) {
133
+ const nextBatch = idsToFetch.next();
134
+ if (nextBatch.done) {
135
+ isDone = true;
136
+ break;
137
+ }
138
+ const batch = nextBatch.value;
139
+ fetchPromises.push(processBatch(batch));
140
+ }
141
+ if (isDone) {
142
+ await Promise.all(fetchPromises);
143
+ batchesDone();
144
+ }
145
+ };
146
+ processAllBatches();
147
+ await awaitBatches;
148
+ const flattenedResults = results.reduce((acc, result) => {
149
+ if (Array.isArray(result) &&
150
+ result.length === 2 &&
151
+ Array.isArray(result[0])) {
152
+ return acc.concat(result[0]);
153
+ }
154
+ return acc.concat(result);
155
+ }, []);
156
+ return flattenedResults;
157
+ }
158
+ async remoteFetchData(expand, keyField, ids, relationship) {
159
+ if (this.customRemoteFetchData) {
160
+ const resp = await this.customRemoteFetchData(expand, keyField, ids);
161
+ if (resp !== undefined) {
162
+ return resp;
163
+ }
164
+ }
165
+ return this.executeFetchRequest({
166
+ expand,
167
+ keyField,
168
+ ids,
169
+ relationship,
170
+ });
171
+ }
172
+ async executeFetchRequest(params) {
173
+ const { expand, keyField, ids, relationship } = params;
174
+ const serviceConfig = expand.serviceConfig;
175
+ const service = this.modulesMap.get(serviceConfig.serviceName);
176
+ let filters = {};
177
+ const options = {
178
+ ...RemoteQuery.getAllFieldsAndRelations(expand),
179
+ };
180
+ const availableOptions = [
181
+ "skip",
182
+ "take",
183
+ "limit",
184
+ "offset",
185
+ "cursor",
186
+ "sort",
187
+ "order",
188
+ "withDeleted",
189
+ "options",
190
+ ];
191
+ const availableOptionsAlias = new Map([
192
+ ["limit", "take"],
193
+ ["offset", "skip"],
194
+ ]);
195
+ for (const arg of expand.args || []) {
196
+ if (arg.name === "filters" && arg.value) {
197
+ filters = { ...filters, ...arg.value };
198
+ }
199
+ else if (arg.name === "context" && arg.value) {
200
+ filters["context"] = arg.value;
201
+ }
202
+ else if (availableOptions.includes(arg.name)) {
203
+ const argName = availableOptionsAlias.has(arg.name)
204
+ ? availableOptionsAlias.get(arg.name)
205
+ : arg.name;
206
+ options[argName] = arg.value;
207
+ }
208
+ }
209
+ delete options.args?.[BASE_PREFIX];
210
+ if (Object.keys(options.args ?? {}).length) {
211
+ filters = {
212
+ ...filters,
213
+ ...options?.args,
214
+ };
215
+ options.args = {};
216
+ }
217
+ const hasPagination = this.hasPagination(options);
218
+ const isIdsArray = Array.isArray(ids);
219
+ const idsLength = isIdsArray ? ids.length : 1;
220
+ if (ids) {
221
+ if (isIdsArray && !idsLength) {
222
+ if (hasPagination) {
223
+ return {
224
+ data: {
225
+ rows: [],
226
+ metadata: this.buildPagination(options, 0),
227
+ },
228
+ path: "rows",
229
+ };
230
+ }
231
+ else {
232
+ return {
233
+ data: [],
234
+ };
235
+ }
236
+ }
237
+ filters[keyField] = ids;
238
+ }
239
+ let methodName = hasPagination ? "listAndCount" : "list";
240
+ if (relationship?.args?.methodSuffix) {
241
+ methodName += (0, utils_1.toPascalCase)(relationship.args.methodSuffix);
242
+ }
243
+ else if (serviceConfig?.args?.methodSuffix) {
244
+ methodName += (0, utils_1.toPascalCase)(serviceConfig.args.methodSuffix);
245
+ }
246
+ if (typeof service[methodName] !== "function") {
247
+ throw new Error(`Method "${methodName}" does not exist on "${serviceConfig.serviceName}"`);
248
+ }
249
+ if (isIdsArray && idsLength && !hasPagination) {
250
+ options.take = null;
251
+ }
252
+ if (isIdsArray && idsLength >= MAX_BATCH_SIZE && !hasPagination) {
253
+ const data = await this.fetchRemoteDataBatched({
254
+ serviceName: serviceConfig.serviceName,
255
+ keyField,
256
+ service,
257
+ methodName,
258
+ filters,
259
+ options,
260
+ ids,
261
+ });
262
+ return { data };
263
+ }
264
+ let result;
265
+ if (RemoteQuery.traceFetchRemoteData) {
266
+ result = await RemoteQuery.traceFetchRemoteData(async () => service[methodName](filters, options), serviceConfig.serviceName, methodName, options);
267
+ }
268
+ else {
269
+ result = await service[methodName](filters, options);
270
+ }
271
+ if (hasPagination) {
272
+ const [data, count] = result;
273
+ return {
274
+ data: {
275
+ rows: data,
276
+ metadata: this.buildPagination(options, count),
277
+ },
278
+ path: "rows",
279
+ };
280
+ }
281
+ return {
282
+ data: result,
283
+ };
284
+ }
285
+ async query(query, variables, options) {
286
+ let finalQuery = query;
287
+ if ((0, utils_1.isString)(query)) {
288
+ finalQuery = joiner_1.RemoteJoiner.parseQuery(query, variables);
289
+ }
290
+ else if (!(0, utils_1.isString)(finalQuery?.service) && !(0, utils_1.isString)(finalQuery?.alias)) {
291
+ finalQuery = (0, joiner_1.toRemoteJoinerQuery)(query, variables);
292
+ }
293
+ return await this.remoteJoiner.query(finalQuery, options);
294
+ }
295
+ }
296
+ exports.RemoteQuery = RemoteQuery;
297
+ //# 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,29 @@
1
+ import { RemoteQueryFilters, RemoteQueryGraph, RemoteQueryInput } from "@medusajs/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;
22
+ fields: RemoteQueryInput<TEntity>["fields"];
23
+ filters?: RemoteQueryFilters<TEntity>;
24
+ pagination?: Partial<RemoteQueryInput<TEntity>["pagination"]>;
25
+ context?: Record<string, any>;
26
+ withDeleted?: boolean;
27
+ strategy?: "joined" | "select-in" | "balanced";
28
+ }, entitiesMap: Map<string, any>): RemoteQueryGraph<TEntity>;
29
+ //# 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,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAOxB;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,aAAa,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,EACxD,MAAM,EAAE;IACN,MAAM,EAAE,OAAO,CAAA;IACf,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;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAA;CAC/C,EACD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,gBAAgB,CAAC,OAAO,CAAC,CAgH3B"}