@sima-land/isomorph 11.0.0-alpha.3 → 11.0.0-alpha.4
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/config/{index.d.ts → base.d.ts} +0 -0
- package/config/{index.js → base.js} +1 -1
- package/config/base.js.map +1 -0
- package/di/application.d.ts +6 -0
- package/{container → di}/application.js +16 -8
- package/di/application.js.map +1 -0
- package/di/container.d.ts +6 -0
- package/di/container.js +49 -0
- package/di/container.js.map +1 -0
- package/di/errors.d.ts +21 -0
- package/di/errors.js +33 -0
- package/di/errors.js.map +1 -0
- package/di/index.d.ts +6 -0
- package/di/index.js +16 -0
- package/di/index.js.map +1 -0
- package/{preset/index.d.ts → di/preset.d.ts} +3 -1
- package/{preset/index.js → di/preset.js} +1 -1
- package/di/preset.js.map +1 -0
- package/di/token.d.ts +7 -0
- package/di/token.js +17 -0
- package/di/token.js.map +1 -0
- package/di/types.d.ts +32 -0
- package/{container → di}/types.js +0 -0
- package/{preset → di}/types.js.map +1 -1
- package/http-server/middleware/tracing.d.ts +7 -1
- package/http-server/middleware/tracing.js +19 -1
- package/http-server/middleware/tracing.js.map +1 -1
- package/package.json +1 -1
- package/preset/node/index.d.ts +4 -3
- package/preset/node/index.js +19 -18
- package/preset/node/index.js.map +1 -1
- package/preset/node/response.d.ts +1 -3
- package/preset/node/response.js +3 -4
- package/preset/node/response.js.map +1 -1
- package/tokens.d.ts +20 -18
- package/tokens.js +20 -19
- package/tokens.js.map +1 -1
- package/tracing/utils.d.ts +9 -0
- package/tracing/utils.js +22 -0
- package/tracing/utils.js.map +1 -0
- package/config/index.js.map +0 -1
- package/container/application.d.ts +0 -25
- package/container/application.js.map +0 -1
- package/container/index.d.ts +0 -18
- package/container/index.js +0 -74
- package/container/index.js.map +0 -1
- package/container/types.d.ts +0 -14
- package/container/types.js.map +0 -1
- package/preset/index.js.map +0 -1
- package/preset/types.d.ts +0 -7
- package/preset/types.js +0 -3
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/config/base.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAoB;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEjD,OAAO;QACL,GAAG;QACH,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAVD,4CAUC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
|
|
3
|
+
exports.createApplication = exports.CURRENT_APP = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
const token_1 = require("./token");
|
|
6
|
+
const container_1 = require("./container");
|
|
7
|
+
/**
|
|
8
|
+
* Токен, с помощью которого можно достать из приложения само приложение.
|
|
9
|
+
*/
|
|
10
|
+
exports.CURRENT_APP = (0, token_1.createToken)('application/self');
|
|
11
|
+
class ApplicationImplementation {
|
|
6
12
|
constructor() {
|
|
7
13
|
this.providers = new Map();
|
|
8
14
|
this.presets = [];
|
|
@@ -22,7 +28,7 @@ class Application {
|
|
|
22
28
|
return this.getContainer().get(token);
|
|
23
29
|
}
|
|
24
30
|
catch (error) {
|
|
25
|
-
if (error instanceof
|
|
31
|
+
if (error instanceof errors_1.NothingBoundError && this.parent) {
|
|
26
32
|
return this.parent.get(token);
|
|
27
33
|
}
|
|
28
34
|
else {
|
|
@@ -37,8 +43,8 @@ class Application {
|
|
|
37
43
|
return this.container;
|
|
38
44
|
}
|
|
39
45
|
configureContainer() {
|
|
40
|
-
const container = (0,
|
|
41
|
-
container.set(
|
|
46
|
+
const container = (0, container_1.createContainer)();
|
|
47
|
+
container.set(exports.CURRENT_APP, () => this);
|
|
42
48
|
for (const preset of this.presets) {
|
|
43
49
|
preset.apply(this);
|
|
44
50
|
}
|
|
@@ -58,6 +64,8 @@ class Application {
|
|
|
58
64
|
fn(...tokens.map(token => this.get(token)));
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
function createApplication() {
|
|
68
|
+
return new ApplicationImplementation();
|
|
69
|
+
}
|
|
70
|
+
exports.createApplication = createApplication;
|
|
63
71
|
//# sourceMappingURL=application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/di/application.ts"],"names":[],"mappings":";;;AAWA,qCAA6C;AAC7C,mCAAsC;AACtC,2CAA8C;AAE9C;;GAEG;AACU,QAAA,WAAW,GAAG,IAAA,mBAAW,EAAC,kBAAkB,CAAC,CAAC;AAE3D,MAAM,yBAAyB;IAM7B;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAI,KAAe;QACrB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAI,KAAe;QACpB,IAAI;YACF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACvC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,0BAAiB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACrD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC/B;iBAAM;gBACL,MAAM,KAAK,CAAC;aACb;SACF;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,kBAAkB;QACxB,MAAM,SAAS,GAAG,IAAA,2BAAe,GAAE,CAAC;QAEpC,SAAS,CAAC,GAAG,CAAC,mBAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;QAED,MAAM,OAAO,GAAY,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAElD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;SAC/C;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,MAAmB;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAAmB,EACnB,EAA0C;QAE1C,EAAE,CAAC,GAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAS,CAAC,CAAC;IACvD,CAAC;CACF;AAED,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC;AAFD,8CAEC"}
|
package/di/container.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createContainer = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
class ContainerImplementation {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.cache = new Map();
|
|
8
|
+
this.registry = new Map();
|
|
9
|
+
}
|
|
10
|
+
set(token, provider) {
|
|
11
|
+
this.registry.set(token._key, provider);
|
|
12
|
+
}
|
|
13
|
+
get(token) {
|
|
14
|
+
return this.resolve(token, []);
|
|
15
|
+
}
|
|
16
|
+
resolve(token, chain) {
|
|
17
|
+
if (chain.includes(token)) {
|
|
18
|
+
throw new errors_1.CircularDependencyError([...chain, token]);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
chain.push(token);
|
|
22
|
+
}
|
|
23
|
+
if (this.cache.has(token._key)) {
|
|
24
|
+
return this.cache.get(token._key);
|
|
25
|
+
}
|
|
26
|
+
else if (this.registry.has(token._key)) {
|
|
27
|
+
const provider = this.registry.get(token._key);
|
|
28
|
+
if (typeof provider !== 'function') {
|
|
29
|
+
throw new Error('Provider is not a function');
|
|
30
|
+
}
|
|
31
|
+
const value = provider(otherToken => this.resolve(otherToken, chain));
|
|
32
|
+
// всегда как singleton
|
|
33
|
+
this.cache.set(token._key, value);
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new errors_1.NothingBoundError(token._key);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Возвращает новый DI-контейнер.
|
|
43
|
+
* @return DI-контейнер.
|
|
44
|
+
*/
|
|
45
|
+
function createContainer() {
|
|
46
|
+
return new ContainerImplementation();
|
|
47
|
+
}
|
|
48
|
+
exports.createContainer = createContainer;
|
|
49
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":";;;AAEA,qCAAsE;AAEtE,MAAM,uBAAuB;IAI3B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAe,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,CAAC;IAED,GAAG,CAAI,KAAe,EAAE,QAAqB;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAI,KAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAEO,OAAO,CAAI,KAAe,EAAE,KAAmB;QACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,gCAAuB,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACtD;aAAM;YACL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE/C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC/C;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YAEtE,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAElC,OAAO,KAAK,CAAC;SACd;aAAM;YACL,MAAM,IAAI,0BAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC;AAFD,0CAEC"}
|
package/di/errors.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Token } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Ошибка, сообщающая, что в контейнере нет сервиса по заданному ключу.
|
|
4
|
+
*/
|
|
5
|
+
export declare class NothingBoundError extends Error {
|
|
6
|
+
/**
|
|
7
|
+
* Конструктор.
|
|
8
|
+
* @param key Ключ целевой зависимости.
|
|
9
|
+
*/
|
|
10
|
+
constructor(key: symbol);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Ошибка, сообщающая, что обнаружена циклическая зависимость.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CircularDependencyError extends Error {
|
|
16
|
+
/**
|
|
17
|
+
* Конструктор.
|
|
18
|
+
* @param trace Список токенов, в котором обнаружен цикл.
|
|
19
|
+
*/
|
|
20
|
+
constructor(trace: Token<any>[]);
|
|
21
|
+
}
|
package/di/errors.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CircularDependencyError = exports.NothingBoundError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ошибка, сообщающая, что в контейнере нет сервиса по заданному ключу.
|
|
6
|
+
*/
|
|
7
|
+
class NothingBoundError extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* Конструктор.
|
|
10
|
+
* @param key Ключ целевой зависимости.
|
|
11
|
+
*/
|
|
12
|
+
constructor(key) {
|
|
13
|
+
super(`Nothing bound to ${String(key)}`);
|
|
14
|
+
this.name = 'NothingBoundError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.NothingBoundError = NothingBoundError;
|
|
18
|
+
/**
|
|
19
|
+
* Ошибка, сообщающая, что обнаружена циклическая зависимость.
|
|
20
|
+
*/
|
|
21
|
+
class CircularDependencyError extends Error {
|
|
22
|
+
/**
|
|
23
|
+
* Конструктор.
|
|
24
|
+
* @param trace Список токенов, в котором обнаружен цикл.
|
|
25
|
+
*/
|
|
26
|
+
constructor(trace) {
|
|
27
|
+
const names = trace.map(token => String(token._key)).join(' >> ');
|
|
28
|
+
super(`Circular dependency found, trace: ${names}`);
|
|
29
|
+
this.name = 'CircularDependencyError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.CircularDependencyError = CircularDependencyError;
|
|
33
|
+
//# sourceMappingURL=errors.js.map
|
package/di/errors.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/di/errors.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAC1C;;;OAGG;IACH,YAAY,GAAW;QACrB,KAAK,CAAC,oBAAoB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AATD,8CASC;AAED;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAChD;;;OAGG;IACH,YAAY,KAAmB;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAVD,0DAUC"}
|
package/di/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Token, Resolve, Provider, Container, Application, Preset } from './types';
|
|
2
|
+
export { NothingBoundError, CircularDependencyError } from './errors';
|
|
3
|
+
export { createToken } from './token';
|
|
4
|
+
export { createContainer } from './container';
|
|
5
|
+
export { createPreset } from './preset';
|
|
6
|
+
export { createApplication, CURRENT_APP } from './application';
|
package/di/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CURRENT_APP = exports.createApplication = exports.createPreset = exports.createContainer = exports.createToken = exports.CircularDependencyError = exports.NothingBoundError = void 0;
|
|
4
|
+
var errors_1 = require("./errors");
|
|
5
|
+
Object.defineProperty(exports, "NothingBoundError", { enumerable: true, get: function () { return errors_1.NothingBoundError; } });
|
|
6
|
+
Object.defineProperty(exports, "CircularDependencyError", { enumerable: true, get: function () { return errors_1.CircularDependencyError; } });
|
|
7
|
+
var token_1 = require("./token");
|
|
8
|
+
Object.defineProperty(exports, "createToken", { enumerable: true, get: function () { return token_1.createToken; } });
|
|
9
|
+
var container_1 = require("./container");
|
|
10
|
+
Object.defineProperty(exports, "createContainer", { enumerable: true, get: function () { return container_1.createContainer; } });
|
|
11
|
+
var preset_1 = require("./preset");
|
|
12
|
+
Object.defineProperty(exports, "createPreset", { enumerable: true, get: function () { return preset_1.createPreset; } });
|
|
13
|
+
var application_1 = require("./application");
|
|
14
|
+
Object.defineProperty(exports, "createApplication", { enumerable: true, get: function () { return application_1.createApplication; } });
|
|
15
|
+
Object.defineProperty(exports, "CURRENT_APP", { enumerable: true, get: function () { return application_1.CURRENT_APP; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
package/di/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":";;;AACA,mCAAsE;AAA7D,2GAAA,iBAAiB,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AACnD,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AACxB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,6CAA+D;AAAtD,gHAAA,iBAAiB,OAAA;AAAE,0GAAA,WAAW,OAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Provider, Token, Preset } from './types';
|
|
2
|
+
declare type PresetEntry<T = any> = [Token<T>, Provider<T>];
|
|
2
3
|
/**
|
|
3
4
|
* Возвращает новый "preset" приложения - набор предустановленных компонентов которые можно переопределять.
|
|
4
5
|
* @param defaults Предустановленные зависимости.
|
|
5
6
|
* @return Preset.
|
|
6
7
|
*/
|
|
7
8
|
export declare function createPreset(defaults: PresetEntry[]): Preset;
|
|
9
|
+
export {};
|
package/di/preset.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/di/preset.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,SAAgB,YAAY,CAAC,QAAuB;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA4B,QAAQ,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,CAAI,KAAe,EAAE,QAAqB,EAAE,EAAE;YACtD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,EAAE,CAAC,GAAgB,EAAE,EAAE;YAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE;gBACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAjBD,oCAiBC"}
|
package/di/token.d.ts
ADDED
package/di/token.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createToken = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Возвращает новый токен.
|
|
6
|
+
* @param name Имя токена для отладки в случае ошибок.
|
|
7
|
+
* @return Токен.
|
|
8
|
+
*/
|
|
9
|
+
function createToken(name) {
|
|
10
|
+
const key = Symbol(name);
|
|
11
|
+
return {
|
|
12
|
+
_key: key,
|
|
13
|
+
_resolve: source => source.get(key),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.createToken = createToken;
|
|
17
|
+
//# sourceMappingURL=token.js.map
|
package/di/token.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/di/token.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,WAAW,CAAY,IAAa;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;KACpC,CAAC;AACJ,CAAC;AAPD,kCAOC"}
|
package/di/types.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface Token<T> {
|
|
2
|
+
readonly _key: symbol;
|
|
3
|
+
readonly _resolve: (registry: Map<symbol, any>) => T;
|
|
4
|
+
}
|
|
5
|
+
export interface Resolve {
|
|
6
|
+
<T>(token: Token<T>): T;
|
|
7
|
+
}
|
|
8
|
+
export interface Provider<T> {
|
|
9
|
+
(resolve: Resolve): T;
|
|
10
|
+
}
|
|
11
|
+
export interface Container {
|
|
12
|
+
set: <T = never>(token: Token<T>, provider: Provider<T>) => void;
|
|
13
|
+
get: Resolve;
|
|
14
|
+
}
|
|
15
|
+
export interface Binding<T> {
|
|
16
|
+
toValue: (value: T) => void;
|
|
17
|
+
toProvider: (provider: Provider<T>) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare type ExtractType<T extends readonly Token<any>[]> = {
|
|
20
|
+
[index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
|
|
21
|
+
};
|
|
22
|
+
export interface Application {
|
|
23
|
+
preset(preset: Preset): void;
|
|
24
|
+
attach(parent: Application): void;
|
|
25
|
+
bind<T>(token: Token<T>): Binding<T>;
|
|
26
|
+
get<T>(token: Token<T>): T;
|
|
27
|
+
invoke<Tokens extends readonly Token<any>[]>(tokens: [...Tokens], fn: (...args: ExtractType<Tokens>) => void): void;
|
|
28
|
+
}
|
|
29
|
+
export interface Preset {
|
|
30
|
+
override: <T>(token: Token<T>, provider: Provider<T>) => this;
|
|
31
|
+
apply: (app: Application) => void;
|
|
32
|
+
}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/di/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { Tracer } from '@opentelemetry/api';
|
|
2
|
-
import type { Handler } from 'express';
|
|
2
|
+
import type { Request, Handler } from 'express';
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает новый middleware для трассировки стадий входящего запроса.
|
|
5
5
|
* @param tracer Tracer.
|
|
6
6
|
* @return Middleware.
|
|
7
7
|
*/
|
|
8
8
|
export declare function tracingMiddleware(tracer: Tracer): Handler;
|
|
9
|
+
/**
|
|
10
|
+
* Возвращает набор стандартных атрибутов для спана.
|
|
11
|
+
* @param req Входящий http-запрос.
|
|
12
|
+
* @return Атрибуты.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getConventionalRequestAttrs(req: Request): Record<string, string | undefined>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.tracingMiddleware = void 0;
|
|
3
|
+
exports.getConventionalRequestAttrs = exports.tracingMiddleware = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const api_1 = require("@opentelemetry/api");
|
|
6
6
|
/**
|
|
@@ -12,6 +12,7 @@ function tracingMiddleware(tracer) {
|
|
|
12
12
|
return (req, res, next) => {
|
|
13
13
|
const externalContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, req.headers);
|
|
14
14
|
const rootSpan = tracer.startSpan('response', undefined, externalContext);
|
|
15
|
+
rootSpan.setAttributes(getConventionalRequestAttrs(req));
|
|
15
16
|
const rootContext = api_1.trace.setSpan(externalContext, rootSpan);
|
|
16
17
|
res.locals.tracing = {
|
|
17
18
|
rootSpan,
|
|
@@ -30,4 +31,21 @@ function tracingMiddleware(tracer) {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
exports.tracingMiddleware = tracingMiddleware;
|
|
34
|
+
/**
|
|
35
|
+
* Возвращает набор стандартных атрибутов для спана.
|
|
36
|
+
* @param req Входящий http-запрос.
|
|
37
|
+
* @return Атрибуты.
|
|
38
|
+
*/
|
|
39
|
+
function getConventionalRequestAttrs(req) {
|
|
40
|
+
const result = {
|
|
41
|
+
'request.path': req.path,
|
|
42
|
+
};
|
|
43
|
+
for (const headerName in req.headers) {
|
|
44
|
+
if (headerName.toLowerCase().startsWith('simaland-')) {
|
|
45
|
+
result[headerName] = req.header(headerName);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
exports.getConventionalRequestAttrs = getConventionalRequestAttrs;
|
|
33
51
|
//# sourceMappingURL=tracing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,4CAA8E;AAG9E;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,eAAe,GAAG,iBAAW,CAAC,OAAO,CAAC,kBAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,4CAA8E;AAG9E;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,eAAe,GAAG,iBAAW,CAAC,OAAO,CAAC,kBAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAE1E,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,WAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE7D,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG;YACnB,QAAQ;YACR,WAAW;SACZ,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AA5BD,8CA4BC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,GAAY;IACtD,MAAM,MAAM,GAAuC;QACjD,cAAc,EAAE,GAAG,CAAC,IAAI;KACzB,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE;QACpC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACpD,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7C;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,kEAYC"}
|
package/package.json
CHANGED
package/preset/node/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Preset } from '../types';
|
|
2
|
-
import type { Provider } from '../../container/types';
|
|
3
1
|
import type { BaseConfig } from '../../config/types';
|
|
4
2
|
import type { Logger } from '../../logger/types';
|
|
5
3
|
import type { Tracer } from '@opentelemetry/api';
|
|
6
|
-
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
7
4
|
import type { DefaultMiddleware } from '../../http-server/types';
|
|
5
|
+
import { Provider, Preset } from '../../di';
|
|
6
|
+
import { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
7
|
+
import { Resource } from '@opentelemetry/resources';
|
|
8
8
|
/**
|
|
9
9
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
10
10
|
* @return Preset.
|
|
@@ -15,4 +15,5 @@ export declare const provideLogger: Provider<Logger>;
|
|
|
15
15
|
export declare const provideTracer: Provider<Tracer>;
|
|
16
16
|
export declare const provideSpanExporter: Provider<SpanExporter>;
|
|
17
17
|
export declare const provideTracerProvider: Provider<BasicTracerProvider>;
|
|
18
|
+
export declare const provideTracerProviderResource: Provider<Resource>;
|
|
18
19
|
export declare const provideDefaultMiddleware: Provider<DefaultMiddleware>;
|
package/preset/node/index.js
CHANGED
|
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.provideDefaultMiddleware = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
6
|
+
exports.provideDefaultMiddleware = exports.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.provideLogger = exports.provideBaseConfig = exports.PresetNode = void 0;
|
|
7
|
+
const di_1 = require("../../di");
|
|
7
8
|
const tracing_1 = require("@opentelemetry/tracing");
|
|
8
9
|
const tokens_1 = require("../../tokens");
|
|
9
|
-
const __1 = require("..");
|
|
10
10
|
const node_1 = require("../../config/node");
|
|
11
|
-
const
|
|
11
|
+
const base_1 = require("../../config/base");
|
|
12
12
|
const logger_1 = require("../../logger");
|
|
13
13
|
const console_1 = require("../../logger/handler/console");
|
|
14
14
|
const sentry_1 = require("../../logger/handler/sentry");
|
|
@@ -22,21 +22,21 @@ const middleware_axios_1 = require("middleware-axios");
|
|
|
22
22
|
const express_1 = __importDefault(require("express"));
|
|
23
23
|
const node_4 = require("@sentry/node");
|
|
24
24
|
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
25
|
-
const resources_1 = require("@opentelemetry/resources");
|
|
26
|
-
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
27
25
|
const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
|
|
26
|
+
const utils_1 = require("../../tracing/utils");
|
|
28
27
|
/**
|
|
29
28
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
30
29
|
* @return Preset.
|
|
31
30
|
*/
|
|
32
31
|
function PresetNode() {
|
|
33
|
-
return (0,
|
|
32
|
+
return (0, di_1.createPreset)([
|
|
34
33
|
[tokens_1.KnownToken.Config.source, node_1.createConfigSource],
|
|
35
34
|
[tokens_1.KnownToken.Config.base, exports.provideBaseConfig],
|
|
36
35
|
[tokens_1.KnownToken.logger, exports.provideLogger],
|
|
37
36
|
[tokens_1.KnownToken.Tracing.tracer, exports.provideTracer],
|
|
38
37
|
[tokens_1.KnownToken.Tracing.spanExporter, exports.provideSpanExporter],
|
|
39
38
|
[tokens_1.KnownToken.Tracing.tracerProvider, exports.provideTracerProvider],
|
|
39
|
+
[tokens_1.KnownToken.Tracing.tracerProviderResource, exports.provideTracerProviderResource],
|
|
40
40
|
[tokens_1.KnownToken.Http.Client.factory, () => middleware_axios_1.create],
|
|
41
41
|
[tokens_1.KnownToken.Http.Server.factory, () => express_1.default],
|
|
42
42
|
[tokens_1.KnownToken.Http.Server.Defaults.middleware, exports.provideDefaultMiddleware],
|
|
@@ -46,7 +46,7 @@ function PresetNode() {
|
|
|
46
46
|
exports.PresetNode = PresetNode;
|
|
47
47
|
const provideBaseConfig = resolve => {
|
|
48
48
|
const source = resolve(tokens_1.KnownToken.Config.source);
|
|
49
|
-
return (0,
|
|
49
|
+
return (0, base_1.createBaseConfig)(source);
|
|
50
50
|
};
|
|
51
51
|
exports.provideBaseConfig = provideBaseConfig;
|
|
52
52
|
const provideLogger = resolve => {
|
|
@@ -79,22 +79,23 @@ const provideSpanExporter = resolve => {
|
|
|
79
79
|
};
|
|
80
80
|
exports.provideSpanExporter = provideSpanExporter;
|
|
81
81
|
const provideTracerProvider = resolve => {
|
|
82
|
-
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
83
82
|
const exporter = resolve(tokens_1.KnownToken.Tracing.spanExporter);
|
|
83
|
+
const resource = resolve(tokens_1.KnownToken.Tracing.tracerProviderResource);
|
|
84
84
|
const provider = new sdk_trace_node_1.NodeTracerProvider({
|
|
85
|
-
resource
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
resource,
|
|
86
|
+
});
|
|
87
|
+
provider.addSpanProcessor(new tracing_1.BatchSpanProcessor(exporter)); // @todo разобраться с as any
|
|
88
|
+
provider.register({
|
|
89
|
+
propagator: new propagator_jaeger_1.JaegerPropagator(),
|
|
90
90
|
});
|
|
91
|
-
// @todo разобраться с as any
|
|
92
|
-
provider.addSpanProcessor(new tracing_1.BatchSpanProcessor(exporter));
|
|
93
|
-
provider.register({ propagator: new propagator_jaeger_1.JaegerPropagator() });
|
|
94
|
-
// @todo разобраться с as any
|
|
95
|
-
return provider;
|
|
91
|
+
return provider; // @todo разобраться с as any
|
|
96
92
|
};
|
|
97
93
|
exports.provideTracerProvider = provideTracerProvider;
|
|
94
|
+
const provideTracerProviderResource = resolve => {
|
|
95
|
+
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
96
|
+
return (0, utils_1.getConventionalResource)(config);
|
|
97
|
+
};
|
|
98
|
+
exports.provideTracerProviderResource = provideTracerProviderResource;
|
|
98
99
|
const provideDefaultMiddleware = resolve => {
|
|
99
100
|
const config = resolve(tokens_1.KnownToken.Config.base);
|
|
100
101
|
const logger = resolve(tokens_1.KnownToken.logger);
|
package/preset/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { Preset } from '../types';
|
|
3
|
-
import type { Provider, Resolve } from '../../container/types';
|
|
4
2
|
import type { SagaRunner } from '../../saga-runner/types';
|
|
5
3
|
import type { PageTemplate } from '../../http-server/types';
|
|
6
4
|
import type { Handler } from 'express';
|
|
7
|
-
import { Application } from '../../
|
|
5
|
+
import { Application, Preset, Provider, Resolve } from '../../di';
|
|
8
6
|
/**
|
|
9
7
|
* Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
|
|
10
8
|
* @return Preset.
|
package/preset/node/response.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HandlerProvider = exports.provideMain = exports.provideTemplate = exports.provideRender = exports.provideSagaRunner = exports.PresetResponse = void 0;
|
|
4
|
-
const
|
|
4
|
+
const di_1 = require("../../di");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
const __1 = require("..");
|
|
7
6
|
const server_1 = require("react-dom/server");
|
|
8
7
|
const saga_runner_1 = require("../../saga-runner");
|
|
9
8
|
const constants_1 = require("../../http-server/constants");
|
|
@@ -14,7 +13,7 @@ const utils_1 = require("../../http-server/utils");
|
|
|
14
13
|
* @return Preset.
|
|
15
14
|
*/
|
|
16
15
|
function PresetResponse() {
|
|
17
|
-
return (0,
|
|
16
|
+
return (0, di_1.createPreset)([
|
|
18
17
|
[tokens_1.KnownToken.Response.sagaRunner, exports.provideSagaRunner],
|
|
19
18
|
[tokens_1.KnownToken.Response.render, exports.provideRender],
|
|
20
19
|
[tokens_1.KnownToken.Response.template, exports.provideTemplate],
|
|
@@ -65,7 +64,7 @@ const provideMain = resolve => {
|
|
|
65
64
|
exports.provideMain = provideMain;
|
|
66
65
|
function HandlerProvider(appFactory) {
|
|
67
66
|
return function provider(resolve) {
|
|
68
|
-
const parent = resolve(
|
|
67
|
+
const parent = resolve(di_1.CURRENT_APP);
|
|
69
68
|
return function handler(req, res, next) {
|
|
70
69
|
const app = appFactory();
|
|
71
70
|
app.attach(parent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":"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"}
|
package/tokens.d.ts
CHANGED
|
@@ -8,39 +8,41 @@ import type { BaseConfig } from './config/types';
|
|
|
8
8
|
import type { Tracer } from '@opentelemetry/api';
|
|
9
9
|
import type { Cache } from './cache/types';
|
|
10
10
|
import type { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
|
|
11
|
+
import type { Resource } from '@opentelemetry/resources';
|
|
11
12
|
export declare const KnownToken: {
|
|
12
13
|
readonly Config: {
|
|
13
|
-
readonly source: import("./
|
|
14
|
-
readonly base: import("./
|
|
14
|
+
readonly source: import("./di").Token<import("@humanwhocodes/env").Env>;
|
|
15
|
+
readonly base: import("./di").Token<BaseConfig>;
|
|
15
16
|
};
|
|
16
|
-
readonly cache: import("./
|
|
17
|
-
readonly logger: import("./
|
|
17
|
+
readonly cache: import("./di").Token<Cache>;
|
|
18
|
+
readonly logger: import("./di").Token<Logger>;
|
|
18
19
|
readonly Tracing: {
|
|
19
|
-
readonly tracer: import("./
|
|
20
|
-
readonly spanExporter: import("./
|
|
21
|
-
readonly tracerProvider: import("./
|
|
20
|
+
readonly tracer: import("./di").Token<Tracer>;
|
|
21
|
+
readonly spanExporter: import("./di").Token<SpanExporter>;
|
|
22
|
+
readonly tracerProvider: import("./di").Token<BasicTracerProvider>;
|
|
23
|
+
readonly tracerProviderResource: import("./di").Token<Resource>;
|
|
22
24
|
};
|
|
23
25
|
readonly Metrics: {
|
|
24
|
-
readonly httpApp: import("./
|
|
26
|
+
readonly httpApp: import("./di").Token<Application>;
|
|
25
27
|
};
|
|
26
28
|
readonly Http: {
|
|
27
29
|
readonly Client: {
|
|
28
|
-
readonly factory: import("./
|
|
30
|
+
readonly factory: import("./di").Token<HttpClientFactory>;
|
|
29
31
|
};
|
|
30
32
|
readonly Server: {
|
|
31
|
-
readonly factory: import("./
|
|
33
|
+
readonly factory: import("./di").Token<() => Application>;
|
|
32
34
|
readonly Defaults: {
|
|
33
|
-
readonly middleware: import("./
|
|
35
|
+
readonly middleware: import("./di").Token<DefaultMiddleware>;
|
|
34
36
|
};
|
|
35
37
|
};
|
|
36
38
|
};
|
|
37
39
|
readonly Response: {
|
|
38
|
-
readonly template: import("./
|
|
39
|
-
readonly context: import("./
|
|
40
|
-
readonly assets: import("./
|
|
41
|
-
readonly prepare: import("./
|
|
42
|
-
readonly render: import("./
|
|
43
|
-
readonly main: import("./
|
|
44
|
-
readonly sagaRunner: import("./
|
|
40
|
+
readonly template: import("./di").Token<PageTemplate>;
|
|
41
|
+
readonly context: import("./di").Token<ResponseContext>;
|
|
42
|
+
readonly assets: import("./di").Token<PageAssets>;
|
|
43
|
+
readonly prepare: import("./di").Token<() => JSX.Element | Promise<JSX.Element>>;
|
|
44
|
+
readonly render: import("./di").Token<(element: JSX.Element) => string | Promise<string>>;
|
|
45
|
+
readonly main: import("./di").Token<() => void>;
|
|
46
|
+
readonly sagaRunner: import("./di").Token<SagaRunner>;
|
|
45
47
|
};
|
|
46
48
|
};
|
package/tokens.js
CHANGED
|
@@ -1,48 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.KnownToken = void 0;
|
|
4
|
-
const
|
|
4
|
+
const di_1 = require("./di");
|
|
5
5
|
exports.KnownToken = {
|
|
6
6
|
// config
|
|
7
7
|
Config: {
|
|
8
|
-
source: (0,
|
|
9
|
-
base: (0,
|
|
8
|
+
source: (0, di_1.createToken)('config.source'),
|
|
9
|
+
base: (0, di_1.createToken)('config.base'),
|
|
10
10
|
},
|
|
11
11
|
// cache
|
|
12
|
-
cache: (0,
|
|
12
|
+
cache: (0, di_1.createToken)('cache'),
|
|
13
13
|
// logging
|
|
14
|
-
logger: (0,
|
|
14
|
+
logger: (0, di_1.createToken)('logger'),
|
|
15
15
|
// tracing
|
|
16
16
|
Tracing: {
|
|
17
|
-
tracer: (0,
|
|
18
|
-
spanExporter: (0,
|
|
19
|
-
tracerProvider: (0,
|
|
17
|
+
tracer: (0, di_1.createToken)('tracing.tracer'),
|
|
18
|
+
spanExporter: (0, di_1.createToken)('tracing.span-exporter'),
|
|
19
|
+
tracerProvider: (0, di_1.createToken)('tracing.tracer-provider'),
|
|
20
|
+
tracerProviderResource: (0, di_1.createToken)('tracing.tracer-provider-resource'),
|
|
20
21
|
},
|
|
21
22
|
// metrics
|
|
22
23
|
Metrics: {
|
|
23
|
-
httpApp: (0,
|
|
24
|
+
httpApp: (0, di_1.createToken)('metrics.http-app'),
|
|
24
25
|
},
|
|
25
26
|
// http
|
|
26
27
|
Http: {
|
|
27
28
|
Client: {
|
|
28
|
-
factory: (0,
|
|
29
|
+
factory: (0, di_1.createToken)('http.client.factory'),
|
|
29
30
|
},
|
|
30
31
|
Server: {
|
|
31
|
-
factory: (0,
|
|
32
|
+
factory: (0, di_1.createToken)('http.server.factory'),
|
|
32
33
|
Defaults: {
|
|
33
|
-
middleware: (0,
|
|
34
|
+
middleware: (0, di_1.createToken)('http.server.defaults.middleware'),
|
|
34
35
|
},
|
|
35
36
|
},
|
|
36
37
|
},
|
|
37
38
|
// scope: page response
|
|
38
39
|
Response: {
|
|
39
|
-
template: (0,
|
|
40
|
-
context: (0,
|
|
41
|
-
assets: (0,
|
|
42
|
-
prepare: (0,
|
|
43
|
-
render: (0,
|
|
44
|
-
main: (0,
|
|
45
|
-
sagaRunner: (0,
|
|
40
|
+
template: (0, di_1.createToken)('response/template'),
|
|
41
|
+
context: (0, di_1.createToken)('response/context'),
|
|
42
|
+
assets: (0, di_1.createToken)('response/assets'),
|
|
43
|
+
prepare: (0, di_1.createToken)('response/prepare'),
|
|
44
|
+
render: (0, di_1.createToken)('response/render'),
|
|
45
|
+
main: (0, di_1.createToken)('response/main'),
|
|
46
|
+
sagaRunner: (0, di_1.createToken)('response/saga-runner'),
|
|
46
47
|
},
|
|
47
48
|
};
|
|
48
49
|
//# sourceMappingURL=tokens.js.map
|
package/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAiBtB,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,MAAM,EAAE;QACN,MAAM,EAAE,IAAA,gBAAW,EAAe,eAAe,CAAC;QAClD,IAAI,EAAE,IAAA,gBAAW,EAAa,aAAa,CAAC;KAC7C;IAED,QAAQ;IACR,KAAK,EAAE,IAAA,gBAAW,EAAQ,OAAO,CAAC;IAElC,UAAU;IACV,MAAM,EAAE,IAAA,gBAAW,EAAS,QAAQ,CAAC;IAErC,UAAU;IACV,OAAO,EAAE;QACP,MAAM,EAAE,IAAA,gBAAW,EAAS,gBAAgB,CAAC;QAC7C,YAAY,EAAE,IAAA,gBAAW,EAAe,uBAAuB,CAAC;QAChE,cAAc,EAAE,IAAA,gBAAW,EAAsB,yBAAyB,CAAC;QAC3E,sBAAsB,EAAE,IAAA,gBAAW,EAAW,kCAAkC,CAAC;KAClF;IAED,UAAU;IACV,OAAO,EAAE;QACP,OAAO,EAAE,IAAA,gBAAW,EAAc,kBAAkB,CAAC;KACtD;IAED,OAAO;IACP,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;SAC/D;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;YAC9D,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAA,gBAAW,EAAoB,iCAAiC,CAAC;aAC9E;SACF;KACF;IAED,uBAAuB;IACvB,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAA,gBAAW,EAAe,mBAAmB,CAAC;QACxD,OAAO,EAAE,IAAA,gBAAW,EAAkB,kBAAkB,CAAC;QACzD,MAAM,EAAE,IAAA,gBAAW,EAAa,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAA,gBAAW,EAA2C,kBAAkB,CAAC;QAClF,MAAM,EAAE,IAAA,gBAAW,EAAqD,iBAAiB,CAAC;QAC1F,IAAI,EAAE,IAAA,gBAAW,EAAa,eAAe,CAAC;QAC9C,UAAU,EAAE,IAAA,gBAAW,EAAa,sBAAsB,CAAC;KAC5D;CACO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BaseConfig } from '../config/types';
|
|
2
|
+
import { Resource } from '@opentelemetry/resources';
|
|
3
|
+
/**
|
|
4
|
+
* Возвращает ресурс для BasicTracerProvider, заполненный данными по соглашению.
|
|
5
|
+
* Может быть дополнен с помощью метода merge.
|
|
6
|
+
* @param config Конфиг.
|
|
7
|
+
* @return Ресурс для провайдера.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getConventionalResource(config: BaseConfig): Resource;
|
package/tracing/utils.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConventionalResource = void 0;
|
|
4
|
+
const os_1 = require("os");
|
|
5
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
6
|
+
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
7
|
+
/**
|
|
8
|
+
* Возвращает ресурс для BasicTracerProvider, заполненный данными по соглашению.
|
|
9
|
+
* Может быть дополнен с помощью метода merge.
|
|
10
|
+
* @param config Конфиг.
|
|
11
|
+
* @return Ресурс для провайдера.
|
|
12
|
+
*/
|
|
13
|
+
function getConventionalResource(config) {
|
|
14
|
+
return new resources_1.Resource({
|
|
15
|
+
[semantic_conventions_1.SemanticResourceAttributes.HOST_NAME]: (0, os_1.hostname)(),
|
|
16
|
+
[semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: config.appName,
|
|
17
|
+
[semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,
|
|
18
|
+
[semantic_conventions_1.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.getConventionalResource = getConventionalResource;
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tracing/utils.ts"],"names":[],"mappings":";;;AACA,2BAA8B;AAC9B,wDAAoD;AACpD,8EAAiF;AAEjF;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,MAAkB;IACxD,OAAO,IAAI,oBAAQ,CAAC;QAClB,CAAC,iDAA0B,CAAC,SAAS,CAAC,EAAE,IAAA,aAAQ,GAAE;QAClD,CAAC,iDAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO;QACzD,CAAC,iDAA0B,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU;QAC/D,CAAC,iDAA0B,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,GAAG;KAChE,CAAC,CAAC;AACL,CAAC;AAPD,0DAOC"}
|
package/config/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAoB;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEjD,OAAO;QACL,GAAG;QACH,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAVD,4CAUC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Provider, Token } from './types';
|
|
2
|
-
import type { Preset } from '../preset/types';
|
|
3
|
-
declare type ExtractType<T extends readonly Token<any>[]> = {
|
|
4
|
-
[index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
|
|
5
|
-
};
|
|
6
|
-
interface Binding<T> {
|
|
7
|
-
toValue: (value: T) => void;
|
|
8
|
-
toProvider: (provider: Provider<T>) => void;
|
|
9
|
-
}
|
|
10
|
-
export declare class Application {
|
|
11
|
-
private container?;
|
|
12
|
-
private parent?;
|
|
13
|
-
private presets;
|
|
14
|
-
private providers;
|
|
15
|
-
static readonly self: Token<never>;
|
|
16
|
-
constructor();
|
|
17
|
-
bind<T>(token: Token<T>): Binding<T>;
|
|
18
|
-
get<T>(token: Token<T>): T;
|
|
19
|
-
private getContainer;
|
|
20
|
-
private configureContainer;
|
|
21
|
-
attach(parent: Application): void;
|
|
22
|
-
preset(preset: Preset): void;
|
|
23
|
-
invoke<Tokens extends readonly Token<any>[]>(tokens: [...Tokens], fn: (...args: ExtractType<Tokens>) => void): void;
|
|
24
|
-
}
|
|
25
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/container/application.ts"],"names":[],"mappings":";;;AAGA,wBAAoE;AAWpE,MAAa,WAAW;IAQtB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAI,KAAe;QACrB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAI,KAAe;QACpB,IAAI;YACF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACvC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,oBAAiB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACrD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC/B;iBAAM;gBACL,MAAM,KAAK,CAAC;aACb;SACF;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,kBAAkB;QACxB,MAAM,SAAS,GAAG,IAAA,kBAAe,GAAE,CAAC;QAEpC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAE5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;QAED,MAAM,OAAO,GAAY,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAElD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;SAC/C;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,MAAmB;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAAmB,EACnB,EAA0C;QAE1C,EAAE,CAAC,GAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAS,CAAC,CAAC;IACvD,CAAC;;AA3EH,kCA4EC;AAtEiB,gBAAI,GAAG,IAAA,cAAW,EAAC,kBAAkB,CAAC,CAAC"}
|
package/container/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Container, Token } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Возвращает новый токен.
|
|
4
|
-
* @param name Имя токена для отладки в случае ошибок.
|
|
5
|
-
* @return Токен.
|
|
6
|
-
*/
|
|
7
|
-
export declare function createToken<T = never>(name?: string): Token<T>;
|
|
8
|
-
export declare class NothingBoundError extends Error {
|
|
9
|
-
constructor(key: symbol);
|
|
10
|
-
}
|
|
11
|
-
export declare class CircularDependencyError extends Error {
|
|
12
|
-
constructor(trace: Token<any>[]);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Возвращает новый DI-контейнер.
|
|
16
|
-
* @return DI-контейнер.
|
|
17
|
-
*/
|
|
18
|
-
export declare function createContainer(): Container;
|
package/container/index.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createContainer = exports.CircularDependencyError = exports.NothingBoundError = exports.createToken = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Возвращает новый токен.
|
|
6
|
-
* @param name Имя токена для отладки в случае ошибок.
|
|
7
|
-
* @return Токен.
|
|
8
|
-
*/
|
|
9
|
-
function createToken(name) {
|
|
10
|
-
const key = Symbol(name);
|
|
11
|
-
return {
|
|
12
|
-
_key: key,
|
|
13
|
-
_resolve: (registry) => registry.get(key),
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
exports.createToken = createToken;
|
|
17
|
-
class NothingBoundError extends Error {
|
|
18
|
-
constructor(key) {
|
|
19
|
-
super(`Nothing bound to ${String(key)}`);
|
|
20
|
-
this.name = 'NothingBoundError';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.NothingBoundError = NothingBoundError;
|
|
24
|
-
class CircularDependencyError extends Error {
|
|
25
|
-
constructor(trace) {
|
|
26
|
-
const names = trace.map(token => String(token._key)).join(' >> ');
|
|
27
|
-
super(`Circular dependency found, trace: ${names}`);
|
|
28
|
-
this.name = 'CircularDependencyError';
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.CircularDependencyError = CircularDependencyError;
|
|
32
|
-
/**
|
|
33
|
-
* Возвращает новый DI-контейнер.
|
|
34
|
-
* @return DI-контейнер.
|
|
35
|
-
*/
|
|
36
|
-
function createContainer() {
|
|
37
|
-
const cache = new Map();
|
|
38
|
-
const registry = new Map();
|
|
39
|
-
function resolve(token, chain) {
|
|
40
|
-
if (chain.includes(token)) {
|
|
41
|
-
throw new CircularDependencyError([...chain, token]);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
chain.push(token);
|
|
45
|
-
}
|
|
46
|
-
if (cache.has(token._key)) {
|
|
47
|
-
return cache.get(token._key);
|
|
48
|
-
}
|
|
49
|
-
else if (registry.has(token._key)) {
|
|
50
|
-
const provider = registry.get(token._key);
|
|
51
|
-
if (typeof provider !== 'function') {
|
|
52
|
-
throw new Error('Provider is not a function');
|
|
53
|
-
}
|
|
54
|
-
const value = provider(otherToken => resolve(otherToken, chain));
|
|
55
|
-
// всегда как singleton
|
|
56
|
-
cache.set(token._key, value);
|
|
57
|
-
return value;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
throw new NothingBoundError(token._key);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const container = {
|
|
64
|
-
set(token, provider) {
|
|
65
|
-
registry.set(token._key, provider);
|
|
66
|
-
},
|
|
67
|
-
get(token) {
|
|
68
|
-
return resolve(token, []);
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
return container;
|
|
72
|
-
}
|
|
73
|
-
exports.createContainer = createContainer;
|
|
74
|
-
//# sourceMappingURL=index.js.map
|
package/container/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/container/index.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,SAAgB,WAAW,CAAY,IAAa;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,CAAC,QAA0B,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAM;KACjE,CAAC;AACJ,CAAC;AAPD,kCAOC;AAED,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,GAAW;QACrB,KAAK,CAAC,oBAAoB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,KAAmB;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAND,0DAMC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAe,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,SAAS,OAAO,CAAI,KAAe,EAAE,KAAmB;QACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,uBAAuB,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACtD;aAAM;YACL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9B;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC/C;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YAEjE,uBAAuB;YACvB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE7B,OAAO,KAAK,CAAC;SACd;aAAM;YACL,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,GAAG,CAAI,KAAe,EAAE,QAAqB;YAC3C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,GAAG,CAAI,KAAe;YACpB,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AA1CD,0CA0CC"}
|
package/container/types.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface Token<T> {
|
|
2
|
-
readonly _key: symbol;
|
|
3
|
-
readonly _resolve: (registry: Map<symbol, any>) => T;
|
|
4
|
-
}
|
|
5
|
-
export interface Resolve {
|
|
6
|
-
<T>(token: Token<T>): T;
|
|
7
|
-
}
|
|
8
|
-
export interface Provider<T> {
|
|
9
|
-
(resolve: Resolve): T;
|
|
10
|
-
}
|
|
11
|
-
export interface Container {
|
|
12
|
-
set: <T = never>(token: Token<T>, provider: Provider<T>) => void;
|
|
13
|
-
get: Resolve;
|
|
14
|
-
}
|
package/container/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/container/types.ts"],"names":[],"mappings":""}
|
package/preset/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/preset/index.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,SAAgB,YAAY,CAAC,QAAuB;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA4B,QAAQ,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,CAAI,KAAe,EAAE,QAAqB,EAAE,EAAE;YACtD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,EAAE,CAAC,GAAgB,EAAE,EAAE;YAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE;gBACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAjBD,oCAiBC"}
|
package/preset/types.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Application } from '../container/application';
|
|
2
|
-
import type { Token, Provider } from '../container/types';
|
|
3
|
-
export declare type PresetEntry<T = any> = [Token<T>, Provider<T>];
|
|
4
|
-
export interface Preset {
|
|
5
|
-
override: <T>(token: Token<T>, provider: Provider<T>) => this;
|
|
6
|
-
apply: (app: Application) => void;
|
|
7
|
-
}
|
package/preset/types.js
DELETED