@etohq/modules-sdk 1.0.0

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