@xxmachina/common 19.2.0 → 19.3.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.
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
3
  import { ApolloClientManagerService } from '@nx-ddd/hasura';
4
- import { switchMap } from 'rxjs';
4
+ import { switchMap, of, combineLatest } from 'rxjs';
5
5
  import { gql } from 'apollo-angular';
6
- import { getIntrospectionQuery } from 'graphql';
6
+ import { getIntrospectionQuery, parse, visit, OperationTypeNode, Kind, print } from 'graphql';
7
+ import { map } from 'rxjs/operators';
7
8
 
8
9
  class GraphqlService {
9
10
  apolloClientManager = inject(ApolloClientManagerService);
@@ -52,9 +53,271 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
52
53
  args: [{ providedIn: 'root' }]
53
54
  }] });
54
55
 
56
+ /**
57
+ * AST-based subscription splitter service
58
+ * GraphQL ASTを使用して正確にサブスクリプションを分割
59
+ */
60
+ class AstSubscriptionSplitterService {
61
+ splitSubscription(query) {
62
+ const document = typeof query === 'string' ? parse(query) : query;
63
+ // Find the subscription operation
64
+ let subscriptionOp;
65
+ visit(document, {
66
+ OperationDefinition(node) {
67
+ if (node.operation === OperationTypeNode.SUBSCRIPTION) {
68
+ subscriptionOp = node;
69
+ }
70
+ }
71
+ });
72
+ if (!subscriptionOp || !subscriptionOp.selectionSet.selections.length) {
73
+ return [];
74
+ }
75
+ const results = [];
76
+ // Process each field in the subscription
77
+ subscriptionOp.selectionSet.selections.forEach(selection => {
78
+ if (selection.kind === Kind.FIELD) {
79
+ const field = selection;
80
+ const fieldName = field.alias?.value || field.name.value;
81
+ // Extract variables used in this field
82
+ const usedVariables = this.extractUsedVariables(field);
83
+ // Create a new subscription with only this field and its used variables
84
+ const newDoc = {
85
+ kind: Kind.DOCUMENT,
86
+ definitions: [{
87
+ kind: Kind.OPERATION_DEFINITION,
88
+ operation: OperationTypeNode.SUBSCRIPTION,
89
+ name: subscriptionOp.name ? {
90
+ kind: Kind.NAME,
91
+ value: subscriptionOp.name.value
92
+ } : undefined,
93
+ variableDefinitions: this.filterVariableDefinitions(subscriptionOp.variableDefinitions || [], usedVariables),
94
+ selectionSet: {
95
+ kind: Kind.SELECTION_SET,
96
+ selections: [field]
97
+ }
98
+ }]
99
+ };
100
+ results.push({
101
+ fieldName: field.name.value,
102
+ query: print(newDoc)
103
+ });
104
+ }
105
+ });
106
+ return results;
107
+ }
108
+ /**
109
+ * Extract variables used in a field and its subfields
110
+ */
111
+ extractUsedVariables(field) {
112
+ const usedVars = new Set();
113
+ // Visit all nodes in the field to find variable references
114
+ visit(field, {
115
+ Variable(node) {
116
+ usedVars.add(node.name.value);
117
+ }
118
+ });
119
+ return usedVars;
120
+ }
121
+ /**
122
+ * Filter variable definitions to only include used variables
123
+ */
124
+ filterVariableDefinitions(definitions, usedVariables) {
125
+ return definitions.filter(def => usedVariables.has(def.variable.name.value));
126
+ }
127
+ /**
128
+ * Combine multiple observables from split queries
129
+ */
130
+ combineResults(results, fieldNames) {
131
+ if (results.length === 0) {
132
+ return of({});
133
+ }
134
+ if (results.length === 1) {
135
+ return results[0];
136
+ }
137
+ return combineLatest(results).pipe(map(data => {
138
+ const combined = {};
139
+ fieldNames.forEach((fieldName, index) => {
140
+ if (data[index] && typeof data[index] === 'object') {
141
+ Object.keys(data[index]).forEach(key => {
142
+ if (combined[key]) {
143
+ if (Array.isArray(combined[key])) {
144
+ combined[key] = [...combined[key], ...(Array.isArray(data[index][key]) ? data[index][key] : [data[index][key]])];
145
+ }
146
+ else {
147
+ combined[key] = [combined[key], data[index][key]];
148
+ }
149
+ }
150
+ else {
151
+ combined[key] = data[index][key];
152
+ }
153
+ });
154
+ }
155
+ });
156
+ return combined;
157
+ }));
158
+ }
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AstSubscriptionSplitterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
160
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AstSubscriptionSplitterService, providedIn: 'root' });
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AstSubscriptionSplitterService, decorators: [{
163
+ type: Injectable,
164
+ args: [{ providedIn: 'root' }]
165
+ }] });
166
+
167
+ /**
168
+ * GraphqlServiceを拡張して、subscription分割機能を追加
169
+ *
170
+ * GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、
171
+ * 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。
172
+ */
173
+ class GraphqlEnhancedService extends GraphqlService {
174
+ splitter = inject(AstSubscriptionSplitterService);
175
+ /**
176
+ * subscriptionクエリを実行
177
+ * デフォルトでsubscriptionは自動的に分割される
178
+ */
179
+ subscribe(graphql) {
180
+ // enableSplittingが明示的にfalseの場合、またはsubscriptionでない場合は通常の処理
181
+ const shouldSplit = graphql.enableSplitting !== false && this.isSubscription(graphql.query);
182
+ if (!shouldSplit) {
183
+ // 未使用変数を削除してから実行
184
+ const filteredGraphql = this.removeUnusedVariables(graphql);
185
+ return super.subscribe(filteredGraphql);
186
+ }
187
+ // subscriptionを分割して実行
188
+ return this.subscribeSplit(graphql);
189
+ }
190
+ /**
191
+ * subscriptionクエリを分割して並列実行し、結果を結合
192
+ */
193
+ subscribeSplit(graphql) {
194
+ const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';
195
+ // クエリを分割
196
+ const splitQueries = this.splitter.splitSubscription(graphql.query);
197
+ // 分割が不要な場合(単一フィールド)
198
+ if (splitQueries.length <= 1) {
199
+ return super.subscribe(graphql);
200
+ }
201
+ // 各クエリを並列実行
202
+ const observables = splitQueries.map((splitQuery) => {
203
+ // 使用される変数のみを抽出
204
+ const usedVars = this.extractUsedVariablesFromQuery(splitQuery.query);
205
+ const filteredVariables = this.filterVariableValues(graphql.variables, usedVars);
206
+ const splitGraphql = {
207
+ ...graphql,
208
+ query: splitQuery.query,
209
+ variables: filteredVariables
210
+ };
211
+ return super.subscribe(splitGraphql).pipe(map(result => ({
212
+ fieldName: splitQuery.fieldName,
213
+ result
214
+ })));
215
+ });
216
+ // 結果を結合
217
+ return combineLatest(observables).pipe(map(results => {
218
+ const combinedData = {};
219
+ results.forEach(({ fieldName, result }) => {
220
+ const data = result.data || result;
221
+ if (data[fieldName] !== undefined) {
222
+ combinedData[fieldName] = data[fieldName];
223
+ }
224
+ });
225
+ return {
226
+ data: combinedData,
227
+ loading: false,
228
+ networkStatus: 7
229
+ };
230
+ }));
231
+ }
232
+ /**
233
+ * クエリがsubscriptionかどうかを判定
234
+ */
235
+ isSubscription(query) {
236
+ const queryStr = typeof query === 'string' ? query : query.loc?.source?.body || '';
237
+ return queryStr.trim().startsWith('subscription');
238
+ }
239
+ /**
240
+ * クエリから使用されている変数を抽出
241
+ */
242
+ extractUsedVariablesFromQuery(query) {
243
+ const variables = new Set();
244
+ const regex = /\$(\w+)/g;
245
+ let match;
246
+ while ((match = regex.exec(query)) !== null) {
247
+ variables.add(match[1]);
248
+ }
249
+ return variables;
250
+ }
251
+ /**
252
+ * 変数値から使用される変数のみをフィルタリング
253
+ */
254
+ filterVariableValues(variables, usedVars) {
255
+ const filtered = {};
256
+ for (const [key, value] of Object.entries(variables)) {
257
+ if (usedVars.has(key)) {
258
+ filtered[key] = value;
259
+ }
260
+ }
261
+ return filtered;
262
+ }
263
+ /**
264
+ * GraphQLクエリから未使用の変数を削除
265
+ */
266
+ removeUnusedVariables(graphql) {
267
+ if (!graphql.variables || Object.keys(graphql.variables).length === 0) {
268
+ return graphql;
269
+ }
270
+ const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';
271
+ const usedVars = this.extractUsedVariablesFromQuery(queryStr);
272
+ const filteredVariables = this.filterVariableValues(graphql.variables, usedVars);
273
+ return {
274
+ ...graphql,
275
+ variables: filteredVariables
276
+ };
277
+ }
278
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: GraphqlEnhancedService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
279
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: GraphqlEnhancedService, providedIn: 'root' });
280
+ }
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: GraphqlEnhancedService, decorators: [{
282
+ type: Injectable,
283
+ args: [{ providedIn: 'root' }]
284
+ }] });
285
+
286
+ /**
287
+ * GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー
288
+ *
289
+ * 使用方法:
290
+ * ```typescript
291
+ * export default <Routes>[
292
+ * {
293
+ * path: '',
294
+ * component: YourComponent,
295
+ * providers: [
296
+ * provideGraphqlEnhancedLocally()
297
+ * ]
298
+ * }
299
+ * ];
300
+ * ```
301
+ */
302
+ function provideGraphqlEnhancedLocally() {
303
+ return [
304
+ {
305
+ provide: GraphqlService,
306
+ useClass: GraphqlEnhancedService
307
+ }
308
+ ];
309
+ }
310
+ /**
311
+ * グローバルにGraphqlEnhancedServiceを提供
312
+ * app.config.tsで使用
313
+ */
314
+ function provideGraphqlEnhancedGlobally() {
315
+ return provideGraphqlEnhancedLocally();
316
+ }
317
+
55
318
  /**
56
319
  * Generated bundle index. Do not edit.
57
320
  */
58
321
 
59
- export { GraphqlService };
322
+ export { GraphqlEnhancedService, GraphqlService, provideGraphqlEnhancedGlobally, provideGraphqlEnhancedLocally };
60
323
  //# sourceMappingURL=xxmachina-common-services-graphql.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-services-graphql.mjs","sources":["../tmp-esm2022/services/graphql/graphql.service.js","../tmp-esm2022/services/graphql/xxmachina-common-services-graphql.js"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { ApolloClientManagerService } from \"@nx-ddd/hasura\";\nimport { switchMap } from \"rxjs\";\nimport { gql } from \"apollo-angular\";\nimport { getIntrospectionQuery } from \"graphql\";\nimport * as i0 from \"@angular/core\";\nexport class GraphqlService {\n apolloClientManager = inject(ApolloClientManagerService);\n /**\n * @TODO\n * this.apolloMulti.getClientはendpoint単位でApolloClientを管理しているため、\n * _query.graphql.headersに認証情報などが含まれていないリクエストが初めに来ると、\n * {message: 'no subscriptions exist}のようなエラーが出る。\n * Headersが更新されるたびに、ApolloClientを再生成するような処理も必要。\n */\n subscribe(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.subscribe({\n query: gql `${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })));\n }\n query(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.query({\n query: gql `${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })));\n }\n getSchema(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.query({\n query: gql `${getIntrospectionQuery()}`,\n variables: {},\n fetchPolicy: 'network-only',\n })));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9ncmFwaHFsL2dyYXBocWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQVk5RCxNQUFNLE9BQU8sY0FBYztJQUNoQixtQkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVsRTs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsT0FBMEI7UUFDbEMsTUFBTSxVQUFVLEdBQWUsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFDbEUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ2pCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFpQyxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMxRSxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQXNCO1lBQzFELEtBQUssRUFBRSxHQUFHLENBQUEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxPQUEwQjtRQUM5QixNQUFNLFVBQVUsR0FBZSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDakIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQWlDLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQzFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBc0I7WUFDdEQsS0FBSyxFQUFFLEdBQUcsQ0FBQSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDNUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQW1DO1FBQzNDLE1BQU0sVUFBVSxHQUFlLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxVQUFVO1lBQ2xFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUNqQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBaUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDMUUsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFzQjtZQUN0RCxLQUFLLEVBQUUsR0FBRyxDQUFBLEdBQUcscUJBQXFCLEVBQUUsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRTtZQUNiLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO3VHQS9DVSxjQUFjOzJHQUFkLGNBQWMsY0FERixNQUFNOzsyRkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgR2V0SGVhZGVycyB9IGZyb20gXCJAbngtZGRkL2hhc3VyYVwiO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50TWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiQG54LWRkZC9oYXN1cmFcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBncWwgfSBmcm9tIFwiYXBvbGxvLWFuZ3VsYXJcIjtcbmltcG9ydCB7IERvY3VtZW50Tm9kZSwgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5IH0gZnJvbSBcImdyYXBocWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRhYmxlR3JhcGhxbCB7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmcgfCBEb2N1bWVudE5vZGU7XG4gIHZhcmlhYmxlczogb2JqZWN0O1xuICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgR2V0SGVhZGVycztcbn1cblxuZXhwb3J0IHR5cGUgRXhlY3V0YWJsZUdldFNjaGVtYUdyYXBocWwgPSBQaWNrPEV4ZWN1dGFibGVHcmFwaHFsLCAnZW5kcG9pbnQnIHwgJ2hlYWRlcnMnPjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgR3JhcGhxbFNlcnZpY2Uge1xuICByZWFkb25seSBhcG9sbG9DbGllbnRNYW5hZ2VyID0gaW5qZWN0KEFwb2xsb0NsaWVudE1hbmFnZXJTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQFRPRE9cbiAgICogdGhpcy5hcG9sbG9NdWx0aS5nZXRDbGllbnTjga9lbmRwb2ludOWNmOS9jeOBp0Fwb2xsb0NsaWVudOOCkueuoeeQhuOBl+OBpuOBhOOCi+OBn+OCgeOAgVxuICAgKiBfcXVlcnkuZ3JhcGhxbC5oZWFkZXJz44Gr6KqN6Ki85oOF5aCx44Gq44Gp44GM5ZCr44G+44KM44Gm44GE44Gq44GE44Oq44Kv44Ko44K544OI44GM5Yid44KB44Gr5p2l44KL44Go44CBXG4gICAqIHttZXNzYWdlOiAnbm8gc3Vic2NyaXB0aW9ucyBleGlzdH3jga7jgojjgYbjgarjgqjjg6njg7zjgYzlh7rjgovjgIJcbiAgICogSGVhZGVyc+OBjOabtOaWsOOBleOCjOOCi+OBn+OBs+OBq+OAgUFwb2xsb0NsaWVudOOCkuWGjeeUn+aIkOOBmeOCi+OCiOOBhuOBquWHpueQhuOCguW/heimgeOAglxuICAgKi9cbiAgc3Vic2NyaWJlKGdyYXBocWw6IEV4ZWN1dGFibGVHcmFwaHFsKSB7XG4gICAgY29uc3QgZ2V0SGVhZGVyczogR2V0SGVhZGVycyA9IHR5cGVvZiBncmFwaHFsLmhlYWRlcnMgPT09ICdmdW5jdGlvbicgXG4gICAgICA/IGdyYXBocWwuaGVhZGVycyBcbiAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGdyYXBocWwuaGVhZGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9DbGllbnRNYW5hZ2VyLmdldENsaWVudChncmFwaHFsLmVuZHBvaW50LCBnZXRIZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjbGllbnQpID0+IGNsaWVudC5zdWJzY3JpYmU8UmVjb3JkPHN0cmluZywgYW55Pj4oe1xuICAgICAgICBxdWVyeTogZ3FsYCR7Z3JhcGhxbC5xdWVyeX1gLFxuICAgICAgICB2YXJpYWJsZXM6IGdyYXBocWwudmFyaWFibGVzLFxuICAgICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgICB9KSksXG4gICAgKTtcbiAgfVxuXG4gIHF1ZXJ5KGdyYXBocWw6IEV4ZWN1dGFibGVHcmFwaHFsKSB7XG4gICAgY29uc3QgZ2V0SGVhZGVyczogR2V0SGVhZGVycyA9IHR5cGVvZiBncmFwaHFsLmhlYWRlcnMgPT09ICdmdW5jdGlvbicgXG4gICAgICA/IGdyYXBocWwuaGVhZGVycyBcbiAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGdyYXBocWwuaGVhZGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9DbGllbnRNYW5hZ2VyLmdldENsaWVudChncmFwaHFsLmVuZHBvaW50LCBnZXRIZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjbGllbnQpID0+IGNsaWVudC5xdWVyeTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7XG4gICAgICAgIHF1ZXJ5OiBncWxgJHtncmFwaHFsLnF1ZXJ5fWAsXG4gICAgICAgIHZhcmlhYmxlczogZ3JhcGhxbC52YXJpYWJsZXMsXG4gICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0U2NoZW1hKGdyYXBocWw6IEV4ZWN1dGFibGVHZXRTY2hlbWFHcmFwaHFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBnZXRIZWFkZXJzOiBHZXRIZWFkZXJzID0gdHlwZW9mIGdyYXBocWwuaGVhZGVycyA9PT0gJ2Z1bmN0aW9uJyBcbiAgICAgID8gZ3JhcGhxbC5oZWFkZXJzIFxuICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoZ3JhcGhxbC5oZWFkZXJzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pO1xuICAgIHJldHVybiB0aGlzLmFwb2xsb0NsaWVudE1hbmFnZXIuZ2V0Q2xpZW50KGdyYXBocWwuZW5kcG9pbnQsIGdldEhlYWRlcnMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNsaWVudCkgPT4gY2xpZW50LnF1ZXJ5PFJlY29yZDxzdHJpbmcsIGFueT4+KHtcbiAgICAgICAgcXVlcnk6IGdxbGAke2dldEludHJvc3BlY3Rpb25RdWVyeSgpfWAsXG4gICAgICAgIHZhcmlhYmxlczoge30sXG4gICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbW1vbi1zZXJ2aWNlcy1ncmFwaHFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9ncmFwaHFsL3h4bWFjaGluYS1jb21tb24tc2VydmljZXMtZ3JhcGhxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-common-services-graphql.mjs","sources":["../tmp-esm2022/services/graphql/graphql.service.js","../tmp-esm2022/services/graphql/subscription-splitter/ast-splitter.service.js","../tmp-esm2022/services/graphql/graphql-enhanced.service.js","../tmp-esm2022/services/graphql/graphql-enhanced.provider.js","../tmp-esm2022/services/graphql/xxmachina-common-services-graphql.js"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { ApolloClientManagerService } from \"@nx-ddd/hasura\";\nimport { switchMap } from \"rxjs\";\nimport { gql } from \"apollo-angular\";\nimport { getIntrospectionQuery } from \"graphql\";\nimport * as i0 from \"@angular/core\";\nexport class GraphqlService {\n apolloClientManager = inject(ApolloClientManagerService);\n /**\n * @TODO\n * this.apolloMulti.getClientはendpoint単位でApolloClientを管理しているため、\n * _query.graphql.headersに認証情報などが含まれていないリクエストが初めに来ると、\n * {message: 'no subscriptions exist}のようなエラーが出る。\n * Headersが更新されるたびに、ApolloClientを再生成するような処理も必要。\n */\n subscribe(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.subscribe({\n query: gql `${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })));\n }\n query(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.query({\n query: gql `${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })));\n }\n getSchema(graphql) {\n const getHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(switchMap((client) => client.query({\n query: gql `${getIntrospectionQuery()}`,\n variables: {},\n fetchPolicy: 'network-only',\n })));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9ncmFwaHFsL2dyYXBocWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQVk5RCxNQUFNLE9BQU8sY0FBYztJQUNoQixtQkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVsRTs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsT0FBMEI7UUFDbEMsTUFBTSxVQUFVLEdBQWUsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFDbEUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ2pCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFpQyxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMxRSxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQXNCO1lBQzFELEtBQUssRUFBRSxHQUFHLENBQUEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxPQUEwQjtRQUM5QixNQUFNLFVBQVUsR0FBZSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDakIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQWlDLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQzFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBc0I7WUFDdEQsS0FBSyxFQUFFLEdBQUcsQ0FBQSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDNUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQW1DO1FBQzNDLE1BQU0sVUFBVSxHQUFlLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxVQUFVO1lBQ2xFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUNqQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBaUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDMUUsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFzQjtZQUN0RCxLQUFLLEVBQUUsR0FBRyxDQUFBLEdBQUcscUJBQXFCLEVBQUUsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRTtZQUNiLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO3VHQS9DVSxjQUFjOzJHQUFkLGNBQWMsY0FERixNQUFNOzsyRkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgR2V0SGVhZGVycyB9IGZyb20gXCJAbngtZGRkL2hhc3VyYVwiO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50TWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiQG54LWRkZC9oYXN1cmFcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBncWwgfSBmcm9tIFwiYXBvbGxvLWFuZ3VsYXJcIjtcbmltcG9ydCB7IERvY3VtZW50Tm9kZSwgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5IH0gZnJvbSBcImdyYXBocWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRhYmxlR3JhcGhxbCB7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmcgfCBEb2N1bWVudE5vZGU7XG4gIHZhcmlhYmxlczogb2JqZWN0O1xuICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgR2V0SGVhZGVycztcbn1cblxuZXhwb3J0IHR5cGUgRXhlY3V0YWJsZUdldFNjaGVtYUdyYXBocWwgPSBQaWNrPEV4ZWN1dGFibGVHcmFwaHFsLCAnZW5kcG9pbnQnIHwgJ2hlYWRlcnMnPjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgR3JhcGhxbFNlcnZpY2Uge1xuICByZWFkb25seSBhcG9sbG9DbGllbnRNYW5hZ2VyID0gaW5qZWN0KEFwb2xsb0NsaWVudE1hbmFnZXJTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQFRPRE9cbiAgICogdGhpcy5hcG9sbG9NdWx0aS5nZXRDbGllbnTjga9lbmRwb2ludOWNmOS9jeOBp0Fwb2xsb0NsaWVudOOCkueuoeeQhuOBl+OBpuOBhOOCi+OBn+OCgeOAgVxuICAgKiBfcXVlcnkuZ3JhcGhxbC5oZWFkZXJz44Gr6KqN6Ki85oOF5aCx44Gq44Gp44GM5ZCr44G+44KM44Gm44GE44Gq44GE44Oq44Kv44Ko44K544OI44GM5Yid44KB44Gr5p2l44KL44Go44CBXG4gICAqIHttZXNzYWdlOiAnbm8gc3Vic2NyaXB0aW9ucyBleGlzdH3jga7jgojjgYbjgarjgqjjg6njg7zjgYzlh7rjgovjgIJcbiAgICogSGVhZGVyc+OBjOabtOaWsOOBleOCjOOCi+OBn+OBs+OBq+OAgUFwb2xsb0NsaWVudOOCkuWGjeeUn+aIkOOBmeOCi+OCiOOBhuOBquWHpueQhuOCguW/heimgeOAglxuICAgKi9cbiAgc3Vic2NyaWJlKGdyYXBocWw6IEV4ZWN1dGFibGVHcmFwaHFsKSB7XG4gICAgY29uc3QgZ2V0SGVhZGVyczogR2V0SGVhZGVycyA9IHR5cGVvZiBncmFwaHFsLmhlYWRlcnMgPT09ICdmdW5jdGlvbicgXG4gICAgICA/IGdyYXBocWwuaGVhZGVycyBcbiAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGdyYXBocWwuaGVhZGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9DbGllbnRNYW5hZ2VyLmdldENsaWVudChncmFwaHFsLmVuZHBvaW50LCBnZXRIZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjbGllbnQpID0+IGNsaWVudC5zdWJzY3JpYmU8UmVjb3JkPHN0cmluZywgYW55Pj4oe1xuICAgICAgICBxdWVyeTogZ3FsYCR7Z3JhcGhxbC5xdWVyeX1gLFxuICAgICAgICB2YXJpYWJsZXM6IGdyYXBocWwudmFyaWFibGVzLFxuICAgICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgICB9KSksXG4gICAgKTtcbiAgfVxuXG4gIHF1ZXJ5KGdyYXBocWw6IEV4ZWN1dGFibGVHcmFwaHFsKSB7XG4gICAgY29uc3QgZ2V0SGVhZGVyczogR2V0SGVhZGVycyA9IHR5cGVvZiBncmFwaHFsLmhlYWRlcnMgPT09ICdmdW5jdGlvbicgXG4gICAgICA/IGdyYXBocWwuaGVhZGVycyBcbiAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGdyYXBocWwuaGVhZGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9DbGllbnRNYW5hZ2VyLmdldENsaWVudChncmFwaHFsLmVuZHBvaW50LCBnZXRIZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjbGllbnQpID0+IGNsaWVudC5xdWVyeTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7XG4gICAgICAgIHF1ZXJ5OiBncWxgJHtncmFwaHFsLnF1ZXJ5fWAsXG4gICAgICAgIHZhcmlhYmxlczogZ3JhcGhxbC52YXJpYWJsZXMsXG4gICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0U2NoZW1hKGdyYXBocWw6IEV4ZWN1dGFibGVHZXRTY2hlbWFHcmFwaHFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBnZXRIZWFkZXJzOiBHZXRIZWFkZXJzID0gdHlwZW9mIGdyYXBocWwuaGVhZGVycyA9PT0gJ2Z1bmN0aW9uJyBcbiAgICAgID8gZ3JhcGhxbC5oZWFkZXJzIFxuICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoZ3JhcGhxbC5oZWFkZXJzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pO1xuICAgIHJldHVybiB0aGlzLmFwb2xsb0NsaWVudE1hbmFnZXIuZ2V0Q2xpZW50KGdyYXBocWwuZW5kcG9pbnQsIGdldEhlYWRlcnMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNsaWVudCkgPT4gY2xpZW50LnF1ZXJ5PFJlY29yZDxzdHJpbmcsIGFueT4+KHtcbiAgICAgICAgcXVlcnk6IGdxbGAke2dldEludHJvc3BlY3Rpb25RdWVyeSgpfWAsXG4gICAgICAgIHZhcmlhYmxlczoge30sXG4gICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { parse, print, visit, Kind, OperationTypeNode } from 'graphql';\nimport { combineLatest, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\n/**\n * AST-based subscription splitter service\n * GraphQL ASTを使用して正確にサブスクリプションを分割\n */\nexport class AstSubscriptionSplitterService {\n splitSubscription(query) {\n const document = typeof query === 'string' ? parse(query) : query;\n // Find the subscription operation\n let subscriptionOp;\n visit(document, {\n OperationDefinition(node) {\n if (node.operation === OperationTypeNode.SUBSCRIPTION) {\n subscriptionOp = node;\n }\n }\n });\n if (!subscriptionOp || !subscriptionOp.selectionSet.selections.length) {\n return [];\n }\n const results = [];\n // Process each field in the subscription\n subscriptionOp.selectionSet.selections.forEach(selection => {\n if (selection.kind === Kind.FIELD) {\n const field = selection;\n const fieldName = field.alias?.value || field.name.value;\n // Extract variables used in this field\n const usedVariables = this.extractUsedVariables(field);\n // Create a new subscription with only this field and its used variables\n const newDoc = {\n kind: Kind.DOCUMENT,\n definitions: [{\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.SUBSCRIPTION,\n name: subscriptionOp.name ? {\n kind: Kind.NAME,\n value: subscriptionOp.name.value\n } : undefined,\n variableDefinitions: this.filterVariableDefinitions(subscriptionOp.variableDefinitions || [], usedVariables),\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: [field]\n }\n }]\n };\n results.push({\n fieldName: field.name.value,\n query: print(newDoc)\n });\n }\n });\n return results;\n }\n /**\n * Extract variables used in a field and its subfields\n */\n extractUsedVariables(field) {\n const usedVars = new Set();\n // Visit all nodes in the field to find variable references\n visit(field, {\n Variable(node) {\n usedVars.add(node.name.value);\n }\n });\n return usedVars;\n }\n /**\n * Filter variable definitions to only include used variables\n */\n filterVariableDefinitions(definitions, usedVariables) {\n return definitions.filter(def => usedVariables.has(def.variable.name.value));\n }\n /**\n * Combine multiple observables from split queries\n */\n combineResults(results, fieldNames) {\n if (results.length === 0) {\n return of({});\n }\n if (results.length === 1) {\n return results[0];\n }\n return combineLatest(results).pipe(map(data => {\n const combined = {};\n fieldNames.forEach((fieldName, index) => {\n if (data[index] && typeof data[index] === 'object') {\n Object.keys(data[index]).forEach(key => {\n if (combined[key]) {\n if (Array.isArray(combined[key])) {\n combined[key] = [...combined[key], ...(Array.isArray(data[index][key]) ? data[index][key] : [data[index][key]])];\n }\n else {\n combined[key] = [combined[key], data[index][key]];\n }\n }\n else {\n combined[key] = data[index][key];\n }\n });\n }\n });\n return combined;\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AstSubscriptionSplitterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AstSubscriptionSplitterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AstSubscriptionSplitterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LXNwbGl0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2dyYXBocWwvc3Vic2NyaXB0aW9uLXNwbGl0dGVyL2FzdC1zcGxpdHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQU1MLElBQUksRUFDSixpQkFBaUIsRUFDbEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFjLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVyQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBRXpDLGlCQUFpQixDQUFDLEtBQTRCO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFbEUsa0NBQWtDO1FBQ2xDLElBQUksY0FBbUQsQ0FBQztRQUN4RCxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2QsbUJBQW1CLENBQUMsSUFBSTtnQkFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN0RCxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RSxPQUFPLEVBQUUsQ0FB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LFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzt1R0E3SFUsOEJBQThCOzJHQUE5Qiw4QkFBOEIsY0FEakIsTUFBTTs7MkZBQ25CLDhCQUE4QjtrQkFEMUMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBcbiAgRG9jdW1lbnROb2RlLCBcbiAgcGFyc2UsIFxuICBwcmludCxcbiAgdmlzaXQsXG4gIE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlLFxuICBGaWVsZE5vZGUsXG4gIFZhcmlhYmxlRGVmaW5pdGlvbk5vZGUsXG4gIFNlbGVjdGlvblNldE5vZGUsXG4gIEFyZ3VtZW50Tm9kZSxcbiAgS2luZCxcbiAgT3BlcmF0aW9uVHlwZU5vZGVcbn0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEFTVC1iYXNlZCBzdWJzY3JpcHRpb24gc3BsaXR0ZXIgc2VydmljZVxuICogR3JhcGhRTCBBU1TjgpLkvb/nlKjjgZfjgabmraPnorrjgavjgrXjg5bjgrnjgq/jg6rjg5fjgrfjg6fjg7PjgpLliIblibJcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBc3RTdWJzY3JpcHRpb25TcGxpdHRlclNlcnZpY2Uge1xuICBcbiAgc3BsaXRTdWJzY3JpcHRpb24ocXVlcnk6IHN0cmluZyB8IERvY3VtZW50Tm9kZSk6IHsgZmllbGROYW1lOiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfVtdIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycgPyBwYXJzZShxdWVyeSkgOiBxdWVyeTtcbiAgICBcbiAgICAvLyBGaW5kIHRoZSBzdWJzY3JpcHRpb24gb3BlcmF0aW9uXG4gICAgbGV0IHN1YnNjcmlwdGlvbk9wOiBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSB8IHVuZGVmaW5lZDtcbiAgICB2aXNpdChkb2N1bWVudCwge1xuICAgICAgT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm9wZXJhdGlvbiA9PT0gT3BlcmF0aW9uVHlwZU5vZGUuU1VCU0NSSVBUSU9OKSB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uT3AgPSBub2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgaWYgKCFzdWJzY3JpcHRpb25PcCB8fCAhc3Vic2NyaXB0aW9uT3Auc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJlc3VsdHM6IHsgZmllbGROYW1lOiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfVtdID0gW107XG4gICAgXG4gICAgLy8gUHJvY2VzcyBlYWNoIGZpZWxkIGluIHRoZSBzdWJzY3JpcHRpb25cbiAgICBzdWJzY3JpcHRpb25PcC5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5mb3JFYWNoKHNlbGVjdGlvbiA9PiB7XG4gICAgICBpZiAoc2VsZWN0aW9uLmtpbmQgPT09IEtpbmQuRklFTEQpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBzZWxlY3Rpb24gYXMgRmllbGROb2RlO1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC5hbGlhcz8udmFsdWUgfHwgZmllbGQubmFtZS52YWx1ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIEV4dHJhY3QgdmFyaWFibGVzIHVzZWQgaW4gdGhpcyBmaWVsZFxuICAgICAgICBjb25zdCB1c2VkVmFyaWFibGVzID0gdGhpcy5leHRyYWN0VXNlZFZhcmlhYmxlcyhmaWVsZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc3Vic2NyaXB0aW9uIHdpdGggb25seSB0aGlzIGZpZWxkIGFuZCBpdHMgdXNlZCB2YXJpYWJsZXNcbiAgICAgICAgY29uc3QgbmV3RG9jOiBEb2N1bWVudE5vZGUgPSB7XG4gICAgICAgICAga2luZDogS2luZC5ET0NVTUVOVCxcbiAgICAgICAgICBkZWZpbml0aW9uczogW3tcbiAgICAgICAgICAgIGtpbmQ6IEtpbmQuT1BFUkFUSU9OX0RFRklOSVRJT04sXG4gICAgICAgICAgICBvcGVyYXRpb246IE9wZXJhdGlvblR5cGVOb2RlLlNVQlNDUklQVElPTixcbiAgICAgICAgICAgIG5hbWU6IHN1YnNjcmlwdGlvbk9wLm5hbWUgPyB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgICAgdmFsdWU6IHN1YnNjcmlwdGlvbk9wLm5hbWUudmFsdWVcbiAgICAgICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YXJpYWJsZURlZmluaXRpb25zOiB0aGlzLmZpbHRlclZhcmlhYmxlRGVmaW5pdGlvbnMoXG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbk9wLnZhcmlhYmxlRGVmaW5pdGlvbnMgfHwgW10sXG4gICAgICAgICAgICAgIHVzZWRWYXJpYWJsZXNcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxuICAgICAgICAgICAgICBzZWxlY3Rpb25zOiBbZmllbGRdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgZmllbGROYW1lOiBmaWVsZC5uYW1lLnZhbHVlLFxuICAgICAgICAgIHF1ZXJ5OiBwcmludChuZXdEb2MpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIFxuICAvKipcbiAgICogRXh0cmFjdCB2YXJpYWJsZXMgdXNlZCBpbiBhIGZpZWxkIGFuZCBpdHMgc3ViZmllbGRzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RVc2VkVmFyaWFibGVzKGZpZWxkOiBGaWVsZE5vZGUpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgdXNlZFZhcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBcbiAgICAvLyBWaXNpdCBhbGwgbm9kZXMgaW4gdGhlIGZpZWxkIHRvIGZpbmQgdmFyaWFibGUgcmVmZXJlbmNlc1xuICAgIHZpc2l0KGZpZWxkLCB7XG4gICAgICBWYXJpYWJsZShub2RlKSB7XG4gICAgICAgIHVzZWRWYXJzLmFkZChub2RlLm5hbWUudmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiB1c2VkVmFycztcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZpbHRlciB2YXJpYWJsZSBkZWZpbml0aW9ucyB0byBvbmx5IGluY2x1ZGUgdXNlZCB2YXJpYWJsZXNcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyVmFyaWFibGVEZWZpbml0aW9ucyhcbiAgICBkZWZpbml0aW9uczogUmVhZG9ubHlBcnJheTxWYXJpYWJsZURlZmluaXRpb25Ob2RlPixcbiAgICB1c2VkVmFyaWFibGVzOiBTZXQ8c3RyaW5nPlxuICApOiBWYXJpYWJsZURlZmluaXRpb25Ob2RlW10ge1xuICAgIHJldHVybiBkZWZpbml0aW9ucy5maWx0ZXIoZGVmID0+IFxuICAgICAgdXNlZFZhcmlhYmxlcy5oYXMoZGVmLnZhcmlhYmxlLm5hbWUudmFsdWUpXG4gICAgKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENvbWJpbmUgbXVsdGlwbGUgb2JzZXJ2YWJsZXMgZnJvbSBzcGxpdCBxdWVyaWVzXG4gICAqL1xuICBjb21iaW5lUmVzdWx0cyhcbiAgICByZXN1bHRzOiBPYnNlcnZhYmxlPGFueT5bXSxcbiAgICBmaWVsZE5hbWVzOiBzdHJpbmdbXVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gcmVzdWx0c1swXTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocmVzdWx0cykucGlwZShcbiAgICAgIG1hcChkYXRhID0+IHtcbiAgICAgICAgY29uc3QgY29tYmluZWQ6IGFueSA9IHt9O1xuICAgICAgICBmaWVsZE5hbWVzLmZvckVhY2goKGZpZWxkTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YVtpbmRleF0gJiYgdHlwZW9mIGRhdGFbaW5kZXhdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YVtpbmRleF0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkW2tleV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb21iaW5lZFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgY29tYmluZWRba2V5XSA9IFsuLi5jb21iaW5lZFtrZXldLCAuLi4oQXJyYXkuaXNBcnJheShkYXRhW2luZGV4XVtrZXldKSA/IGRhdGFbaW5kZXhdW2tleV0gOiBbZGF0YVtpbmRleF1ba2V5XV0pXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29tYmluZWRba2V5XSA9IFtjb21iaW5lZFtrZXldLCBkYXRhW2luZGV4XVtrZXldXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29tYmluZWRba2V5XSA9IGRhdGFbaW5kZXhdW2tleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb21iaW5lZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufSJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { GraphqlService } from './graphql.service';\nimport { AstSubscriptionSplitterService } from './subscription-splitter/ast-splitter.service';\nimport * as i0 from \"@angular/core\";\n/**\n * GraphqlServiceを拡張して、subscription分割機能を追加\n *\n * GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、\n * 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。\n */\nexport class GraphqlEnhancedService extends GraphqlService {\n splitter = inject(AstSubscriptionSplitterService);\n /**\n * subscriptionクエリを実行\n * デフォルトでsubscriptionは自動的に分割される\n */\n subscribe(graphql) {\n // enableSplittingが明示的にfalseの場合、またはsubscriptionでない場合は通常の処理\n const shouldSplit = graphql.enableSplitting !== false && this.isSubscription(graphql.query);\n if (!shouldSplit) {\n // 未使用変数を削除してから実行\n const filteredGraphql = this.removeUnusedVariables(graphql);\n return super.subscribe(filteredGraphql);\n }\n // subscriptionを分割して実行\n return this.subscribeSplit(graphql);\n }\n /**\n * subscriptionクエリを分割して並列実行し、結果を結合\n */\n subscribeSplit(graphql) {\n const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';\n // クエリを分割\n const splitQueries = this.splitter.splitSubscription(graphql.query);\n // 分割が不要な場合(単一フィールド)\n if (splitQueries.length <= 1) {\n return super.subscribe(graphql);\n }\n // 各クエリを並列実行\n const observables = splitQueries.map((splitQuery) => {\n // 使用される変数のみを抽出\n const usedVars = this.extractUsedVariablesFromQuery(splitQuery.query);\n const filteredVariables = this.filterVariableValues(graphql.variables, usedVars);\n const splitGraphql = {\n ...graphql,\n query: splitQuery.query,\n variables: filteredVariables\n };\n return super.subscribe(splitGraphql).pipe(map(result => ({\n fieldName: splitQuery.fieldName,\n result\n })));\n });\n // 結果を結合\n return combineLatest(observables).pipe(map(results => {\n const combinedData = {};\n results.forEach(({ fieldName, result }) => {\n const data = result.data || result;\n if (data[fieldName] !== undefined) {\n combinedData[fieldName] = data[fieldName];\n }\n });\n return {\n data: combinedData,\n loading: false,\n networkStatus: 7\n };\n }));\n }\n /**\n * クエリがsubscriptionかどうかを判定\n */\n isSubscription(query) {\n const queryStr = typeof query === 'string' ? query : query.loc?.source?.body || '';\n return queryStr.trim().startsWith('subscription');\n }\n /**\n * クエリから使用されている変数を抽出\n */\n extractUsedVariablesFromQuery(query) {\n const variables = new Set();\n const regex = /\\$(\\w+)/g;\n let match;\n while ((match = regex.exec(query)) !== null) {\n variables.add(match[1]);\n }\n return variables;\n }\n /**\n * 変数値から使用される変数のみをフィルタリング\n */\n filterVariableValues(variables, usedVars) {\n const filtered = {};\n for (const [key, value] of Object.entries(variables)) {\n if (usedVars.has(key)) {\n filtered[key] = value;\n }\n }\n return filtered;\n }\n /**\n * GraphQLクエリから未使用の変数を削除\n */\n removeUnusedVariables(graphql) {\n if (!graphql.variables || Object.keys(graphql.variables).length === 0) {\n return graphql;\n }\n const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';\n const usedVars = this.extractUsedVariablesFromQuery(queryStr);\n const filteredVariables = this.filterVariableValues(graphql.variables, usedVars);\n return {\n ...graphql,\n variables: filteredVariables\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlEnhancedService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlEnhancedService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GraphqlEnhancedService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1lbmhhbmNlZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9ncmFwaHFsL2dyYXBocWwtZW5oYW5jZWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsYUFBYSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQU85Rjs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBQ3ZDLFFBQVEsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUVuRTs7O09BR0c7SUFDTSxTQUFTLENBQUMsT0FBdUM7UUFDeEQsMERBQTBEO1FBQzFELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixpQkFBaUI7WUFDakIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7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WUFDTCxHQUFHLE9BQU87WUFDVixTQUFTLEVBQUUsaUJBQWlCO1NBQzdCLENBQUM7SUFDSixDQUFDO3VHQXBJVSxzQkFBc0I7MkdBQXRCLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBHcmFwaHFsU2VydmljZSwgRXhlY3V0YWJsZUdyYXBocWwgfSBmcm9tICcuL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBBc3RTdWJzY3JpcHRpb25TcGxpdHRlclNlcnZpY2UgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1zcGxpdHRlci9hc3Qtc3BsaXR0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGFibGVHcmFwaHFsV2l0aFNwbGl0dGluZyBleHRlbmRzIEV4ZWN1dGFibGVHcmFwaHFsIHtcbiAgZW5hYmxlU3BsaXR0aW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHcmFwaHFsU2VydmljZeOCkuaLoeW8teOBl+OBpuOAgXN1YnNjcmlwdGlvbuWIhuWJsuapn+iDveOCkui/veWKoFxuICogXG4gKiBHcmFwaFFML0hhc3VyYeOBruWItumZkOOAjDHjgaTjga5zdWJzY3JpcHRpb27jgavjga8x44Gk44Gu44OI44OD44OX44Os44OZ44Or44OV44Kj44O844Or44OJ44Gu44G/44CN44KS5Zue6YG/44GX44CBXG4gKiDopIfmlbDjga7jg5XjgqPjg7zjg6vjg4njgpLlkKvjgoBzdWJzY3JpcHRpb27jgpLoh6rli5XnmoTjgavliIblibLjgZfjgabkuKbliJflrp/ooYzjgZfjgb7jgZnjgIJcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBHcmFwaHFsRW5oYW5jZWRTZXJ2aWNlIGV4dGVuZHMgR3JhcGhxbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHNwbGl0dGVyID0gaW5qZWN0KEFzdFN1YnNjcmlwdGlvblNwbGl0dGVyU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIHN1YnNjcmlwdGlvbuOCr+OCqOODquOCkuWun+ihjFxuICAgKiDjg4fjg5Xjgqnjg6vjg4jjgadzdWJzY3JpcHRpb27jga/oh6rli5XnmoTjgavliIblibLjgZXjgozjgotcbiAgICovXG4gIG92ZXJyaWRlIHN1YnNjcmliZShncmFwaHFsOiBFeGVjdXRhYmxlR3JhcGhxbFdpdGhTcGxpdHRpbmcpOiBPYnNlcnZhYmxlPEZldGNoUmVzdWx0PGFueT4+IHtcbiAgICAvLyBlbmFibGVTcGxpdHRpbmfjgYzmmI7npLrnmoTjgatmYWxzZeOBruWgtOWQiOOAgeOBvuOBn+OBr3N1YnNjcmlwdGlvbuOBp+OBquOBhOWgtOWQiOOBr+mAmuW4uOOBruWHpueQhlxuICAgIGNvbnN0IHNob3VsZFNwbGl0ID0gZ3JhcGhxbC5lbmFibGVTcGxpdHRpbmcgIT09IGZhbHNlICYmIHRoaXMuaXNTdWJzY3JpcHRpb24oZ3JhcGhxbC5xdWVyeSk7XG4gICAgXG4gICAgaWYgKCFzaG91bGRTcGxpdCkge1xuICAgICAgLy8g5pyq5L2/55So5aSJ5pWw44KS5YmK6Zmk44GX44Gm44GL44KJ5a6f6KGMXG4gICAgICBjb25zdCBmaWx0ZXJlZEdyYXBocWwgPSB0aGlzLnJlbW92ZVVudXNlZFZhcmlhYmxlcyhncmFwaHFsKTtcbiAgICAgIHJldHVybiBzdXBlci5zdWJzY3JpYmUoZmlsdGVyZWRHcmFwaHFsKTtcbiAgICB9XG5cbiAgICAvLyBzdWJzY3JpcHRpb27jgpLliIblibLjgZfjgablrp/ooYxcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVTcGxpdChncmFwaHFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdWJzY3JpcHRpb27jgq/jgqjjg6rjgpLliIblibLjgZfjgabkuKbliJflrp/ooYzjgZfjgIHntZDmnpzjgpLntZDlkIhcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlU3BsaXQoZ3JhcGhxbDogRXhlY3V0YWJsZUdyYXBocWwpOiBPYnNlcnZhYmxlPEZldGNoUmVzdWx0PGFueT4+IHtcbiAgICBjb25zdCBxdWVyeVN0ciA9IHR5cGVvZiBncmFwaHFsLnF1ZXJ5ID09PSAnc3RyaW5nJyA/IGdyYXBocWwucXVlcnkgOiBncmFwaHFsLnF1ZXJ5LmxvYz8uc291cmNlPy5ib2R5IHx8ICcnO1xuICAgIFxuICAgIC8vIOOCr+OCqOODquOCkuWIhuWJslxuICAgIGNvbnN0IHNwbGl0UXVlcmllcyA9IHRoaXMuc3BsaXR0ZXIuc3BsaXRTdWJzY3JpcHRpb24oZ3JhcGhxbC5xdWVyeSk7XG4gICAgXG4gICAgLy8g5YiG5Ymy44GM5LiN6KaB44Gq5aC05ZCI77yI5Y2Y5LiA44OV44Kj44O844Or44OJ77yJXG4gICAgaWYgKHNwbGl0UXVlcmllcy5sZW5ndGggPD0gMSkge1xuICAgICAgcmV0dXJuIHN1cGVyLnN1YnNjcmliZShncmFwaHFsKTtcbiAgICB9XG5cbiAgICBcbiAgICAvLyDlkITjgq/jgqjjg6rjgpLkuKbliJflrp/ooYxcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IHNwbGl0UXVlcmllcy5tYXAoKHNwbGl0UXVlcnkpID0+IHtcbiAgICAgIC8vIOS9v+eUqOOBleOCjOOCi+WkieaVsOOBruOBv+OCkuaKveWHulxuICAgICAgY29uc3QgdXNlZFZhcnMgPSB0aGlzLmV4dHJhY3RVc2VkVmFyaWFibGVzRnJvbVF1ZXJ5KHNwbGl0UXVlcnkucXVlcnkpO1xuICAgICAgY29uc3QgZmlsdGVyZWRWYXJpYWJsZXMgPSB0aGlzLmZpbHRlclZhcmlhYmxlVmFsdWVzKGdyYXBocWwudmFyaWFibGVzLCB1c2VkVmFycyk7XG4gICAgICBcbiAgICAgIGNvbnN0IHNwbGl0R3JhcGhxbDogRXhlY3V0YWJsZUdyYXBocWwgPSB7XG4gICAgICAgIC4uLmdyYXBocWwsXG4gICAgICAgIHF1ZXJ5OiBzcGxpdFF1ZXJ5LnF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IGZpbHRlcmVkVmFyaWFibGVzXG4gICAgICB9O1xuICAgICAgXG4gICAgICByZXR1cm4gc3VwZXIuc3Vic2NyaWJlKHNwbGl0R3JhcGhxbCkucGlwZShcbiAgICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICAgIGZpZWxkTmFtZTogc3BsaXRRdWVyeS5maWVsZE5hbWUsXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIOe1kOaenOOCkue1kOWQiFxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KG9ic2VydmFibGVzKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICBjb25zdCBjb21iaW5lZERhdGE6IGFueSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgcmVzdWx0cy5mb3JFYWNoKCh7IGZpZWxkTmFtZSwgcmVzdWx0IH0pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEgfHwgcmVzdWx0O1xuICAgICAgICAgIGlmIChkYXRhW2ZpZWxkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29tYmluZWREYXRhW2ZpZWxkTmFtZV0gPSBkYXRhW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogY29tYmluZWREYXRhLFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IDdcbiAgICAgICAgfSBhcyBGZXRjaFJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDjgq/jgqjjg6rjgYxzdWJzY3JpcHRpb27jgYvjganjgYbjgYvjgpLliKTlrppcbiAgICovXG4gIHByaXZhdGUgaXNTdWJzY3JpcHRpb24ocXVlcnk6IHN0cmluZyB8IERvY3VtZW50Tm9kZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1ZXJ5U3RyID0gdHlwZW9mIHF1ZXJ5ID09PSAnc3RyaW5nJyA/IHF1ZXJ5IDogcXVlcnkubG9jPy5zb3VyY2U/LmJvZHkgfHwgJyc7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyLnRyaW0oKS5zdGFydHNXaXRoKCdzdWJzY3JpcHRpb24nKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIOOCr+OCqOODquOBi+OCieS9v+eUqOOBleOCjOOBpuOBhOOCi+WkieaVsOOCkuaKveWHulxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0VXNlZFZhcmlhYmxlc0Zyb21RdWVyeShxdWVyeTogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xcJChcXHcrKS9nO1xuICAgIGxldCBtYXRjaDtcbiAgICBcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhxdWVyeSkpICE9PSBudWxsKSB7XG4gICAgICB2YXJpYWJsZXMuYWRkKG1hdGNoWzFdKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuICBcbiAgLyoqXG4gICAqIOWkieaVsOWApOOBi+OCieS9v+eUqOOBleOCjOOCi+WkieaVsOOBruOBv+OCkuODleOCo+ODq+OCv+ODquODs+OCsFxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJWYXJpYWJsZVZhbHVlcyh2YXJpYWJsZXM6IG9iamVjdCwgdXNlZFZhcnM6IFNldDxzdHJpbmc+KTogb2JqZWN0IHtcbiAgICBjb25zdCBmaWx0ZXJlZDogYW55ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xuICAgICAgaWYgKHVzZWRWYXJzLmhhcyhrZXkpKSB7XG4gICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYXBoUUzjgq/jgqjjg6rjgYvjgonmnKrkvb/nlKjjga7lpInmlbDjgpLliYrpmaRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlVW51c2VkVmFyaWFibGVzKGdyYXBocWw6IEV4ZWN1dGFibGVHcmFwaHFsKTogRXhlY3V0YWJsZUdyYXBocWwge1xuICAgIGlmICghZ3JhcGhxbC52YXJpYWJsZXMgfHwgT2JqZWN0LmtleXMoZ3JhcGhxbC52YXJpYWJsZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGdyYXBocWw7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlTdHIgPSB0eXBlb2YgZ3JhcGhxbC5xdWVyeSA9PT0gJ3N0cmluZycgPyBncmFwaHFsLnF1ZXJ5IDogZ3JhcGhxbC5xdWVyeS5sb2M/LnNvdXJjZT8uYm9keSB8fCAnJztcbiAgICBjb25zdCB1c2VkVmFycyA9IHRoaXMuZXh0cmFjdFVzZWRWYXJpYWJsZXNGcm9tUXVlcnkocXVlcnlTdHIpO1xuICAgIGNvbnN0IGZpbHRlcmVkVmFyaWFibGVzID0gdGhpcy5maWx0ZXJWYXJpYWJsZVZhbHVlcyhncmFwaHFsLnZhcmlhYmxlcywgdXNlZFZhcnMpO1xuXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZ3JhcGhxbCxcbiAgICAgIHZhcmlhYmxlczogZmlsdGVyZWRWYXJpYWJsZXNcbiAgICB9O1xuICB9XG59Il19","import { GraphqlService } from './graphql.service';\nimport { GraphqlEnhancedService } from './graphql-enhanced.service';\n/**\n * GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー\n *\n * 使用方法:\n * ```typescript\n * export default <Routes>[\n * {\n * path: '',\n * component: YourComponent,\n * providers: [\n * provideGraphqlEnhancedLocally()\n * ]\n * }\n * ];\n * ```\n */\nexport function provideGraphqlEnhancedLocally() {\n return [\n {\n provide: GraphqlService,\n useClass: GraphqlEnhancedService\n }\n ];\n}\n/**\n * グローバルにGraphqlEnhancedServiceを提供\n * app.config.tsで使用\n */\nexport function provideGraphqlEnhancedGlobally() {\n return provideGraphqlEnhancedLocally();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1lbmhhbmNlZC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0B4eG1hY2hpbmEvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZ3JhcGhxbC9ncmFwaHFsLWVuaGFuY2VkLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFFBQVEsRUFBRSxzQkFBc0I7U0FDakM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSw4QkFBOEI7SUFDNUMsT0FBTyw2QkFBNkIsRUFBRSxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBHcmFwaHFsRW5oYW5jZWRTZXJ2aWNlIH0gZnJvbSAnLi9ncmFwaHFsLWVuaGFuY2VkLnNlcnZpY2UnO1xuXG4vKipcbiAqIEdyYXBocWxTZXJ2aWNl44KSR3JhcGhxbEVuaGFuY2VkU2VydmljZeOBp+e9ruOBjeaPm+OBiOOCi+ODl+ODreODkOOCpOODgOODvFxuICogXG4gKiDkvb/nlKjmlrnms5U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgZGVmYXVsdCA8Um91dGVzPltcbiAqICAge1xuICogICAgIHBhdGg6ICcnLFxuICogICAgIGNvbXBvbmVudDogWW91ckNvbXBvbmVudCxcbiAqICAgICBwcm92aWRlcnM6IFtcbiAqICAgICAgIHByb3ZpZGVHcmFwaHFsRW5oYW5jZWRMb2NhbGx5KClcbiAqICAgICBdXG4gKiAgIH1cbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVHcmFwaHFsRW5oYW5jZWRMb2NhbGx5KCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdyYXBocWxTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEdyYXBocWxFbmhhbmNlZFNlcnZpY2VcbiAgICB9XG4gIF07XG59XG5cbi8qKlxuICog44Kw44Ot44O844OQ44Or44GrR3JhcGhxbEVuaGFuY2VkU2VydmljZeOCkuaPkOS+m1xuICogYXBwLmNvbmZpZy50c+OBp+S9v+eUqFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUdyYXBocWxFbmhhbmNlZEdsb2JhbGx5KCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gcHJvdmlkZUdyYXBocWxFbmhhbmNlZExvY2FsbHkoKTtcbn0iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbW1vbi1zZXJ2aWNlcy1ncmFwaHFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9ncmFwaHFsL3h4bWFjaGluYS1jb21tb24tc2VydmljZXMtZ3JhcGhxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import { Google } from '@xxmachina/common/domain/models';
2
- import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
3
- import { IFirestoreConverter } from '@nx-ddd/firestore/converter';
4
- import { DocumentSnapshot } from '@nx-ddd/firestore/interfaces';
2
+ import { IFirestoreConverter, FirestoreAdapter, DocumentSnapshot } from '@nx-ddd/firestore';
5
3
  import * as i0 from '@angular/core';
6
4
 
7
5
  declare class GoogleConverter implements IFirestoreConverter<Google> {
package/infra/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import * as _nx_ddd_common_infrastructure_externals_openai_impl from '@nx-ddd/co
6
6
  import { OpenAiConfig } from '@nx-ddd/common/infrastructure/externals/openai/impl';
7
7
  import { AiConfig, Operator, Project, Spec, Google } from '@xxmachina/common/domain/models';
8
8
  import { GoogleConverter } from '@xxmachina/common/infra/converters/google';
9
- import { FirestoreRepository as FirestoreRepository$1 } from '@nx-ddd/firestore/repository';
9
+ import { FirestoreRepository as FirestoreRepository$1 } from '@nx-ddd/firestore';
10
10
  import * as _nx_ddd_notion from '@nx-ddd/notion';
11
11
  import { NotionRepository as NotionRepository$1 } from '@nx-ddd/notion';
12
12
  import { Contract, Invoice, Order } from '@xxmachina/common/invoice/domain';
@@ -1,16 +1,16 @@
1
1
  import * as _nx_ddd_firestore from '@nx-ddd/firestore';
2
+ import { FirestoreQueryV2 } from '@nx-ddd/firestore';
2
3
  import { Query, Resource } from '@xxmachina/common/domain/models';
3
- import { FirestoreQuery } from '@nx-ddd/firestore/query/v2';
4
4
  import * as i0 from '@angular/core';
5
5
 
6
- declare class QueryFirestoreQuery extends FirestoreQuery<Query> {
6
+ declare class QueryFirestoreQuery extends FirestoreQueryV2<Query> {
7
7
  readonly collectionPath = "projects/:projectId/queries/:id";
8
8
  protected converter: _nx_ddd_firestore.IFirestoreConverter<Query<any, any>>;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<QueryFirestoreQuery, never>;
10
10
  static ɵprov: i0.ɵɵInjectableDeclaration<QueryFirestoreQuery>;
11
11
  }
12
12
 
13
- declare class ResourceFirestoreQuery extends FirestoreQuery<Resource> {
13
+ declare class ResourceFirestoreQuery extends FirestoreQueryV2<Resource> {
14
14
  readonly collectionPath = "projects/:projectId/resources/:id";
15
15
  protected converter: _nx_ddd_firestore.IFirestoreConverter<Resource>;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ResourceFirestoreQuery, never>;
@@ -1,8 +1,8 @@
1
1
  import { Google, Query, Resource } from '@xxmachina/common/domain/models';
2
2
  import { GoogleConverter } from '@xxmachina/common/infra/converters/google';
3
- import { FirestoreRepository as FirestoreRepository$1 } from '@nx-ddd/firestore/repository';
4
- import * as i0 from '@angular/core';
5
3
  import * as _nx_ddd_firestore from '@nx-ddd/firestore';
4
+ import { FirestoreRepository as FirestoreRepository$1 } from '@nx-ddd/firestore';
5
+ import * as i0 from '@angular/core';
6
6
 
7
7
  declare class GoogleRepository extends FirestoreRepository$1<Google> {
8
8
  readonly collectionPath = "users/:userId/links/:id";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxmachina/common",
3
- "version": "19.2.0",
3
+ "version": "19.3.0",
4
4
  "license": "MIT",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -13,11 +13,11 @@
13
13
  "@nestjs/common": "10.2.8",
14
14
  "@nestjs/graphql": "^11.0.0",
15
15
  "@nestjs/passport": "^9.0.3",
16
- "@ng-atomic/common": "19.2.0",
17
- "@ng-atomic/components": "19.2.0",
18
- "@ng-atomic/core": "19.2.0",
19
- "@nx-ddd/common": "19.2.0",
20
- "@nx-ddd/core": "19.2.0",
16
+ "@ng-atomic/common": "19.3.0",
17
+ "@ng-atomic/components": "19.3.0",
18
+ "@ng-atomic/core": "19.3.0",
19
+ "@nx-ddd/common": "19.3.0",
20
+ "@nx-ddd/core": "19.3.0",
21
21
  "@tfarras/nestjs-firebase-auth": "^2.0.0",
22
22
  "apollo-angular": "^7.0.2",
23
23
  "class-transformer": "^0.5.1",
@@ -43,11 +43,11 @@
43
43
  "validate-azure-ad-token": "^2.2.0"
44
44
  },
45
45
  "optionalDependencies": {
46
- "@nx-ddd/any-func": "19.2.0",
47
- "@nx-ddd/firestore": "19.2.0",
48
- "@nx-ddd/google": "19.2.0",
49
- "@nx-ddd/hasura": "19.2.0",
50
- "@nx-ddd/notion": "19.2.0",
46
+ "@nx-ddd/any-func": "19.3.0",
47
+ "@nx-ddd/firestore": "19.3.0",
48
+ "@nx-ddd/google": "19.3.0",
49
+ "@nx-ddd/hasura": "19.3.0",
50
+ "@nx-ddd/notion": "19.3.0",
51
51
  "@notionhq/client": "^2.2.15"
52
52
  },
53
53
  "dependencies": {
@@ -4,6 +4,8 @@ import { DocumentNode } from 'graphql';
4
4
  import { GetHeaders, ApolloClientManagerService } from '@nx-ddd/hasura';
5
5
  import { Observable } from 'rxjs';
6
6
  import * as i0 from '@angular/core';
7
+ import { Provider } from '@angular/core';
8
+ import { FetchResult } from '@apollo/client/core';
7
9
 
8
10
  interface ExecutableGraphql {
9
11
  endpoint: string;
@@ -28,5 +30,68 @@ declare class GraphqlService {
28
30
  static ɵprov: i0.ɵɵInjectableDeclaration<GraphqlService>;
29
31
  }
30
32
 
31
- export { GraphqlService };
32
- export type { ExecutableGetSchemaGraphql, ExecutableGraphql };
33
+ interface ExecutableGraphqlWithSplitting extends ExecutableGraphql {
34
+ enableSplitting?: boolean;
35
+ }
36
+ /**
37
+ * GraphqlServiceを拡張して、subscription分割機能を追加
38
+ *
39
+ * GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、
40
+ * 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。
41
+ */
42
+ declare class GraphqlEnhancedService extends GraphqlService {
43
+ private readonly splitter;
44
+ /**
45
+ * subscriptionクエリを実行
46
+ * デフォルトでsubscriptionは自動的に分割される
47
+ */
48
+ subscribe(graphql: ExecutableGraphqlWithSplitting): Observable<FetchResult<any>>;
49
+ /**
50
+ * subscriptionクエリを分割して並列実行し、結果を結合
51
+ */
52
+ private subscribeSplit;
53
+ /**
54
+ * クエリがsubscriptionかどうかを判定
55
+ */
56
+ private isSubscription;
57
+ /**
58
+ * クエリから使用されている変数を抽出
59
+ */
60
+ private extractUsedVariablesFromQuery;
61
+ /**
62
+ * 変数値から使用される変数のみをフィルタリング
63
+ */
64
+ private filterVariableValues;
65
+ /**
66
+ * GraphQLクエリから未使用の変数を削除
67
+ */
68
+ private removeUnusedVariables;
69
+ static ɵfac: i0.ɵɵFactoryDeclaration<GraphqlEnhancedService, never>;
70
+ static ɵprov: i0.ɵɵInjectableDeclaration<GraphqlEnhancedService>;
71
+ }
72
+
73
+ /**
74
+ * GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー
75
+ *
76
+ * 使用方法:
77
+ * ```typescript
78
+ * export default <Routes>[
79
+ * {
80
+ * path: '',
81
+ * component: YourComponent,
82
+ * providers: [
83
+ * provideGraphqlEnhancedLocally()
84
+ * ]
85
+ * }
86
+ * ];
87
+ * ```
88
+ */
89
+ declare function provideGraphqlEnhancedLocally(): Provider[];
90
+ /**
91
+ * グローバルにGraphqlEnhancedServiceを提供
92
+ * app.config.tsで使用
93
+ */
94
+ declare function provideGraphqlEnhancedGlobally(): Provider[];
95
+
96
+ export { GraphqlEnhancedService, GraphqlService, provideGraphqlEnhancedGlobally, provideGraphqlEnhancedLocally };
97
+ export type { ExecutableGetSchemaGraphql, ExecutableGraphql, ExecutableGraphqlWithSplitting };