@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,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRemoteQuery = toRemoteQuery;
4
+ const utils_1 = require("@medusajs/utils");
5
+ const parse_filters_1 = require("./parse-filters");
6
+ const FIELDS = "__fields";
7
+ const ARGUMENTS = "__args";
8
+ /**
9
+ * convert a specific API configuration to a remote query object
10
+ *
11
+ * @param config
12
+ * @param entitiesMap
13
+ *
14
+ * @example
15
+ * const remoteQueryObject = toRemoteQuery({
16
+ * entity: "product",
17
+ * fields,
18
+ * filters: { variants: QueryFilter({ sku: "abc" }) },
19
+ * context: {
20
+ * variants: { calculated_price: QueryContext({ region_id: "reg_123" }) }
21
+ * }
22
+ * });
23
+ *
24
+ * console.log(remoteQueryObject);
25
+ */
26
+ function toRemoteQuery(config, entitiesMap) {
27
+ const { entity, fields = [], filters = {}, context = {}, withDeleted, strategy, } = config;
28
+ const joinerQuery = {
29
+ [entity]: {
30
+ __fields: [],
31
+ },
32
+ };
33
+ function processNestedObjects(target, source, topLevel = true) {
34
+ for (const key in source) {
35
+ const src = topLevel ? source : source[key];
36
+ if (!(0, utils_1.isObject)(src)) {
37
+ target[key] = src;
38
+ continue;
39
+ }
40
+ if (utils_1.QueryContext.isQueryContext(src)) {
41
+ const { __type, ...normalizedFilters } = src;
42
+ const prop = "context";
43
+ if (topLevel) {
44
+ target[ARGUMENTS] ??= {};
45
+ target[ARGUMENTS][prop] = normalizedFilters;
46
+ if (withDeleted) {
47
+ target[ARGUMENTS]["withDeleted"] = true;
48
+ }
49
+ }
50
+ else {
51
+ target[key] ??= {};
52
+ target[key][ARGUMENTS] ??= {};
53
+ target[key][ARGUMENTS][prop] = normalizedFilters;
54
+ if (withDeleted) {
55
+ target[key][ARGUMENTS]["withDeleted"] = true;
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ if (!topLevel) {
61
+ target[key] ??= {};
62
+ }
63
+ const nextTarget = topLevel ? target : target[key];
64
+ processNestedObjects(nextTarget, src, false);
65
+ }
66
+ }
67
+ }
68
+ // Process filters and context recursively
69
+ processNestedObjects(joinerQuery[entity], context, true);
70
+ for (const field of fields) {
71
+ const fieldAsString = field;
72
+ if (!fieldAsString.includes(".")) {
73
+ joinerQuery[entity][FIELDS].push(field);
74
+ continue;
75
+ }
76
+ const fieldSegments = fieldAsString.split(".");
77
+ const fieldProperty = fieldSegments.pop();
78
+ let combinedPath = "";
79
+ const deepConfigRef = fieldSegments.reduce((acc, curr) => {
80
+ combinedPath = combinedPath ? combinedPath + "." + curr : curr;
81
+ acc[curr] ??= {};
82
+ return acc[curr];
83
+ }, joinerQuery[entity]);
84
+ deepConfigRef[FIELDS] ??= [];
85
+ deepConfigRef[FIELDS].push(fieldProperty);
86
+ }
87
+ if (config.pagination) {
88
+ joinerQuery[entity][ARGUMENTS] ??= {};
89
+ joinerQuery[entity][ARGUMENTS] = {
90
+ ...joinerQuery[entity][ARGUMENTS],
91
+ ...config.pagination,
92
+ };
93
+ }
94
+ if (strategy) {
95
+ joinerQuery[entity][ARGUMENTS] ??= {};
96
+ joinerQuery[entity][ARGUMENTS]["options"] ??= {};
97
+ joinerQuery[entity][ARGUMENTS]["options"]["strategy"] = strategy;
98
+ }
99
+ if (withDeleted) {
100
+ joinerQuery[entity][ARGUMENTS] ??= {};
101
+ joinerQuery[entity][ARGUMENTS]["withDeleted"] = true;
102
+ }
103
+ (0, parse_filters_1.parseAndAssignFilters)({
104
+ entryPoint: entity,
105
+ filters: filters,
106
+ remoteQueryObject: joinerQuery,
107
+ }, entitiesMap);
108
+ return joinerQuery;
109
+ }
110
+ //# sourceMappingURL=to-remote-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-remote-query.js","sourceRoot":"","sources":["../../src/remote-query/to-remote-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function clearMedusaModuleMock(): void;
2
+ //# sourceMappingURL=medusa-module-mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medusa-module-mock.d.ts","sourceRoot":"","sources":["../../src/testing/medusa-module-mock.ts"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearMedusaModuleMock = clearMedusaModuleMock;
4
+ const joinerConfigs = new Map();
5
+ global.MedusaModule = {
6
+ getLoadedModules: () => [],
7
+ getAllJoinerConfigs: () => [...joinerConfigs.values()],
8
+ setJoinerConfig: (moduleKey, config) => {
9
+ joinerConfigs.set(moduleKey, config);
10
+ return config;
11
+ },
12
+ };
13
+ function clearMedusaModuleMock() {
14
+ joinerConfigs.clear();
15
+ }
16
+ //# sourceMappingURL=medusa-module-mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medusa-module-mock.js","sourceRoot":"","sources":["../../src/testing/medusa-module-mock.ts"],"names":[],"mappings":";;AAaA,sDAEC;AAbD,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAA;AAE3D,MAAM,CAAC,YAAY,GAAG;IACpB,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE;IAC1B,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IACtD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QACrC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAED,SAAgB,qBAAqB;IACnC,aAAa,CAAC,KAAK,EAAE,CAAA;AACvB,CAAC"}
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/medusa-module.ts","../src/__fixtures__/joiner/data.ts","../src/__mocks__/joiner/mock_data.ts","../src/__tests__/remote-query.spec.ts","../src/__tests__/joiner/helpers.spec.ts","../src/__tests__/joiner/remote-joiner-data.spec.ts","../src/__tests__/joiner/remote-joiner.spec.ts","../src/joiner/helpers.ts","../src/joiner/index.ts","../src/joiner/remote-joiner.ts","../src/remote-query/index.ts","../src/remote-query/parse-filters.ts","../src/remote-query/query.ts","../src/remote-query/remote-query.ts","../src/remote-query/to-remote-query.ts","../src/remote-query/__fixtures__/get-entities-map.ts","../src/remote-query/__fixtures__/parse-filters.ts","../src/remote-query/__fixtures__/remote-query-type.ts","../src/remote-query/__tests__/parse-filters.spec.ts","../src/remote-query/__tests__/query-locale.spec.ts","../src/remote-query/__tests__/to-remote-query.spec.ts","../src/testing/medusa-module-mock.ts"],"version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@medusajs/query",
3
+ "version": "2.17.2",
4
+ "description": "Medusa remote query and joiner",
5
+ "main": "dist/index.js",
6
+ "exports": {
7
+ ".": "./dist/index.js"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/medusajs/medusa.git",
12
+ "directory": "packages/core/query"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/medusajs/medusa/issues"
16
+ },
17
+ "engines": {
18
+ "node": ">=20"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "!dist/**/__tests__",
26
+ "!dist/**/__fixtures__",
27
+ "!dist/**/__mocks__"
28
+ ],
29
+ "author": "Medusa",
30
+ "license": "MIT",
31
+ "scripts": {
32
+ "build": "yarn run -T rimraf dist && yarn run -T tsc --build",
33
+ "test": "../../../node_modules/.bin/jest --bail --forceExit",
34
+ "watch": "yarn run -T tsc --build --watch"
35
+ },
36
+ "devDependencies": {
37
+ "@medusajs/types": "2.17.2"
38
+ },
39
+ "dependencies": {
40
+ "@medusajs/deps": "2.17.2",
41
+ "@medusajs/utils": "2.17.2"
42
+ }
43
+ }