@restorecommerce/facade 1.0.0 → 1.1.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 (43) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/codegen/index.js +1 -1
  3. package/dist/gql/protos/federation.d.ts +6 -0
  4. package/dist/gql/protos/federation.js +51 -0
  5. package/dist/gql/protos/graphql.d.ts +5 -27
  6. package/dist/gql/protos/graphql.js +3 -564
  7. package/dist/gql/protos/index.d.ts +3 -0
  8. package/dist/gql/protos/index.js +3 -0
  9. package/dist/gql/protos/registry.d.ts +2 -2
  10. package/dist/gql/protos/resolvers.d.ts +9 -0
  11. package/dist/gql/protos/resolvers.js +427 -0
  12. package/dist/gql/protos/schema.d.ts +14 -0
  13. package/dist/gql/protos/schema.js +234 -0
  14. package/dist/gql/protos/types.d.ts +20 -0
  15. package/dist/gql/protos/utils.d.ts +5 -0
  16. package/dist/gql/protos/utils.js +27 -1
  17. package/dist/index.d.ts +9 -9
  18. package/dist/index.js +78 -7
  19. package/dist/interfaces.d.ts +2 -0
  20. package/dist/modules/access-control/gql/schema.generated.d.ts +10 -1
  21. package/dist/modules/catalog/gql/schema.generated.d.ts +10 -1
  22. package/dist/modules/fulfillment/gql/schema.generated.d.ts +10 -1
  23. package/dist/modules/identity/gql/federation.d.ts +1 -1
  24. package/dist/modules/identity/gql/federation.js +1 -9
  25. package/dist/modules/identity/gql/schema.generated.d.ts +40 -1
  26. package/dist/modules/identity/gql/schema.generated.js +7 -1
  27. package/dist/modules/identity/gql/types.js +2 -0
  28. package/dist/modules/indexing/gql/federation.d.ts +2 -2
  29. package/dist/modules/indexing/gql/federation.js +2 -2
  30. package/dist/modules/indexing/gql/schema.d.ts +2 -2
  31. package/dist/modules/indexing/gql/schema.generated.d.ts +13 -2
  32. package/dist/modules/indexing/gql/schema.js +1 -2
  33. package/dist/modules/indexing/gql/types.d.ts +2 -0
  34. package/dist/modules/indexing/gql/types.js +5 -2
  35. package/dist/modules/indexing/interfaces.d.ts +2 -2
  36. package/dist/modules/invoicing/gql/schema.generated.d.ts +10 -1
  37. package/dist/modules/notification/gql/schema.generated.d.ts +10 -1
  38. package/dist/modules/ordering/gql/federation.js +4 -4
  39. package/dist/modules/ordering/gql/schema.generated.d.ts +10 -1
  40. package/dist/modules/resource/gql/schema.generated.d.ts +10 -1
  41. package/dist/modules/scheduling/gql/schema.generated.d.ts +5 -3
  42. package/generate.ts +6 -3
  43. package/package.json +18 -9
@@ -1,5 +1,16 @@
1
1
  import { GrpcClientConfig } from "@restorecommerce/grpc-client";
2
2
  import { FileDescriptorProto } from "ts-proto-descriptors";
3
+ import { GraphQLSchema, GraphQLFieldResolver, GraphQLScalarType } from 'graphql';
4
+ export interface GraphQLResolverMap<TContext = {}> {
5
+ [typeName: string]: {
6
+ [fieldName: string]: GraphQLFieldResolver<any, TContext, any> | {
7
+ requires?: string;
8
+ resolve: GraphQLFieldResolver<any, TContext, any>;
9
+ };
10
+ } | GraphQLScalarType | {
11
+ [enumValue: string]: string | number;
12
+ };
13
+ }
3
14
  export declare const authSubjectType = ".io.restorecommerce.auth.Subject";
4
15
  export declare type ProtoMetaMessageOptions = {
5
16
  options?: {
@@ -74,3 +85,12 @@ export interface ServiceConfig {
74
85
  export interface SubSpaceServiceConfig extends ServiceConfig {
75
86
  root: boolean;
76
87
  }
88
+ export declare type ServiceClient<Context extends Pick<Context, Key>, Key extends keyof Context, T extends Record<string, any>> = {
89
+ [V in Key]: {
90
+ client: T;
91
+ };
92
+ };
93
+ export declare type FederatedSchemaWithResolvers = {
94
+ federatedSchema: GraphQLSchema;
95
+ resolvers: GraphQLResolverMap<any>;
96
+ };
@@ -9,3 +9,8 @@ export declare const decodeBufferFields: (items: any[], bufferFields: string[])
9
9
  * @param req request object from which the enum strings to be replaced
10
10
  */
11
11
  export declare const convertEnumToInt: (inputTyping: TypingData, req: any) => any;
12
+ export declare const snakeToCamel: (s: string) => string;
13
+ export declare const capitalize: (s: string) => string;
14
+ export declare function camelCase(s: string): string;
15
+ export declare let useSubscriptions: boolean;
16
+ export declare const setUseSubscriptions: (value: boolean) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertEnumToInt = exports.decodeBufferFields = exports.getKeys = exports.convertyCamelToSnakeCase = exports.capitalizeProtoName = void 0;
3
+ exports.setUseSubscriptions = exports.useSubscriptions = exports.camelCase = exports.capitalize = exports.snakeToCamel = exports.convertEnumToInt = exports.decodeBufferFields = exports.getKeys = exports.convertyCamelToSnakeCase = exports.capitalizeProtoName = void 0;
4
4
  const _ = require("lodash");
5
5
  const registry_1 = require("./registry");
6
6
  const capitalizeProtoName = (name) => {
@@ -111,3 +111,29 @@ const convertEnumToInt = (inputTyping, req) => {
111
111
  return req;
112
112
  };
113
113
  exports.convertEnumToInt = convertEnumToInt;
114
+ const snakeToCamel = (s) => {
115
+ return s
116
+ .split('_')
117
+ .map((word, i) => {
118
+ if (i === 0) {
119
+ // if first symbol is "_" then skip it
120
+ return word ? word[0] + word.substring(1).toLowerCase() : '';
121
+ }
122
+ else {
123
+ return (0, exports.capitalize)(word.toLowerCase());
124
+ }
125
+ })
126
+ .join('');
127
+ };
128
+ exports.snakeToCamel = snakeToCamel;
129
+ const capitalize = (s) => {
130
+ return s.substring(0, 1).toUpperCase() + s.substring(1);
131
+ };
132
+ exports.capitalize = capitalize;
133
+ function camelCase(s) {
134
+ return s.substring(0, 1).toLowerCase() + s.substring(1);
135
+ }
136
+ exports.camelCase = camelCase;
137
+ exports.useSubscriptions = false;
138
+ const setUseSubscriptions = (value) => exports.useSubscriptions = value;
139
+ exports.setUseSubscriptions = setUseSubscriptions;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  /// <reference types="koa-bodyparser" />
2
+ /// <reference types="koa-websocket" />
3
+ /// <reference types="node" />
2
4
  /// <reference types="node" />
3
5
  import Koa from 'koa';
4
6
  import { Logger } from 'winston';
5
7
  import { Server } from 'http';
6
8
  import { AddressInfo } from 'net';
7
9
  import { Facade, FacadeBaseContext, FacadeModule, FacadeModuleBase, FacadeModulesContext } from './interfaces';
10
+ import { KafkaProviderConfig } from '@restorecommerce/kafka-client';
8
11
  export * from './modules/index';
9
12
  export * from './middlewares/index';
10
13
  export * from './interfaces';
@@ -16,16 +19,11 @@ interface RestoreCommerceFacadeImplConfig {
16
19
  port?: number;
17
20
  hostname?: string;
18
21
  env?: string;
22
+ kafka?: KafkaProviderConfig['kafka'];
19
23
  }
20
- export declare type ApolloServiceArg = {
21
- name: string;
22
- } & ({
23
- url: string;
24
- } | {
25
- schema: any;
26
- });
27
24
  export declare class RestoreCommerceFacade<TModules extends FacadeModuleBase[] = []> implements Facade<TModules> {
28
25
  private apolloServices;
26
+ private allResolvers;
29
27
  private _server?;
30
28
  private _initialized;
31
29
  readonly logger: Logger;
@@ -34,9 +32,10 @@ export declare class RestoreCommerceFacade<TModules extends FacadeModuleBase[] =
34
32
  readonly koa: Koa<any, FacadeModulesContext<TModules>>;
35
33
  readonly env: string;
36
34
  readonly modules: FacadeModule[];
35
+ readonly kafkaConfig?: KafkaProviderConfig['kafka'];
37
36
  private startFns;
38
37
  private stopFns;
39
- constructor({ koa, logger, port, hostname, env }: RestoreCommerceFacadeImplConfig);
38
+ constructor({ koa, logger, port, hostname, env, kafka }: RestoreCommerceFacadeImplConfig);
40
39
  get server(): Server | undefined;
41
40
  get address(): AddressInfo | undefined;
42
41
  get listening(): boolean;
@@ -61,5 +60,6 @@ export interface FacadeConfig {
61
60
  hostname?: string;
62
61
  env?: string;
63
62
  keys?: string[];
63
+ kafka?: KafkaProviderConfig['kafka'];
64
64
  }
65
- export declare function createFacade(config: FacadeConfig): Facade<[]>;
65
+ export declare function createFacade(config: FacadeConfig): Facade;
package/dist/index.js CHANGED
@@ -17,18 +17,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.createFacade = exports.RestoreCommerceFacade = void 0;
18
18
  const koa_1 = require("koa");
19
19
  const logger_1 = require("@restorecommerce/logger");
20
+ const http_1 = require("http");
20
21
  const apollo_server_koa_1 = require("apollo-server-koa");
22
+ const graphql_1 = require("graphql");
21
23
  const gateway_1 = require("@apollo/gateway");
22
- const index_1 = require("./modules/facade-status/index");
24
+ const modules_1 = require("./modules");
23
25
  const apollo_server_core_1 = require("apollo-server-core");
26
+ const http_2 = require("http");
27
+ const ws_1 = require("ws");
28
+ const ws_2 = require("graphql-ws/lib/use/ws");
29
+ const lodash_1 = require("lodash");
30
+ const graphql_tools_1 = require("graphql-tools");
31
+ const graphql_tag_1 = require("graphql-tag");
32
+ const protos_1 = require("./gql/protos");
33
+ const koa_compose_1 = require("koa-compose");
34
+ const utils_1 = require("./gql/protos/utils");
24
35
  __exportStar(require("./modules/index"), exports);
25
36
  __exportStar(require("./middlewares/index"), exports);
26
37
  __exportStar(require("./interfaces"), exports);
27
38
  __exportStar(require("./utils"), exports);
28
39
  __exportStar(require("./gql/index"), exports);
29
40
  class RestoreCommerceFacade {
30
- constructor({ koa, logger, port, hostname, env }) {
41
+ constructor({ koa, logger, port, hostname, env, kafka }) {
31
42
  this.apolloServices = {};
43
+ this.allResolvers = {};
32
44
  this._initialized = false;
33
45
  this.modules = [];
34
46
  this.startFns = [];
@@ -38,6 +50,8 @@ class RestoreCommerceFacade {
38
50
  this.hostname = hostname !== null && hostname !== void 0 ? hostname : '127.0.0.1';
39
51
  this.koa = koa;
40
52
  this.env = env !== null && env !== void 0 ? env : 'development';
53
+ this.kafkaConfig = kafka;
54
+ (0, utils_1.setUseSubscriptions)(!!kafka);
41
55
  }
42
56
  get server() {
43
57
  return this._server;
@@ -69,7 +83,13 @@ class RestoreCommerceFacade {
69
83
  return this.modules.some(m => module.moduleName === m.moduleName);
70
84
  }
71
85
  addApolloService({ name, schema, url }) {
72
- this.apolloServices[name] = { schema, url };
86
+ if (schema instanceof graphql_1.GraphQLSchema) {
87
+ this.apolloServices[name] = { schema, url };
88
+ }
89
+ else if ('federatedSchema' in schema && 'resolvers' in schema) {
90
+ this.apolloServices[name] = { schema: schema.federatedSchema, url };
91
+ this.allResolvers = lodash_1.default.merge(this.allResolvers, schema.resolvers);
92
+ }
73
93
  }
74
94
  onStart(fn) {
75
95
  debugger;
@@ -101,8 +121,9 @@ class RestoreCommerceFacade {
101
121
  this._initialized = true;
102
122
  }
103
123
  return new Promise((resolve, reject) => {
124
+ var _a;
104
125
  try {
105
- this._server = this.koa.listen(this.port, this.hostname, () => {
126
+ (_a = this.server) === null || _a === void 0 ? void 0 : _a.listen(this.port, this.hostname, () => {
106
127
  const address = this.address;
107
128
  if (address) {
108
129
  this.logger.info(`Service is listening on ${address.address}:${address.port}`);
@@ -146,6 +167,7 @@ class RestoreCommerceFacade {
146
167
  const gateway = new gateway_1.ApolloGateway({
147
168
  logger: this.logger,
148
169
  serviceList,
170
+ debug: true,
149
171
  buildService: ({ name, url }) => {
150
172
  var _a;
151
173
  if (url !== 'local') {
@@ -165,12 +187,60 @@ class RestoreCommerceFacade {
165
187
  }
166
188
  }
167
189
  });
190
+ this._server = (0, http_2.createServer)(this.koa.callback());
191
+ const wsServer = new ws_1.WebSocketServer({
192
+ server: this._server,
193
+ path: '/graphql',
194
+ });
195
+ let serverCleanup;
196
+ gateway.onSchemaLoadOrUpdate(schemaContext => {
197
+ const typeDefs = (0, graphql_1.printSchema)(new graphql_1.GraphQLSchema({
198
+ subscription: schemaContext.apiSchema.getSubscriptionType()
199
+ }));
200
+ let schema = (0, graphql_tools_1.makeExecutableSchema)({
201
+ typeDefs: (0, graphql_tag_1.gql)(typeDefs + `
202
+ type Query { sample: String }
203
+ `),
204
+ resolvers: {
205
+ Subscription: {
206
+ ...this.allResolvers['Subscription']
207
+ }
208
+ }
209
+ });
210
+ if ('Subscription' in this.allResolvers) {
211
+ (0, protos_1.mergeSubscribeIntoSchema)(schema.getSubscriptionType(), this.allResolvers['Subscription']);
212
+ }
213
+ serverCleanup = (0, ws_2.useServer)({
214
+ schema,
215
+ context: async (ctx, message, args) => {
216
+ const newCtx = this.koa.createContext(ctx.extra.request, new http_1.ServerResponse(ctx.extra.request));
217
+ const fn = await (0, koa_compose_1.default)(this.koa.middleware);
218
+ await fn(newCtx);
219
+ newCtx.kafkaConfig = this.kafkaConfig;
220
+ newCtx.logger = this.logger;
221
+ return newCtx;
222
+ },
223
+ }, wsServer);
224
+ });
168
225
  const gqlServer = new apollo_server_koa_1.ApolloServer({
169
226
  gateway,
170
227
  introspection: true,
171
228
  plugins: [
172
- (0, apollo_server_core_1.ApolloServerPluginLandingPageGraphQLPlayground)()
229
+ (0, apollo_server_core_1.ApolloServerPluginDrainHttpServer)({ httpServer: this._server }),
230
+ (0, apollo_server_core_1.ApolloServerPluginLandingPageLocalDefault)({
231
+ embed: true
232
+ }),
233
+ {
234
+ async serverWillStart() {
235
+ return {
236
+ async drainServer() {
237
+ await serverCleanup.dispose();
238
+ },
239
+ };
240
+ },
241
+ },
173
242
  ],
243
+ debug: true,
174
244
  formatError: (error) => {
175
245
  this.logger.error('Error while processing request', { message: error.message });
176
246
  this.logger.debug('Error while processing request', { error });
@@ -217,7 +287,8 @@ function createFacade(config) {
217
287
  logger,
218
288
  port: config.port,
219
289
  hostname: config.hostname,
220
- env: config.env
221
- }).useModule(index_1.facadeStatusModule);
290
+ env: config.env,
291
+ kafka: config.kafka
292
+ }).useModule(modules_1.facadeStatusModule);
222
293
  }
223
294
  exports.createFacade = createFacade;
@@ -1,5 +1,7 @@
1
+ /// <reference types="koa-websocket" />
1
2
  /// <reference types="koa-bodyparser" />
2
3
  /// <reference types="node" />
4
+ /// <reference types="node" />
3
5
  import Koa from 'koa';
4
6
  import { Logger } from 'winston';
5
7
  import { Server } from 'http';
@@ -243,10 +243,10 @@ export declare type IIoRestorecommerceResourcebaseReadRequest = {
243
243
  sort?: InputMaybe<Array<IIoRestorecommerceResourcebaseSort>>;
244
244
  filters?: InputMaybe<Array<IIoRestorecommerceResourcebaseFilterOp>>;
245
245
  field?: InputMaybe<Array<IIoRestorecommerceResourcebaseFieldFilter>>;
246
- search?: InputMaybe<Array<Scalars['String']>>;
247
246
  localesLimiter?: InputMaybe<Array<Scalars['String']>>;
248
247
  customQueries?: InputMaybe<Array<Scalars['String']>>;
249
248
  customArguments?: InputMaybe<IGoogleProtobufAny>;
249
+ search?: InputMaybe<IIoRestorecommerceResourcebaseSearch>;
250
250
  /** target scope */
251
251
  scope?: InputMaybe<Scalars['String']>;
252
252
  };
@@ -307,6 +307,11 @@ export declare type IIoRestorecommerceResourcebaseFieldFilter = {
307
307
  name?: InputMaybe<Scalars['String']>;
308
308
  include?: InputMaybe<Scalars['Boolean']>;
309
309
  };
310
+ export declare type IIoRestorecommerceResourcebaseSearch = {
311
+ search?: InputMaybe<Scalars['String']>;
312
+ fields?: InputMaybe<Array<Scalars['String']>>;
313
+ caseSensitive?: InputMaybe<Scalars['Boolean']>;
314
+ };
310
315
  export declare type AccessControlRuleQuery = {
311
316
  __typename?: 'AccessControlRuleQuery';
312
317
  Read?: Maybe<ProtoIoRestorecommerceRuleRuleListResponse>;
@@ -439,6 +444,8 @@ export declare type IoRestorecommerceResourcebaseDeleteResponse = {
439
444
  export declare type IIoRestorecommerceResourcebaseDeleteRequest = {
440
445
  collection?: InputMaybe<Scalars['Boolean']>;
441
446
  ids?: InputMaybe<Array<Scalars['String']>>;
447
+ view?: InputMaybe<Array<Scalars['String']>>;
448
+ analyzer?: InputMaybe<Array<Scalars['String']>>;
442
449
  /** target scope */
443
450
  scope?: InputMaybe<Scalars['String']>;
444
451
  };
@@ -582,6 +589,7 @@ export declare type ResolversTypes = ResolversObject<{
582
589
  IIoRestorecommerceFilterFilter: IIoRestorecommerceFilterFilter;
583
590
  IoRestorecommerceResourcebaseFilterOpOperator: IoRestorecommerceResourcebaseFilterOpOperator;
584
591
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
592
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
585
593
  AccessControlRuleQuery: ResolverTypeWrapper<AccessControlRuleQuery>;
586
594
  ProtoIoRestorecommerceRuleRuleListResponse: ResolverTypeWrapper<ProtoIoRestorecommerceRuleRuleListResponse>;
587
595
  IoRestorecommerceRuleRuleListResponse: ResolverTypeWrapper<IoRestorecommerceRuleRuleListResponse>;
@@ -654,6 +662,7 @@ export declare type ResolversParentTypes = ResolversObject<{
654
662
  IIoRestorecommerceFilterFilterOp: IIoRestorecommerceFilterFilterOp;
655
663
  IIoRestorecommerceFilterFilter: IIoRestorecommerceFilterFilter;
656
664
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
665
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
657
666
  AccessControlRuleQuery: AccessControlRuleQuery;
658
667
  ProtoIoRestorecommerceRuleRuleListResponse: ProtoIoRestorecommerceRuleRuleListResponse;
659
668
  IoRestorecommerceRuleRuleListResponse: IoRestorecommerceRuleRuleListResponse;
@@ -166,10 +166,10 @@ export declare type IIoRestorecommerceResourcebaseReadRequest = {
166
166
  sort?: InputMaybe<Array<IIoRestorecommerceResourcebaseSort>>;
167
167
  filters?: InputMaybe<Array<IIoRestorecommerceResourcebaseFilterOp>>;
168
168
  field?: InputMaybe<Array<IIoRestorecommerceResourcebaseFieldFilter>>;
169
- search?: InputMaybe<Array<Scalars['String']>>;
170
169
  localesLimiter?: InputMaybe<Array<Scalars['String']>>;
171
170
  customQueries?: InputMaybe<Array<Scalars['String']>>;
172
171
  customArguments?: InputMaybe<IGoogleProtobufAny>;
172
+ search?: InputMaybe<IIoRestorecommerceResourcebaseSearch>;
173
173
  /** target scope */
174
174
  scope?: InputMaybe<Scalars['String']>;
175
175
  };
@@ -256,6 +256,11 @@ export declare type IGoogleProtobufAny = {
256
256
  typeUrl?: InputMaybe<Scalars['String']>;
257
257
  value?: InputMaybe<Scalars['GoogleProtobufAnyValue']>;
258
258
  };
259
+ export declare type IIoRestorecommerceResourcebaseSearch = {
260
+ search?: InputMaybe<Scalars['String']>;
261
+ fields?: InputMaybe<Array<Scalars['String']>>;
262
+ caseSensitive?: InputMaybe<Scalars['Boolean']>;
263
+ };
259
264
  export declare type CatalogProductPrototypeQuery = {
260
265
  __typename?: 'CatalogProductPrototypeQuery';
261
266
  Read?: Maybe<ProtoIoRestorecommerceProductPrototypeProductPrototypeListResponse>;
@@ -494,6 +499,8 @@ export declare type IoRestorecommerceResourcebaseDeleteResponse = {
494
499
  export declare type IIoRestorecommerceResourcebaseDeleteRequest = {
495
500
  collection?: InputMaybe<Scalars['Boolean']>;
496
501
  ids?: InputMaybe<Array<Scalars['String']>>;
502
+ view?: InputMaybe<Array<Scalars['String']>>;
503
+ analyzer?: InputMaybe<Array<Scalars['String']>>;
497
504
  /** target scope */
498
505
  scope?: InputMaybe<Scalars['String']>;
499
506
  };
@@ -670,6 +677,7 @@ export declare type ResolversTypes = ResolversObject<{
670
677
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
671
678
  IGoogleProtobufAny: IGoogleProtobufAny;
672
679
  GoogleProtobufAnyValue: ResolverTypeWrapper<Scalars['GoogleProtobufAnyValue']>;
680
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
673
681
  CatalogProductPrototypeQuery: ResolverTypeWrapper<CatalogProductPrototypeQuery>;
674
682
  ProtoIoRestorecommerceProductPrototypeProductPrototypeListResponse: ResolverTypeWrapper<ProtoIoRestorecommerceProductPrototypeProductPrototypeListResponse>;
675
683
  IoRestorecommerceProductPrototypeProductPrototypeListResponse: ResolverTypeWrapper<IoRestorecommerceProductPrototypeProductPrototypeListResponse>;
@@ -756,6 +764,7 @@ export declare type ResolversParentTypes = ResolversObject<{
756
764
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
757
765
  IGoogleProtobufAny: IGoogleProtobufAny;
758
766
  GoogleProtobufAnyValue: Scalars['GoogleProtobufAnyValue'];
767
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
759
768
  CatalogProductPrototypeQuery: CatalogProductPrototypeQuery;
760
769
  ProtoIoRestorecommerceProductPrototypeProductPrototypeListResponse: ProtoIoRestorecommerceProductPrototypeProductPrototypeListResponse;
761
770
  IoRestorecommerceProductPrototypeProductPrototypeListResponse: IoRestorecommerceProductPrototypeProductPrototypeListResponse;
@@ -206,10 +206,10 @@ export declare type IIoRestorecommerceResourcebaseReadRequest = {
206
206
  sort?: InputMaybe<Array<IIoRestorecommerceResourcebaseSort>>;
207
207
  filters?: InputMaybe<Array<IIoRestorecommerceResourcebaseFilterOp>>;
208
208
  field?: InputMaybe<Array<IIoRestorecommerceResourcebaseFieldFilter>>;
209
- search?: InputMaybe<Array<Scalars['String']>>;
210
209
  localesLimiter?: InputMaybe<Array<Scalars['String']>>;
211
210
  customQueries?: InputMaybe<Array<Scalars['String']>>;
212
211
  customArguments?: InputMaybe<IGoogleProtobufAny>;
212
+ search?: InputMaybe<IIoRestorecommerceResourcebaseSearch>;
213
213
  /** target scope */
214
214
  scope?: InputMaybe<Scalars['String']>;
215
215
  };
@@ -296,6 +296,11 @@ export declare type IGoogleProtobufAny = {
296
296
  typeUrl?: InputMaybe<Scalars['String']>;
297
297
  value?: InputMaybe<Scalars['GoogleProtobufAnyValue']>;
298
298
  };
299
+ export declare type IIoRestorecommerceResourcebaseSearch = {
300
+ search?: InputMaybe<Scalars['String']>;
301
+ fields?: InputMaybe<Array<Scalars['String']>>;
302
+ caseSensitive?: InputMaybe<Scalars['Boolean']>;
303
+ };
299
304
  export declare type ProtoIoRestorecommerceFulfillmentTrackingResultList = {
300
305
  __typename?: 'ProtoIoRestorecommerceFulfillmentTrackingResultList';
301
306
  details?: Maybe<IoRestorecommerceFulfillmentTrackingResultList>;
@@ -513,6 +518,8 @@ export declare type IoRestorecommerceResourcebaseDeleteResponse = {
513
518
  export declare type IIoRestorecommerceResourcebaseDeleteRequest = {
514
519
  collection?: InputMaybe<Scalars['Boolean']>;
515
520
  ids?: InputMaybe<Array<Scalars['String']>>;
521
+ view?: InputMaybe<Array<Scalars['String']>>;
522
+ analyzer?: InputMaybe<Array<Scalars['String']>>;
516
523
  /** target scope */
517
524
  scope?: InputMaybe<Scalars['String']>;
518
525
  };
@@ -619,6 +626,7 @@ export declare type ResolversTypes = ResolversObject<{
619
626
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
620
627
  IGoogleProtobufAny: IGoogleProtobufAny;
621
628
  GoogleProtobufAnyValue: ResolverTypeWrapper<Scalars['GoogleProtobufAnyValue']>;
629
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
622
630
  ProtoIoRestorecommerceFulfillmentTrackingResultList: ResolverTypeWrapper<ProtoIoRestorecommerceFulfillmentTrackingResultList>;
623
631
  IoRestorecommerceFulfillmentTrackingResultList: ResolverTypeWrapper<IoRestorecommerceFulfillmentTrackingResultList>;
624
632
  IoRestorecommerceFulfillmentTrackingResult: ResolverTypeWrapper<IoRestorecommerceFulfillmentTrackingResult>;
@@ -699,6 +707,7 @@ export declare type ResolversParentTypes = ResolversObject<{
699
707
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
700
708
  IGoogleProtobufAny: IGoogleProtobufAny;
701
709
  GoogleProtobufAnyValue: Scalars['GoogleProtobufAnyValue'];
710
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
702
711
  ProtoIoRestorecommerceFulfillmentTrackingResultList: ProtoIoRestorecommerceFulfillmentTrackingResultList;
703
712
  IoRestorecommerceFulfillmentTrackingResultList: IoRestorecommerceFulfillmentTrackingResultList;
704
713
  IoRestorecommerceFulfillmentTrackingResult: IoRestorecommerceFulfillmentTrackingResult;
@@ -1,2 +1,2 @@
1
1
  import { IdentityServiceConfig } from "../interfaces";
2
- export declare const FederatedResourceSchema: (cfg: IdentityServiceConfig) => import("graphql").GraphQLSchema;
2
+ export declare const FederatedResourceSchema: (cfg: IdentityServiceConfig) => import("../../../gql/protos").FederatedSchemaWithResolvers;
@@ -1,17 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FederatedResourceSchema = void 0;
4
- const apollo_server_koa_1 = require("apollo-server-koa");
5
- const federation_1 = require("@apollo/federation");
6
4
  const schema_1 = require("./schema");
7
5
  const interfaces_1 = require("../interfaces");
8
6
  const protos_1 = require("../../../gql/protos");
9
7
  const types_1 = require("./types");
10
- const graphql_1 = require("graphql");
11
- // TODO There is currently no way of building a federated schema from GraphQLSchema Object
12
- // See https://github.com/apollographql/apollo-server/pull/4310
13
- const FederatedResourceSchema = (cfg) => (0, federation_1.buildFederatedSchema)({
14
- typeDefs: (0, apollo_server_koa_1.gql)((0, graphql_1.printSchema)((0, schema_1.schema)(cfg))),
15
- resolvers: (0, protos_1.generateSubServiceResolvers)(types_1.subServices, cfg, interfaces_1.namespace)
16
- });
8
+ const FederatedResourceSchema = (cfg) => (0, protos_1.buildFederatedSubscriptionSchema)(types_1.subServices, cfg, interfaces_1.namespace, (0, schema_1.schema)(cfg));
17
9
  exports.FederatedResourceSchema = FederatedResourceSchema;
@@ -197,10 +197,10 @@ export declare type IIoRestorecommerceResourcebaseReadRequest = {
197
197
  sort?: InputMaybe<Array<IIoRestorecommerceResourcebaseSort>>;
198
198
  filters?: InputMaybe<Array<IIoRestorecommerceResourcebaseFilterOp>>;
199
199
  field?: InputMaybe<Array<IIoRestorecommerceResourcebaseFieldFilter>>;
200
- search?: InputMaybe<Array<Scalars['String']>>;
201
200
  localesLimiter?: InputMaybe<Array<Scalars['String']>>;
202
201
  customQueries?: InputMaybe<Array<Scalars['String']>>;
203
202
  customArguments?: InputMaybe<IGoogleProtobufAny>;
203
+ search?: InputMaybe<IIoRestorecommerceResourcebaseSearch>;
204
204
  /** target scope */
205
205
  scope?: InputMaybe<Scalars['String']>;
206
206
  };
@@ -287,6 +287,11 @@ export declare type IGoogleProtobufAny = {
287
287
  typeUrl?: InputMaybe<Scalars['String']>;
288
288
  value?: InputMaybe<Scalars['GoogleProtobufAnyValue']>;
289
289
  };
290
+ export declare type IIoRestorecommerceResourcebaseSearch = {
291
+ search?: InputMaybe<Scalars['String']>;
292
+ fields?: InputMaybe<Array<Scalars['String']>>;
293
+ caseSensitive?: InputMaybe<Scalars['Boolean']>;
294
+ };
290
295
  export declare type ProtoIoRestorecommerceUserUserListResponse = {
291
296
  __typename?: 'ProtoIoRestorecommerceUserUserListResponse';
292
297
  details?: Maybe<IoRestorecommerceUserUserListResponse>;
@@ -587,6 +592,8 @@ export declare type IoRestorecommerceResourcebaseDeleteResponse = {
587
592
  export declare type IIoRestorecommerceResourcebaseDeleteRequest = {
588
593
  collection?: InputMaybe<Scalars['Boolean']>;
589
594
  ids?: InputMaybe<Array<Scalars['String']>>;
595
+ view?: InputMaybe<Array<Scalars['String']>>;
596
+ analyzer?: InputMaybe<Array<Scalars['String']>>;
590
597
  /** target scope */
591
598
  scope?: InputMaybe<Scalars['String']>;
592
599
  };
@@ -753,6 +760,22 @@ export declare type IIoRestorecommerceTokenTokenData = {
753
760
  export declare type IIoRestorecommerceTokenGrantId = {
754
761
  grantId?: InputMaybe<Scalars['String']>;
755
762
  };
763
+ export declare type Subscription = {
764
+ __typename?: 'Subscription';
765
+ identityUsers?: Maybe<SubscriptionOutput>;
766
+ };
767
+ export declare type SubscriptionIdentityUsersArgs = {
768
+ action?: InputMaybe<SubscriptionAction>;
769
+ };
770
+ export declare type SubscriptionOutput = {
771
+ __typename?: 'SubscriptionOutput';
772
+ id?: Maybe<Scalars['String']>;
773
+ };
774
+ export declare enum SubscriptionAction {
775
+ Created = "CREATED",
776
+ Updated = "UPDATED",
777
+ Deleted = "DELETED"
778
+ }
756
779
  export declare type WithIndex<TObject> = TObject & Record<string, any>;
757
780
  export declare type ResolversObject<TObject> = WithIndex<TObject>;
758
781
  export declare type ResolverTypeWrapper<T> = Promise<T> | T;
@@ -823,6 +846,7 @@ export declare type ResolversTypes = ResolversObject<{
823
846
  IoRestorecommerceResourcebaseFilterOpOperator: IoRestorecommerceResourcebaseFilterOpOperator;
824
847
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
825
848
  IGoogleProtobufAny: IGoogleProtobufAny;
849
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
826
850
  ProtoIoRestorecommerceUserUserListResponse: ResolverTypeWrapper<ProtoIoRestorecommerceUserUserListResponse>;
827
851
  IoRestorecommerceUserUserListResponse: ResolverTypeWrapper<IoRestorecommerceUserUserListResponse>;
828
852
  IoRestorecommerceUserUserResponse: ResolverTypeWrapper<IoRestorecommerceUserUserResponse>;
@@ -884,6 +908,9 @@ export declare type ResolversTypes = ResolversObject<{
884
908
  IdentityTokenMutation: ResolverTypeWrapper<IdentityTokenMutation>;
885
909
  IIoRestorecommerceTokenTokenData: IIoRestorecommerceTokenTokenData;
886
910
  IIoRestorecommerceTokenGrantId: IIoRestorecommerceTokenGrantId;
911
+ Subscription: ResolverTypeWrapper<{}>;
912
+ SubscriptionOutput: ResolverTypeWrapper<SubscriptionOutput>;
913
+ SubscriptionAction: SubscriptionAction;
887
914
  }>;
888
915
  /** Mapping between all available schema types and the resolvers parents */
889
916
  export declare type ResolversParentTypes = ResolversObject<{
@@ -919,6 +946,7 @@ export declare type ResolversParentTypes = ResolversObject<{
919
946
  IIoRestorecommerceFilterFilter: IIoRestorecommerceFilterFilter;
920
947
  IIoRestorecommerceResourcebaseFieldFilter: IIoRestorecommerceResourcebaseFieldFilter;
921
948
  IGoogleProtobufAny: IGoogleProtobufAny;
949
+ IIoRestorecommerceResourcebaseSearch: IIoRestorecommerceResourcebaseSearch;
922
950
  ProtoIoRestorecommerceUserUserListResponse: ProtoIoRestorecommerceUserUserListResponse;
923
951
  IoRestorecommerceUserUserListResponse: IoRestorecommerceUserUserListResponse;
924
952
  IoRestorecommerceUserUserResponse: IoRestorecommerceUserUserResponse;
@@ -979,6 +1007,8 @@ export declare type ResolversParentTypes = ResolversObject<{
979
1007
  IdentityTokenMutation: IdentityTokenMutation;
980
1008
  IIoRestorecommerceTokenTokenData: IIoRestorecommerceTokenTokenData;
981
1009
  IIoRestorecommerceTokenGrantId: IIoRestorecommerceTokenGrantId;
1010
+ Subscription: {};
1011
+ SubscriptionOutput: SubscriptionOutput;
982
1012
  }>;
983
1013
  export declare type QueryResolvers<ContextType = IdentityContext, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = ResolversObject<{
984
1014
  identity?: Resolver<ResolversTypes['IdentityQuery'], ParentType, ContextType>;
@@ -1365,6 +1395,13 @@ export declare type IdentityTokenMutationResolvers<ContextType = IdentityContext
1365
1395
  consume?: Resolver<Maybe<ResolversTypes['ProtoGoogleProtobufAny']>, ParentType, ContextType, RequireFields<IdentityTokenMutationConsumeArgs, 'input'>>;
1366
1396
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
1367
1397
  }>;
1398
+ export declare type SubscriptionResolvers<ContextType = IdentityContext, ParentType extends ResolversParentTypes['Subscription'] = ResolversParentTypes['Subscription']> = ResolversObject<{
1399
+ identityUsers?: SubscriptionResolver<Maybe<ResolversTypes['SubscriptionOutput']>, "identityUsers", ParentType, ContextType, Partial<SubscriptionIdentityUsersArgs>>;
1400
+ }>;
1401
+ export declare type SubscriptionOutputResolvers<ContextType = IdentityContext, ParentType extends ResolversParentTypes['SubscriptionOutput'] = ResolversParentTypes['SubscriptionOutput']> = ResolversObject<{
1402
+ id?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1403
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
1404
+ }>;
1368
1405
  export declare type Resolvers<ContextType = IdentityContext> = ResolversObject<{
1369
1406
  Query?: QueryResolvers<ContextType>;
1370
1407
  IdentityQuery?: IdentityQueryResolvers<ContextType>;
@@ -1422,4 +1459,6 @@ export declare type Resolvers<ContextType = IdentityContext> = ResolversObject<{
1422
1459
  IdentityRoleMutation?: IdentityRoleMutationResolvers<ContextType>;
1423
1460
  IdentityAuthenticationLogMutation?: IdentityAuthenticationLogMutationResolvers<ContextType>;
1424
1461
  IdentityTokenMutation?: IdentityTokenMutationResolvers<ContextType>;
1462
+ Subscription?: SubscriptionResolvers<ContextType>;
1463
+ SubscriptionOutput?: SubscriptionOutputResolvers<ContextType>;
1425
1464
  }>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModeType = exports.IoRestorecommerceResourcebaseFilterOpOperator = exports.IoRestorecommerceFilterFilterOpOperator = exports.IoRestorecommerceFilterFilterValueType = exports.IoRestorecommerceFilterFilterOperation = exports.IoRestorecommerceResourcebaseFilterValueType = exports.IoRestorecommerceResourcebaseFilterOperation = exports.IoRestorecommerceResourcebaseSortSortOrder = exports.IoRestorecommerceUserUserType = void 0;
3
+ exports.SubscriptionAction = exports.ModeType = exports.IoRestorecommerceResourcebaseFilterOpOperator = exports.IoRestorecommerceFilterFilterOpOperator = exports.IoRestorecommerceFilterFilterValueType = exports.IoRestorecommerceFilterFilterOperation = exports.IoRestorecommerceResourcebaseFilterValueType = exports.IoRestorecommerceResourcebaseFilterOperation = exports.IoRestorecommerceResourcebaseSortSortOrder = exports.IoRestorecommerceUserUserType = void 0;
4
4
  var IoRestorecommerceUserUserType;
5
5
  (function (IoRestorecommerceUserUserType) {
6
6
  IoRestorecommerceUserUserType[IoRestorecommerceUserUserType["OrgUser"] = 0] = "OrgUser";
@@ -70,3 +70,9 @@ var ModeType;
70
70
  ModeType["Update"] = "UPDATE";
71
71
  ModeType["Upsert"] = "UPSERT";
72
72
  })(ModeType = exports.ModeType || (exports.ModeType = {}));
73
+ var SubscriptionAction;
74
+ (function (SubscriptionAction) {
75
+ SubscriptionAction["Created"] = "CREATED";
76
+ SubscriptionAction["Updated"] = "UPDATED";
77
+ SubscriptionAction["Deleted"] = "DELETED";
78
+ })(SubscriptionAction = exports.SubscriptionAction || (exports.SubscriptionAction = {}));
@@ -7,8 +7,10 @@ const authentication_log_1 = require("@restorecommerce/rc-grpc-clients/dist/gene
7
7
  const token_1 = require("@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/token");
8
8
  const oauth_1 = require("@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/oauth");
9
9
  const protos_1 = require("../../../gql/protos");
10
+ const kafka_client_1 = require("@restorecommerce/kafka-client");
10
11
  function registerTypings() {
11
12
  (0, protos_1.registerPackagesRecursive)(...exports.subServices);
13
+ (0, kafka_client_1.registerProtoMeta)(...exports.subServices);
12
14
  }
13
15
  exports.registerTypings = registerTypings;
14
16
  exports.subServices = [
@@ -1,2 +1,2 @@
1
- import { ServiceConfig } from "../../../gql/protos";
2
- export declare const FederatedIndexingSchema: (cfg: ServiceConfig) => import("graphql").GraphQLSchema;
1
+ import { SubSpaceServiceConfig } from '../../../gql/protos';
2
+ export declare const FederatedIndexingSchema: (cfg: SubSpaceServiceConfig) => import("graphql").GraphQLSchema;
@@ -6,12 +6,12 @@ const federation_1 = require("@apollo/federation");
6
6
  const schema_1 = require("./schema");
7
7
  const protos_1 = require("../../../gql/protos");
8
8
  const interfaces_1 = require("../interfaces");
9
- const search_1 = require("@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/search");
10
9
  const graphql_1 = require("graphql");
10
+ const types_1 = require("../../access-control/gql/types");
11
11
  // TODO There is currently no way of building a federated schema from GraphQLSchema Object
12
12
  // See https://github.com/apollographql/apollo-server/pull/4310
13
13
  const FederatedIndexingSchema = (cfg) => (0, federation_1.buildFederatedSchema)({
14
14
  typeDefs: (0, apollo_server_koa_1.gql)((0, graphql_1.printSchema)((0, schema_1.schema)(cfg))),
15
- resolvers: (0, protos_1.getAndGenerateResolvers)(search_1.protoMetadata.fileDescriptor.service[0], interfaces_1.namespace, cfg, search_1.protoMetadata, undefined, 'search')
15
+ resolvers: (0, protos_1.generateSubServiceResolvers)(types_1.subServices, cfg, interfaces_1.namespace)
16
16
  });
17
17
  exports.FederatedIndexingSchema = FederatedIndexingSchema;
@@ -1,2 +1,2 @@
1
- import { ServiceConfig } from "../../../gql/protos";
2
- export declare const schema: (cfg: ServiceConfig) => import("graphql").GraphQLSchema;
1
+ import { SubSpaceServiceConfig } from "../../../gql/protos";
2
+ export declare const schema: (cfg: SubSpaceServiceConfig) => import("graphql").GraphQLSchema;