@common-stack/client-core 4.0.1-alpha.0 → 4.0.1-alpha.24

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.
@@ -7,7 +7,6 @@ export declare class TestFeature extends AbstractFeature {
7
7
  getRoutes: () => {};
8
8
  getWrappedRoot: () => {};
9
9
  navItems: () => {};
10
- navItemRight: () => {};
11
10
  navItemsRight: () => {};
12
11
  registerLanguages: () => {};
13
12
  }
@@ -1,5 +1,5 @@
1
- import { IdGetterObj } from '@apollo/client/core/index.js';
2
- import { ErrorLink } from '@apollo/client/link/error/index.js';
1
+ import { IdGetterObj, Resolvers } from '@apollo/client/core';
2
+ import { ErrorLink } from '@apollo/client/link/error';
3
3
  import { ReducersMapObject } from 'redux';
4
4
  import { interfaces } from 'inversify';
5
5
  import { IFeature, IModuleShape, IClientStateConfig, IClientState } from '../interfaces';
@@ -42,26 +42,21 @@ export declare abstract class AbstractFeature implements IFeature {
42
42
  private isContainerLoaded;
43
43
  private services;
44
44
  private _container;
45
- /**
46
- * Constructs Client feature module representation, that folds all the feature modules
47
- * into a single module represented by this instance.
48
- * @param feature
49
- * @param features
50
- */
45
+ private _apolloResolvers;
51
46
  constructor(feature?: IModuleShape, ...features: IModuleShape[]);
52
- get envalidConfigs(): any;
53
- private get container();
47
+ getApolloResolvers(resolverContex: any): Resolvers;
48
+ private getContainer;
54
49
  get epics(): any;
55
50
  getRouter(withRoot?: boolean, rootComponent?: any): any;
56
51
  abstract getRoutes(searchPath?: RegExp): any;
57
52
  abstract get navItems(): any;
58
53
  abstract get navItemsRight(): any;
59
54
  get reducers(): any;
60
- createContainers(options: any): interfaces.Container;
61
- createService(options: any, updateOptions: any): any;
55
+ createContainers(options: any, scopeId?: string): interfaces.Container;
56
+ createService(options: any, scopeId?: string): any;
62
57
  getStateParams(args?: {
63
58
  resolverContex?: any;
64
- container?: interfaces.Container;
59
+ scopeId?: string;
65
60
  requestResponsePair?: {
66
61
  req: Record<string, any>;
67
62
  res: Record<string, any>;
@@ -0,0 +1,227 @@
1
+ import*as React from'react';import {merge,without,union,castArray}from'lodash-es';import {consolidatedResolvers}from'../utils/resolversUtils.js';import {ScopedContainer}from'./ScopedContainer.js';/* eslint-disable no-underscore-dangle */
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /* eslint-disable no-nested-ternary */
4
+ /* eslint-disable no-use-before-define */
5
+ const combine = (features, extractor) => without(union(...features.map((res) => castArray(extractor(res)))), undefined);
6
+ const featureCatalog = {};
7
+ class AbstractFeature {
8
+ link;
9
+ envalidConfig;
10
+ errorLink;
11
+ createFetch;
12
+ connectionParam;
13
+ epic;
14
+ reducer;
15
+ reduxContext;
16
+ clientStateParams;
17
+ sidebarSegments;
18
+ routerFactory;
19
+ route;
20
+ navItem;
21
+ navItemRight;
22
+ rootComponentFactory;
23
+ dataRootComponent;
24
+ createFetchOptions;
25
+ stylesInsert;
26
+ scriptsInsert;
27
+ catalogInfo;
28
+ languagesFuncs;
29
+ data;
30
+ dataIdFromObject;
31
+ createContainerFunc;
32
+ createServiceFunc;
33
+ leftMainPanelItems;
34
+ middleMainPanelItems;
35
+ middleMainPanelItemsProps;
36
+ leftFooterItems;
37
+ rightFooterItems;
38
+ middleLowerPanelItems;
39
+ reduxPersistTransforms;
40
+ isContainerLoaded;
41
+ services;
42
+ _container;
43
+ _apolloResolvers;
44
+ constructor(feature, ...features) {
45
+ const args = [feature, ...features];
46
+ this.link = combine(args, (arg) => arg.link);
47
+ this.errorLink = combine(args, (arg) => arg.errorLink);
48
+ this.createFetch = combine(args, (arg) => arg.createFetch)
49
+ .slice(-1)
50
+ .pop();
51
+ this.connectionParam = combine(args, (arg) => arg.connectionParam);
52
+ this.reducer = combine(args, (arg) => arg.reducer);
53
+ this.clientStateParams = combine(args, (arg) => arg.clientStateParams);
54
+ this.epic = combine(args, (arg) => arg.epic);
55
+ this.sidebarSegments = combine(args, (arg) => arg.sidebarSegments);
56
+ this.leftMainPanelItems = combine(args, (arg) => arg.leftMainPanelItems);
57
+ this.middleMainPanelItems = combine(args, (arg) => arg.middleMainPanelItems);
58
+ this.middleMainPanelItemsProps = combine(args, (arg) => arg.middleMainPanelItemsProps);
59
+ this.leftFooterItems = combine(args, (arg) => arg.leftFooterItems);
60
+ this.rightFooterItems = combine(args, (arg) => arg.rightFooterItems);
61
+ this.middleLowerPanelItems = combine(args, (arg) => arg.middleLowerPanelItems);
62
+ this.dataIdFromObject = combine(args, (arg) => arg.dataIdFromObject);
63
+ this.navItem = combine(args, (arg) => arg.navItem);
64
+ this.navItemRight = combine(args, (arg) => arg.navItemRight);
65
+ this.rootComponentFactory = combine(args, (arg) => arg.rootComponentFactory);
66
+ this.dataRootComponent = combine(args, (arg) => arg.dataRootComponent);
67
+ this.languagesFuncs = combine(args, (arg) => arg.languagesFuncs);
68
+ this.createContainerFunc = combine(args, (arg) => arg.createContainerFunc);
69
+ this.createServiceFunc = combine(args, (arg) => arg.createServiceFunc);
70
+ this.stylesInsert = combine(args, (arg) => arg.stylesInsert);
71
+ this.scriptsInsert = combine(args, (arg) => arg.scriptsInsert);
72
+ this.reduxPersistTransforms = combine(args, (arg) => arg.reduxPersistTransforms);
73
+ this.data = combine([{}].concat(args), (arg) => arg.data).reduce((acc, el) => [{ ...acc[0], ...el }], [{}]);
74
+ }
75
+ getApolloResolvers(resolverContex) {
76
+ // Ensure _apolloResolvers is initialized
77
+ if (!this._apolloResolvers) {
78
+ throw new Error('Resolvers have not been initialized.');
79
+ }
80
+ // Loop through each resolver function and process it with consolidatedResolvers
81
+ const processedResolvers = Object.keys(this._apolloResolvers).reduce((acc, key) => merge(acc, consolidatedResolvers(this._apolloResolvers[key], resolverContex)), {});
82
+ return processedResolvers;
83
+ }
84
+ getContainer(scopeId) {
85
+ this._container = ScopedContainer.for(scopeId);
86
+ return this._container;
87
+ }
88
+ get epics() {
89
+ return this.epic;
90
+ }
91
+ getRouter(withRoot, rootComponent) {
92
+ return this.routerFactory(this.getRoutes());
93
+ }
94
+ get reducers() {
95
+ return merge({}, ...(this.reducer || []));
96
+ }
97
+ createContainers(options, scopeId) {
98
+ this.createContainerFunc.forEach((createModule) => {
99
+ this.getContainer(scopeId).load(createModule(options));
100
+ });
101
+ return this.getContainer(scopeId);
102
+ }
103
+ createService(options, scopeId) {
104
+ if (typeof window === undefined) {
105
+ throw new Error('Services not for node');
106
+ }
107
+ if (this.services) {
108
+ return this.services;
109
+ }
110
+ try {
111
+ if (!ScopedContainer.isExist(scopeId)) {
112
+ this.createContainers(options, scopeId);
113
+ }
114
+ this.services = merge({}, ...this.createServiceFunc.map((serviceFunc) => serviceFunc(this.getContainer(scopeId))));
115
+ return this.services;
116
+ }
117
+ catch (err) {
118
+ console.error(err);
119
+ throw err;
120
+ }
121
+ }
122
+ getStateParams(args = {}) {
123
+ const cn = this.getContainer(args.scopeId);
124
+ const { requestResponsePair } = args;
125
+ const result = this.clientStateParams.reduce((acc, curr) => {
126
+ const defs = curr.typeDefs ? (Array.isArray(curr.typeDefs) ? curr.typeDefs : [curr.typeDefs]) : [];
127
+ const preLinksAccumulator = acc.preLinks || [];
128
+ const attemptFuncAccumulator = acc.retryLinkAttemptFuncs || [];
129
+ const connectionParamsFuncAccumulator = acc.connectionParams || [];
130
+ const callbackBackFuncAccumulator = acc.connectionCallbackFuncs || [];
131
+ const attemptDefaults = acc.defaults || [];
132
+ const schema = defs
133
+ .map((typeDef) => (typeof typeDef === 'string' ? typeDef : ''))
134
+ .map((str) => str.trim())
135
+ .join('\n');
136
+ const typeDefs = acc.typeDefs ? acc.typeDefs.concat('\n', schema) : schema;
137
+ const defaults = curr.defaults ? attemptDefaults.concat(curr.defaults) : attemptDefaults;
138
+ // Merge native resolvers
139
+ const nativeResolvers = merge({}, acc.nativeResolvers, curr.resolvers);
140
+ const resolvers = merge(acc.resolvers, consolidatedResolvers(curr.resolvers, args.resolverContex));
141
+ const possibleTypes = merge(acc.possibleTypes, curr.possibleTypes);
142
+ const typePolicies = merge(acc.typePolicies, curr.typePolicies);
143
+ const retryLinkAttemptFuncs = curr.retryLinkAttemptFuncs
144
+ ? attemptFuncAccumulator.concat(curr.retryLinkAttemptFuncs || [])
145
+ : attemptFuncAccumulator;
146
+ const preLinks = preLinksAccumulator.concat((curr.preLinkFuncs || []).map((linkF) => linkF(cn, requestResponsePair)) || []);
147
+ const connectionParams = curr.connectionParam
148
+ ? connectionParamsFuncAccumulator.concat(consolidatedConnection(curr.connectionParam, cn))
149
+ : connectionParamsFuncAccumulator;
150
+ const connectionCallbackFuncs = curr.connectionCallbackFunc
151
+ ? callbackBackFuncAccumulator.concat(curr.connectionCallbackFunc(cn) || [])
152
+ : callbackBackFuncAccumulator;
153
+ return {
154
+ defaults,
155
+ resolvers,
156
+ nativeResolvers,
157
+ typeDefs,
158
+ possibleTypes,
159
+ retryLinkAttemptFuncs,
160
+ preLinks,
161
+ typePolicies,
162
+ connectionParams,
163
+ connectionCallbackFuncs,
164
+ };
165
+ }, {});
166
+ this._apolloResolvers = result.nativeResolvers;
167
+ return result;
168
+ }
169
+ get connectionParams() {
170
+ return this.connectionParam;
171
+ }
172
+ get stylesInserts() {
173
+ return this.stylesInsert;
174
+ }
175
+ get scriptsInserts() {
176
+ return this.scriptsInsert;
177
+ }
178
+ get leftMainPanel() {
179
+ return merge({}, ...(this.leftMainPanelItems || []));
180
+ }
181
+ get middleMainPanel() {
182
+ const panelObj = merge({}, ...(this.middleMainPanelItems || []));
183
+ const withProps = {};
184
+ Object.keys(panelObj).forEach((key) => {
185
+ const props = this.middleMainPanelItemsProps.filter((el) => !!el[key]);
186
+ let mergedProps = [];
187
+ props.forEach((el) => {
188
+ const insideEl = el[key];
189
+ Object.keys(insideEl).forEach((item) => {
190
+ if (mergedProps[item]) {
191
+ mergedProps[item] = [...mergedProps[item], ...insideEl[item]];
192
+ }
193
+ else {
194
+ mergedProps = { ...mergedProps, [item]: insideEl[item] };
195
+ }
196
+ });
197
+ });
198
+ withProps[key] = React.cloneElement(panelObj[key], mergedProps);
199
+ });
200
+ return withProps;
201
+ }
202
+ get leftFooter() {
203
+ return this.leftFooterItems;
204
+ }
205
+ get rightFooter() {
206
+ return this.rightFooterItems;
207
+ }
208
+ get middleLowerPanel() {
209
+ return merge({}, ...(this.middleLowerPanelItems || []));
210
+ }
211
+ get reduxPersistStateTransformers() {
212
+ return this.reduxPersistTransforms;
213
+ }
214
+ getDataIdFromObject(result) {
215
+ const dataIdFromObject = merge({}, ...this.dataIdFromObject);
216
+ if (dataIdFromObject[result.__typename]) {
217
+ return dataIdFromObject[result.__typename](result);
218
+ }
219
+ return result.id || result._id;
220
+ }
221
+ }
222
+ async function consolidatedConnection(connectionParams, context) {
223
+ if (Array.isArray(connectionParams)) {
224
+ throw new Error('Array is not supported for ConnectionParams');
225
+ }
226
+ return typeof connectionParams === 'function' ? await connectionParams(context) : connectionParams;
227
+ }export{AbstractFeature,featureCatalog};//# sourceMappingURL=AbstractConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractConnector.js","sources":["../../src/connector/AbstractConnector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { Container, interfaces } from 'inversify';
2
+ export type RegisterScopedDependenciesAction = (container: Container) => void;
3
+ export declare class ScopedContainer {
4
+ private static _dependencyRegistrations;
5
+ private static _globalContainer;
6
+ private static readonly _containerInstances;
7
+ /**
8
+ * Options object to use when creating a new container for a
9
+ * scope ID.
10
+ */
11
+ static scopedContainerOptions: interfaces.ContainerOptions;
12
+ /**
13
+ * A function to register global dependencies.
14
+ * This creates a global container instance, which enables truly
15
+ * singleton instances when using a scoped container. All scoped
16
+ * containers reference the global container as parent.
17
+ *
18
+ * @example
19
+ * ScopedContainer.registerGlobalDependencies((container) => {
20
+ * container
21
+ * .bind<SomeSingletonDep>(TOKENS.SomeSingletonDep)
22
+ * .to(SomeSingletonDep)
23
+ * .inSingletonScope();
24
+ * })();
25
+ */
26
+ static registerGlobalDependencies(fn: RegisterScopedDependenciesAction): void;
27
+ /**
28
+ * Returns a @see Container that is unique to the specified scope.
29
+ * If this is the first time getting the container for the scope, then a
30
+ * new container will be created using the provided factory. Any post configure
31
+ * actions will also be applied to the new container instance.
32
+ * @param scopeId Any string to identify the scope (e.g. current request ID).
33
+ * @returns A @see Container that is unique to the specified scope.
34
+ */
35
+ static for(scopeId?: string): Container;
36
+ /**
37
+ * Checks if a container exists for the specified scope.
38
+ * @param scopeId Any string to identify the scope (e.g. current request ID).
39
+ * @returns True if a container exists for the specified scope, false otherwise.
40
+ */
41
+ static isExist(scopeId?: string): boolean;
42
+ /**
43
+ * Unbinds the @see Container (i.e. container.unbindAll()) and removes
44
+ * it from the cache.
45
+ * @param scopeId
46
+ */
47
+ static remove(scopeId?: string): void;
48
+ /**
49
+ * Runs the @method remove method on all instances.
50
+ */
51
+ static removeAll(): void;
52
+ /**
53
+ * Registers dependencies that should be tied to a scope,
54
+ * e.g. HTTP request.
55
+ * @remarks
56
+ * ✔️ DO use `inSingletonScope` to register scoped dependencies.
57
+ * ❌ DO NOT use `inRequestScope`, as this will create a new instance for
58
+ * separate calls to `get` even within the same scope.
59
+ * @see https://stackoverflow.com/a/71180025
60
+ * @param fn A function that registers scoped dependencies.
61
+ * @returns The @see ScopedContainer itself, to allow chaining.
62
+ * @example
63
+ * ScopedContainer.registerScopedDependencies((container) => {
64
+ * container
65
+ * .bind<SomeScopedDep>(TOKENS.SomeScopedDep)
66
+ * .to(SomeScopedDep)
67
+ * .inSingletonScope(); // this is right; use the singleton scope
68
+ * })();
69
+ */
70
+ static registerScopedDependencies(fn: RegisterScopedDependenciesAction): ScopedContainer;
71
+ private static makeNewContainer;
72
+ private static ensureGlobalContainer;
73
+ }
@@ -0,0 +1,112 @@
1
+ import {Container}from'inversify';/* eslint-disable no-underscore-dangle */
2
+ const DEFAULT_SCOPE_ID = '__default__';
3
+ class ScopedContainer {
4
+ static _dependencyRegistrations = [];
5
+ static _globalContainer;
6
+ static _containerInstances = {};
7
+ /**
8
+ * Options object to use when creating a new container for a
9
+ * scope ID.
10
+ */
11
+ static scopedContainerOptions;
12
+ /**
13
+ * A function to register global dependencies.
14
+ * This creates a global container instance, which enables truly
15
+ * singleton instances when using a scoped container. All scoped
16
+ * containers reference the global container as parent.
17
+ *
18
+ * @example
19
+ * ScopedContainer.registerGlobalDependencies((container) => {
20
+ * container
21
+ * .bind<SomeSingletonDep>(TOKENS.SomeSingletonDep)
22
+ * .to(SomeSingletonDep)
23
+ * .inSingletonScope();
24
+ * })();
25
+ */
26
+ static registerGlobalDependencies(fn) {
27
+ if (!this._globalContainer) {
28
+ this._globalContainer = new Container(this.scopedContainerOptions);
29
+ fn(this._globalContainer);
30
+ }
31
+ else {
32
+ throw new Error('Global dependencies have already been registered');
33
+ }
34
+ }
35
+ /**
36
+ * Returns a @see Container that is unique to the specified scope.
37
+ * If this is the first time getting the container for the scope, then a
38
+ * new container will be created using the provided factory. Any post configure
39
+ * actions will also be applied to the new container instance.
40
+ * @param scopeId Any string to identify the scope (e.g. current request ID).
41
+ * @returns A @see Container that is unique to the specified scope.
42
+ */
43
+ static for(scopeId = DEFAULT_SCOPE_ID) {
44
+ let container = this._containerInstances[scopeId];
45
+ if (!container) {
46
+ container = this.makeNewContainer();
47
+ this._containerInstances[scopeId] = container;
48
+ }
49
+ return container;
50
+ }
51
+ /**
52
+ * Checks if a container exists for the specified scope.
53
+ * @param scopeId Any string to identify the scope (e.g. current request ID).
54
+ * @returns True if a container exists for the specified scope, false otherwise.
55
+ */
56
+ static isExist(scopeId = DEFAULT_SCOPE_ID) {
57
+ return !!this._containerInstances[scopeId];
58
+ }
59
+ /**
60
+ * Unbinds the @see Container (i.e. container.unbindAll()) and removes
61
+ * it from the cache.
62
+ * @param scopeId
63
+ */
64
+ static remove(scopeId = DEFAULT_SCOPE_ID) {
65
+ const container = this._containerInstances[scopeId];
66
+ if (!container)
67
+ return;
68
+ container.unbindAll();
69
+ delete this._containerInstances[scopeId];
70
+ }
71
+ /**
72
+ * Runs the @method remove method on all instances.
73
+ */
74
+ static removeAll() {
75
+ Object.keys(this._containerInstances).forEach((key) => this.remove(key));
76
+ }
77
+ /**
78
+ * Registers dependencies that should be tied to a scope,
79
+ * e.g. HTTP request.
80
+ * @remarks
81
+ * ✔️ DO use `inSingletonScope` to register scoped dependencies.
82
+ * ❌ DO NOT use `inRequestScope`, as this will create a new instance for
83
+ * separate calls to `get` even within the same scope.
84
+ * @see https://stackoverflow.com/a/71180025
85
+ * @param fn A function that registers scoped dependencies.
86
+ * @returns The @see ScopedContainer itself, to allow chaining.
87
+ * @example
88
+ * ScopedContainer.registerScopedDependencies((container) => {
89
+ * container
90
+ * .bind<SomeScopedDep>(TOKENS.SomeScopedDep)
91
+ * .to(SomeScopedDep)
92
+ * .inSingletonScope(); // this is right; use the singleton scope
93
+ * })();
94
+ */
95
+ static registerScopedDependencies(fn) {
96
+ this._dependencyRegistrations.push(fn);
97
+ return this;
98
+ }
99
+ static makeNewContainer() {
100
+ const container = this.ensureGlobalContainer().createChild(this.scopedContainerOptions);
101
+ this._dependencyRegistrations.forEach((action) => action(container));
102
+ return container;
103
+ }
104
+ static ensureGlobalContainer() {
105
+ if (!this._globalContainer) {
106
+ const container = new Container(this.scopedContainerOptions);
107
+ this._globalContainer = container;
108
+ this._dependencyRegistrations.forEach((action) => action(container));
109
+ }
110
+ return this._globalContainer;
111
+ }
112
+ }export{ScopedContainer};//# sourceMappingURL=ScopedContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopedContainer.js","sources":["../../src/connector/ScopedContainer.ts"],"sourcesContent":[null],"names":[],"mappings":"kCAAA;AAGA,MAAM,gBAAgB,GAAG,aAAa,CAAC;MAQ1B,eAAe,CAAA;AAChB,IAAA,OAAO,wBAAwB,GAAuC,EAAE,CAAC;IAEzE,OAAO,gBAAgB,CAAY;AAEnC,IAAA,OAAgB,mBAAmB,GAAyB,EAAE,CAAC;AAEvE;;;AAGG;IACH,OAAO,sBAAsB,CAA8B;AAE3D;;;;;;;;;;;;;AAaG;IACH,OAAO,0BAA0B,CAAC,EAAoC,EAAA;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACnE,YAAA,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC7B;aAAM;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;KACJ;AAED;;;;;;;AAOG;AACH,IAAA,OAAO,GAAG,CAAC,OAAO,GAAG,gBAAgB,EAAA;QACjC,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SACjD;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;;;AAIG;AACH,IAAA,OAAO,OAAO,CAAC,OAAO,GAAG,gBAAgB,EAAA;QACrC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,OAAO,MAAM,CAAC,OAAO,GAAG,gBAAgB,EAAA;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,SAAS,CAAC,SAAS,EAAE,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,OAAO,SAAS,GAAA;QACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5E;AAED;;;;;;;;;;;;;;;;;AAiBG;IACH,OAAO,0BAA0B,CAAC,EAAoC,EAAA;AAClE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,OAAO,gBAAgB,GAAA;AAC3B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACrE,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,OAAO,qBAAqB,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,YAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;SACxE;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -1 +1,2 @@
1
- export * from './abstract-connector';
1
+ export * from './AbstractConnector';
2
+ export * from './ScopedContainer';
@@ -1,4 +1,5 @@
1
1
  import {ApolloClient}from'@apollo/client/core/index.js';import {InMemoryCache}from'@apollo/client/cache/index.js';import {logger}from'@cdm-logger/client';import {ClientTypes}from'@common-stack/core';class UtilityClass {
2
+ modules;
2
3
  constructor(modules) {
3
4
  this.modules = modules;
4
5
  }
@@ -11,11 +12,11 @@ import {ApolloClient}from'@apollo/client/core/index.js';import {InMemoryCache}fr
11
12
  * @param modules
12
13
  */
13
14
  const apolloClientHelper = (modules) => {
14
- const clientState = modules.getStateParams({ resolverContex: () => modules.createService({}, {}) });
15
+ const clientState = modules.getStateParams({ resolverContex: () => modules.createService({}) });
15
16
  const dataIdFromObject = (result) => modules.getDataIdFromObject(result);
16
17
  const cache = new InMemoryCache({
17
18
  dataIdFromObject,
18
- possibleTypes: clientState.possibleTypes
19
+ possibleTypes: clientState.possibleTypes,
19
20
  });
20
21
  const schema = ``;
21
22
  const params = {
@@ -25,7 +26,7 @@ const apolloClientHelper = (modules) => {
25
26
  resolvers: clientState.resolvers,
26
27
  };
27
28
  const client = new ApolloClient(params);
28
- clientState.defaults.map(x => {
29
+ clientState.defaults.map((x) => {
29
30
  if (x.type === 'query') {
30
31
  cache.writeQuery(x);
31
32
  }
@@ -40,7 +41,7 @@ const apolloClientHelper = (modules) => {
40
41
  container.bind(ClientTypes.UtilityClass).toConstantValue(utility);
41
42
  container.bind(ClientTypes.ApolloClient).toConstantValue(client);
42
43
  container.bind(ClientTypes.InMemoryCache).toConstantValue(cache);
43
- const services = modules.createService({}, {});
44
+ const services = modules.createService({});
44
45
  client.container = services;
45
46
  return {
46
47
  client,
@@ -1 +1 @@
1
- {"version":3,"file":"apollo-client-test-helper.js","sources":["../../src/helpers/apollo-client-test-helper.ts"],"sourcesContent":[null],"names":[],"mappings":"uMAOA,MAAM,YAAY,CAAA;AACd,IAAA,WAAA,CAAoB,OAAO,EAAA;QAAP,IAAO,CAAA,OAAA,GAAP,OAAO,CAAA;KAC1B;AACM,IAAA,WAAW,CAAC,QAAQ,EAAA;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACrD;AACJ,CAAA;AAGD;;;AAGG;AACU,MAAA,kBAAkB,GAAG,CAAC,OAAiB,KAAI;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpG,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACzE,IAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;QAC5B,gBAAgB;QAChB,aAAa,EAAE,WAAW,CAAC,aAAa;AAC3C,KAAA,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAA,CAAE,CAAC;AAElB,IAAA,MAAM,MAAM,GAA6B;QACrC,KAAK;AACL,QAAA,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAS,WAAW,CAAC,QAAQ,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,SAAgB;KAC1C,CAAC;AACF,IAAA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACxC,IAAA,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;AACzB,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AAC9B,YAAA,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;;IAG1C,MAAM,SAAS,GAAyB,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3D,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACjE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,IAAA,MAAc,CAAC,SAAS,GAAG,QAAQ,CAAC;IAGrC,OAAO;QACH,MAAM;QACN,gBAAgB;QAChB,QAAQ;QACR,SAAS;KACZ,CAAA;AACL"}
1
+ {"version":3,"file":"apollo-client-test-helper.js","sources":["../../src/helpers/apollo-client-test-helper.ts"],"sourcesContent":[null],"names":[],"mappings":"uMAOA,MAAM,YAAY,CAAA;AACM,IAAA,OAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,OAAO,EAAA;QAAP,IAAO,CAAA,OAAA,GAAP,OAAO,CAAA;KAC1B;AACM,IAAA,WAAW,CAAC,QAAQ,EAAA;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACrD;AACJ,CAAA;AAGD;;;AAGG;AACU,MAAA,kBAAkB,GAAG,CAAC,OAAiB,KAAI;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEhG,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACzE,IAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;QAC5B,gBAAgB;QAChB,aAAa,EAAE,WAAW,CAAC,aAAa;AAC3C,KAAA,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAA,CAAE,CAAC;AAElB,IAAA,MAAM,MAAM,GAA6B;QACrC,KAAK;AACL,QAAA,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAS,WAAW,CAAC,QAAQ,CAAC;QACrD,SAAS,EAAE,WAAW,CAAC,SAAgB;KAC1C,CAAC;AACF,IAAA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC3B,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACvB;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AAC9B,YAAA,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC1B;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;;IAG1C,MAAM,SAAS,GAAyB,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3D,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACjE,IAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAA,MAAc,CAAC,SAAS,GAAG,QAAQ,CAAC;IAErC,OAAO;QACH,MAAM;QACN,gBAAgB;QAChB,QAAQ;QACR,SAAS;KACZ,CAAC;AACN"}
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- export{logger}from'./logger/logger.js';export{AbstractFeature,featureCatalog}from'./connector/abstract-connector.js';export{REDUX_PERSIST_KEY}from'./constants/constants.js';export{apolloClientHelper}from'./helpers/apollo-client-test-helper.js';export{ClientTypes,ElectronTypes}from'@common-stack/core';//# sourceMappingURL=index.js.map
1
+ export{logger}from'./logger/logger.js';export{AbstractFeature,featureCatalog}from'./connector/AbstractConnector.js';export{ScopedContainer}from'./connector/ScopedContainer.js';export{REDUX_PERSIST_KEY}from'./constants/constants.js';export{apolloClientHelper}from'./helpers/apollo-client-test-helper.js';export{ClientTypes,ElectronTypes}from'@common-stack/core';//# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { ApolloLink, IdGetterObj, Operation, PossibleTypesMap, Resolvers, TypePolicies } from '@apollo/client/core/index.js';
2
- import { interfaces } from 'inversify';
2
+ import { Container, interfaces } from 'inversify';
3
3
  import { Cache } from '@apollo/client/cache/index.js';
4
4
  import { ReducersMapObject } from 'redux';
5
5
  import { ErrorLink } from '@apollo/client/link/error/index.js';
@@ -48,6 +48,7 @@ export interface IClientStateConfig {
48
48
  export interface IClientState {
49
49
  container?: interfaces.Container;
50
50
  resolvers?: Resolvers;
51
+ nativeResolvers?: Resolvers;
51
52
  defaults: IClientStateDefault[];
52
53
  typeDefs?: string | string[];
53
54
  possibleTypes?: PossibleTypesMap;
@@ -187,10 +188,6 @@ export interface IModuleShape {
187
188
  */
188
189
  export interface IFeature extends IModuleShape {
189
190
  readonly data: any[];
190
- /**
191
- * @returns envalidConfig of all features
192
- */
193
- readonly envalidConfigs: any[];
194
191
  /**
195
192
  * @returns Redux-Observable Epics
196
193
  */
@@ -231,19 +228,25 @@ export interface IFeature extends IModuleShape {
231
228
  * @param args Options to pass to each Container Module
232
229
  * @returns Created container and binds all the container modules
233
230
  */
234
- createContainers(args: any): any;
235
- createService(options: any, updateOptions: any): any;
231
+ createContainers(args: any, scopeId?: string): any;
232
+ createService(options: any, scopeId?: string): any;
236
233
  /**
237
234
  * @param args Provide resolverContext which can be passed to all resolver functions.
238
235
  * @returns IClientState
239
236
  */
240
237
  getStateParams(args?: {
241
238
  resolverContex?: any;
239
+ container?: Container;
242
240
  }): IClientState;
243
241
  getDataIdFromObject(result: {
244
242
  [key: string]: string | number;
245
243
  __typename?: string;
246
244
  } | IdGetterObj): any;
245
+ /**
246
+ * Apollo Resolvers
247
+ * @param context
248
+ */
249
+ getApolloResolvers(context: any): any;
247
250
  /**
248
251
  * @arguments root React tree root component
249
252
  * @arguments req Http Request
@@ -1 +1,2 @@
1
1
  export * from './connector';
2
+ export * from './loaderContext';
@@ -0,0 +1,15 @@
1
+ import type { CdmLogger } from '@cdm-logger/core';
2
+ import type { Redis } from 'ioredis';
3
+ import type { Container } from 'inversify';
4
+ import type { ApolloClient, NormalizedCache } from '@apollo/client/index';
5
+ import { IFeature } from './connector';
6
+ export interface IAppLoadContext<S = any> {
7
+ modules: IFeature;
8
+ routeConfig: any;
9
+ store: any;
10
+ container: Container;
11
+ apolloClient: ApolloClient<NormalizedCache>;
12
+ services: S;
13
+ redisClient: Redis;
14
+ logger?: CdmLogger.ILogger;
15
+ }
@@ -0,0 +1,3 @@
1
+ import { Resolvers } from '@apollo/client/core/index.js';
2
+ import { ResolverType } from '../interfaces/connector';
3
+ export declare function consolidatedResolvers(resolvers: ResolverType, context: any): Resolvers;
@@ -0,0 +1,11 @@
1
+ import {merge}from'lodash-es';function consolidatedResolvers(resolvers, context) {
2
+ let finalResolvers;
3
+ if (Array.isArray(resolvers)) {
4
+ const resolverObject = resolvers.map((resolver) => typeof resolver === 'function' ? resolver(context) : resolver);
5
+ finalResolvers = merge({}, ...resolverObject);
6
+ }
7
+ else {
8
+ finalResolvers = typeof resolvers === 'function' ? resolvers(context) : resolvers;
9
+ }
10
+ return finalResolvers;
11
+ }export{consolidatedResolvers};//# sourceMappingURL=resolversUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolversUtils.js","sources":["../../src/utils/resolversUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"8BAIgB,SAAA,qBAAqB,CAAC,SAAuB,EAAE,OAAO,EAAA;AAClE,IAAA,IAAI,cAAc,CAAC;AACnB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC1B,MAAM,cAAc,GAAI,SAAsB,CAAC,GAAG,CAAC,CAAC,QAAQ,KACxD,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAChE,CAAC;QACF,cAAc,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,CAAC;KACjD;SAAM;AACH,QAAA,cAAc,GAAG,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;KACrF;AAED,IAAA,OAAO,cAAc,CAAC;AAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@common-stack/client-core",
3
- "version": "4.0.1-alpha.0",
3
+ "version": "4.0.1-alpha.24",
4
4
  "description": "common core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -21,17 +21,21 @@
21
21
  "watch": "yarn build:lib:watch"
22
22
  },
23
23
  "dependencies": {
24
- "@common-stack/core": "4.0.1-alpha.0"
24
+ "@common-stack/core": "4.0.1-alpha.11"
25
+ },
26
+ "devDependencies": {
27
+ "redux-observable": "^1.2.0"
25
28
  },
26
29
  "publishConfig": {
27
30
  "access": "public"
28
31
  },
29
32
  "peerDependencies": {
30
33
  "@apollo/client": ">=3.0.0",
31
- "redux": ">=4.0.1"
34
+ "redux": ">=4.0.1",
35
+ "redux-observable": ">=2.0.0"
32
36
  },
33
37
  "typescript": {
34
38
  "definition": "lib/index.d.ts"
35
39
  },
36
- "gitHead": "d2631ce11c2e00c523f29182bc7817601edc5733"
40
+ "gitHead": "02786a5008e25af0ee36cf6996835b9864c5ec75"
37
41
  }
@@ -1,235 +0,0 @@
1
- import*as React from'react';import {merge,without,union,map,castArray}from'lodash-es';import {Container}from'inversify';/* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable no-nested-ternary */
3
- /* eslint-disable no-use-before-define */
4
- const combine = (features, extractor) => without(union(...map(features, (res) => castArray(extractor(res)))), undefined);
5
- const featureCatalog = {};
6
- class AbstractFeature {
7
- /**
8
- * Constructs Client feature module representation, that folds all the feature modules
9
- * into a single module represented by this instance.
10
- * @param feature
11
- * @param features
12
- */
13
- constructor(feature,
14
- // tslint:disable:trailing-comma
15
- ...features) {
16
- // Connectivity
17
- this.link = combine(arguments, (arg) => arg.link);
18
- this.errorLink = combine(arguments, (arg) => arg.errorLink);
19
- this.createFetch = combine(arguments, (arg) => arg.createFetch)
20
- .slice(-1)
21
- .pop();
22
- this.connectionParam = combine(arguments, (arg) => arg.connectionParam);
23
- // State management
24
- this.reducer = combine(arguments, (arg) => arg.reducer);
25
- // Client side schema for apollo-link-state
26
- this.clientStateParams = combine(arguments, (arg) => arg.clientStateParams);
27
- // Envalid config
28
- this.envalidConfig = combine(arguments, (arg) => arg.envalidConfig);
29
- // Epic actions
30
- this.epic = combine(arguments, (arg) => arg.epic);
31
- this.sidebarSegments = combine(arguments, (arg) => arg.sidebarSegments);
32
- this.leftMainPanelItems = combine(arguments, (arg) => arg.leftMainPanelItems);
33
- this.middleMainPanelItems = combine(arguments, (arg) => arg.middleMainPanelItems);
34
- this.middleMainPanelItemsProps = combine(arguments, (arg) => arg.middleMainPanelItemsProps);
35
- this.leftFooterItems = combine(arguments, (arg) => arg.leftFooterItems);
36
- this.rightFooterItems = combine(arguments, (arg) => arg.rightFooterItems);
37
- this.middleLowerPanelItems = combine(arguments, (arg) => arg.middleLowerPanelItems);
38
- this.dataIdFromObject = combine(arguments, (arg) => arg.dataIdFromObject);
39
- this.navItem = combine(arguments, (arg) => arg.navItem);
40
- this.navItemRight = combine(arguments, (arg) => arg.navItemRight);
41
- // UI provider-components
42
- this.rootComponentFactory = combine(arguments, (arg) => arg.rootComponentFactory);
43
- this.dataRootComponent = combine(arguments, (arg) => arg.dataRootComponent);
44
- // UI provider-components
45
- this.languagesFuncs = combine(arguments, (arg) => arg.languagesFuncs);
46
- // container
47
- this.createContainerFunc = combine(arguments, (arg) => arg.createContainerFunc);
48
- // services
49
- this.createServiceFunc = combine(arguments, (arg) => arg.createServiceFunc);
50
- // TODO: Use React Helmet for those. Low level DOM manipulation
51
- this.stylesInsert = combine(arguments, (arg) => arg.stylesInsert);
52
- this.scriptsInsert = combine(arguments, (arg) => arg.scriptsInsert);
53
- this.reduxPersistTransforms = combine(arguments, (arg) => arg.reduxPersistTransforms);
54
- // Shared modules data
55
- this.data = combine([{}].concat(Array.from(arguments)), (arg) => arg.data).reduce((acc, el) => [{ ...acc[0], ...el }], [{}]);
56
- }
57
- get envalidConfigs() {
58
- return this.envalidConfig.reduce((prev, config) => {
59
- for (const key in config) {
60
- if (prev[key]) {
61
- if (prev[key].required) {
62
- config[key].required = prev[key].required;
63
- }
64
- if (prev[key].devRequired) {
65
- config[key].devRequired = prev[key].devRequired;
66
- }
67
- }
68
- return { ...prev, ...config };
69
- }
70
- }, {});
71
- }
72
- get container() {
73
- if (!this._container) {
74
- this._container = new Container();
75
- }
76
- return this._container;
77
- }
78
- get epics() {
79
- return this.epic;
80
- }
81
- getRouter(withRoot, rootComponent) {
82
- return this.routerFactory(this.getRoutes());
83
- }
84
- get reducers() {
85
- return merge({}, ...(this.reducer || []));
86
- }
87
- createContainers(options) {
88
- // only create once
89
- if (this.isContainerLoaded) {
90
- return this.container;
91
- }
92
- this.createContainerFunc.map((createModule) => {
93
- this.container.load(createModule(options));
94
- });
95
- this.isContainerLoaded = true;
96
- return this.container;
97
- }
98
- createService(options, updateOptions) {
99
- // only create once
100
- if (this.services) {
101
- return this.services;
102
- }
103
- try {
104
- if (!this.isContainerLoaded) {
105
- this.createContainers(options);
106
- }
107
- this.services = merge({}, ...this.createServiceFunc.map((serviceFunc) => serviceFunc(this.container)));
108
- return this.services;
109
- }
110
- catch (err) {
111
- throw err;
112
- }
113
- }
114
- getStateParams(args = {}) {
115
- const cn = args.container || this.container;
116
- const { requestResponsePair } = args;
117
- return this.clientStateParams.reduce((acc, curr) => {
118
- const defs = curr.typeDefs ? (Array.isArray(curr.typeDefs) ? curr.typeDefs : [curr.typeDefs]) : [];
119
- const preLinksAccumulator = acc.preLinks || [];
120
- const attemptFuncAccumulator = acc.retryLinkAttemptFuncs || [];
121
- const connectionParamsFuncAccumulator = acc.connectionParams || [];
122
- const callbackBackFuncAccumulator = acc.connectionCallbackFuncs || [];
123
- const attemptDefaults = acc.defaults || [];
124
- const schema = defs
125
- .map((typeDef) => {
126
- if (typeof typeDef === 'string') {
127
- return typeDef;
128
- }
129
- console.warn(`Not supported AST format `, typeDef);
130
- })
131
- .map((str) => str?.trim())
132
- .join('\n');
133
- const typeDefs = acc.typeDefs ? acc.typeDefs.concat('\n', schema) : schema;
134
- const defaults = curr.defaults ? attemptDefaults.concat(curr.defaults) : attemptDefaults;
135
- const resolvers = merge(acc.resolvers, consoldidatedResolvers(curr.resolvers, args.resolverContex));
136
- const possibleTypes = merge(acc.possibleTypes, curr.possibleTypes);
137
- const typePolicies = merge(acc.typePolicies, curr.typePolicies);
138
- const retryLinkAttemptFuncs = curr.retryLinkAttemptFuncs
139
- ? attemptFuncAccumulator.concat(curr.retryLinkAttemptFuncs || [])
140
- : attemptFuncAccumulator;
141
- const preLinks = preLinksAccumulator.concat((curr.preLinkFuncs || []).map((linkF) => linkF(cn, requestResponsePair)) || []);
142
- const connectionParams = curr.connectionParam
143
- ? connectionParamsFuncAccumulator.concat(consoldidatedConnection(curr.connectionParam, cn))
144
- : connectionParamsFuncAccumulator;
145
- const connectionCallbackFuncs = curr.connectionCallbackFunc
146
- ? callbackBackFuncAccumulator.concat(curr.connectionCallbackFunc(cn) || [])
147
- : callbackBackFuncAccumulator;
148
- return {
149
- defaults,
150
- resolvers,
151
- typeDefs,
152
- possibleTypes,
153
- retryLinkAttemptFuncs,
154
- preLinks,
155
- typePolicies,
156
- connectionParams,
157
- connectionCallbackFuncs,
158
- };
159
- }, {});
160
- }
161
- get connectionParams() {
162
- return this.connectionParam;
163
- }
164
- get stylesInserts() {
165
- return this.stylesInsert;
166
- }
167
- get scriptsInserts() {
168
- return this.scriptsInsert;
169
- }
170
- get leftMainPanel() {
171
- return merge({}, ...(this.leftMainPanelItems || []));
172
- }
173
- get middleMainPanel() {
174
- const panelObj = merge({}, ...(this.middleMainPanelItems || []));
175
- const withProps = {};
176
- Object.keys(panelObj).forEach((key) => {
177
- const props = this.middleMainPanelItemsProps.filter((el) => !!el[key]);
178
- let mergedProps = [];
179
- props.forEach((el) => {
180
- const insideEl = el[key];
181
- Object.keys(insideEl).forEach((item) => {
182
- if (mergedProps[item]) {
183
- mergedProps[item] = [...mergedProps[item], ...insideEl[item]];
184
- }
185
- else {
186
- mergedProps = { ...mergedProps, [item]: insideEl[item] };
187
- }
188
- });
189
- });
190
- return (withProps[key] = React.cloneElement(panelObj[key], mergedProps));
191
- });
192
- return withProps;
193
- }
194
- get leftFooter() {
195
- return this.leftFooterItems;
196
- }
197
- get rightFooter() {
198
- return this.rightFooterItems;
199
- }
200
- get middleLowerPanel() {
201
- return merge({}, ...(this.middleLowerPanelItems || []));
202
- }
203
- get reduxPersistStateTransformers() {
204
- return this.reduxPersistTransforms;
205
- }
206
- getDataIdFromObject(result) {
207
- const dataIdFromObject = merge({}, ...this.dataIdFromObject);
208
- if (dataIdFromObject[result.__typename]) {
209
- return dataIdFromObject[result.__typename](result);
210
- }
211
- return result.id || result._id;
212
- }
213
- }
214
- function consoldidatedResolvers(resolvers, context) {
215
- let finalResolvers;
216
- if (Array.isArray(resolvers)) {
217
- const resolverObject = resolvers.map((resolver) => typeof resolver === 'function' ? resolver(context) : resolver);
218
- finalResolvers = merge({}, ...resolverObject);
219
- }
220
- else {
221
- finalResolvers = typeof resolvers === 'function' ? resolvers(context) : resolvers;
222
- }
223
- return finalResolvers;
224
- }
225
- async function consoldidatedConnection(connectionParams, context) {
226
- let finalConnectionParams;
227
- if (Array.isArray(connectionParams)) {
228
- throw new Error('Array is not supported for ConnectionParams');
229
- }
230
- else {
231
- finalConnectionParams =
232
- typeof connectionParams === 'function' ? await connectionParams(context) : connectionParams;
233
- }
234
- return finalConnectionParams;
235
- }export{AbstractFeature,featureCatalog};//# sourceMappingURL=abstract-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-connector.js","sources":["../../src/connector/abstract-connector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}