@kcuf/sls-logger-base 0.0.1

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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -0
  3. package/coverage/base.css +224 -0
  4. package/coverage/block-navigation.js +87 -0
  5. package/coverage/clover.xml +417 -0
  6. package/coverage/coverage-final.json +20 -0
  7. package/coverage/favicon.png +0 -0
  8. package/coverage/index.html +176 -0
  9. package/coverage/prettify.css +1 -0
  10. package/coverage/prettify.js +2 -0
  11. package/coverage/sort-arrow-sprite.png +0 -0
  12. package/coverage/sorter.js +196 -0
  13. package/coverage/src/class/index.html +146 -0
  14. package/coverage/src/class/index.ts.html +85 -0
  15. package/coverage/src/class/sls-logger.ts.html +457 -0
  16. package/coverage/src/class/sls-pipe.ts.html +400 -0
  17. package/coverage/src/const/index.html +116 -0
  18. package/coverage/src/const/index.ts.html +127 -0
  19. package/coverage/src/factory/create-logger.ts.html +166 -0
  20. package/coverage/src/factory/generate-create-logger.ts.html +184 -0
  21. package/coverage/src/factory/index.html +131 -0
  22. package/coverage/src/index.html +116 -0
  23. package/coverage/src/index.ts.html +118 -0
  24. package/coverage/src/util/build-post-body.ts.html +166 -0
  25. package/coverage/src/util/convert-error-to-plain.ts.html +133 -0
  26. package/coverage/src/util/convert-log-info.ts.html +214 -0
  27. package/coverage/src/util/create-sls-log-quick.ts.html +157 -0
  28. package/coverage/src/util/flatten-object.ts.html +283 -0
  29. package/coverage/src/util/flatten-should-ignore.ts.html +151 -0
  30. package/coverage/src/util/get-log-once-key.ts.html +115 -0
  31. package/coverage/src/util/get-silent-countdown.ts.html +97 -0
  32. package/coverage/src/util/index.html +281 -0
  33. package/coverage/src/util/index.ts.html +112 -0
  34. package/coverage/src/util/merge-default-params.ts.html +148 -0
  35. package/coverage/src/util/merge-should-ignore.ts.html +115 -0
  36. package/coverage/src/util/resolve-default-params.ts.html +103 -0
  37. package/dist/cjs/class/index.js +13 -0
  38. package/dist/cjs/class/sls-logger.js +118 -0
  39. package/dist/cjs/class/sls-pipe.js +110 -0
  40. package/dist/cjs/const/index.js +18 -0
  41. package/dist/cjs/factory/create-logger.js +22 -0
  42. package/dist/cjs/factory/generate-create-logger.js +30 -0
  43. package/dist/cjs/index.js +20 -0
  44. package/dist/cjs/types/common.js +5 -0
  45. package/dist/cjs/types/factory.js +5 -0
  46. package/dist/cjs/types/index.js +38 -0
  47. package/dist/cjs/types/options.js +5 -0
  48. package/dist/cjs/util/build-post-body.js +25 -0
  49. package/dist/cjs/util/convert-error-to-plain.js +21 -0
  50. package/dist/cjs/util/convert-log-info.js +44 -0
  51. package/dist/cjs/util/create-sls-log-quick.js +34 -0
  52. package/dist/cjs/util/flatten-object.js +60 -0
  53. package/dist/cjs/util/flatten-should-ignore.js +22 -0
  54. package/dist/cjs/util/get-log-once-key.js +15 -0
  55. package/dist/cjs/util/get-silent-countdown.js +10 -0
  56. package/dist/cjs/util/index.js +69 -0
  57. package/dist/cjs/util/merge-default-params.js +21 -0
  58. package/dist/cjs/util/merge-should-ignore.js +14 -0
  59. package/dist/cjs/util/resolve-default-params.js +9 -0
  60. package/dist/esm/class/index.js +2 -0
  61. package/dist/esm/class/index.js.map +1 -0
  62. package/dist/esm/class/sls-logger.js +114 -0
  63. package/dist/esm/class/sls-logger.js.map +1 -0
  64. package/dist/esm/class/sls-pipe.js +106 -0
  65. package/dist/esm/class/sls-pipe.js.map +1 -0
  66. package/dist/esm/const/index.js +13 -0
  67. package/dist/esm/const/index.js.map +1 -0
  68. package/dist/esm/factory/create-logger.js +18 -0
  69. package/dist/esm/factory/create-logger.js.map +1 -0
  70. package/dist/esm/factory/generate-create-logger.js +25 -0
  71. package/dist/esm/factory/generate-create-logger.js.map +1 -0
  72. package/dist/esm/index.js +3 -0
  73. package/dist/esm/index.js.map +1 -0
  74. package/dist/esm/types/common.js +2 -0
  75. package/dist/esm/types/common.js.map +1 -0
  76. package/dist/esm/types/factory.js +2 -0
  77. package/dist/esm/types/factory.js.map +1 -0
  78. package/dist/esm/types/index.js +4 -0
  79. package/dist/esm/types/index.js.map +1 -0
  80. package/dist/esm/types/options.js +2 -0
  81. package/dist/esm/types/options.js.map +1 -0
  82. package/dist/esm/util/build-post-body.js +20 -0
  83. package/dist/esm/util/build-post-body.js.map +1 -0
  84. package/dist/esm/util/convert-error-to-plain.js +16 -0
  85. package/dist/esm/util/convert-error-to-plain.js.map +1 -0
  86. package/dist/esm/util/convert-log-info.js +39 -0
  87. package/dist/esm/util/convert-log-info.js.map +1 -0
  88. package/dist/esm/util/create-sls-log-quick.js +28 -0
  89. package/dist/esm/util/create-sls-log-quick.js.map +1 -0
  90. package/dist/esm/util/flatten-object.js +55 -0
  91. package/dist/esm/util/flatten-object.js.map +1 -0
  92. package/dist/esm/util/flatten-should-ignore.js +17 -0
  93. package/dist/esm/util/flatten-should-ignore.js.map +1 -0
  94. package/dist/esm/util/get-log-once-key.js +10 -0
  95. package/dist/esm/util/get-log-once-key.js.map +1 -0
  96. package/dist/esm/util/get-silent-countdown.js +5 -0
  97. package/dist/esm/util/get-silent-countdown.js.map +1 -0
  98. package/dist/esm/util/index.js +10 -0
  99. package/dist/esm/util/index.js.map +1 -0
  100. package/dist/esm/util/merge-default-params.js +16 -0
  101. package/dist/esm/util/merge-default-params.js.map +1 -0
  102. package/dist/esm/util/merge-should-ignore.js +9 -0
  103. package/dist/esm/util/merge-should-ignore.js.map +1 -0
  104. package/dist/esm/util/resolve-default-params.js +4 -0
  105. package/dist/esm/util/resolve-default-params.js.map +1 -0
  106. package/dist/types/class/index.d.ts +1 -0
  107. package/dist/types/class/sls-logger.d.ts +15 -0
  108. package/dist/types/class/sls-pipe.d.ts +27 -0
  109. package/dist/types/const/index.d.ts +11 -0
  110. package/dist/types/factory/create-logger.d.ts +5 -0
  111. package/dist/types/factory/generate-create-logger.d.ts +7 -0
  112. package/dist/types/index.d.ts +3 -0
  113. package/dist/types/types/common.d.ts +32 -0
  114. package/dist/types/types/factory.d.ts +30 -0
  115. package/dist/types/types/index.d.ts +3 -0
  116. package/dist/types/types/options.d.ts +123 -0
  117. package/dist/types/util/build-post-body.d.ts +8 -0
  118. package/dist/types/util/convert-error-to-plain.d.ts +4 -0
  119. package/dist/types/util/convert-log-info.d.ts +8 -0
  120. package/dist/types/util/create-sls-log-quick.d.ts +2 -0
  121. package/dist/types/util/flatten-object.d.ts +13 -0
  122. package/dist/types/util/flatten-should-ignore.d.ts +2 -0
  123. package/dist/types/util/get-log-once-key.d.ts +1 -0
  124. package/dist/types/util/get-silent-countdown.d.ts +1 -0
  125. package/dist/types/util/index.d.ts +9 -0
  126. package/dist/types/util/merge-default-params.d.ts +5 -0
  127. package/dist/types/util/merge-should-ignore.d.ts +2 -0
  128. package/dist/types/util/resolve-default-params.d.ts +2 -0
  129. package/package.json +55 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = generateCreateLogger;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _util = require("../util");
11
+ var _createLogger = _interopRequireDefault(require("./create-logger"));
12
+ var _excluded = ["defaultParams", "shouldIgnore"];
13
+ /**
14
+ * 创建 `createLogger` 方法的方法,对期望扩展默认参数的场景做了规范。
15
+ *
16
+ * 一般不会在项目中直接使用,而是用来写可复用 npm 包。
17
+ */
18
+ function generateCreateLogger(sender, _ref) {
19
+ var factoryDefaultParams = _ref.defaultParams,
20
+ factoryShouldIgnore = _ref.shouldIgnore;
21
+ return function (_ref2) {
22
+ var defaultParams = _ref2.defaultParams,
23
+ shouldIgnore = _ref2.shouldIgnore,
24
+ options = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
25
+ return (0, _createLogger.default)(sender, (0, _objectSpread2.default)({
26
+ defaultParams: (0, _util.mergeDefaultParams)(factoryDefaultParams, defaultParams),
27
+ shouldIgnore: (0, _util.mergeShouldIgnore)(factoryShouldIgnore, shouldIgnore)
28
+ }, options));
29
+ };
30
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _createLogger.default;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "generateCreateLoggerBase", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _generateCreateLogger.default;
17
+ }
18
+ });
19
+ var _createLogger = _interopRequireDefault(require("./factory/create-logger"));
20
+ var _generateCreateLogger = _interopRequireDefault(require("./factory/generate-create-logger"));
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _common = require("./common");
7
+ Object.keys(_common).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _common[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _common[key];
14
+ }
15
+ });
16
+ });
17
+ var _options = require("./options");
18
+ Object.keys(_options).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _options[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _options[key];
25
+ }
26
+ });
27
+ });
28
+ var _factory = require("./factory");
29
+ Object.keys(_factory).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _factory[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _factory[key];
36
+ }
37
+ });
38
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = buildPostBody;
8
+ var _const = require("../const");
9
+ var _convertLogInfo = _interopRequireDefault(require("./convert-log-info"));
10
+ /**
11
+ * 利用 PutWebTracking 发送日志,如果 `__logs__` 里含有 `__topic__` 则,外部的这个 `__topic__` 将被改为 `__topic__0`,
12
+ * 为了干净,在仅发送一条日志的时候,将 `__logs__` 里的 `__topic__` 往上提。
13
+ *
14
+ * 但是,POST 的时候 `__source__` 不会被默认填充成 IP,IP 在 `__tag__:__client_ip__`(GET 方式也有)
15
+ */
16
+ function buildPostBody(payloads) {
17
+ var topic = _const.TOPIC_MERGED;
18
+ if (payloads.length === 1) {
19
+ topic = payloads[0].__topic__; // eslint-disable-line @typescript-eslint/no-non-null-assertion
20
+ }
21
+ return {
22
+ __topic__: topic,
23
+ __logs__: payloads.map(_convertLogInfo.default)
24
+ };
25
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = convertErrorToPlain;
8
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
9
+ /**
10
+ * Error 身上的 name、message、stack 等信息用 _forEach 遍历不到,故需要转成普通对象
11
+ */
12
+ function convertErrorToPlain(err) {
13
+ var plainError = {
14
+ name: err.name,
15
+ message: err.message
16
+ };
17
+ (0, _forEach2.default)(err, function (v, k) {
18
+ plainError[k] = v;
19
+ });
20
+ return plainError;
21
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = convertLogInfo;
7
+ /**
8
+ * 发送的 JSON 里边不可以有除了字符串以外的值,否则报错
9
+ *
10
+ * - code = PostBodyInvalid
11
+ * - message = Value in log is not string data type
12
+ */
13
+ function convertLogInfo(info) {
14
+ var o = {};
15
+ Object.keys(info).forEach(function (k) {
16
+ var v = info[k];
17
+ if (v === '' || v === null || v === undefined) {
18
+ return;
19
+ }
20
+ if (typeof v === 'string') {
21
+ o[k] = v;
22
+ } else if (typeof v === 'number' || typeof v === 'boolean') {
23
+ o[k] = v.toString();
24
+ } else {
25
+ try {
26
+ // 避免 cyclic error
27
+ o[k] = JSON.stringify(v);
28
+ } catch (err) {
29
+ o[k] = 'TypeError: cyclic object value';
30
+ }
31
+ }
32
+ });
33
+
34
+ /**
35
+ * SLS 说不要用 __topic__ 做检索... ~~但又必须每条日志有个 __topic__...~~ <- 刚看了文档 __topic__ 非必填
36
+ * 在发送多条日志的时候,无法通过内部的 __topic__ 检索到相关的内容,这是一个很奇葩的设定,所以这里给每条日志
37
+ * 增加一个 _TOPIC 属性用来检索的时候替代 __topic__
38
+ *
39
+ * 详情 https://aone.alibaba-inc.com/issue/34492769
40
+ */
41
+ o._TOPIC = o.__topic__; // eslint-disable-line @typescript-eslint/no-non-null-assertion
42
+
43
+ return o;
44
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = createSlsLogQuick;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ function createSlsLogQuick(sls, group) {
11
+ return function () {
12
+ var options = {};
13
+ var topic;
14
+ var payload;
15
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
16
+ args[_key] = arguments[_key];
17
+ }
18
+ if (typeof args[0] === 'string') {
19
+ var _ref = args;
20
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2);
21
+ topic = _ref2[0];
22
+ payload = _ref2[1];
23
+ } else {
24
+ var _ref3 = args;
25
+ var _ref4 = (0, _slicedToArray2.default)(_ref3, 3);
26
+ options = _ref4[0];
27
+ topic = _ref4[1];
28
+ payload = _ref4[2];
29
+ }
30
+ sls((0, _objectSpread2.default)((0, _objectSpread2.default)({}, options), {}, {
31
+ group: group
32
+ }), topic, payload);
33
+ };
34
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = flattenObject;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
10
+ var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
11
+ var _isError2 = _interopRequireDefault(require("lodash/isError"));
12
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
13
+ var _convertErrorToPlain = _interopRequireDefault(require("./convert-error-to-plain"));
14
+ var _flattenShouldIgnore = _interopRequireDefault(require("./flatten-should-ignore"));
15
+ /**
16
+ * 有时候为了统计方便,需要把传入的对象展平,比如 error 对象,可能会展平成如下形状:
17
+ *
18
+ * ```
19
+ * {
20
+ * "error.name": "..",
21
+ * "error.message": "..",
22
+ * "error.stack": ".."
23
+ * }
24
+ * ```
25
+ */
26
+ function flattenObject(o, options) {
27
+ var resolvedOptions = typeof options === 'string' ? {
28
+ prefix: options
29
+ } : options;
30
+ var prefix = resolvedOptions.prefix,
31
+ _resolvedOptions$dept = resolvedOptions.depth,
32
+ depth = _resolvedOptions$dept === void 0 ? 5 : _resolvedOptions$dept,
33
+ ignore = resolvedOptions.ignore;
34
+ var result = {};
35
+ function makeSureErrorObject(errorOrObject) {
36
+ return (0, _isError2.default)(errorOrObject) ? (0, _convertErrorToPlain.default)(errorOrObject) : errorOrObject;
37
+ }
38
+ function loop(currentObj, parentPaths) {
39
+ var depthFull = depth > 0 && parentPaths.length + 1 >= depth;
40
+ (0, _forEach2.default)(currentObj, function (v, k) {
41
+ var key = [].concat((0, _toConsumableArray2.default)(parentPaths), [k]).join('.');
42
+ var prefixedKey = prefix ? "".concat(prefix, ".").concat(key) : key;
43
+
44
+ // 可以忽略不重要的信息
45
+ if ((0, _flattenShouldIgnore.default)(ignore, key, k, v)) {
46
+ return;
47
+ }
48
+ var vAsObject = makeSureErrorObject(v);
49
+
50
+ // 深度满了,或者不是对象或 Error,或者空对象(或数组),则不继续 loop
51
+ if (depthFull || !(0, _isPlainObject2.default)(vAsObject) || (0, _isEmpty2.default)(vAsObject)) {
52
+ result[prefixedKey] = vAsObject;
53
+ return;
54
+ }
55
+ loop(vAsObject, [].concat((0, _toConsumableArray2.default)(parentPaths), [k]));
56
+ });
57
+ }
58
+ loop(makeSureErrorObject(o), []);
59
+ return result;
60
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = flattenShouldIgnore;
7
+ function flattenShouldIgnore(ignore, path, key, value) {
8
+ if (/^_/.test(key)) {
9
+ // 默认不记录 _ 打头的所有数据
10
+ return true;
11
+ }
12
+ if (!ignore) {
13
+ return false;
14
+ }
15
+ if (typeof ignore === 'function') {
16
+ return ignore(key, value, path);
17
+ }
18
+ if (Array.isArray(ignore)) {
19
+ return ignore.includes(key);
20
+ }
21
+ return key === ignore;
22
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getLogOnceKey;
7
+ function getLogOnceKey(topic, once) {
8
+ if (!once) {
9
+ return;
10
+ }
11
+ if (once === true) {
12
+ return topic;
13
+ }
14
+ return "".concat(topic, "~").concat(once);
15
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getSilentCountdown;
7
+ var START = Date.now();
8
+ function getSilentCountdown(silentTime) {
9
+ return START + silentTime - Date.now();
10
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "buildPostBody", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _buildPostBody.default;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "convertErrorToPlain", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _convertErrorToPlain.default;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "createSlsLogQuick", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _createSlsLogQuick.default;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "flattenObject", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _flattenObject.default;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "getLogOnceKey", {
32
+ enumerable: true,
33
+ get: function get() {
34
+ return _getLogOnceKey.default;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "getSilentCountdown", {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _getSilentCountdown.default;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "mergeDefaultParams", {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _mergeDefaultParams.default;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "mergeShouldIgnore", {
50
+ enumerable: true,
51
+ get: function get() {
52
+ return _mergeShouldIgnore.default;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "resolveDefaultParams", {
56
+ enumerable: true,
57
+ get: function get() {
58
+ return _resolveDefaultParams.default;
59
+ }
60
+ });
61
+ var _getSilentCountdown = _interopRequireDefault(require("./get-silent-countdown"));
62
+ var _getLogOnceKey = _interopRequireDefault(require("./get-log-once-key"));
63
+ var _flattenObject = _interopRequireDefault(require("./flatten-object"));
64
+ var _buildPostBody = _interopRequireDefault(require("./build-post-body"));
65
+ var _convertErrorToPlain = _interopRequireDefault(require("./convert-error-to-plain"));
66
+ var _resolveDefaultParams = _interopRequireDefault(require("./resolve-default-params"));
67
+ var _createSlsLogQuick = _interopRequireDefault(require("./create-sls-log-quick"));
68
+ var _mergeDefaultParams = _interopRequireDefault(require("./merge-default-params"));
69
+ var _mergeShouldIgnore = _interopRequireDefault(require("./merge-should-ignore"));
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = mergeDefaultParams;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _resolveDefaultParams = _interopRequireDefault(require("./resolve-default-params"));
10
+ /**
11
+ * 合并默认参数
12
+ */
13
+ function mergeDefaultParams(factoryDefaultParams, defaultParams) {
14
+ if (typeof factoryDefaultParams === 'function' || typeof defaultParams === 'function') {
15
+ // 任意一者为方法,则返回方法
16
+ return function () {
17
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _resolveDefaultParams.default)(factoryDefaultParams)), (0, _resolveDefaultParams.default)(defaultParams));
18
+ };
19
+ }
20
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, factoryDefaultParams), defaultParams);
21
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = mergeShouldIgnore;
7
+ function mergeShouldIgnore(factoryShouldIgnore, shouldIgnore) {
8
+ if (!factoryShouldIgnore || !shouldIgnore) {
9
+ return shouldIgnore || factoryShouldIgnore;
10
+ }
11
+ return function () {
12
+ return factoryShouldIgnore() || shouldIgnore();
13
+ };
14
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = resolveDefaultParams;
7
+ function resolveDefaultParams(defaultParams) {
8
+ return typeof defaultParams === 'function' ? defaultParams() : defaultParams;
9
+ }
@@ -0,0 +1,2 @@
1
+ export { default as SlsLogger } from './sls-logger';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default","SlsLogger"],"sources":["../../../src/class/index.ts"],"sourcesContent":["export { default as SlsLogger } from './sls-logger';"],"mappings":"AAAA,SAASA,OAAO,IAAIC,SAAS,QAAQ,cAAc","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ import _readOnlyError from "@babel/runtime/helpers/readOnlyError";
2
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
+ import _createClass from "@babel/runtime/helpers/createClass";
6
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
+ import _isError from 'lodash/isError';
8
+ import { API_VERSION, PIPE_SILENT_TIME, PIPE_WAIT_TIME, PIPE_MAX_CHUNK } from '../const';
9
+ import { getLogOnceKey, flattenObject, convertErrorToPlain, resolveDefaultParams } from '../util';
10
+ import SlsPipe from './sls-pipe';
11
+
12
+ /**
13
+ * 创建 SLS 日志方法
14
+ */
15
+ var SlsLogger = /*#__PURE__*/function () {
16
+ function SlsLogger(sender, _options) {
17
+ var _this = this,
18
+ _options$silentTime,
19
+ _options$waitTime,
20
+ _options$maxChunk;
21
+ _classCallCheck(this, SlsLogger);
22
+ _defineProperty(this, "once", {});
23
+ _defineProperty(this, "log", function () {
24
+ var options = {};
25
+ var topic;
26
+ var payload;
27
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
+ args[_key] = arguments[_key];
29
+ }
30
+ if (typeof args[0] === 'string') {
31
+ var _ref = args;
32
+ var _ref2 = _slicedToArray(_ref, 2);
33
+ topic = _ref2[0];
34
+ payload = _ref2[1];
35
+ } else {
36
+ var _ref3 = args;
37
+ var _ref4 = _slicedToArray(_ref3, 3);
38
+ options = _ref4[0];
39
+ topic = _ref4[1];
40
+ payload = _ref4[2];
41
+ }
42
+ var _this$options = _this.options,
43
+ factoryTopicPrefix = _this$options.topicPrefix,
44
+ factorySampling = _this$options.sampling,
45
+ defaultParams = _this$options.defaultParams;
46
+ var _options2 = options,
47
+ _options2$group = _options2.group,
48
+ group = _options2$group === void 0 ? 'LOG' : _options2$group,
49
+ _options2$topicPrefix = _options2.topicPrefix,
50
+ topicPrefix = _options2$topicPrefix === void 0 ? factoryTopicPrefix : _options2$topicPrefix,
51
+ _options2$sampling = _options2.sampling,
52
+ sampling = _options2$sampling === void 0 ? factorySampling : _options2$sampling,
53
+ instant = _options2.instant,
54
+ once = _options2.once,
55
+ flatten = _options2.flatten;
56
+ var finalTopic = topicPrefix ? "".concat(topicPrefix).concat(topic) : topic;
57
+ var onceKey = getLogOnceKey(finalTopic, once);
58
+ if (_this.shouldIgnore(sampling, onceKey)) {
59
+ return;
60
+ }
61
+ if (onceKey) {
62
+ _this.once[onceKey] = 1;
63
+ }
64
+ var plainInfo;
65
+ if (payload) {
66
+ if (flatten) {
67
+ plainInfo = flattenObject(payload, flatten === true ? '' : flatten);
68
+ } else if (_isError(payload)) {
69
+ plainInfo = convertErrorToPlain(payload);
70
+ } else {
71
+ plainInfo = payload;
72
+ }
73
+ }
74
+ _this.slsPipe.pipe(_objectSpread(_objectSpread(_objectSpread({}, resolveDefaultParams(defaultParams)), plainInfo), {}, {
75
+ __topic__: finalTopic,
76
+ _GROUP: group
77
+ }), instant);
78
+ });
79
+ this.options = _options;
80
+ this.slsPipe = new SlsPipe(sender, {
81
+ trackUrl: "https://".concat(_options.project, ".").concat(_options.endpoint, "/logstores/").concat(_options.logstore, "/track"),
82
+ apiVersion: _options.apiVersion || API_VERSION,
83
+ silentTime: (_options$silentTime = _options.silentTime) !== null && _options$silentTime !== void 0 ? _options$silentTime : PIPE_SILENT_TIME,
84
+ waitTime: (_options$waitTime = _options.waitTime) !== null && _options$waitTime !== void 0 ? _options$waitTime : PIPE_WAIT_TIME,
85
+ maxChunk: (_options$maxChunk = _options.maxChunk) !== null && _options$maxChunk !== void 0 ? _options$maxChunk : PIPE_MAX_CHUNK
86
+ });
87
+ }
88
+ return _createClass(SlsLogger, [{
89
+ key: "shouldIgnore",
90
+ value:
91
+ /**
92
+ * 检查是否需要忽略
93
+ */
94
+ function shouldIgnore(sampling, onceKey) {
95
+ var _shouldIgnore;
96
+ var shouldIgnore = this.options.shouldIgnore;
97
+ if (onceKey && this.once[onceKey]) {
98
+ // 只需发送一次,已发送过,忽略
99
+ return true;
100
+ }
101
+ if (((_shouldIgnore = shouldIgnore) === null || _shouldIgnore === void 0 ? void 0 : _shouldIgnore()) === true) {
102
+ // shouldIgnore 阻止发送
103
+ return true;
104
+ }
105
+ if (typeof sampling === 'number' && sampling > 0 && sampling < 1) {
106
+ // 采样,`(0, 1)` 开区间
107
+ return Math.random() > sampling;
108
+ }
109
+ return false;
110
+ }
111
+ }]);
112
+ }();
113
+ export { SlsLogger as default };
114
+ //# sourceMappingURL=sls-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sls-logger.js","names":["_isError","API_VERSION","PIPE_SILENT_TIME","PIPE_WAIT_TIME","PIPE_MAX_CHUNK","getLogOnceKey","flattenObject","convertErrorToPlain","resolveDefaultParams","SlsPipe","SlsLogger","sender","options","_this","_options$silentTime","_options$waitTime","_options$maxChunk","_classCallCheck","_defineProperty","topic","payload","_len","arguments","length","args","Array","_key","_ref","_ref2","_slicedToArray","_ref3","_ref4","_this$options","factoryTopicPrefix","topicPrefix","factorySampling","sampling","defaultParams","_options2","_options2$group","group","_options2$topicPrefix","_options2$sampling","instant","once","flatten","finalTopic","concat","onceKey","shouldIgnore","plainInfo","slsPipe","pipe","_objectSpread","__topic__","_GROUP","trackUrl","project","endpoint","logstore","apiVersion","silentTime","waitTime","maxChunk","_createClass","key","value","_shouldIgnore","Math","random","default"],"sources":["../../../src/class/sls-logger.ts"],"sourcesContent":["import _isError from 'lodash/isError';\n\nimport {\n TLogArgs,\n ICreateLoggerOptions,\n ILogSender,\n ISlsLogOptions,\n ISlsLogFn\n} from '../types';\nimport {\n API_VERSION,\n PIPE_SILENT_TIME,\n PIPE_WAIT_TIME,\n PIPE_MAX_CHUNK\n} from '../const';\nimport {\n getLogOnceKey,\n flattenObject,\n convertErrorToPlain,\n resolveDefaultParams\n} from '../util';\n\nimport SlsPipe from './sls-pipe';\n\n/**\n * 创建 SLS 日志方法\n */\nexport default class SlsLogger {\n private readonly options: ICreateLoggerOptions;\n private readonly slsPipe: SlsPipe;\n private once: Record<string, 1> = {};\n \n constructor(sender: ILogSender, options: ICreateLoggerOptions) {\n this.options = options;\n this.slsPipe = new SlsPipe(sender, {\n trackUrl: `https://${options.project}.${options.endpoint}/logstores/${options.logstore}/track`,\n apiVersion: options.apiVersion || API_VERSION,\n silentTime: options.silentTime ?? PIPE_SILENT_TIME,\n waitTime: options.waitTime ?? PIPE_WAIT_TIME,\n maxChunk: options.maxChunk ?? PIPE_MAX_CHUNK\n });\n }\n \n log: ISlsLogFn = (...args: TLogArgs): void => {\n let options: ISlsLogOptions = {};\n let topic: string;\n let payload: Record<string, unknown> | undefined;\n \n if (typeof args[0] === 'string') {\n [topic, payload] = args as [string, Record<string, unknown>?];\n } else {\n [options, topic, payload] = args as [ISlsLogOptions, string, Record<string, unknown>?];\n }\n \n const {\n options: {\n topicPrefix: factoryTopicPrefix,\n sampling: factorySampling,\n defaultParams\n }\n } = this;\n const {\n group = 'LOG',\n topicPrefix = factoryTopicPrefix,\n sampling = factorySampling,\n instant,\n once,\n flatten\n } = options;\n const finalTopic = topicPrefix ? `${topicPrefix}${topic}` : topic;\n const onceKey: string | undefined = getLogOnceKey(finalTopic, once);\n \n if (this.shouldIgnore(sampling, onceKey)) {\n return;\n }\n \n if (onceKey) {\n this.once[onceKey] = 1;\n }\n \n let plainInfo: object | undefined;\n \n if (payload) {\n if (flatten) {\n plainInfo = flattenObject(payload, flatten === true ? '' : flatten);\n } else if (_isError(payload)) {\n plainInfo = convertErrorToPlain(payload);\n } else {\n plainInfo = payload;\n }\n }\n \n this.slsPipe.pipe({\n ...resolveDefaultParams(defaultParams),\n ...plainInfo,\n __topic__: finalTopic,\n _GROUP: group\n }, instant);\n };\n \n /**\n * 检查是否需要忽略\n */\n private shouldIgnore(sampling?: number, onceKey?: string): boolean {\n const {\n options: {\n shouldIgnore\n }\n } = this;\n \n if (onceKey && this.once[onceKey]) { // 只需发送一次,已发送过,忽略\n return true;\n }\n \n if (shouldIgnore?.() === true) { // shouldIgnore 阻止发送\n return true;\n }\n \n if (typeof sampling === 'number' && sampling > 0 && sampling < 1) { // 采样,`(0, 1)` 开区间\n return Math.random() > sampling;\n }\n \n return false;\n }\n}"],"mappings":"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","ignoreList":[]}