@fc3/mmcadi 0.1.20 → 0.1.22

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 (205) hide show
  1. package/bin/lint +12 -0
  2. package/bin/test-one +32 -0
  3. package/dist/.last-compile-time +1 -1
  4. package/dist/.last-publish-time +1 -1
  5. package/dist/client.js +11 -1
  6. package/dist/src/client/enum/page-type.d.ts +2 -1
  7. package/dist/src/client/enum/page-type.js +1 -0
  8. package/dist/src/client/enum/page-type.js.map +1 -1
  9. package/dist/src/client/factory/page.js +3 -1
  10. package/dist/src/client/factory/page.js.map +1 -1
  11. package/dist/src/client/page/role.d.ts +5 -0
  12. package/dist/src/client/page/role.js +12 -0
  13. package/dist/src/client/page/role.js.map +1 -0
  14. package/dist/src/common/builder/block/folder.d.ts +2 -1
  15. package/dist/src/common/builder/block/folder.js.map +1 -1
  16. package/dist/src/common/builder/block/header.d.ts +5 -1
  17. package/dist/src/common/builder/block/header.js +16 -2
  18. package/dist/src/common/builder/block/header.js.map +1 -1
  19. package/dist/src/common/builder/block/parameter.d.ts +3 -0
  20. package/dist/src/common/builder/block/parameter.js +19 -0
  21. package/dist/src/common/builder/block/parameter.js.map +1 -0
  22. package/dist/src/constant/role/creator.d.ts +3 -0
  23. package/dist/src/constant/role/creator.js +17 -0
  24. package/dist/src/constant/role/creator.js.map +1 -0
  25. package/dist/src/constant/role/public.d.ts +3 -0
  26. package/dist/src/constant/role/public.js +17 -0
  27. package/dist/src/constant/role/public.js.map +1 -0
  28. package/dist/src/constant/role/unknown.d.ts +3 -0
  29. package/dist/src/constant/role/unknown.js +17 -0
  30. package/dist/src/constant/role/unknown.js.map +1 -0
  31. package/dist/src/enum/block-type.d.ts +2 -1
  32. package/dist/src/enum/block-type.js +1 -0
  33. package/dist/src/enum/block-type.js.map +1 -1
  34. package/dist/src/enum/default-role.d.ts +2 -1
  35. package/dist/src/enum/default-role.js +1 -0
  36. package/dist/src/enum/default-role.js.map +1 -1
  37. package/dist/src/enum/emoji.d.ts +1 -0
  38. package/dist/src/enum/emoji.js +1 -0
  39. package/dist/src/enum/emoji.js.map +1 -1
  40. package/dist/src/index.d.ts +2 -0
  41. package/dist/src/index.js +3 -1
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/interface/route.d.ts +2 -1
  44. package/dist/src/lib/environment-mocker/index.d.ts +18 -0
  45. package/dist/src/lib/environment-mocker/index.js +40 -0
  46. package/dist/src/lib/environment-mocker/index.js.map +1 -0
  47. package/dist/src/lib/grammar/index.d.ts +3 -0
  48. package/dist/src/lib/grammar/index.js +7 -1
  49. package/dist/src/lib/grammar/index.js.map +1 -1
  50. package/dist/src/lib/grammar/utility/pluralize.d.ts +2 -0
  51. package/dist/src/lib/grammar/utility/pluralize.js +12 -0
  52. package/dist/src/lib/grammar/utility/pluralize.js.map +1 -0
  53. package/dist/src/lib/grammar/utility/singularize-or-pluralize.d.ts +2 -0
  54. package/dist/src/lib/grammar/utility/singularize-or-pluralize.js +12 -0
  55. package/dist/src/lib/grammar/utility/singularize-or-pluralize.js.map +1 -0
  56. package/dist/src/lib/grammar/utility/singularize.d.ts +2 -0
  57. package/dist/src/lib/grammar/utility/singularize.js +12 -0
  58. package/dist/src/lib/grammar/utility/singularize.js.map +1 -0
  59. package/dist/src/lib/log-capturer/index.d.ts +2 -0
  60. package/dist/src/lib/log-capturer/index.js +8 -0
  61. package/dist/src/lib/log-capturer/index.js.map +1 -0
  62. package/dist/src/lib/log-capturer/log-capturer.d.ts +19 -0
  63. package/dist/src/lib/log-capturer/log-capturer.js +39 -0
  64. package/dist/src/lib/log-capturer/log-capturer.js.map +1 -0
  65. package/dist/src/lib/string/create-slug.js +2 -1
  66. package/dist/src/lib/string/create-slug.js.map +1 -1
  67. package/dist/src/server/endpoint/account/get.d.ts +14 -0
  68. package/dist/src/server/endpoint/account/get.js +34 -0
  69. package/dist/src/server/endpoint/account/get.js.map +1 -0
  70. package/dist/src/server/endpoint/action/create.js +4 -29
  71. package/dist/src/server/endpoint/action/create.js.map +1 -1
  72. package/dist/src/server/endpoint/role/get.d.ts +14 -0
  73. package/dist/src/server/endpoint/role/get.js +43 -0
  74. package/dist/src/server/endpoint/role/get.js.map +1 -0
  75. package/dist/src/server/enum/custom-page-type.d.ts +3 -1
  76. package/dist/src/server/enum/custom-page-type.js +2 -0
  77. package/dist/src/server/enum/custom-page-type.js.map +1 -1
  78. package/dist/src/server/factory/block-result-serializer.js +3 -0
  79. package/dist/src/server/factory/block-result-serializer.js.map +1 -1
  80. package/dist/src/server/middleware/error-handler.js +7 -2
  81. package/dist/src/server/middleware/error-handler.js.map +1 -1
  82. package/dist/src/server/operation/find-account.d.ts +1 -0
  83. package/dist/src/server/operation/find-account.js +9 -1
  84. package/dist/src/server/operation/find-account.js.map +1 -1
  85. package/dist/src/server/operation/load-account.js +5 -8
  86. package/dist/src/server/operation/load-account.js.map +1 -1
  87. package/dist/src/server/operation/load-page.d.ts +5 -4
  88. package/dist/src/server/operation/load-page.js +176 -59
  89. package/dist/src/server/operation/load-page.js.map +1 -1
  90. package/dist/src/server/operation/store-files.d.ts +15 -0
  91. package/dist/src/server/operation/store-files.js +84 -0
  92. package/dist/src/server/operation/store-files.js.map +1 -0
  93. package/dist/src/server/result-serializer/account.d.ts +9 -0
  94. package/dist/src/server/result-serializer/account.js +26 -0
  95. package/dist/src/server/result-serializer/account.js.map +1 -0
  96. package/dist/src/server/result-serializer/action.d.ts +2 -1
  97. package/dist/src/server/result-serializer/action.js +27 -18
  98. package/dist/src/server/result-serializer/action.js.map +1 -1
  99. package/dist/src/server/result-serializer/base.js +22 -4
  100. package/dist/src/server/result-serializer/base.js.map +1 -1
  101. package/dist/src/server/result-serializer/block/folder.js +25 -9
  102. package/dist/src/server/result-serializer/block/folder.js.map +1 -1
  103. package/dist/src/server/result-serializer/block/header.js +6 -2
  104. package/dist/src/server/result-serializer/block/header.js.map +1 -1
  105. package/dist/src/server/result-serializer/block/image.js +6 -3
  106. package/dist/src/server/result-serializer/block/image.js.map +1 -1
  107. package/dist/src/server/result-serializer/block/parameter.d.ts +6 -0
  108. package/dist/src/server/result-serializer/block/parameter.js +13 -0
  109. package/dist/src/server/result-serializer/block/parameter.js.map +1 -0
  110. package/dist/src/server/result-serializer/block.d.ts +2 -1
  111. package/dist/src/server/result-serializer/block.js +32 -13
  112. package/dist/src/server/result-serializer/block.js.map +1 -1
  113. package/dist/src/server/result-serializer/page.d.ts +2 -1
  114. package/dist/src/server/result-serializer/page.js +4 -4
  115. package/dist/src/server/result-serializer/page.js.map +1 -1
  116. package/dist/src/server/result-serializer/role.d.ts +9 -0
  117. package/dist/src/server/result-serializer/role.js +26 -0
  118. package/dist/src/server/result-serializer/role.js.map +1 -0
  119. package/dist/src/server/type/multipart-file.d.ts +7 -0
  120. package/dist/src/server/type/multipart-file.js +3 -0
  121. package/dist/src/server/type/multipart-file.js.map +1 -0
  122. package/dist/src/server/utility/extract-role.d.ts +3 -0
  123. package/dist/src/server/utility/extract-role.js +19 -0
  124. package/dist/src/server/utility/extract-role.js.map +1 -0
  125. package/dist/src/server/utility/get-custom-page-type-for-path.js +12 -0
  126. package/dist/src/server/utility/get-custom-page-type-for-path.js.map +1 -1
  127. package/dist/src/server/utility/get-key-for-role.d.ts +3 -0
  128. package/dist/src/server/utility/get-key-for-role.js +10 -0
  129. package/dist/src/server/utility/get-key-for-role.js.map +1 -0
  130. package/dist/src/server/utility/get-thumbnail-filename.d.ts +2 -0
  131. package/dist/src/server/utility/get-thumbnail-filename.js +10 -0
  132. package/dist/src/server/utility/get-thumbnail-filename.js.map +1 -0
  133. package/dist/src/server/utility/get-url-for-role.d.ts +3 -0
  134. package/dist/src/server/utility/get-url-for-role.js +13 -0
  135. package/dist/src/server/utility/get-url-for-role.js.map +1 -0
  136. package/dist/src/server/utility/role-matches.d.ts +3 -0
  137. package/dist/src/server/utility/role-matches.js +13 -0
  138. package/dist/src/server/utility/role-matches.js.map +1 -0
  139. package/dist/src/server/utility/satisfies-role.d.ts +3 -0
  140. package/dist/src/server/utility/satisfies-role.js +21 -0
  141. package/dist/src/server/utility/satisfies-role.js.map +1 -0
  142. package/dist/src/server.js +6 -8
  143. package/dist/src/server.js.map +1 -1
  144. package/dist/src/type/account.d.ts +1 -1
  145. package/dist/src/type/block/parameter.d.ts +8 -0
  146. package/dist/src/type/block/parameter.js +3 -0
  147. package/dist/src/type/block/parameter.js.map +1 -0
  148. package/dist/src/type/block-metadata.d.ts +2 -1
  149. package/dist/src/type/color-value.d.ts +2 -0
  150. package/dist/src/type/color-value.js +3 -0
  151. package/dist/src/type/color-value.js.map +1 -0
  152. package/dist/src/type/request-context.d.ts +7 -0
  153. package/dist/src/type/request-context.js +3 -0
  154. package/dist/src/type/request-context.js.map +1 -0
  155. package/dist/src/type/role.d.ts +8 -0
  156. package/dist/src/{interface/provider.js → type/role.js} +1 -1
  157. package/dist/src/type/role.js.map +1 -0
  158. package/dist/src/type/runtime-config.d.ts +2 -1
  159. package/dist/src/type/server-settings.d.ts +2 -1
  160. package/dist/test/unit/lib/environment-mocker/environment-mocker.d.ts +1 -0
  161. package/dist/test/unit/lib/environment-mocker/environment-mocker.js +40 -0
  162. package/dist/test/unit/lib/environment-mocker/environment-mocker.js.map +1 -0
  163. package/dist/test/unit/lib/grammar/index.d.ts +1 -0
  164. package/dist/test/unit/lib/grammar/index.js +60 -0
  165. package/dist/test/unit/lib/grammar/index.js.map +1 -0
  166. package/dist/test/unit/lib/grammar/inflector.d.ts +1 -0
  167. package/dist/test/unit/lib/grammar/inflector.js +72 -0
  168. package/dist/test/unit/lib/grammar/inflector.js.map +1 -0
  169. package/dist/test/unit/lib/http/parser/url.d.ts +1 -0
  170. package/dist/test/unit/lib/http/parser/url.js +27 -0
  171. package/dist/test/unit/lib/http/parser/url.js.map +1 -0
  172. package/dist/test/unit/lib/http/response/outgoing.d.ts +1 -0
  173. package/dist/test/unit/lib/http/response/outgoing.js +38 -0
  174. package/dist/test/unit/lib/http/response/outgoing.js.map +1 -0
  175. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.d.ts +1 -0
  176. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js +21 -0
  177. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js.map +1 -0
  178. package/dist/test/unit/lib/key-generator/key-generator.d.ts +1 -0
  179. package/dist/test/unit/lib/key-generator/key-generator.js +23 -0
  180. package/dist/test/unit/lib/key-generator/key-generator.js.map +1 -0
  181. package/dist/test/unit/lib/log-capturer/log-capturer.d.ts +1 -0
  182. package/dist/test/unit/lib/log-capturer/log-capturer.js +35 -0
  183. package/dist/test/unit/lib/log-capturer/log-capturer.js.map +1 -0
  184. package/dist/test/unit/lib/logger/formatter.d.ts +1 -0
  185. package/dist/test/unit/lib/logger/formatter.js +32 -0
  186. package/dist/test/unit/lib/logger/formatter.js.map +1 -0
  187. package/dist/test/unit/lib/logger/logger.d.ts +1 -0
  188. package/dist/test/unit/lib/logger/logger.js +194 -0
  189. package/dist/test/unit/lib/logger/logger.js.map +1 -0
  190. package/dist/test/unit/lib/operation/operation.d.ts +1 -0
  191. package/dist/test/unit/lib/operation/operation.js +128 -0
  192. package/dist/test/unit/lib/operation/operation.js.map +1 -0
  193. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.d.ts +1 -0
  194. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js +41 -0
  195. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js.map +1 -0
  196. package/dist/test/unit/lib/string/create-slug.d.ts +1 -0
  197. package/dist/test/unit/lib/string/create-slug.js +15 -0
  198. package/dist/test/unit/lib/string/create-slug.js.map +1 -0
  199. package/dist/test/unit/lib/time/utility/sleep.d.ts +1 -0
  200. package/dist/test/unit/lib/time/utility/sleep.js +20 -0
  201. package/dist/test/unit/lib/time/utility/sleep.js.map +1 -0
  202. package/dist/tsconfig.tsbuildinfo +1 -1
  203. package/package.json +11 -5
  204. package/dist/src/interface/provider.d.ts +0 -6
  205. package/dist/src/interface/provider.js.map +0 -1
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_test_1 = require("node:test");
4
+ const node_assert_1 = require("node:assert");
5
+ const grammar_1 = require("./../../../../src/lib/grammar/index.js");
6
+ function singularize(word) {
7
+ const inflector = new grammar_1.NounInflector();
8
+ return inflector.singularize(word);
9
+ }
10
+ function pluralize(word) {
11
+ const inflector = new grammar_1.NounInflector();
12
+ return inflector.pluralize(word);
13
+ }
14
+ function singularizeOrPluralize(count, word) {
15
+ const inflector = new grammar_1.NounInflector();
16
+ return inflector.singularizeOrPluralize(count, word);
17
+ }
18
+ (0, node_test_1.describe)('singularize()', () => {
19
+ (0, node_test_1.it)('returns the expected form for a generic noun', () => {
20
+ const result = singularize('preferences');
21
+ (0, node_assert_1.strictEqual)(result, 'preference');
22
+ });
23
+ (0, node_test_1.it)('returns the expected form for a noun ending in -ies', () => {
24
+ const result = singularize('parties');
25
+ (0, node_assert_1.strictEqual)(result, 'party');
26
+ });
27
+ (0, node_test_1.it)('returns the expected form for a noun ending in -i', () => {
28
+ const result = singularize('octopi');
29
+ (0, node_assert_1.strictEqual)(result, 'octopus');
30
+ });
31
+ (0, node_test_1.it)('returns the expected form for a noun that is explicitly mapped', () => {
32
+ const result = singularize('loot');
33
+ (0, node_assert_1.strictEqual)(result, 'loot');
34
+ });
35
+ });
36
+ (0, node_test_1.describe)('pluralize()', () => {
37
+ (0, node_test_1.it)('returns the expected form for a generic noun', () => {
38
+ const result = pluralize('preference');
39
+ (0, node_assert_1.strictEqual)(result, 'preferences');
40
+ });
41
+ (0, node_test_1.it)('returns the expected form for a noun ending in -y', () => {
42
+ const result = pluralize('party');
43
+ (0, node_assert_1.strictEqual)(result, 'parties');
44
+ });
45
+ (0, node_test_1.it)('returns the expected form for a noun ending in -us', () => {
46
+ const result = pluralize('octopus');
47
+ (0, node_assert_1.strictEqual)(result, 'octopi');
48
+ });
49
+ (0, node_test_1.it)('returns the expected form for a noun ending in -ch', () => {
50
+ const result = pluralize('church');
51
+ (0, node_assert_1.strictEqual)(result, 'churches');
52
+ });
53
+ (0, node_test_1.it)('returns the expected form for a noun ending in -ss', () => {
54
+ const result = pluralize('mass');
55
+ (0, node_assert_1.strictEqual)(result, 'masses');
56
+ });
57
+ (0, node_test_1.it)('returns the expected form for a noun that is explicitly mapped', () => {
58
+ const result = pluralize('loot');
59
+ (0, node_assert_1.strictEqual)(result, 'loot');
60
+ });
61
+ });
62
+ (0, node_test_1.describe)('singularizeOrPluralize()', () => {
63
+ (0, node_test_1.it)('returns the expected form for a single instance', () => {
64
+ const result = singularizeOrPluralize(1, 'account');
65
+ (0, node_assert_1.strictEqual)(result, '1 account');
66
+ });
67
+ (0, node_test_1.it)('returns the expected form for multiple instances', () => {
68
+ const result = singularizeOrPluralize(2, 'account');
69
+ (0, node_assert_1.strictEqual)(result, '2 accounts');
70
+ });
71
+ });
72
+ //# sourceMappingURL=inflector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflector.js","sourceRoot":"","sources":["../../../../../test/unit/lib/grammar/inflector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
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
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = require("node:assert");
8
+ const network_1 = require("./../../../../../src/lib/network/index.js");
9
+ const url_1 = __importDefault(require("./../../../../../src/lib/http/parser/url.js"));
10
+ (0, node_test_1.describe)('UrlParser', () => {
11
+ (0, node_test_1.describe)('parse()', () => {
12
+ (0, node_test_1.describe)('when given a fully qualified url', () => {
13
+ (0, node_test_1.it)('returns expected url data', () => {
14
+ const url = 'https://foobar.com:1234/baz/wat/?bam=ay&foo=123#blah!';
15
+ const parser = new url_1.default(url);
16
+ const parsed_url = parser.parse();
17
+ (0, node_assert_1.deepEqual)(parsed_url, {
18
+ protocol: network_1.NetworkProtocol.HTTPS,
19
+ hostname: 'foobar.com',
20
+ port: 1234,
21
+ path: '/baz/wat/?bam=ay&foo=123#blah!'
22
+ });
23
+ });
24
+ });
25
+ });
26
+ });
27
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../../../../test/unit/lib/http/parser/url.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAsC;AAEtC,yCAA4C;AAE5C,8DAA4C;AAE5C,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,IAAA,oBAAQ,EAAC,SAAS,EAAE,GAAG,EAAE;QACxB,IAAA,oBAAQ,EAAC,kCAAkC,EAAE,GAAG,EAAE;YACjD,IAAA,cAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;gBACpC,MAAM,GAAG,GAAG,uDAAuD,CAAC;gBACpE,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBAElC,IAAA,uBAAS,EAAC,UAAU,EAAE;oBACrB,QAAQ,EAAE,yBAAe,CAAC,KAAK;oBAC/B,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,gCAAgC;iBACtC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
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
+ const http_1 = __importDefault(require("http"));
7
+ const node_test_1 = require("node:test");
8
+ const node_assert_1 = require("node:assert");
9
+ const errors_1 = require("./../../../../../src/lib/errors/index.js");
10
+ const http_2 = require("./../../../../../src/lib/http/index.js");
11
+ const test_1 = require("./../../../../../src/lib/test/index.js");
12
+ (0, node_test_1.describe)('.error()', () => {
13
+ (0, node_test_1.it)('sets the expected status code and message on the response', async () => {
14
+ const execution_context = (0, test_1.buildExecutionContext)();
15
+ const server = http_1.default.createServer((_native_request, native_response) => {
16
+ const response = new http_2.OutgoingResponse(native_response);
17
+ response.setExecutionContext(execution_context);
18
+ const error = new errors_1.NotFoundError('Unable to find the specified widget');
19
+ response.error(error);
20
+ });
21
+ server.listen(3341);
22
+ const outgoing_request = new http_2.OutgoingRequest('http://localhost:3341', execution_context);
23
+ try {
24
+ await outgoing_request.get();
25
+ }
26
+ catch (error) {
27
+ if (!(error instanceof errors_1.NotFoundError)) {
28
+ throw error;
29
+ }
30
+ (0, node_assert_1.strictEqual)(error.message, 'Unable to find the specified widget');
31
+ }
32
+ const response = outgoing_request.getResponse();
33
+ const status_code = response.getStatusCode();
34
+ (0, node_assert_1.strictEqual)(status_code, http_2.StatusCode.FILE_NOT_FOUND);
35
+ server.close();
36
+ });
37
+ });
38
+ //# sourceMappingURL=outgoing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outgoing.js","sourceRoot":"","sources":["../../../../../../test/unit/lib/http/response/outgoing.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,yCAAuC;AACvC,6CAAwC;AAExC,uCAAyC;AAEzC,mCAAuE;AACvE,mCAA+C;AAE/C,IAAA,oBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAA,cAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,iBAAiB,GAAG,IAAA,4BAAqB,GAAE,CAAC;QAElD,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE;YACrE,MAAM,QAAQ,GAAG,IAAI,uBAAgB,CAAC,eAAe,CAAC,CAAC;YAEvD,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAEhD,MAAM,KAAK,GAAG,IAAI,sBAAa,CAAC,qCAAqC,CAAC,CAAC;YAEvE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,gBAAgB,GAAG,IAAI,sBAAe,CAC3C,uBAAuB,EACvB,iBAAiB,CACjB,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,KAAK,YAAY,sBAAa,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACb,CAAC;YAED,IAAA,yBAAW,EAAC,KAAK,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAE7C,IAAA,yBAAW,EAAC,WAAW,EAAE,iBAAU,CAAC,cAAc,CAAC,CAAC;QAEpD,MAAM,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
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
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = require("node:assert");
8
+ const errors_1 = require("./../../../../../src/lib/errors/index.js");
9
+ const http_1 = require("./../../../../../src/lib/http/index.js");
10
+ const get_status_code_for_error_type_1 = __importDefault(require("./../../../../../src/lib/http/utility/get-status-code-for-error-type.js"));
11
+ const ALL_STATUS_CODES = Object.values(http_1.StatusCode);
12
+ (0, node_test_1.describe)('getStatusCodeForErrorType()', () => {
13
+ (0, node_test_1.it)('returns status codes for all error types', () => {
14
+ Object.values(errors_1.ErrorType).forEach((error_type) => {
15
+ const status_code = (0, get_status_code_for_error_type_1.default)(error_type);
16
+ const exists = ALL_STATUS_CODES.includes(status_code);
17
+ (0, node_assert_1.strictEqual)(exists, true);
18
+ });
19
+ });
20
+ });
21
+ //# sourceMappingURL=get-status-code-for-error-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-status-code-for-error-type.js","sourceRoot":"","sources":["../../../../../../test/unit/lib/http/utility/get-status-code-for-error-type.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAwC;AAExC,uCAAqC;AAErC,mCAAoC;AACpC,qHAAwF;AAExF,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAU,CAAC,CAAC;AAEnD,IAAA,oBAAQ,EAAC,6BAA6B,EAAE,GAAG,EAAE;IAC5C,IAAA,cAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,MAAM,CAAC,kBAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAA,wCAAyB,EAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEtD,IAAA,yBAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
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
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = require("node:assert");
8
+ const key_generator_1 = __importDefault(require("./../../../../src/lib/key-generator/index.js"));
9
+ (0, node_test_1.describe)('.generateToken()', () => {
10
+ (0, node_test_1.it)('returns a string of the expected length', () => {
11
+ const token = key_generator_1.default.generateToken();
12
+ (0, node_assert_1.strictEqual)(token.length, 13);
13
+ });
14
+ (0, node_test_1.it)('returns different strings every time', () => {
15
+ const seen = [];
16
+ while (seen.length < 1000) {
17
+ const token = key_generator_1.default.generateToken();
18
+ (0, node_assert_1.strictEqual)(seen.includes(token), false);
19
+ seen.push(token);
20
+ }
21
+ });
22
+ });
23
+ //# sourceMappingURL=key-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-generator.js","sourceRoot":"","sources":["../../../../../test/unit/lib/key-generator/key-generator.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAwC;AAExC,sEAA6C;AAE7C,IAAA,oBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,IAAA,cAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QAClD,MAAM,KAAK,GAAG,uBAAY,CAAC,aAAa,EAAE,CAAC;QAE3C,IAAA,yBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,uBAAY,CAAC,aAAa,EAAE,CAAC;YAE3C,IAAA,yBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YAEzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
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
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = require("node:assert");
8
+ const promise_wrapper_1 = __importDefault(require("./../../../../src/lib/promise-wrapper/index.js"));
9
+ const log_capturer_1 = __importDefault(require("./../../../../src/lib/log-capturer/index.js"));
10
+ (0, node_test_1.describe)('LogCapturer', () => {
11
+ (0, node_test_1.describe)('capture()', () => {
12
+ (0, node_test_1.it)('returns expected output', () => {
13
+ const message = 'A user-defined message';
14
+ const output = log_capturer_1.default.capture(() => {
15
+ process.stdout.write(message);
16
+ });
17
+ (0, node_assert_1.match)(output, new RegExp(message));
18
+ });
19
+ });
20
+ (0, node_test_1.describe)('captureAsync()', () => {
21
+ (0, node_test_1.it)('resolves with expected output', async () => {
22
+ const message = 'A user-defined message';
23
+ const output = await log_capturer_1.default.captureAsync(() => {
24
+ const promise_wrapper = new promise_wrapper_1.default();
25
+ setTimeout(() => {
26
+ process.stdout.write(message);
27
+ promise_wrapper.resolve();
28
+ }, 0);
29
+ return promise_wrapper.getPromise();
30
+ });
31
+ (0, node_assert_1.match)(output, new RegExp(message));
32
+ });
33
+ });
34
+ });
35
+ //# sourceMappingURL=log-capturer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-capturer.js","sourceRoot":"","sources":["../../../../../test/unit/lib/log-capturer/log-capturer.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAkC;AAElC,0EAAiD;AACjD,oEAA2C;AAE3C,IAAA,oBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,IAAA,cAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YAClC,MAAM,OAAO,GAAG,wBAAwB,CAAC;YAEzC,MAAM,MAAM,GAAG,sBAAW,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,IAAA,mBAAK,EAAC,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,IAAA,cAAE,EAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,OAAO,GAAG,wBAAwB,CAAC;YAEzC,MAAM,MAAM,GAAG,MAAM,sBAAW,CAAC,YAAY,CAAC,GAAG,EAAE;gBAClD,MAAM,eAAe,GAAG,IAAI,yBAAc,EAAE,CAAC;gBAE7C,UAAU,CAAC,GAAG,EAAE;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9B,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEN,OAAO,eAAe,CAAC,UAAU,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,IAAA,mBAAK,EAAC,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
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
+ const node_test_1 = require("node:test");
7
+ const node_assert_1 = require("node:assert");
8
+ const logger_1 = require("./../../../../src/lib/logger/index.js");
9
+ const formatter_1 = __importDefault(require("./../../../../src/lib/logger/formatter.js"));
10
+ (0, node_test_1.describe)('.format()', () => {
11
+ (0, node_test_1.it)('produces expected output for success log level', () => {
12
+ const formatter = new formatter_1.default('winds be at your back', logger_1.LogLevel.SUCCESS);
13
+ const output = formatter.format();
14
+ (0, node_assert_1.strictEqual)(output, '\x1b[32mwinds be at your back\x1b[39;49m');
15
+ });
16
+ (0, node_test_1.it)('produces expected output for error log level', () => {
17
+ const formatter = new formatter_1.default('winds be at your back', logger_1.LogLevel.ERROR);
18
+ const output = formatter.format();
19
+ (0, node_assert_1.strictEqual)(output, '\x1b[31mwinds be at your back\x1b[39;49m');
20
+ });
21
+ (0, node_test_1.it)('produces expected output for warning log level', () => {
22
+ const formatter = new formatter_1.default('winds be at your back', logger_1.LogLevel.WARNING);
23
+ const output = formatter.format();
24
+ (0, node_assert_1.strictEqual)(output, '\x1b[33mwinds be at your back\x1b[39;49m');
25
+ });
26
+ (0, node_test_1.it)('produces expected output for info log level', () => {
27
+ const formatter = new formatter_1.default('winds be at your back', logger_1.LogLevel.INFO);
28
+ const output = formatter.format();
29
+ (0, node_assert_1.strictEqual)(output, 'winds be at your back');
30
+ });
31
+ });
32
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../../test/unit/lib/logger/formatter.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAwC;AAExC,uCAAoC;AACpC,qEAAgD;AAEhD,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,IAAA,cAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,SAAS,GAAG,IAAI,mBAAY,CACjC,uBAAuB,EACvB,iBAAQ,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAElC,IAAA,yBAAW,EAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,mBAAY,CAAC,uBAAuB,EAAE,iBAAQ,CAAC,KAAK,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAElC,IAAA,yBAAW,EAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,SAAS,GAAG,IAAI,mBAAY,CACjC,uBAAuB,EACvB,iBAAQ,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAElC,IAAA,yBAAW,EAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,mBAAY,CAAC,uBAAuB,EAAE,iBAAQ,CAAC,IAAI,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAElC,IAAA,yBAAW,EAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_test_1 = require("node:test");
40
+ const node_assert_1 = require("node:assert");
41
+ const log_capturer_1 = __importDefault(require("./../../../../src/lib/log-capturer/index.js"));
42
+ const environment_1 = require("./../../../../src/lib/environment/index.js");
43
+ const environment_mocker_1 = __importDefault(require("./../../../../src/lib/environment-mocker/index.js"));
44
+ const logger_1 = __importStar(require("./../../../../src/lib/logger/index.js"));
45
+ function buildMockReporter() {
46
+ return {
47
+ notify(_key, _parameters) {
48
+ // Noop.
49
+ }
50
+ };
51
+ }
52
+ (0, node_test_1.describe)('.info()', () => {
53
+ (0, node_test_1.it)('logs to stdout with no coloration', () => {
54
+ const output = log_capturer_1.default.capture(() => {
55
+ new logger_1.default().info('Some message');
56
+ });
57
+ const expected_regex = /^\[[0-9]+\] Some message\n$/;
58
+ (0, node_assert_1.match)(output, expected_regex);
59
+ });
60
+ });
61
+ (0, node_test_1.describe)('.warn()', () => {
62
+ (0, node_test_1.it)('logs to stdout with expected coloration', () => {
63
+ const output = log_capturer_1.default.capture(() => {
64
+ new logger_1.default().warn('Some message');
65
+ });
66
+ const expected_regex = /^\x1b\[33m\[[0-9]+\] Some message\u001b\[39;49m\n$/;
67
+ (0, node_assert_1.match)(output, expected_regex);
68
+ });
69
+ });
70
+ (0, node_test_1.describe)('.error()', () => {
71
+ (0, node_test_1.it)('logs to stdout with expected coloration', () => {
72
+ const output = log_capturer_1.default.capture(() => {
73
+ new logger_1.default().error('Some message');
74
+ });
75
+ const expected_regex = /^\x1b\[31m\[[0-9]+\] Some message\x1b\[39;49m\n$/;
76
+ (0, node_assert_1.match)(output, expected_regex);
77
+ });
78
+ });
79
+ (0, node_test_1.describe)('.success()', () => {
80
+ (0, node_test_1.it)('logs to stdout with expected coloration', () => {
81
+ const output = log_capturer_1.default.capture(() => {
82
+ new logger_1.default().success('Some message');
83
+ });
84
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] Some message\x1b\[39;49m\n$/;
85
+ (0, node_assert_1.match)(output, expected_regex);
86
+ });
87
+ });
88
+ (0, node_test_1.describe)('.writeMessage()', () => {
89
+ (0, node_test_1.it)('logs to stdout with expected coloration', () => {
90
+ const output = log_capturer_1.default.capture(() => {
91
+ new logger_1.default().success('Some message');
92
+ });
93
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] Some message\x1b\[39;49m\n$/;
94
+ (0, node_assert_1.match)(output, expected_regex);
95
+ });
96
+ (0, node_test_1.it)('trims surrounding whitespace from messages', () => {
97
+ const output = log_capturer_1.default.capture(() => {
98
+ new logger_1.default().success(`
99
+ Some message
100
+ `);
101
+ });
102
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] Some message\x1b\[39;49m\n$/;
103
+ (0, node_assert_1.match)(output, expected_regex);
104
+ });
105
+ (0, node_test_1.it)('includes unique id when present', () => {
106
+ const logger = new logger_1.default().setUniqueId('abcd1234');
107
+ const output = log_capturer_1.default.capture(() => {
108
+ logger.success('Some message');
109
+ });
110
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] \[abcd1234\] Some message\x1b\[39;49m\n$/;
111
+ (0, node_assert_1.match)(output, expected_regex);
112
+ });
113
+ (0, node_test_1.it)('includes remote address when present', () => {
114
+ const logger = new logger_1.default().setRemoteAddress('192.168.1.123');
115
+ const output = log_capturer_1.default.capture(() => {
116
+ logger.success('Some message');
117
+ });
118
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] \[192\.168\.1\.123\] Some message\x1b\[39;49m\n$/;
119
+ (0, node_assert_1.match)(output, expected_regex);
120
+ });
121
+ (0, node_test_1.it)('includes unique id when both unique id and remote address are present', () => {
122
+ const logger = new logger_1.default()
123
+ .setUniqueId('abcd1234')
124
+ .setRemoteAddress('192.168.1.123');
125
+ const output = log_capturer_1.default.capture(() => {
126
+ logger.success('Some message');
127
+ });
128
+ const expected_regex = /^\x1b\[32m\[[0-9]+\] \[abcd1234] Some message\x1b\[39;49m\n$/;
129
+ (0, node_assert_1.match)(output, expected_regex);
130
+ });
131
+ // Temporarily marking these as skipped. The reason these were logging as
132
+ // JSON was in order to feed them to auto-indexing platforms like Splunk.
133
+ // But we're not using any of those right now, so I just disabled the JSON
134
+ // style formatting in staging/production; the messages in prod look the
135
+ // same as they do in dev. At least for now.
136
+ node_test_1.it.skip('logs expected metadata in production', () => {
137
+ const unique_id = 'abcd1234';
138
+ const remote_address = '192.168.0.11';
139
+ const output = log_capturer_1.default.capture(() => {
140
+ environment_mocker_1.default.mock(environment_1.EnvironmentType.PRODUCTION, () => {
141
+ const logger = new logger_1.default()
142
+ .setUniqueId(unique_id)
143
+ .setRemoteAddress(remote_address)
144
+ .setOrigin('saffron.gg');
145
+ logger.writeMessage('This is a test message', logger_1.LogLevel.INFO);
146
+ });
147
+ });
148
+ const message = JSON.parse(output.trim());
149
+ (0, node_assert_1.strictEqual)(message.body, 'This is a test message');
150
+ (0, node_assert_1.strictEqual)(message.unique_id, unique_id);
151
+ (0, node_assert_1.strictEqual)(message.remote_address, remote_address);
152
+ (0, node_assert_1.strictEqual)(message.log_level, logger_1.LogLevel.INFO);
153
+ (0, node_assert_1.strictEqual)(message.origin, 'saffron.gg');
154
+ });
155
+ node_test_1.it.skip('logs expected metadata in staging', () => {
156
+ const unique_id = 'abcd1234';
157
+ const remote_address = '192.168.0.11';
158
+ const output = log_capturer_1.default.capture(() => {
159
+ environment_mocker_1.default.mock(environment_1.EnvironmentType.STAGING, () => {
160
+ const logger = new logger_1.default()
161
+ .setUniqueId(unique_id)
162
+ .setRemoteAddress(remote_address)
163
+ .setOrigin('saffron.gg');
164
+ logger.writeMessage('This is a test message', logger_1.LogLevel.INFO);
165
+ });
166
+ });
167
+ const message = JSON.parse(output.trim());
168
+ (0, node_assert_1.strictEqual)(message.body, 'This is a test message');
169
+ (0, node_assert_1.strictEqual)(message.unique_id, unique_id);
170
+ (0, node_assert_1.strictEqual)(message.remote_address, remote_address);
171
+ (0, node_assert_1.strictEqual)(message.log_level, logger_1.LogLevel.INFO);
172
+ (0, node_assert_1.strictEqual)(message.origin, 'saffron.gg');
173
+ });
174
+ });
175
+ (0, node_test_1.describe)('.setErrorReporter()', () => {
176
+ (0, node_test_1.it)('sets memoized error reporter instance', () => {
177
+ const reporter = buildMockReporter();
178
+ logger_1.default.setErrorReporter(reporter);
179
+ (0, node_assert_1.strictEqual)(logger_1.default.getErrorReporter(), reporter);
180
+ logger_1.default.setErrorReporter(undefined);
181
+ });
182
+ });
183
+ (0, node_test_1.describe)('.hasErrorReporter()', () => {
184
+ (0, node_test_1.it)('returns true when error reporter has been set', () => {
185
+ const reporter = buildMockReporter();
186
+ logger_1.default.setErrorReporter(reporter);
187
+ (0, node_assert_1.strictEqual)(logger_1.default.hasErrorReporter(), true);
188
+ logger_1.default.setErrorReporter(undefined);
189
+ });
190
+ (0, node_test_1.it)('returns false when error reporter has not been set', () => {
191
+ (0, node_assert_1.strictEqual)(logger_1.default.hasErrorReporter(), false);
192
+ });
193
+ });
194
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../test/unit/lib/logger/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};