@common-stack/client-core 4.0.1-alpha.0 → 4.0.1-alpha.11
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.
- package/lib/__tests__/test-feature.d.ts +0 -1
- package/lib/connector/{abstract-connector.d.ts → AbstractConnector.d.ts} +8 -13
- package/lib/connector/AbstractConnector.js +227 -0
- package/lib/connector/AbstractConnector.js.map +1 -0
- package/lib/connector/ScopedContainer.d.ts +73 -0
- package/lib/connector/ScopedContainer.js +112 -0
- package/lib/connector/ScopedContainer.js.map +1 -0
- package/lib/connector/ScopedContainer.test.d.ts +1 -0
- package/lib/connector/index.d.ts +2 -1
- package/lib/helpers/apollo-client-test-helper.js +5 -4
- package/lib/helpers/apollo-client-test-helper.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/interfaces/connector.d.ts +10 -7
- package/lib/utils/resolversUtils.d.ts +3 -0
- package/lib/utils/resolversUtils.js +11 -0
- package/lib/utils/resolversUtils.js.map +1 -0
- package/package.json +8 -4
- package/lib/connector/abstract-connector.js +0 -235
- package/lib/connector/abstract-connector.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IdGetterObj } from '@apollo/client/core
|
|
2
|
-
import { ErrorLink } from '@apollo/client/link/error
|
|
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
|
-
|
|
53
|
-
private
|
|
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,
|
|
55
|
+
createContainers(options: any, scopeId?: string): interfaces.Container;
|
|
56
|
+
createService(options: any, scopeId?: string): any;
|
|
62
57
|
getStateParams(args?: {
|
|
63
58
|
resolverContex?: any;
|
|
64
|
-
|
|
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":"oMAAA;AACA;AACA;AACA;AAWA,MAAM,OAAO,GAAG,CAAC,QAAwB,EAAE,SAAS,KAChD,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAE5E,MAAM,cAAc,GAAG,GAAG;MAEX,eAAe,CAAA;AAC1B,IAAA,IAAI,CAAM;AAEV,IAAA,aAAa,CAAQ;AAErB,IAAA,SAAS,CAAc;AAEvB,IAAA,WAAW,CAAM;AAEjB,IAAA,eAAe,CAAM;AAErB,IAAA,IAAI,CAAM;AAEV,IAAA,OAAO,CAAsB;AAE7B,IAAA,YAAY,CAAM;AAElB,IAAA,iBAAiB,CAAwB;AAEzC,IAAA,eAAe,CAAQ;AAEvB,IAAA,aAAa,CAAM;AAEnB,IAAA,KAAK,CAAM;AAEX,IAAA,OAAO,CAAM;AAEb,IAAA,YAAY,CAAM;AAElB,IAAA,oBAAoB,CAAQ;AAE5B,IAAA,iBAAiB,CAAQ;AAEzB,IAAA,kBAAkB,CAAQ;AAE1B,IAAA,YAAY,CAAQ;AAEpB,IAAA,aAAa,CAAQ;AAErB,IAAA,WAAW,CAAQ;AAEnB,IAAA,cAAc,CAAQ;AAEtB,IAAA,IAAI,CAAQ;AAEZ,IAAA,gBAAgB,CAA8C;AAE9D,IAAA,mBAAmB,CAAa;AAEhC,IAAA,iBAAiB,CAAa;AAE9B,IAAA,kBAAkB,CAAM;AAExB,IAAA,oBAAoB,CAAM;AAE1B,IAAA,yBAAyB,CAAM;AAE/B,IAAA,eAAe,CAAM;AAErB,IAAA,gBAAgB,CAAM;AAEtB,IAAA,qBAAqB,CAAM;AAE3B,IAAA,sBAAsB,CAAQ;AAE7B,IAAA,iBAAiB,CAAU;AAE3B,IAAA,QAAQ,CAAC;AAET,IAAA,UAAU,CAAuB;AAEjC,IAAA,gBAAgB,CAAC;IAEzB,WAAY,CAAA,OAAsB,EAAE,GAAG,QAAwB,EAAA;QAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,CAAC;aACrD,KAAK,CAAC,CAAC,CAAC,CAAC;AACT,aAAA,GAAG,EAAE,CAAC;AACX,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,cAAc,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/G;AAEM,IAAA,kBAAkB,CAAC,cAAc,EAAA;;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SAC3D;;AAGD,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAChE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAC3F,EAAE,CACL,CAAC;AAEF,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAEO,IAAA,YAAY,CAAC,OAAgB,EAAA;QACjC,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAEM,SAAS,CAAC,QAAkB,EAAE,aAAmB,EAAA;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAC/C;AAQD,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7C;IAEM,gBAAgB,CAAC,OAAO,EAAE,OAAgB,EAAA;QAC7C,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KACrC;IAEM,aAAa,CAAC,OAAO,EAAE,OAAgB,EAAA;AAC1C,QAAA,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;AACD,QAAA,IAAI;YACA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CACjB,EAAE,EACF,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAC1F,CAAC;YACF,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QAAC,OAAO,GAAG,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,YAAA,MAAM,GAAG,CAAC;SACb;KACJ;IAEM,cAAc,CACjB,OAII,EAAE,EAAA;QAEN,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;AAErC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,IAAS,KAAI;AAC1E,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnG,YAAA,MAAM,mBAAmB,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC/C,YAAA,MAAM,sBAAsB,GAAG,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;AAC/D,YAAA,MAAM,+BAA+B,GAAG,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACnE,YAAA,MAAM,2BAA2B,GAAG,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;AACtE,YAAA,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI;iBACd,GAAG,CAAC,CAAC,OAAO,MAAM,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;iBAC9D,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;iBACxB,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;YAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;;AAGzF,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvE,YAAA,MAAM,SAAS,GAAG,KAAK,CACnB,GAAG,CAAC,SAAS,EACb,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAChD,CAAC;AACf,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChE,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;kBAClD,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC;kBAC/D,sBAAsB,CAAC;AAC7B,YAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CACvC,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE,CACjF,CAAC;AACF,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe;AACzC,kBAAE,+BAA+B,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;kBACxF,+BAA+B,CAAC;AACtC,YAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB;AACvD,kBAAE,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;kBACzE,2BAA2B,CAAC;YAClC,OAAO;gBACH,QAAQ;gBACR,SAAS;gBACT,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,qBAAqB;gBACrB,QAAQ;gBACR,YAAY;gBACZ,gBAAgB;gBAChB,uBAAuB;aAC1B,CAAC;SACL,EAAE,EAAkB,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/C,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,EAAS,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACjB,gBAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,oBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnB,wBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;qBACjE;yBAAM;AACH,wBAAA,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC5D;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;AACpE,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,6BAA6B,GAAA;QAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAEM,IAAA,mBAAmB,CAAC,MAA6E,EAAA;QACpG,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7D,QAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;SACtD;AACD,QAAA,OAAO,MAAM,CAAC,EAAE,IAAK,MAAc,CAAC,GAAG,CAAC;KAC3C;AAOJ,CAAA;AAED,eAAe,sBAAsB,CAAC,gBAA2C,EAAE,OAAO,EAAA;AACtF,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAClE;AACD,IAAA,OAAO,OAAO,gBAAgB,KAAK,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC;AACvG"}
|
|
@@ -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';
|
package/lib/connector/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
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;
|
|
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/
|
|
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,
|
|
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
|
|
@@ -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.
|
|
3
|
+
"version": "4.0.1-alpha.11",
|
|
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.
|
|
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": "
|
|
40
|
+
"gitHead": "6cf439a9ad8f608c93c119d38ce474feca88998b"
|
|
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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"}
|