@owlmeans/context 0.1.18-rc.3 → 0.1.18-rc.31
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/README.md +255 -50
- package/agent-meta/manifest.json +5 -5
- package/agent-meta/skills/owlmeans-context/SKILL.md +25 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +0 -2
- package/build/config.js.map +1 -1
- package/build/consts.d.ts +1 -9
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +0 -9
- package/build/consts.js.map +1 -1
- package/build/context.d.ts.map +1 -1
- package/build/context.js +26 -109
- package/build/context.js.map +1 -1
- package/build/helper.d.ts +0 -1
- package/build/helper.d.ts.map +1 -1
- package/build/helper.js +4 -13
- package/build/helper.js.map +1 -1
- package/build/types.d.ts +21 -23
- package/build/types.d.ts.map +1 -1
- package/build/utils/context.d.ts +2 -7
- package/build/utils/context.d.ts.map +1 -1
- package/build/utils/context.js +0 -11
- package/build/utils/context.js.map +1 -1
- package/build/utils/index.d.ts +0 -1
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +0 -1
- package/build/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +1 -2
- package/src/consts.ts +1 -10
- package/src/context.ts +32 -134
- package/src/helper.ts +4 -18
- package/src/types.ts +22 -26
- package/src/utils/context.ts +2 -20
- package/src/utils/index.ts +0 -1
- package/tests/context.ts +1 -2
- package/tests/service.spec.ts +1 -1
- package/agent-meta/skills/context/SKILL.md +0 -53
- package/build/.gitkeep +0 -0
- package/build/utils/layer.d.ts +0 -6
- package/build/utils/layer.d.ts.map +0 -1
- package/build/utils/layer.js +0 -12
- package/build/utils/layer.js.map +0 -1
- package/src/utils/layer.ts +0 -17
package/build/context.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { ContextStage,
|
|
2
|
-
|
|
3
|
-
import { applyMiddlewares, getAllServices, getMiddlerwareKey, isResourceAvailable } from './utils/context.js';
|
|
4
|
-
import { DEFAULT, initializeLayer } from './utils/layer.js';
|
|
1
|
+
import { ContextStage, MiddlewareStage, MiddlewareType } from './consts.js';
|
|
2
|
+
import { applyMiddlewares, getMiddlerwareKey } from './utils/context.js';
|
|
5
3
|
export const makeBasicContext = (cfg) => {
|
|
4
|
+
/**
|
|
5
|
+
* One flat registry per kind, keyed by alias. Registering an alias twice replaces the
|
|
6
|
+
* earlier entry — application entrypoint lists are routinely spread together and the
|
|
7
|
+
* later declaration is the one the app means.
|
|
8
|
+
*/
|
|
6
9
|
const services = {};
|
|
7
10
|
const entrypoints = {};
|
|
8
11
|
const resources = {};
|
|
9
12
|
const middlewares = {};
|
|
10
|
-
const allServices = {};
|
|
11
|
-
const allEntrypoints = {};
|
|
12
|
-
const allResources = {};
|
|
13
13
|
let configure;
|
|
14
14
|
let initialize;
|
|
15
15
|
const configured = new Promise(resolve => { configure = resolve; });
|
|
16
16
|
const initialized = new Promise(resolve => { initialize = resolve; });
|
|
17
|
-
// const contexts: Record<string, BasicContext<C>> = {}
|
|
18
17
|
const inLazyInit = new Set();
|
|
19
18
|
const context = {
|
|
20
19
|
cfg,
|
|
@@ -39,7 +38,7 @@ export const makeBasicContext = (cfg) => {
|
|
|
39
38
|
return context;
|
|
40
39
|
}
|
|
41
40
|
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Configuration);
|
|
42
|
-
await
|
|
41
|
+
await Object.values(services).reduce(async (previous, service) => {
|
|
43
42
|
await previous;
|
|
44
43
|
if (!service.initialized) {
|
|
45
44
|
if (service.init != null) {
|
|
@@ -51,12 +50,9 @@ export const makeBasicContext = (cfg) => {
|
|
|
51
50
|
}
|
|
52
51
|
}, Promise.resolve());
|
|
53
52
|
await applyMiddlewares(context, middlewares, MiddlewareType.Config, MiddlewareStage.Loading);
|
|
54
|
-
|
|
55
|
-
await Object.values(resources[context.cfg.layer][id]).reduce(async (previous, resource) => {
|
|
53
|
+
await Object.values(resources).reduce(async (previous, resource) => {
|
|
56
54
|
await previous;
|
|
57
|
-
|
|
58
|
-
await resource.init?.();
|
|
59
|
-
}
|
|
55
|
+
await resource.init?.();
|
|
60
56
|
}, Promise.resolve());
|
|
61
57
|
await applyMiddlewares(context, middlewares, MiddlewareType.Context, MiddlewareStage.Loading);
|
|
62
58
|
context.stage = ContextStage.Ready;
|
|
@@ -66,38 +62,19 @@ export const makeBasicContext = (cfg) => {
|
|
|
66
62
|
return context;
|
|
67
63
|
},
|
|
68
64
|
registerService: (service) => {
|
|
69
|
-
|
|
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;
|
|
65
|
+
services[service.alias] = service.registerContext(context);
|
|
75
66
|
return context;
|
|
76
67
|
},
|
|
77
68
|
registerEntrypoint: (entrypoint) => {
|
|
78
|
-
|
|
79
|
-
entrypoint = entrypoint.registerContext(context);
|
|
80
|
-
if (allEntrypoints[entrypoint.alias] == null) {
|
|
81
|
-
allEntrypoints[entrypoint.alias] = entrypoint;
|
|
82
|
-
}
|
|
83
|
-
entrypoints[context.cfg.layer][id][entrypoint.alias] = entrypoint;
|
|
69
|
+
entrypoints[entrypoint.alias] = entrypoint.registerContext(context);
|
|
84
70
|
return context;
|
|
85
71
|
},
|
|
86
72
|
registerEntrypoints: (eps) => {
|
|
87
73
|
eps.forEach(ep => context.registerEntrypoint(ep));
|
|
88
74
|
return context;
|
|
89
75
|
},
|
|
90
|
-
/** @deprecated use registerEntrypoint */
|
|
91
|
-
registerModule: (module) => context.registerEntrypoint(module),
|
|
92
|
-
/** @deprecated use registerEntrypoints */
|
|
93
|
-
registerModules: (mods) => context.registerEntrypoints(mods),
|
|
94
76
|
registerResource: (resource) => {
|
|
95
|
-
|
|
96
|
-
resource = resource.registerContext(context);
|
|
97
|
-
if (allResources[resource.alias] == null) {
|
|
98
|
-
allResources[resource.alias] = resource;
|
|
99
|
-
}
|
|
100
|
-
resources[context.cfg.layer][id][resource.alias] = resource;
|
|
77
|
+
resources[resource.alias] = resource.registerContext(context);
|
|
101
78
|
return context;
|
|
102
79
|
},
|
|
103
80
|
registerMiddleware: (middleware) => {
|
|
@@ -112,16 +89,9 @@ export const makeBasicContext = (cfg) => {
|
|
|
112
89
|
return configured.then(() => context.cfg);
|
|
113
90
|
},
|
|
114
91
|
service: (alias) => {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
_service = services[context.cfg.layer][id][alias];
|
|
119
|
-
}
|
|
120
|
-
else if (services[Layer.Global]?.[id]?.[alias] != null) {
|
|
121
|
-
_service = services[context.cfg.layer][id][alias];
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
throw new SyntaxError(`Service ${alias} not found in layer ${context.cfg.layer}`);
|
|
92
|
+
const _service = services[alias];
|
|
93
|
+
if (_service == null) {
|
|
94
|
+
throw new SyntaxError(`Service ${alias} not found`);
|
|
125
95
|
}
|
|
126
96
|
if (!_service.initialized) {
|
|
127
97
|
if (_service.lazyInit != null) {
|
|
@@ -138,76 +108,23 @@ export const makeBasicContext = (cfg) => {
|
|
|
138
108
|
}
|
|
139
109
|
return _service;
|
|
140
110
|
},
|
|
141
|
-
entrypoint: (
|
|
142
|
-
const
|
|
143
|
-
if (entrypoints[
|
|
144
|
-
return entrypoints[
|
|
111
|
+
entrypoint: (reference) => {
|
|
112
|
+
const alias = typeof reference === 'string' ? reference : reference.alias;
|
|
113
|
+
if (entrypoints[alias] != null) {
|
|
114
|
+
return entrypoints[alias];
|
|
145
115
|
}
|
|
146
116
|
throw new SyntaxError(`Entrypoint ${alias} not found`);
|
|
147
117
|
},
|
|
148
|
-
/** @deprecated use entrypoint */
|
|
149
|
-
module: (alias) => context.entrypoint(alias),
|
|
150
118
|
resource: (alias) => {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const resource = resources[context.cfg.layer][id][alias];
|
|
154
|
-
return resource;
|
|
119
|
+
if (resources[alias] != null) {
|
|
120
|
+
return resources[alias];
|
|
155
121
|
}
|
|
156
122
|
throw new SyntaxError(`Resource ${alias} not found`);
|
|
157
123
|
},
|
|
158
|
-
entrypoints: () =>
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
/** @deprecated use entrypoints */
|
|
163
|
-
modules: () => context.entrypoints(),
|
|
164
|
-
/**
|
|
165
|
-
* @TODO Unfortunatly module cloning between contexts is quite unstable.
|
|
166
|
-
* And it looks like in some cases it relies on modules that aren't really clonned.
|
|
167
|
-
* The problem is that the not cloned modules are changing their context accross all context
|
|
168
|
-
* layers and we can't rely on such behaviour.
|
|
169
|
-
* So we disabled context update as a whole and all functionality that relies on it
|
|
170
|
-
* cause in curent release mixed tenancy is not in use in any project and it looks like
|
|
171
|
-
* there is no short term plans to use it some way.
|
|
172
|
-
*/
|
|
173
|
-
updateContext: async (_id, _layer) => {
|
|
174
|
-
return context;
|
|
175
|
-
// const index = layersOrder.indexOf(context.cfg.layer)
|
|
176
|
-
// layer = layer ?? (layersOrder[index + 1] != null ? layersOrder[index + 1] : undefined)
|
|
177
|
-
// if (layer == null) {
|
|
178
|
-
// throw new SyntaxError("There is no next layer to switch to")
|
|
179
|
-
// }
|
|
180
|
-
// if ([Layer.Entity, Layer.User].includes(layer) && id == null) {
|
|
181
|
-
// throw new SyntaxError(`Cannot switch to layer ${layer} without id`)
|
|
182
|
-
// }
|
|
183
|
-
// id = initializeLayer(resources, layer, id)
|
|
184
|
-
// // Cache initalized context layers
|
|
185
|
-
// const key = `${layer}:${id}`
|
|
186
|
-
// if (key in contexts) {
|
|
187
|
-
// return contexts[key] as T
|
|
188
|
-
// }
|
|
189
|
-
// const _config: C = JSON.parse(JSON.stringify(context.cfg))
|
|
190
|
-
// _config.layer = layer
|
|
191
|
-
// _config.ready = false
|
|
192
|
-
// _config.layerId = id
|
|
193
|
-
// // @TODO we need to make a rule to store all makeContext methods after they are applied
|
|
194
|
-
// const _context = context.makeContext != null ? context.makeContext(_config) : makeBasicContext(_config)
|
|
195
|
-
// Object.values(middlewares).flatMap(middlewares => middlewares)
|
|
196
|
-
// .forEach(middleware => _context.registerMiddleware(middleware))
|
|
197
|
-
// await applyMiddlewares<C, BasicContext<C>>(_context, middlewares, MiddlewareType.Config, MiddlewareStage.Switching, { layer, id })
|
|
198
|
-
// Object.values(allServices).forEach(service => _context.registerService(service))
|
|
199
|
-
// Object.values(allEntrypoints).forEach(ep => _context.registerEntrypoint(ep))
|
|
200
|
-
// Object.values(allResources).forEach(resource => _context.registerResource(resource))
|
|
201
|
-
// await applyMiddlewares<C, BasicContext<C>>(_context, middlewares, MiddlewareType.Context, MiddlewareStage.Switching, { layer, id })
|
|
202
|
-
// _context.stage = ContextStage.Loading
|
|
203
|
-
// await _context.configure().init()
|
|
204
|
-
// return (contexts[key] = _context) as T
|
|
205
|
-
},
|
|
206
|
-
hasResource: alias => allResources[alias] != null,
|
|
207
|
-
hasService: alias => allServices[alias] != null,
|
|
208
|
-
hasEntrypoint: alias => allEntrypoints[alias] != null,
|
|
209
|
-
/** @deprecated use hasEntrypoint */
|
|
210
|
-
hasModule: alias => context.hasEntrypoint(alias),
|
|
124
|
+
entrypoints: () => Object.values(entrypoints),
|
|
125
|
+
hasResource: alias => resources[alias] != null,
|
|
126
|
+
hasService: alias => services[alias] != null,
|
|
127
|
+
hasEntrypoint: alias => entrypoints[alias] != null,
|
|
211
128
|
};
|
|
212
129
|
return context;
|
|
213
130
|
};
|
package/build/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/build/helper.d.ts
CHANGED
|
@@ -4,5 +4,4 @@ export declare const appendContextual: <T extends Contextual>(alias: string, con
|
|
|
4
4
|
* @throws {SyntaxError}
|
|
5
5
|
*/
|
|
6
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
7
|
//# sourceMappingURL=helper.d.ts.map
|
package/build/helper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,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,CAgB9F,CAAA;AAED;;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"}
|
package/build/helper.js
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
import { Layer } from './consts.js';
|
|
2
1
|
export const appendContextual = (alias, contextual) => {
|
|
3
2
|
contextual.alias = alias;
|
|
4
3
|
contextual.registerContext = (context) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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;
|
|
4
|
+
// A contextual binds to exactly one context — the first one that registers it.
|
|
5
|
+
if (contextual.ctx == null) {
|
|
6
|
+
contextual.ctx = context;
|
|
13
7
|
}
|
|
14
|
-
return
|
|
8
|
+
return contextual;
|
|
15
9
|
};
|
|
16
10
|
contextual.assertCtx = (location => assertContext(contextual.ctx, location ?? contextual.alias));
|
|
17
11
|
return contextual;
|
|
18
12
|
};
|
|
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
13
|
/**
|
|
22
14
|
* @throws {SyntaxError}
|
|
23
15
|
*/
|
|
@@ -27,5 +19,4 @@ export const assertContext = (ctx, location) => {
|
|
|
27
19
|
}
|
|
28
20
|
return ctx;
|
|
29
21
|
};
|
|
30
|
-
export const isContextWithoutIds = (context) => [Layer.System, Layer.Global, Layer.Service].includes(context.cfg.layer);
|
|
31
22
|
//# sourceMappingURL=helper.js.map
|
package/build/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAEA,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,+EAA+E;QAC/E,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,UAAU,CAAC,GAAG,GAAG,OAAO,CAAA;QAC1B,CAAC;QAED,OAAO,UAAe,CAAA;IACxB,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;;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"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { AppType, ContextStage,
|
|
1
|
+
import type { AppType, ContextStage, MiddlewareStage, MiddlewareType, CONFIG_RECORD } from './consts.js';
|
|
2
2
|
export interface BasicConfig {
|
|
3
3
|
ready: boolean;
|
|
4
4
|
service: string;
|
|
5
5
|
alias?: string;
|
|
6
|
-
layer: Layer;
|
|
7
6
|
type: AppType;
|
|
8
|
-
layerId?: string;
|
|
9
7
|
services?: Record<string, Object>;
|
|
10
8
|
[CONFIG_RECORD]?: ConfigRecord[];
|
|
11
9
|
debug?: {
|
|
@@ -23,12 +21,10 @@ interface ConfigRecordItem extends Record<string, MaybeArray<ConfigRecordItem |
|
|
|
23
21
|
export interface Contextual {
|
|
24
22
|
ctx?: BasicContext<any>;
|
|
25
23
|
alias: string;
|
|
26
|
-
reinitializeContext?: <T extends Contextual>(context: BasicContext<any>) => T;
|
|
27
24
|
registerContext: <T extends Contextual, C extends BasicConfig>(context: BasicContext<C>) => T;
|
|
28
25
|
assertCtx: <C extends BasicConfig, T extends BasicContext<C>>(location?: string) => T;
|
|
29
26
|
}
|
|
30
27
|
export interface Service extends Contextual {
|
|
31
|
-
layers?: Layer[];
|
|
32
28
|
initialized: boolean;
|
|
33
29
|
init?: () => Promise<void>;
|
|
34
30
|
lazyInit?: () => Promise<void>;
|
|
@@ -44,14 +40,19 @@ export interface LazyService extends Service {
|
|
|
44
40
|
}
|
|
45
41
|
export interface BasicEntrypoint extends Contextual {
|
|
46
42
|
_entrypoint: true;
|
|
47
|
-
_module: true;
|
|
48
43
|
}
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
/**
|
|
45
|
+
* A stable reference to an entrypoint registered in a context.
|
|
46
|
+
*
|
|
47
|
+
* Contract packages use this instead of exporting raw alias strings. The optional type member is
|
|
48
|
+
* deliberately phantom: it lets `context.entrypoint(protocol)` infer the context-bound module
|
|
49
|
+
* without changing the wire alias or adding registry-wide declaration merging.
|
|
50
|
+
*/
|
|
51
|
+
export interface EntrypointReference<T extends BasicEntrypoint = BasicEntrypoint> {
|
|
52
|
+
readonly alias: string;
|
|
53
|
+
readonly entrypointType?: T;
|
|
52
54
|
}
|
|
53
55
|
export interface BasicResource extends Contextual {
|
|
54
|
-
layers?: Layer[];
|
|
55
56
|
init?: () => Promise<void>;
|
|
56
57
|
}
|
|
57
58
|
export interface Middleware {
|
|
@@ -59,6 +60,12 @@ export interface Middleware {
|
|
|
59
60
|
stage: MiddlewareStage;
|
|
60
61
|
apply: <C extends BasicConfig, T extends BasicContext<C>>(context: T, args?: Record<string, string | undefined>) => Promise<void>;
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* The DI container. One context is built per process by one factory: a layer specific
|
|
65
|
+
* factory composes the layer below it and then `append*` mixins register what the
|
|
66
|
+
* application needs. There is no child context and nothing is stored for re-creation —
|
|
67
|
+
* a service, a resource and an entrypoint each bind to exactly one context.
|
|
68
|
+
*/
|
|
62
69
|
export interface BasicContext<C extends BasicConfig> {
|
|
63
70
|
cfg: C;
|
|
64
71
|
stage: ContextStage;
|
|
@@ -66,7 +73,6 @@ export interface BasicContext<C extends BasicConfig> {
|
|
|
66
73
|
waitForInitialized: () => Promise<boolean>;
|
|
67
74
|
configure: <T extends BasicContext<C>>() => T;
|
|
68
75
|
init: <T extends BasicContext<C>>() => Promise<T>;
|
|
69
|
-
updateContext: <T extends BasicContext<C>>(id?: string, to?: Layer) => Promise<T>;
|
|
70
76
|
registerService: <T extends BasicContext<C>>(service: Service) => T;
|
|
71
77
|
registerEntrypoint: <T extends BasicContext<C>>(entrypoint: BasicEntrypoint) => T;
|
|
72
78
|
registerEntrypoints: <T extends BasicContext<C>>(entrypoints: BasicEntrypoint[]) => T;
|
|
@@ -74,23 +80,15 @@ export interface BasicContext<C extends BasicConfig> {
|
|
|
74
80
|
registerMiddleware: <T extends BasicContext<C>>(middleware: Middleware) => T;
|
|
75
81
|
get config(): Promise<C>;
|
|
76
82
|
service: <T extends Service>(alias: string) => T;
|
|
77
|
-
entrypoint:
|
|
83
|
+
entrypoint: {
|
|
84
|
+
<T extends BasicEntrypoint>(reference: EntrypointReference<T>): T;
|
|
85
|
+
<T extends BasicEntrypoint>(reference: EntrypointReference | string): T;
|
|
86
|
+
};
|
|
78
87
|
resource: <T extends BasicResource>(alias: string) => T;
|
|
79
88
|
hasResource: (alias: string) => boolean;
|
|
80
89
|
hasService: (alias: string) => boolean;
|
|
81
90
|
hasEntrypoint: (alias: string) => boolean;
|
|
82
91
|
entrypoints: <T extends BasicEntrypoint>() => T[];
|
|
83
|
-
/** @deprecated use registerEntrypoint */
|
|
84
|
-
registerModule: <T extends BasicContext<C>>(module: BasicModule) => T;
|
|
85
|
-
/** @deprecated use registerEntrypoints */
|
|
86
|
-
registerModules: <T extends BasicContext<C>>(modules: BasicModule[]) => T;
|
|
87
|
-
/** @deprecated use entrypoint */
|
|
88
|
-
module: <T extends BasicModule>(alias: string) => T;
|
|
89
|
-
/** @deprecated use hasEntrypoint */
|
|
90
|
-
hasModule: (alias: string) => boolean;
|
|
91
|
-
/** @deprecated use entrypoints */
|
|
92
|
-
modules: <T extends BasicModule>() => T[];
|
|
93
|
-
makeContext?: <T extends BasicContext<C>>(cfg: C) => T;
|
|
94
92
|
}
|
|
95
93
|
export {};
|
|
96
94
|
//# sourceMappingURL=types.d.ts.map
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/build/utils/context.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { BasicConfig, BasicContext, Middleware
|
|
3
|
-
import type { InLayer } from './layer.js';
|
|
1
|
+
import type { MiddlewareStage, MiddlewareType } from '../consts.js';
|
|
2
|
+
import type { BasicConfig, BasicContext, Middleware } from '../types.js';
|
|
4
3
|
export declare const getMiddlerwareKey: (middleware: Middleware) => string;
|
|
5
4
|
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
5
|
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
6
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExE,eAAO,MAAM,iBAAiB,eAAgB,UAAU,WAA2D,CAAA;AAEnH,eAAO,MAAM,mBAAmB,SAAU,cAAc,SAAS,eAAe,WAAuB,CAAA;AAEvG,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"}
|
package/build/utils/context.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
import { Layer } from '../consts.js';
|
|
2
1
|
export const getMiddlerwareKey = (middleware) => createMiddlewareKey(middleware.type, middleware.stage);
|
|
3
2
|
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
3
|
export const applyMiddlewares = (context, middlewares, type, stage, args) => Promise.all(middlewares[createMiddlewareKey(type, stage)]?.map(async (middleware) => middleware.apply(context, args)) ?? []);
|
|
15
4
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;AAEnH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAsB,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;AAEvG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAU,EACV,WAAyC,EACzC,IAAoB,EACpB,KAAsB,EACtB,IAAyC,EACzC,EAAE,CAAC,OAAO,CAAC,GAAG,CACd,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAO,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CACpH,CAAA"}
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA"}
|
package/build/utils/index.js
CHANGED
package/build/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA"}
|
package/package.json
CHANGED
package/src/config.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { AppType
|
|
1
|
+
import { AppType } from './consts.js'
|
|
2
2
|
import type { BasicConfig } from './types.js'
|
|
3
3
|
|
|
4
4
|
export const makeBasicConfig = <C extends BasicConfig>(type: AppType, service: string, cfg?: Partial<C>): C => {
|
|
5
5
|
const config = {
|
|
6
6
|
ready: false,
|
|
7
7
|
service,
|
|
8
|
-
layer: type === AppType.Frontend ? Layer.Service : Layer.System,
|
|
9
8
|
type,
|
|
10
9
|
debug: {},
|
|
11
10
|
services: {},
|
package/src/consts.ts
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
export enum Layer {
|
|
3
|
-
System = 'system',
|
|
4
|
-
Global = 'global',
|
|
5
|
-
Service = 'service',
|
|
6
|
-
Entity = 'entity',
|
|
7
|
-
User = 'user'
|
|
8
|
-
}
|
|
9
|
-
|
|
10
2
|
export enum AppType {
|
|
11
3
|
Backend = 'backend',
|
|
12
4
|
Frontend = 'frontend',
|
|
@@ -26,8 +18,7 @@ export enum ContextStage {
|
|
|
26
18
|
export enum MiddlewareStage {
|
|
27
19
|
Configuration = 'configuration',
|
|
28
20
|
Loading = 'loading',
|
|
29
|
-
Ready = 'ready'
|
|
30
|
-
Switching = 'switching'
|
|
21
|
+
Ready = 'ready'
|
|
31
22
|
}
|
|
32
23
|
|
|
33
24
|
export const CONFIG_RECORD = 'records'
|