@sima-land/isomorph 11.0.0-alpha.1 → 11.0.0-alpha.10
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/config/browser.js +10 -1
- package/config/browser.js.map +1 -1
- package/config/node.js +10 -5
- package/config/node.js.map +1 -1
- 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/error-tracker/types.d.ts +2 -7
- package/error-tracker/utils.d.ts +11 -1
- package/error-tracker/utils.js +13 -2
- package/error-tracker/utils.js.map +1 -1
- package/http-client/middleware/logging.d.ts +15 -0
- package/http-client/middleware/logging.js +93 -0
- package/http-client/middleware/logging.js.map +1 -0
- package/http-client/sauce/index.d.ts +27 -0
- package/http-client/sauce/index.js +33 -0
- package/http-client/sauce/index.js.map +1 -0
- package/http-client/utils.d.ts +0 -27
- package/http-client/utils.js +1 -30
- package/http-client/utils.js.map +1 -1
- package/http-server/middleware/tracing.d.ts +8 -2
- package/http-server/middleware/tracing.js +22 -3
- package/http-server/middleware/tracing.js.map +1 -1
- package/logger/handler/console.d.ts +1 -1
- package/logger/handler/console.js +8 -1
- package/logger/handler/console.js.map +1 -1
- package/logger/handler/sentry.d.ts +3 -3
- package/logger/handler/sentry.js +11 -5
- package/logger/handler/sentry.js.map +1 -1
- package/package.json +4 -2
- package/preset/browser/index.d.ts +1 -0
- package/preset/browser/index.js +45 -0
- package/preset/browser/index.js.map +1 -0
- package/preset/node/index.d.ts +6 -2
- package/preset/node/index.js +62 -25
- package/preset/node/index.js.map +1 -1
- package/preset/node/response.d.ts +6 -3
- package/preset/node/response.js +9 -5
- package/preset/node/response.js.map +1 -1
- package/tokens.d.ts +24 -17
- package/tokens.js +23 -17
- package/tokens.js.map +1 -1
- package/tracing/index.d.ts +9 -0
- package/tracing/index.js +20 -0
- package/tracing/index.js.map +1 -0
- package/utils/react/error-handlers/index.js +1 -0
- package/utils/react/error-handlers/index.js.map +1 -1
- package/utils/ssr/index.d.ts +30 -0
- package/utils/ssr/index.js +51 -0
- package/utils/ssr/index.js.map +1 -0
- package/utils/webpack/index.d.ts +23 -0
- package/utils/webpack/index.js +66 -0
- package/utils/webpack/index.js.map +1 -0
- package/config/index.js.map +0 -1
- package/config/utils.d.ts +0 -5
- package/config/utils.js +0 -12
- package/config/utils.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/error-tracker/browser.d.ts +0 -8
- package/error-tracker/browser.js +0 -40
- package/error-tracker/browser.js.map +0 -1
- package/error-tracker/node.d.ts +0 -8
- package/error-tracker/node.js +0 -40
- package/error-tracker/node.js.map +0 -1
- package/preset/index.js.map +0 -1
- package/preset/types.d.ts +0 -7
- package/preset/types.js +0 -3
- package/tracer/node.d.ts +0 -10
- package/tracer/node.js +0 -38
- package/tracer/node.js.map +0 -1
- package/tracer/types.d.ts +0 -2
- package/tracer/types.js +0 -3
- package/tracer/types.js.map +0 -1
|
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"}
|
package/config/browser.js
CHANGED
|
@@ -7,7 +7,16 @@ const env_1 = require("@humanwhocodes/env");
|
|
|
7
7
|
* @return Источник.
|
|
8
8
|
*/
|
|
9
9
|
function createConfigSource() {
|
|
10
|
-
|
|
10
|
+
const source = {};
|
|
11
|
+
// докидываем process если он предоставлен сборкой
|
|
12
|
+
if (typeof process !== 'undefined') {
|
|
13
|
+
Object.assign(source, process.env);
|
|
14
|
+
}
|
|
15
|
+
// докидываем зашиваемые переменные окружения
|
|
16
|
+
if (typeof __ISOMORPH_ENV__ !== 'undefined') {
|
|
17
|
+
Object.assign(source, __ISOMORPH_ENV__);
|
|
18
|
+
}
|
|
19
|
+
return new env_1.Env(source);
|
|
11
20
|
}
|
|
12
21
|
exports.createConfigSource = createConfigSource;
|
|
13
22
|
//# sourceMappingURL=browser.js.map
|
package/config/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/config/browser.ts"],"names":[],"mappings":";;;AACA,4CAAyC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/config/browser.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AAIzC;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,kDAAkD;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;KACpC;IAED,6CAA6C;IAC7C,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAdD,gDAcC"}
|
package/config/node.js
CHANGED
|
@@ -3,17 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createConfigSource = void 0;
|
|
4
4
|
const env_1 = require("@humanwhocodes/env");
|
|
5
5
|
const dotenv_1 = require("dotenv");
|
|
6
|
-
const utils_1 = require("./utils");
|
|
7
6
|
/**
|
|
8
7
|
* Возвращает "источник" для конфигурации.
|
|
9
8
|
* @return Источник.
|
|
10
9
|
*/
|
|
11
10
|
function createConfigSource() {
|
|
12
|
-
|
|
13
|
-
const
|
|
11
|
+
const envName = process.env.NODE_ENV;
|
|
12
|
+
const source = { ...process.env };
|
|
14
13
|
// подключаем соответствующий среде файл со значениями по умолчанию
|
|
15
|
-
(
|
|
16
|
-
|
|
14
|
+
if (envName) {
|
|
15
|
+
(0, dotenv_1.config)({ path: `./.env.${envName}` });
|
|
16
|
+
}
|
|
17
|
+
// докидываем зашиваемые переменные окружения
|
|
18
|
+
if (typeof __ISOMORPH_ENV__ !== 'undefined') {
|
|
19
|
+
Object.assign(source, __ISOMORPH_ENV__);
|
|
20
|
+
}
|
|
21
|
+
return new env_1.Env(source);
|
|
17
22
|
}
|
|
18
23
|
exports.createConfigSource = createConfigSource;
|
|
19
24
|
//# sourceMappingURL=node.js.map
|
package/config/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AACzC,mCAAgC;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AACzC,mCAAgC;AAIhC;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC,MAAM,MAAM,GAAuC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtE,mEAAmE;IACnE,IAAI,OAAO,EAAE;QACX,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC;KACvC;IAED,6CAA6C;IAC7C,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAfD,gDAeC"}
|
|
@@ -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":""}
|
package/error-tracker/types.d.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { withScope as withScopeBrowser } from '@sentry/browser';
|
|
3
|
-
import type { withScope as withScopeNode } from '@sentry/node';
|
|
4
|
-
export interface SentryLib {
|
|
5
|
-
client: Client;
|
|
6
|
-
withScope: typeof withScopeBrowser | typeof withScopeNode;
|
|
7
|
-
}
|
|
1
|
+
import type { Severity, Context, Extra, Breadcrumb } from '@sentry/types';
|
|
8
2
|
export interface SentryErrorData {
|
|
9
3
|
level?: Severity;
|
|
10
4
|
context?: {
|
|
@@ -16,3 +10,4 @@ export interface SentryErrorData {
|
|
|
16
10
|
data: Extra | null;
|
|
17
11
|
};
|
|
18
12
|
}
|
|
13
|
+
export declare type SentryBreadcrumbData = Breadcrumb;
|
package/error-tracker/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SentryErrorData } from './types';
|
|
1
|
+
import { SentryErrorData, SentryBreadcrumbData } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Ошибка с данными для Sentry.
|
|
4
4
|
*/
|
|
@@ -10,3 +10,13 @@ export declare class SentryError extends Error {
|
|
|
10
10
|
*/
|
|
11
11
|
constructor(message: string, data?: SentryErrorData);
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Хлебная крошка для Sentry.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SentryBreadcrumb {
|
|
17
|
+
data: SentryBreadcrumbData;
|
|
18
|
+
/**
|
|
19
|
+
* @param data Данные.
|
|
20
|
+
*/
|
|
21
|
+
constructor(data: SentryBreadcrumbData);
|
|
22
|
+
}
|
package/error-tracker/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SentryError = void 0;
|
|
3
|
+
exports.SentryBreadcrumb = exports.SentryError = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Ошибка с данными для Sentry.
|
|
6
6
|
*/
|
|
@@ -12,8 +12,19 @@ class SentryError extends Error {
|
|
|
12
12
|
constructor(message, data = {}) {
|
|
13
13
|
super(message);
|
|
14
14
|
this.data = data;
|
|
15
|
-
this.name = 'SentryError';
|
|
16
15
|
}
|
|
17
16
|
}
|
|
18
17
|
exports.SentryError = SentryError;
|
|
18
|
+
/**
|
|
19
|
+
* Хлебная крошка для Sentry.
|
|
20
|
+
*/
|
|
21
|
+
class SentryBreadcrumb {
|
|
22
|
+
/**
|
|
23
|
+
* @param data Данные.
|
|
24
|
+
*/
|
|
25
|
+
constructor(data) {
|
|
26
|
+
this.data = data;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.SentryBreadcrumb = SentryBreadcrumb;
|
|
19
30
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/error-tracker/utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,WAAY,SAAQ,KAAK;IAGpC;;;OAGG;IACH,YAAY,OAAe,EAAE,OAAwB,EAAE;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/error-tracker/utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,WAAY,SAAQ,KAAK;IAGpC;;;OAGG;IACH,YAAY,OAAe,EAAE,OAAwB,EAAE;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAXD,kCAWC;AAED;;GAEG;AACH,MAAa,gBAAgB;IAG3B;;OAEG;IACH,YAAY,IAA0B;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,4CASC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Middleware } from 'middleware-axios';
|
|
2
|
+
import { Logger } from '../../logger/types';
|
|
3
|
+
import { Severity } from '@sentry/types';
|
|
4
|
+
/**
|
|
5
|
+
* Возвращает новый middleware для логирования запросов.
|
|
6
|
+
* @param logger Логгер.
|
|
7
|
+
* @return Middleware.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loggingMiddleware(logger: Logger): Middleware<any>;
|
|
10
|
+
/**
|
|
11
|
+
* Возвращает уровень на основе статуса ответа.
|
|
12
|
+
* @param status Статус.
|
|
13
|
+
* @return Уровень.
|
|
14
|
+
*/
|
|
15
|
+
export declare function severityFromStatus(status: number | undefined): Severity.Error | Severity.Info;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.severityFromStatus = exports.loggingMiddleware = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const utils_1 = require("../../error-tracker/utils");
|
|
9
|
+
const types_1 = require("@sentry/types");
|
|
10
|
+
/**
|
|
11
|
+
* Возвращает новый middleware для логирования запросов.
|
|
12
|
+
* @param logger Логгер.
|
|
13
|
+
* @return Middleware.
|
|
14
|
+
*/
|
|
15
|
+
function loggingMiddleware(logger) {
|
|
16
|
+
return async function (config, next, defaults) {
|
|
17
|
+
const { baseURL, url, method = 'get', params, data } = { ...defaults, ...config };
|
|
18
|
+
const readyMethod = method.toUpperCase();
|
|
19
|
+
const readyURL = baseURL ? `${baseURL.replace(/\/$/, '')}/${url}` : url;
|
|
20
|
+
try {
|
|
21
|
+
logger.info(new utils_1.SentryBreadcrumb({
|
|
22
|
+
category: 'http.request',
|
|
23
|
+
type: 'http',
|
|
24
|
+
data: {
|
|
25
|
+
url: readyURL,
|
|
26
|
+
method: readyMethod,
|
|
27
|
+
params,
|
|
28
|
+
},
|
|
29
|
+
level: types_1.Severity.Info,
|
|
30
|
+
}));
|
|
31
|
+
const response = await next(config);
|
|
32
|
+
logger.info(new utils_1.SentryBreadcrumb({
|
|
33
|
+
category: 'http.response',
|
|
34
|
+
type: 'http',
|
|
35
|
+
data: {
|
|
36
|
+
url: readyURL,
|
|
37
|
+
status_code: response.status,
|
|
38
|
+
method: readyMethod,
|
|
39
|
+
params,
|
|
40
|
+
},
|
|
41
|
+
level: types_1.Severity.Info,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
46
|
+
const statusCode = error.response?.status || 'UNKNOWN';
|
|
47
|
+
logger.error(new utils_1.SentryError(`HTTP request failed with status code ${statusCode}`, {
|
|
48
|
+
level: severityFromStatus(error.response?.status),
|
|
49
|
+
context: {
|
|
50
|
+
key: 'Request details',
|
|
51
|
+
data: {
|
|
52
|
+
url,
|
|
53
|
+
baseURL,
|
|
54
|
+
method: readyMethod,
|
|
55
|
+
headers: {
|
|
56
|
+
...config.headers,
|
|
57
|
+
...defaults.headers[readyMethod.toLowerCase()],
|
|
58
|
+
},
|
|
59
|
+
params,
|
|
60
|
+
data,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
}));
|
|
64
|
+
logger.info(new utils_1.SentryBreadcrumb({
|
|
65
|
+
category: 'http.response',
|
|
66
|
+
type: 'http',
|
|
67
|
+
data: {
|
|
68
|
+
url: readyURL,
|
|
69
|
+
status_code: statusCode,
|
|
70
|
+
method: readyMethod,
|
|
71
|
+
params,
|
|
72
|
+
},
|
|
73
|
+
level: types_1.Severity.Error,
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
// ВАЖНО: не скрываем ошибку, сообщаем остальному миру про нее
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.loggingMiddleware = loggingMiddleware;
|
|
82
|
+
/**
|
|
83
|
+
* Возвращает уровень на основе статуса ответа.
|
|
84
|
+
* @param status Статус.
|
|
85
|
+
* @return Уровень.
|
|
86
|
+
*/
|
|
87
|
+
function severityFromStatus(status) {
|
|
88
|
+
return typeof status === 'number' && status >= 200 && status < 300
|
|
89
|
+
? types_1.Severity.Info
|
|
90
|
+
: types_1.Severity.Error;
|
|
91
|
+
}
|
|
92
|
+
exports.severityFromStatus = severityFromStatus;
|
|
93
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/http-client/middleware/logging.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,qDAA0E;AAC1E,yCAAyC;AAEzC;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,KAAK,WAAW,MAAM,EAAE,IAAI,EAAE,QAAQ;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAExE,IAAI;YACF,MAAM,CAAC,IAAI,CACT,IAAI,wBAAgB,CAAC;gBACnB,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,GAAG,EAAE,QAAQ;oBACb,MAAM,EAAE,WAAW;oBACnB,MAAM;iBACP;gBACD,KAAK,EAAE,gBAAQ,CAAC,IAAI;aACrB,CAAC,CACH,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAgB,CAAC;gBACnB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,GAAG,EAAE,QAAQ;oBACb,WAAW,EAAE,QAAQ,CAAC,MAAM;oBAC5B,MAAM,EAAE,WAAW;oBACnB,MAAM;iBACP;gBACD,KAAK,EAAE,gBAAQ,CAAC,IAAI;aACrB,CAAC,CACH,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC;gBAEvD,MAAM,CAAC,KAAK,CACV,IAAI,mBAAW,CAAC,wCAAwC,UAAU,EAAE,EAAE;oBACpE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;oBACjD,OAAO,EAAE;wBACP,GAAG,EAAE,iBAAiB;wBACtB,IAAI,EAAE;4BACJ,GAAG;4BACH,OAAO;4BACP,MAAM,EAAE,WAAW;4BACnB,OAAO,EAAE;gCACP,GAAG,MAAM,CAAC,OAAO;gCACjB,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAmC,CAAC;6BAChF;4BACD,MAAM;4BACN,IAAI;yBACL;qBACF;iBACF,CAAC,CACH,CAAC;gBAEF,MAAM,CAAC,IAAI,CACT,IAAI,wBAAgB,CAAC;oBACnB,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,GAAG,EAAE,QAAQ;wBACb,WAAW,EAAE,UAAU;wBACvB,MAAM,EAAE,WAAW;wBACnB,MAAM;qBACP;oBACD,KAAK,EAAE,gBAAQ,CAAC,KAAK;iBACtB,CAAC,CACH,CAAC;aACH;YAED,8DAA8D;YAC9D,MAAM,KAAK,CAAC;SACb;IACH,CAAC,CAAC;AACJ,CAAC;AA9ED,8CA8EC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAChE,CAAC,CAAC,gBAAQ,CAAC,IAAI;QACf,CAAC,CAAC,gBAAQ,CAAC,KAAK,CAAC;AACrB,CAAC;AAJD,gDAIC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import type { AxiosInstanceWrapper, MethodName } from 'middleware-axios';
|
|
3
|
+
export declare type SauceResponse<T = any> = {
|
|
4
|
+
ok: true;
|
|
5
|
+
data: T;
|
|
6
|
+
} | {
|
|
7
|
+
ok: false;
|
|
8
|
+
error: any;
|
|
9
|
+
};
|
|
10
|
+
export interface SauceMethod<K extends MethodName> {
|
|
11
|
+
<T>(...args: Parameters<AxiosInstanceWrapper[K]>): Promise<SauceResponse<T>>;
|
|
12
|
+
}
|
|
13
|
+
export interface Sauce {
|
|
14
|
+
readonly get: SauceMethod<'get'>;
|
|
15
|
+
readonly delete: SauceMethod<'delete'>;
|
|
16
|
+
readonly head: SauceMethod<'head'>;
|
|
17
|
+
readonly options: SauceMethod<'options'>;
|
|
18
|
+
readonly post: SauceMethod<'post'>;
|
|
19
|
+
readonly put: SauceMethod<'put'>;
|
|
20
|
+
readonly patch: SauceMethod<'patch'>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, который никогда не попадают в состояние rejected.
|
|
24
|
+
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
25
|
+
* @return Обертка.
|
|
26
|
+
*/
|
|
27
|
+
export declare function sauce(instance: AxiosInstance | AxiosInstanceWrapper): Sauce;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sauce = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Оборачивает экземпляр axios. Все методы обертки возвращают promise, который никогда не попадают в состояние rejected.
|
|
6
|
+
* @param instance Экземпляр axios или AxiosInstanceWrapper.
|
|
7
|
+
* @return Обертка.
|
|
8
|
+
*/
|
|
9
|
+
function sauce(instance) {
|
|
10
|
+
// eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
|
|
11
|
+
function createMethod(methodName) {
|
|
12
|
+
return async function (...args) {
|
|
13
|
+
try {
|
|
14
|
+
const response = await instance[methodName](...args);
|
|
15
|
+
return { ok: true, data: response.data };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return { ok: false, error };
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
get: createMethod('get'),
|
|
24
|
+
delete: createMethod('delete'),
|
|
25
|
+
head: createMethod('head'),
|
|
26
|
+
options: createMethod('options'),
|
|
27
|
+
post: createMethod('post'),
|
|
28
|
+
put: createMethod('put'),
|
|
29
|
+
patch: createMethod('patch'),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.sauce = sauce;
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-client/sauce/index.ts"],"names":[],"mappings":";;;AA4BA;;;;GAIG;AACH,SAAgB,KAAK,CAAC,QAA8C;IAClE,8DAA8D;IAC9D,SAAS,YAAY,CAAyB,UAAe;QAC3D,OAAO,KAAK,WACV,GAAG,IAAoC;YAEvC,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAI,IAAc,CAAC,CAAC;gBAChE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC1C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aAC7B;QACH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC;QACxB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;QAC1B,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC;QAChC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;QAC1B,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC;QACxB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;KAC7B,CAAC;AACJ,CAAC;AAxBD,sBAwBC"}
|