@owlmeans/context 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +750 -0
- package/build/.gitkeep +0 -0
- package/build/config.d.ts +4 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +15 -0
- package/build/config.js.map +1 -0
- package/build/consts.d.ts +50 -0
- package/build/consts.d.ts.map +1 -0
- package/build/consts.js +56 -0
- package/build/consts.js.map +1 -0
- package/build/context.d.ts +3 -0
- package/build/context.d.ts.map +1 -0
- package/build/context.js +203 -0
- package/build/context.js.map +1 -0
- package/build/helper.d.ts +8 -0
- package/build/helper.d.ts.map +1 -0
- package/build/helper.js +31 -0
- package/build/helper.js.map +1 -0
- package/build/index.d.ts +7 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +6 -0
- package/build/index.js.map +1 -0
- package/build/service.d.ts +7 -0
- package/build/service.d.ts.map +1 -0
- package/build/service.js +27 -0
- package/build/service.js.map +1 -0
- package/build/types.d.ts +80 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/build/utils/context.d.ts +11 -0
- package/build/utils/context.d.ts.map +1 -0
- package/build/utils/context.js +15 -0
- package/build/utils/context.js.map +1 -0
- package/build/utils/index.d.ts +3 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +3 -0
- package/build/utils/index.js.map +1 -0
- package/build/utils/layer.d.ts +6 -0
- package/build/utils/layer.d.ts.map +1 -0
- package/build/utils/layer.js +12 -0
- package/build/utils/layer.js.map +1 -0
- package/package.json +31 -0
- package/src/config.ts +17 -0
- package/src/consts.ts +58 -0
- package/src/context.ts +261 -0
- package/src/helper.ts +43 -0
- package/src/index.ts +7 -0
- package/src/service.ts +49 -0
- package/src/types.ts +96 -0
- package/src/utils/context.ts +34 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/layer.ts +17 -0
- package/tsconfig.json +14 -0
- package/tsconfig.tsbuildinfo +1 -0
package/build/.gitkeep
ADDED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,QAAQ,OAAO,WAAW,MAAM,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAG,CAazG,CAAA"}
|
package/build/config.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppType, Layer } from './consts.js';
|
|
2
|
+
export const makeBasicConfig = (type, service, cfg) => {
|
|
3
|
+
const config = {
|
|
4
|
+
ready: false,
|
|
5
|
+
service,
|
|
6
|
+
layer: type === AppType.Frontend ? Layer.Service : Layer.System,
|
|
7
|
+
type,
|
|
8
|
+
debug: {},
|
|
9
|
+
services: {},
|
|
10
|
+
records: [],
|
|
11
|
+
...cfg
|
|
12
|
+
};
|
|
13
|
+
return config;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAG5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAwB,IAAa,EAAE,OAAe,EAAE,GAAgB,EAAK,EAAE;IAC5G,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,KAAK;QACZ,OAAO;QACP,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;QAC/D,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,GAAG,GAAG;KACF,CAAA;IAEN,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare enum Layer {
|
|
2
|
+
System = "system",
|
|
3
|
+
Global = "global",
|
|
4
|
+
Service = "service",
|
|
5
|
+
Entity = "entity",
|
|
6
|
+
User = "user"
|
|
7
|
+
}
|
|
8
|
+
export declare enum AppType {
|
|
9
|
+
Backend = "backend",
|
|
10
|
+
Frontend = "frontend"
|
|
11
|
+
}
|
|
12
|
+
export declare enum MiddlewareType {
|
|
13
|
+
Config = "config",
|
|
14
|
+
Context = "context"
|
|
15
|
+
}
|
|
16
|
+
export declare enum ContextStage {
|
|
17
|
+
Configuration = "configuration",
|
|
18
|
+
Loading = "loading",
|
|
19
|
+
Ready = "ready"
|
|
20
|
+
}
|
|
21
|
+
export declare enum MiddlewareStage {
|
|
22
|
+
Configuration = "configuration",
|
|
23
|
+
Loading = "loading",
|
|
24
|
+
Ready = "ready",
|
|
25
|
+
Switching = "switching"
|
|
26
|
+
}
|
|
27
|
+
export declare const CONFIG_RECORD = "records";
|
|
28
|
+
export declare const EMPTY_ENTITY = "[UNDEFINED_ENTITY]";
|
|
29
|
+
export declare const EMPTY_PROFILE = "[UNDEFINED_PROFILE]";
|
|
30
|
+
/**
|
|
31
|
+
* It's used to define intermedieate base route
|
|
32
|
+
*/
|
|
33
|
+
export declare const ROOT = "root";
|
|
34
|
+
/**
|
|
35
|
+
* It's used to define the home final route (default route in the app)
|
|
36
|
+
*/
|
|
37
|
+
export declare const HOME = "home";
|
|
38
|
+
/**
|
|
39
|
+
* It's used to define intermediate area where authentication isn't required
|
|
40
|
+
*/
|
|
41
|
+
export declare const GUEST = "guest";
|
|
42
|
+
/**
|
|
43
|
+
* It's used to define intermediate area where authentication is required
|
|
44
|
+
*/
|
|
45
|
+
export declare const BASE = "base";
|
|
46
|
+
/**
|
|
47
|
+
* It's used to show user some fallbacke error screen when things gone completely wrong
|
|
48
|
+
*/
|
|
49
|
+
export declare const CRASH = "crash";
|
|
50
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,oBAAY,KAAK;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,YAAY;IACtB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAChD,eAAO,MAAM,aAAa,wBAAwB,CAAA;AAGlD;;GAEG;AACH,eAAO,MAAM,IAAI,SAAS,CAAA;AAC1B;;GAEG;AACH,eAAO,MAAM,IAAI,SAAS,CAAA;AAC1B;;GAEG;AACH,eAAO,MAAM,KAAK,UAAU,CAAA;AAC5B;;GAEG;AACH,eAAO,MAAM,IAAI,SAAS,CAAA;AAC1B;;GAEG;AACH,eAAO,MAAM,KAAK,UAAU,CAAA"}
|
package/build/consts.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export var Layer;
|
|
2
|
+
(function (Layer) {
|
|
3
|
+
Layer["System"] = "system";
|
|
4
|
+
Layer["Global"] = "global";
|
|
5
|
+
Layer["Service"] = "service";
|
|
6
|
+
Layer["Entity"] = "entity";
|
|
7
|
+
Layer["User"] = "user";
|
|
8
|
+
})(Layer || (Layer = {}));
|
|
9
|
+
export var AppType;
|
|
10
|
+
(function (AppType) {
|
|
11
|
+
AppType["Backend"] = "backend";
|
|
12
|
+
AppType["Frontend"] = "frontend";
|
|
13
|
+
})(AppType || (AppType = {}));
|
|
14
|
+
export var MiddlewareType;
|
|
15
|
+
(function (MiddlewareType) {
|
|
16
|
+
MiddlewareType["Config"] = "config";
|
|
17
|
+
MiddlewareType["Context"] = "context";
|
|
18
|
+
})(MiddlewareType || (MiddlewareType = {}));
|
|
19
|
+
export var ContextStage;
|
|
20
|
+
(function (ContextStage) {
|
|
21
|
+
ContextStage["Configuration"] = "configuration";
|
|
22
|
+
ContextStage["Loading"] = "loading";
|
|
23
|
+
ContextStage["Ready"] = "ready";
|
|
24
|
+
})(ContextStage || (ContextStage = {}));
|
|
25
|
+
export var MiddlewareStage;
|
|
26
|
+
(function (MiddlewareStage) {
|
|
27
|
+
MiddlewareStage["Configuration"] = "configuration";
|
|
28
|
+
MiddlewareStage["Loading"] = "loading";
|
|
29
|
+
MiddlewareStage["Ready"] = "ready";
|
|
30
|
+
MiddlewareStage["Switching"] = "switching";
|
|
31
|
+
})(MiddlewareStage || (MiddlewareStage = {}));
|
|
32
|
+
export const CONFIG_RECORD = 'records';
|
|
33
|
+
export const EMPTY_ENTITY = '[UNDEFINED_ENTITY]';
|
|
34
|
+
export const EMPTY_PROFILE = '[UNDEFINED_PROFILE]';
|
|
35
|
+
// Idioms to compose app
|
|
36
|
+
/**
|
|
37
|
+
* It's used to define intermedieate base route
|
|
38
|
+
*/
|
|
39
|
+
export const ROOT = 'root';
|
|
40
|
+
/**
|
|
41
|
+
* It's used to define the home final route (default route in the app)
|
|
42
|
+
*/
|
|
43
|
+
export const HOME = 'home';
|
|
44
|
+
/**
|
|
45
|
+
* It's used to define intermediate area where authentication isn't required
|
|
46
|
+
*/
|
|
47
|
+
export const GUEST = 'guest';
|
|
48
|
+
/**
|
|
49
|
+
* It's used to define intermediate area where authentication is required
|
|
50
|
+
*/
|
|
51
|
+
export const BASE = 'base';
|
|
52
|
+
/**
|
|
53
|
+
* It's used to show user some fallbacke error screen when things gone completely wrong
|
|
54
|
+
*/
|
|
55
|
+
export const CRASH = 'crash';
|
|
56
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAN,IAAY,KAMX;AAND,WAAY,KAAK;IACf,0BAAiB,CAAA;IACjB,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;IACnB,0BAAiB,CAAA;IACjB,sBAAa,CAAA;AACf,CAAC,EANW,KAAK,KAAL,KAAK,QAMhB;AAED,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,gCAAqB,CAAA;AACvB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,+CAA+B,CAAA;IAC/B,mCAAmB,CAAA;IACnB,+BAAe,CAAA;AACjB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,0CAAuB,CAAA;AACzB,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAA;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAA;AAElD,wBAAwB;AACxB;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAA;AAC1B;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAA;AAC1B;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAA;AAC5B;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAA;AAC1B;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAmD,MAAM,YAAY,CAAA;AAO5G,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,OAAO,CAAC,KAAG,YAAY,CAAC,CAAC,CA4P9E,CAAA"}
|
package/build/context.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { ContextStage, Layer, MiddlewareStage, MiddlewareType } from './consts.js';
|
|
2
|
+
// import { applyMiddlewares, getAllServices, getMiddlerwareKey, isResourceAvailable, layersOrder } from './utils/context.js'
|
|
3
|
+
import { applyMiddlewares, getAllServices, getMiddlerwareKey, isResourceAvailable } from './utils/context.js';
|
|
4
|
+
import { DEFAULT, initializeLayer } from './utils/layer.js';
|
|
5
|
+
export const makeBasicContext = (cfg) => {
|
|
6
|
+
const services = {};
|
|
7
|
+
const modules = {};
|
|
8
|
+
const resources = {};
|
|
9
|
+
const middlewares = {};
|
|
10
|
+
const allServices = {};
|
|
11
|
+
const allModules = {};
|
|
12
|
+
const allResources = {};
|
|
13
|
+
let configure;
|
|
14
|
+
let initialize;
|
|
15
|
+
const configured = new Promise(resolve => { configure = resolve; });
|
|
16
|
+
const initialized = new Promise(resolve => { initialize = resolve; });
|
|
17
|
+
// const contexts: Record<string, BasicContext<C>> = {}
|
|
18
|
+
const inLazyInit = new Set();
|
|
19
|
+
const context = {
|
|
20
|
+
cfg,
|
|
21
|
+
stage: ContextStage.Configuration,
|
|
22
|
+
waitForConfigured: () => configured,
|
|
23
|
+
waitForInitialized: () => initialized,
|
|
24
|
+
configure: () => {
|
|
25
|
+
if (context.stage !== ContextStage.Configuration) {
|
|
26
|
+
configure(true);
|
|
27
|
+
return context;
|
|
28
|
+
}
|
|
29
|
+
void (async () => {
|
|
30
|
+
await applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Configuration);
|
|
31
|
+
context.stage = ContextStage.Loading;
|
|
32
|
+
configure(true);
|
|
33
|
+
})();
|
|
34
|
+
return context;
|
|
35
|
+
},
|
|
36
|
+
init: async () => {
|
|
37
|
+
await configured;
|
|
38
|
+
if (context.stage !== ContextStage.Loading) {
|
|
39
|
+
return context;
|
|
40
|
+
}
|
|
41
|
+
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration);
|
|
42
|
+
await getAllServices(services, context.cfg.layer, context.cfg.layerId ?? DEFAULT).reduce(async (previous, service) => {
|
|
43
|
+
await previous;
|
|
44
|
+
if (!service.initialized) {
|
|
45
|
+
if (service.init != null) {
|
|
46
|
+
await service.init();
|
|
47
|
+
}
|
|
48
|
+
if (service.init == null && service.lazyInit == null) {
|
|
49
|
+
service.initialized = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, Promise.resolve());
|
|
53
|
+
await applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading);
|
|
54
|
+
const id = initializeLayer(resources, context.cfg.layer, context.cfg.layerId ?? DEFAULT);
|
|
55
|
+
await Object.values(resources[context.cfg.layer][id]).reduce(async (previous, resource) => {
|
|
56
|
+
await previous;
|
|
57
|
+
if (isResourceAvailable(resource, context.cfg.layer)) {
|
|
58
|
+
await resource.init?.();
|
|
59
|
+
}
|
|
60
|
+
}, Promise.resolve());
|
|
61
|
+
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading);
|
|
62
|
+
context.stage = ContextStage.Ready;
|
|
63
|
+
context.cfg.ready = true;
|
|
64
|
+
initialize(true);
|
|
65
|
+
void applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Ready);
|
|
66
|
+
return context;
|
|
67
|
+
},
|
|
68
|
+
registerService: (service) => {
|
|
69
|
+
const id = initializeLayer(services, context.cfg.layer, context.cfg.layerId);
|
|
70
|
+
service = service.registerContext(context);
|
|
71
|
+
if (allServices[service.alias] == null) {
|
|
72
|
+
allServices[service.alias] = service;
|
|
73
|
+
}
|
|
74
|
+
services[context.cfg.layer][id][service.alias] = service;
|
|
75
|
+
return context;
|
|
76
|
+
},
|
|
77
|
+
registerModule: (module) => {
|
|
78
|
+
const id = initializeLayer(modules, context.cfg.layer, context.cfg.layerId);
|
|
79
|
+
module = module.registerContext(context);
|
|
80
|
+
if (allModules[module.alias] == null) {
|
|
81
|
+
allModules[module.alias] = module;
|
|
82
|
+
}
|
|
83
|
+
modules[context.cfg.layer][id][module.alias] = module;
|
|
84
|
+
return context;
|
|
85
|
+
},
|
|
86
|
+
registerModules: (modules) => {
|
|
87
|
+
modules.forEach(module => context.registerModule(module));
|
|
88
|
+
return context;
|
|
89
|
+
},
|
|
90
|
+
registerResource: (resource) => {
|
|
91
|
+
const id = initializeLayer(resources, context.cfg.layer, context.cfg.layerId);
|
|
92
|
+
resource = resource.registerContext(context);
|
|
93
|
+
if (allResources[resource.alias] == null) {
|
|
94
|
+
allResources[resource.alias] = resource;
|
|
95
|
+
}
|
|
96
|
+
resources[context.cfg.layer][id][resource.alias] = resource;
|
|
97
|
+
return context;
|
|
98
|
+
},
|
|
99
|
+
registerMiddleware: (middleware) => {
|
|
100
|
+
const key = getMiddlerwareKey(middleware);
|
|
101
|
+
if (!(key in middlewares)) {
|
|
102
|
+
middlewares[key] = [];
|
|
103
|
+
}
|
|
104
|
+
middlewares[key].push(middleware);
|
|
105
|
+
return context;
|
|
106
|
+
},
|
|
107
|
+
get config() {
|
|
108
|
+
return configured.then(() => context.cfg);
|
|
109
|
+
},
|
|
110
|
+
service: (alias) => {
|
|
111
|
+
const id = initializeLayer(services, context.cfg.layer, context.cfg.layerId);
|
|
112
|
+
let _service;
|
|
113
|
+
if (services[context.cfg.layer]?.[id]?.[alias] != null) {
|
|
114
|
+
_service = services[context.cfg.layer][id][alias];
|
|
115
|
+
}
|
|
116
|
+
else if (services[Layer.Global]?.[id]?.[alias] != null) {
|
|
117
|
+
_service = services[context.cfg.layer][id][alias];
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
throw new SyntaxError(`Service ${alias} not found in layer ${context.cfg.layer}`);
|
|
121
|
+
}
|
|
122
|
+
if (!_service.initialized) {
|
|
123
|
+
if (_service.lazyInit != null) {
|
|
124
|
+
if (!inLazyInit.has(_service)) {
|
|
125
|
+
inLazyInit.add(_service);
|
|
126
|
+
_service.lazyInit()
|
|
127
|
+
.then(() => _service.initialized = true)
|
|
128
|
+
.finally(() => inLazyInit.delete(_service));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw new SyntaxError(`Service ${alias} is not initialized`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return _service;
|
|
136
|
+
},
|
|
137
|
+
module: (alias) => {
|
|
138
|
+
const id = initializeLayer(modules, context.cfg.layer, context.cfg.layerId);
|
|
139
|
+
if (modules[context.cfg.layer][id][alias] != null) {
|
|
140
|
+
return modules[context.cfg.layer][id][alias];
|
|
141
|
+
}
|
|
142
|
+
throw new SyntaxError(`Module ${alias} not found`);
|
|
143
|
+
},
|
|
144
|
+
resource: (alias) => {
|
|
145
|
+
const id = initializeLayer(resources, context.cfg.layer, context.cfg.layerId);
|
|
146
|
+
if (resources[context.cfg.layer][id][alias] != null) {
|
|
147
|
+
const resource = resources[context.cfg.layer][id][alias];
|
|
148
|
+
return resource;
|
|
149
|
+
}
|
|
150
|
+
throw new SyntaxError(`Resource ${alias} not found`);
|
|
151
|
+
},
|
|
152
|
+
modules: () => {
|
|
153
|
+
const id = initializeLayer(modules, context.cfg.layer, context.cfg.layerId);
|
|
154
|
+
return Object.values(modules[context.cfg.layer][id]);
|
|
155
|
+
},
|
|
156
|
+
/**
|
|
157
|
+
* @TODO Unfortunatly module cloning between contexts is quite unstable.
|
|
158
|
+
* And it looks like in some cases it relies on modules that aren't really clonned.
|
|
159
|
+
* The problem is that the not cloned modules are changing their context accross all context
|
|
160
|
+
* layers and we can't rely on such behaviour.
|
|
161
|
+
* So we disabled context update as a whole and all functionality that relies on it
|
|
162
|
+
* cause in curent release mixed tenancy is not in use in any project and it looks like
|
|
163
|
+
* there is no short term plans to use it some way.
|
|
164
|
+
*/
|
|
165
|
+
updateContext: async (_id, _layer) => {
|
|
166
|
+
return context;
|
|
167
|
+
// const index = layersOrder.indexOf(context.cfg.layer)
|
|
168
|
+
// layer = layer ?? (layersOrder[index + 1] != null ? layersOrder[index + 1] : undefined)
|
|
169
|
+
// if (layer == null) {
|
|
170
|
+
// throw new SyntaxError("There is no next layer to switch to")
|
|
171
|
+
// }
|
|
172
|
+
// if ([Layer.Entity, Layer.User].includes(layer) && id == null) {
|
|
173
|
+
// throw new SyntaxError(`Cannot switch to layer ${layer} without id`)
|
|
174
|
+
// }
|
|
175
|
+
// id = initializeLayer(resources, layer, id)
|
|
176
|
+
// // Cache initalized context layers
|
|
177
|
+
// const key = `${layer}:${id}`
|
|
178
|
+
// if (key in contexts) {
|
|
179
|
+
// return contexts[key] as T
|
|
180
|
+
// }
|
|
181
|
+
// const _config: C = JSON.parse(JSON.stringify(context.cfg))
|
|
182
|
+
// _config.layer = layer
|
|
183
|
+
// _config.ready = false
|
|
184
|
+
// _config.layerId = id
|
|
185
|
+
// // @TODO we need to make a rule to store all makeContext methods after they are applied
|
|
186
|
+
// const _context = context.makeContext != null ? context.makeContext(_config) : makeBasicContext(_config)
|
|
187
|
+
// Object.values(middlewares).flatMap(middlewares => middlewares)
|
|
188
|
+
// .forEach(middleware => _context.registerMiddleware(middleware))
|
|
189
|
+
// await applyMiddlewares<C, BasicContext<C>>(_context, middlewares, MiddlewareType.Config, MiddlewareStage.Switching, { layer, id })
|
|
190
|
+
// Object.values(allServices).forEach(service => _context.registerService(service))
|
|
191
|
+
// Object.values(allModules).forEach(module => _context.registerModule(module))
|
|
192
|
+
// Object.values(allResources).forEach(resource => _context.registerResource(resource))
|
|
193
|
+
// await applyMiddlewares<C, BasicContext<C>>(_context, middlewares, MiddlewareType.Context, MiddlewareStage.Switching, { layer, id })
|
|
194
|
+
// _context.stage = ContextStage.Loading
|
|
195
|
+
// await _context.configure().init()
|
|
196
|
+
// return (contexts[key] = _context) as T
|
|
197
|
+
},
|
|
198
|
+
hasResource: alias => allResources[alias] != null,
|
|
199
|
+
hasService: alias => allServices[alias] != null
|
|
200
|
+
};
|
|
201
|
+
return context;
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Contextual, BasicContext, BasicConfig } from './types.js';
|
|
2
|
+
export declare const appendContextual: <T extends Contextual>(alias: string, contextual: Partial<T>) => T;
|
|
3
|
+
/**
|
|
4
|
+
* @throws {SyntaxError}
|
|
5
|
+
*/
|
|
6
|
+
export declare const assertContext: <C extends BasicConfig, T extends BasicContext<C>>(ctx: T | BasicContext<BasicConfig> | undefined, location?: string) => T;
|
|
7
|
+
export declare const isContextWithoutIds: <C extends BasicConfig, T extends BasicContext<C>>(context: T) => boolean;
|
|
8
|
+
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEvE,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,SAAS,MAAM,cAAc,OAAO,CAAC,CAAC,CAAC,KAAG,CAsB9F,CAAA;AAMD;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,aAAa,MAAM,KAAG,CAKnJ,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,KAAG,OAC1B,CAAA"}
|
package/build/helper.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Layer } from './consts.js';
|
|
2
|
+
export const appendContextual = (alias, contextual) => {
|
|
3
|
+
contextual.alias = alias;
|
|
4
|
+
contextual.registerContext = (context) => {
|
|
5
|
+
const _contextual = contextual.ctx == null
|
|
6
|
+
? contextual
|
|
7
|
+
: contextual.reinitializeContext != null
|
|
8
|
+
? contextual.reinitializeContext(context) : contextual;
|
|
9
|
+
// We do NOT update context when it's the same contextual with already set context
|
|
10
|
+
// Actuall we just do not need to switch context in many on the level of context consumer
|
|
11
|
+
if (_contextual.ctx == null) {
|
|
12
|
+
_contextual.ctx = context;
|
|
13
|
+
}
|
|
14
|
+
return _contextual;
|
|
15
|
+
};
|
|
16
|
+
contextual.assertCtx = (location => assertContext(contextual.ctx, location ?? contextual.alias));
|
|
17
|
+
return contextual;
|
|
18
|
+
};
|
|
19
|
+
// export type UpdContextType<C extends Config, T extends Context<C>, ExtraType> = T & ExtraType
|
|
20
|
+
// export type UpdConfigType<T extends Config, ExtraType> = T & ExtraType
|
|
21
|
+
/**
|
|
22
|
+
* @throws {SyntaxError}
|
|
23
|
+
*/
|
|
24
|
+
export const assertContext = (ctx, location) => {
|
|
25
|
+
if (ctx == null) {
|
|
26
|
+
throw new SyntaxError(`Context not found in ${location}`);
|
|
27
|
+
}
|
|
28
|
+
return ctx;
|
|
29
|
+
};
|
|
30
|
+
export const isContextWithoutIds = (context) => [Layer.System, Layer.Global, Layer.Service].includes(context.cfg.layer);
|
|
31
|
+
//# sourceMappingURL=helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAuB,KAAa,EAAE,UAAsB,EAAK,EAAE;IACjG,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA;IACxB,UAAU,CAAC,eAAe,GAAG,CAA2B,OAAwB,EAAE,EAAE;QAClF,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,IAAI;YACxC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,mBAAmB,IAAI,IAAI;gBACtC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QAE1D,kFAAkF;QAClF,yFAAyF;QACzF,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,WAAW,CAAC,GAAG,GAAG,OAAO,CAAA;QAC3B,CAAC;QAED,OAAO,WAAgB,CAAA;IACzB,CAAC,CAAA;IAED,UAAU,CAAC,SAAS,GAAG,CACrB,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,CACzC,CAAA;IAEhC,OAAO,UAAe,CAAA;AACxB,CAAC,CAAA;AAED,gGAAgG;AAEhG,yEAAyE;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAmD,GAA8C,EAAE,QAAiB,EAAK,EAAE;IACtJ,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,GAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAmD,OAAU,EAAW,EAAE,CAC3G,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
package/build/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InitializedService, LazyService, Service } from './types.js';
|
|
2
|
+
export interface InitMethod<S extends Service> {
|
|
3
|
+
(service: S): () => Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare const createService: <S extends InitializedService>(alias: string, service: Partial<S>, init?: InitMethod<S>) => S;
|
|
6
|
+
export declare const createLazyService: <S extends LazyService>(alias: string, service: Partial<S>, init?: InitMethod<S>) => S;
|
|
7
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAOtF,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,OAAO;IAC3C,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAgCD,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,kBAAkB,SACjD,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,KACvD,CAAsE,CAAA;AAEzE,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,SAC9C,MAAM,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,KACvD,CAA+D,CAAA"}
|
package/build/service.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { appendContextual } from './helper.js';
|
|
2
|
+
var TypeToMethod;
|
|
3
|
+
(function (TypeToMethod) {
|
|
4
|
+
TypeToMethod["Lazy"] = "lazyInit";
|
|
5
|
+
TypeToMethod["Initialized"] = "init";
|
|
6
|
+
})(TypeToMethod || (TypeToMethod = {}));
|
|
7
|
+
const _createService = (type) => (alias, service, init) => {
|
|
8
|
+
if (service.registerContext == null) {
|
|
9
|
+
appendContextual(alias, service);
|
|
10
|
+
}
|
|
11
|
+
let initialize;
|
|
12
|
+
const ready = new Promise(resolve => { initialize = resolve; });
|
|
13
|
+
service.alias = alias;
|
|
14
|
+
service.initialized = false;
|
|
15
|
+
init = init ?? (() => async () => {
|
|
16
|
+
service.initialized = true;
|
|
17
|
+
});
|
|
18
|
+
service[type] = async () => {
|
|
19
|
+
await init(service)();
|
|
20
|
+
initialize(true);
|
|
21
|
+
};
|
|
22
|
+
service.ready = () => ready;
|
|
23
|
+
return service;
|
|
24
|
+
};
|
|
25
|
+
export const createService = (alias, service, init) => _createService(TypeToMethod.Initialized)(alias, service, init);
|
|
26
|
+
export const createLazyService = (alias, service, init) => _createService(TypeToMethod.Lazy)(alias, service, init);
|
|
27
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,IAAK,YAGJ;AAHD,WAAK,YAAY;IACf,iCAAiB,CAAA;IACjB,oCAAoB,CAAA;AACtB,CAAC,EAHI,YAAY,KAAZ,YAAY,QAGhB;AAUD,MAAM,cAAc,GAAG,CAAoB,IAAkB,EAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC3G,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;QACpC,gBAAgB,CAAC,KAAK,EAAE,OAAqB,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,UAAkC,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE,GAAG,UAAU,GAAG,OAAO,CAAA,CAAC,CAAC,CAAC,CAAA;IAEvE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;IAErB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;IAE3B,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;QAC/B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,CAAC,OAAY,CAAC,EAAE,CAAA;QAC1B,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,CAAA;IAE3B,OAAO,OAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAa,EAAE,OAAmB,EAAE,IAAoB,EACrD,EAAE,CAAC,cAAc,CAAI,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EAAE,OAAmB,EAAE,IAAoB,EACrD,EAAE,CAAC,cAAc,CAAI,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA"}
|
package/build/types.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { AppType, ContextStage, Layer, MiddlewareStage, MiddlewareType, CONFIG_RECORD } from './consts.js';
|
|
2
|
+
export interface BasicConfig {
|
|
3
|
+
ready: boolean;
|
|
4
|
+
service: string;
|
|
5
|
+
alias?: string;
|
|
6
|
+
layer: Layer;
|
|
7
|
+
type: AppType;
|
|
8
|
+
layerId?: string;
|
|
9
|
+
services?: Record<string, Object>;
|
|
10
|
+
[CONFIG_RECORD]?: ConfigRecord[];
|
|
11
|
+
debug?: {
|
|
12
|
+
all?: boolean;
|
|
13
|
+
[section: string]: boolean | undefined;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface ConfigRecord extends ConfigRecordItem {
|
|
17
|
+
id: string;
|
|
18
|
+
}
|
|
19
|
+
type MaybeArray<T> = T | T[];
|
|
20
|
+
interface ConfigRecordItem extends Record<string, MaybeArray<ConfigRecordItem | boolean | string | number | null | undefined>> {
|
|
21
|
+
recordType?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Contextual {
|
|
24
|
+
ctx?: BasicContext<any>;
|
|
25
|
+
alias: string;
|
|
26
|
+
reinitializeContext?: <T extends Contextual>(context: BasicContext<any>) => T;
|
|
27
|
+
registerContext: <T extends Contextual, C extends BasicConfig>(context: BasicContext<C>) => T;
|
|
28
|
+
assertCtx: <C extends BasicConfig, T extends BasicContext<C>>(location?: string) => T;
|
|
29
|
+
}
|
|
30
|
+
export interface Service extends Contextual {
|
|
31
|
+
layers?: Layer[];
|
|
32
|
+
initialized: boolean;
|
|
33
|
+
init?: () => Promise<void>;
|
|
34
|
+
lazyInit?: () => Promise<void>;
|
|
35
|
+
ready?: () => Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
export interface InitializedService extends Service {
|
|
38
|
+
init: () => Promise<void>;
|
|
39
|
+
ready: () => Promise<boolean>;
|
|
40
|
+
}
|
|
41
|
+
export interface LazyService extends Service {
|
|
42
|
+
lazyInit: () => Promise<void>;
|
|
43
|
+
ready: () => Promise<boolean>;
|
|
44
|
+
}
|
|
45
|
+
export interface BasicModule extends Contextual {
|
|
46
|
+
_module: true;
|
|
47
|
+
}
|
|
48
|
+
export interface BasicResource extends Contextual {
|
|
49
|
+
layers?: Layer[];
|
|
50
|
+
init?: () => Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
export interface Middleware {
|
|
53
|
+
type: MiddlewareType;
|
|
54
|
+
stage: MiddlewareStage;
|
|
55
|
+
apply: <C extends BasicConfig, T extends BasicContext<C>>(context: T, args?: Record<string, string | undefined>) => Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export interface BasicContext<C extends BasicConfig> {
|
|
58
|
+
cfg: C;
|
|
59
|
+
stage: ContextStage;
|
|
60
|
+
waitForConfigured: () => Promise<boolean>;
|
|
61
|
+
waitForInitialized: () => Promise<boolean>;
|
|
62
|
+
configure: <T extends BasicContext<C>>() => T;
|
|
63
|
+
init: <T extends BasicContext<C>>() => Promise<T>;
|
|
64
|
+
updateContext: <T extends BasicContext<C>>(id?: string, to?: Layer) => Promise<T>;
|
|
65
|
+
registerService: <T extends BasicContext<C>>(service: Service) => T;
|
|
66
|
+
registerModule: <T extends BasicContext<C>>(module: BasicModule) => T;
|
|
67
|
+
registerModules: <T extends BasicContext<C>>(module: BasicModule[]) => T;
|
|
68
|
+
registerResource: <T extends BasicContext<C>>(resource: BasicResource) => T;
|
|
69
|
+
registerMiddleware: <T extends BasicContext<C>>(middleware: Middleware) => T;
|
|
70
|
+
get config(): Promise<C>;
|
|
71
|
+
service: <T extends Service>(alias: string) => T;
|
|
72
|
+
module: <T extends BasicModule>(alias: string) => T;
|
|
73
|
+
resource: <T extends BasicResource>(alias: string) => T;
|
|
74
|
+
hasResource: (alias: string) => boolean;
|
|
75
|
+
hasService: (alias: string) => boolean;
|
|
76
|
+
modules: <T extends BasicModule>() => T[];
|
|
77
|
+
makeContext?: <T extends BasicContext<C>>(cfg: C) => T;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE/G,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IAEf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,CAAC,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAA;IAChC,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,OAAO,CAAA;QACb,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;KACvC,CAAA;CACF;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,EAAE,EAAE,MAAM,CAAA;CACX;AAED,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;AAE5B,UAAU,gBAAiB,SAAQ,MAAM,CACvC,MAAM,EACN,UAAU,CAAC,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7E,eAAe,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC7F,SAAS,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,CAAA;CACtF;AAED,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClI;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,WAAW;IACjD,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,YAAY,CAAA;IACnB,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACzC,kBAAkB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,SAAS,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC7C,IAAI,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD,aAAa,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACjF,eAAe,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,CAAA;IACnE,cAAc,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,CAAC,CAAA;IACrE,eAAe,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IACxE,gBAAgB,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAA;IAC3E,kBAAkB,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,KAAK,CAAC,CAAA;IAE5E,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;IACxB,OAAO,EAAE,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAA;IAChD,MAAM,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAA;IACnD,QAAQ,EAAE,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAA;IACvD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACvC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAEtC,OAAO,EAAE,CAAC,CAAC,SAAS,WAAW,OAAO,CAAC,EAAE,CAAA;IAEzC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;CACvD"}
|
package/build/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Layer, MiddlewareStage, MiddlewareType } from '../consts.js';
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware, BasicResource, Service } from '../types.js';
|
|
3
|
+
import type { InLayer } from './layer.js';
|
|
4
|
+
export declare const getMiddlerwareKey: (middleware: Middleware) => string;
|
|
5
|
+
export declare const createMiddlewareKey: (type: MiddlewareType, stage: MiddlewareStage) => string;
|
|
6
|
+
export declare const isLayerIherited: (current: Layer, parent: Layer) => boolean;
|
|
7
|
+
export declare const isResourceAvailable: (resource: BasicResource, layer: Layer) => boolean;
|
|
8
|
+
export declare const layersOrder: Layer[];
|
|
9
|
+
export declare const getAllServices: (services: InLayer<Record<string, Service>>, layer: Layer, id: string) => Service[];
|
|
10
|
+
export declare const applyMiddlewares: <C extends BasicConfig, T extends BasicContext<C>>(context: T, middlewares: Record<string, Middleware[]>, type: MiddlewareType, stage: MiddlewareStage, args?: Record<string, string | undefined>) => Promise<void[]>;
|
|
11
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAChG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,eAAO,MAAM,iBAAiB,eAAgB,UAAU,WAA2D,CAAA;AAEnH,eAAO,MAAM,mBAAmB,SAAU,cAAc,SAAS,eAAe,WAAuB,CAAA;AAEvG,eAAO,MAAM,eAAe,YAAa,KAAK,UAAU,KAAK,KAAG,OACsB,CAAA;AAEtF,eAAO,MAAM,mBAAmB,aAAc,aAAa,SAAS,KAAK,YACkB,CAAA;AAE3F,eAAO,MAAM,WAAW,SAMvB,CAAA;AAED,eAAO,MAAM,cAAc,aAAc,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,MAAM,MAAM,cACxB,CAAA;AAE3E,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WACtE,CAAC,eACG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,QACnC,cAAc,SACb,eAAe,SACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,oBAG1C,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Layer } from '../consts.js';
|
|
2
|
+
export const getMiddlerwareKey = (middleware) => createMiddlewareKey(middleware.type, middleware.stage);
|
|
3
|
+
export const createMiddlewareKey = (type, stage) => `${type}:${stage}`;
|
|
4
|
+
export const isLayerIherited = (current, parent) => (current === parent) || (layersOrder.indexOf(parent) > layersOrder.indexOf(current));
|
|
5
|
+
export const isResourceAvailable = (resource, layer) => resource.layers == null || resource.layers.some(_layer => isLayerIherited(_layer, layer));
|
|
6
|
+
export const layersOrder = [
|
|
7
|
+
Layer.System,
|
|
8
|
+
Layer.Global,
|
|
9
|
+
Layer.Service,
|
|
10
|
+
Layer.Entity,
|
|
11
|
+
Layer.User
|
|
12
|
+
];
|
|
13
|
+
export const getAllServices = (services, layer, id) => services?.[layer]?.[id] != null ? Object.values(services[layer][id]) : [];
|
|
14
|
+
export const applyMiddlewares = (context, middlewares, type, stage, args) => Promise.all(middlewares[createMiddlewareKey(type, stage)]?.map(async (middleware) => middleware.apply(context, args)) ?? []);
|
|
15
|
+
//# sourceMappingURL=context.js.map
|