@fc3/mmcadi 0.1.19 → 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 (219) 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 +4 -0
  41. package/dist/src/index.js +3 -1
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/interface/repository.d.ts +2 -1
  44. package/dist/src/interface/route.d.ts +7 -0
  45. package/dist/src/interface/{provider.js → route.js} +1 -1
  46. package/dist/src/interface/route.js.map +1 -0
  47. package/dist/src/lib/environment-mocker/index.d.ts +18 -0
  48. package/dist/src/lib/environment-mocker/index.js +40 -0
  49. package/dist/src/lib/environment-mocker/index.js.map +1 -0
  50. package/dist/src/lib/grammar/index.d.ts +3 -0
  51. package/dist/src/lib/grammar/index.js +7 -1
  52. package/dist/src/lib/grammar/index.js.map +1 -1
  53. package/dist/src/lib/grammar/utility/pluralize.d.ts +2 -0
  54. package/dist/src/lib/grammar/utility/pluralize.js +12 -0
  55. package/dist/src/lib/grammar/utility/pluralize.js.map +1 -0
  56. package/dist/src/lib/grammar/utility/singularize-or-pluralize.d.ts +2 -0
  57. package/dist/src/lib/grammar/utility/singularize-or-pluralize.js +12 -0
  58. package/dist/src/lib/grammar/utility/singularize-or-pluralize.js.map +1 -0
  59. package/dist/src/lib/grammar/utility/singularize.d.ts +2 -0
  60. package/dist/src/lib/grammar/utility/singularize.js +12 -0
  61. package/dist/src/lib/grammar/utility/singularize.js.map +1 -0
  62. package/dist/src/lib/log-capturer/index.d.ts +2 -0
  63. package/dist/src/lib/log-capturer/index.js +8 -0
  64. package/dist/src/lib/log-capturer/index.js.map +1 -0
  65. package/dist/src/lib/log-capturer/log-capturer.d.ts +19 -0
  66. package/dist/src/lib/log-capturer/log-capturer.js +39 -0
  67. package/dist/src/lib/log-capturer/log-capturer.js.map +1 -0
  68. package/dist/src/lib/string/create-slug.js +2 -1
  69. package/dist/src/lib/string/create-slug.js.map +1 -1
  70. package/dist/src/lib/test/utility/build-config.js +1 -1
  71. package/dist/src/lib/test/utility/build-config.js.map +1 -1
  72. package/dist/src/server/endpoint/abstract-page.js +19 -1
  73. package/dist/src/server/endpoint/abstract-page.js.map +1 -1
  74. package/dist/src/server/endpoint/account/get.d.ts +14 -0
  75. package/dist/src/server/endpoint/account/get.js +34 -0
  76. package/dist/src/server/endpoint/account/get.js.map +1 -0
  77. package/dist/src/server/endpoint/action/create.js +4 -29
  78. package/dist/src/server/endpoint/action/create.js.map +1 -1
  79. package/dist/src/server/endpoint/action/get.js +3 -3
  80. package/dist/src/server/endpoint/action/get.js.map +1 -1
  81. package/dist/src/server/endpoint/role/get.d.ts +14 -0
  82. package/dist/src/server/endpoint/role/get.js +43 -0
  83. package/dist/src/server/endpoint/role/get.js.map +1 -0
  84. package/dist/src/server/enum/custom-page-type.d.ts +3 -1
  85. package/dist/src/server/enum/custom-page-type.js +2 -0
  86. package/dist/src/server/enum/custom-page-type.js.map +1 -1
  87. package/dist/src/server/factory/block-result-serializer.js +3 -0
  88. package/dist/src/server/factory/block-result-serializer.js.map +1 -1
  89. package/dist/src/server/middleware/error-handler.js +11 -2
  90. package/dist/src/server/middleware/error-handler.js.map +1 -1
  91. package/dist/src/server/operation/find-account.d.ts +11 -0
  92. package/dist/src/server/operation/find-account.js +44 -0
  93. package/dist/src/server/operation/find-account.js.map +1 -0
  94. package/dist/src/server/operation/load-account.js +5 -8
  95. package/dist/src/server/operation/load-account.js.map +1 -1
  96. package/dist/src/server/operation/load-page.d.ts +6 -3
  97. package/dist/src/server/operation/load-page.js +218 -47
  98. package/dist/src/server/operation/load-page.js.map +1 -1
  99. package/dist/src/server/operation/store-files.d.ts +15 -0
  100. package/dist/src/server/operation/store-files.js +84 -0
  101. package/dist/src/server/operation/store-files.js.map +1 -0
  102. package/dist/src/server/repository/memory.d.ts +1 -0
  103. package/dist/src/server/repository/memory.js +9 -0
  104. package/dist/src/server/repository/memory.js.map +1 -1
  105. package/dist/src/server/result-serializer/account.d.ts +9 -0
  106. package/dist/src/server/result-serializer/account.js +26 -0
  107. package/dist/src/server/result-serializer/account.js.map +1 -0
  108. package/dist/src/server/result-serializer/action.d.ts +3 -2
  109. package/dist/src/server/result-serializer/action.js +27 -18
  110. package/dist/src/server/result-serializer/action.js.map +1 -1
  111. package/dist/src/server/result-serializer/base.js +22 -4
  112. package/dist/src/server/result-serializer/base.js.map +1 -1
  113. package/dist/src/server/result-serializer/block/folder.js +25 -9
  114. package/dist/src/server/result-serializer/block/folder.js.map +1 -1
  115. package/dist/src/server/result-serializer/block/header.js +6 -2
  116. package/dist/src/server/result-serializer/block/header.js.map +1 -1
  117. package/dist/src/server/result-serializer/block/image.js +6 -3
  118. package/dist/src/server/result-serializer/block/image.js.map +1 -1
  119. package/dist/src/server/result-serializer/block/parameter.d.ts +6 -0
  120. package/dist/src/server/result-serializer/block/parameter.js +13 -0
  121. package/dist/src/server/result-serializer/block/parameter.js.map +1 -0
  122. package/dist/src/server/result-serializer/block.d.ts +2 -1
  123. package/dist/src/server/result-serializer/block.js +32 -13
  124. package/dist/src/server/result-serializer/block.js.map +1 -1
  125. package/dist/src/server/result-serializer/page.d.ts +3 -1
  126. package/dist/src/server/result-serializer/page.js +13 -6
  127. package/dist/src/server/result-serializer/page.js.map +1 -1
  128. package/dist/src/server/result-serializer/role.d.ts +9 -0
  129. package/dist/src/server/result-serializer/role.js +26 -0
  130. package/dist/src/server/result-serializer/role.js.map +1 -0
  131. package/dist/src/server/type/multipart-file.d.ts +7 -0
  132. package/dist/src/server/type/multipart-file.js +3 -0
  133. package/dist/src/server/type/multipart-file.js.map +1 -0
  134. package/dist/src/server/utility/extract-role.d.ts +3 -0
  135. package/dist/src/server/utility/extract-role.js +19 -0
  136. package/dist/src/server/utility/extract-role.js.map +1 -0
  137. package/dist/src/server/utility/get-custom-page-type-for-path.js +12 -0
  138. package/dist/src/server/utility/get-custom-page-type-for-path.js.map +1 -1
  139. package/dist/src/server/utility/get-key-for-role.d.ts +3 -0
  140. package/dist/src/server/utility/get-key-for-role.js +10 -0
  141. package/dist/src/server/utility/get-key-for-role.js.map +1 -0
  142. package/dist/src/server/utility/get-thumbnail-filename.d.ts +2 -0
  143. package/dist/src/server/utility/get-thumbnail-filename.js +10 -0
  144. package/dist/src/server/utility/get-thumbnail-filename.js.map +1 -0
  145. package/dist/src/server/utility/get-url-for-role.d.ts +3 -0
  146. package/dist/src/server/utility/get-url-for-role.js +13 -0
  147. package/dist/src/server/utility/get-url-for-role.js.map +1 -0
  148. package/dist/src/server/utility/role-matches.d.ts +3 -0
  149. package/dist/src/server/utility/role-matches.js +13 -0
  150. package/dist/src/server/utility/role-matches.js.map +1 -0
  151. package/dist/src/server/utility/satisfies-role.d.ts +3 -0
  152. package/dist/src/server/utility/satisfies-role.js +21 -0
  153. package/dist/src/server/utility/satisfies-role.js.map +1 -0
  154. package/dist/src/server/utility/validate-page.js +6 -0
  155. package/dist/src/server/utility/validate-page.js.map +1 -1
  156. package/dist/src/server.js +8 -10
  157. package/dist/src/server.js.map +1 -1
  158. package/dist/src/type/account.d.ts +1 -1
  159. package/dist/src/type/block/parameter.d.ts +8 -0
  160. package/dist/src/type/block/parameter.js +3 -0
  161. package/dist/src/type/block/parameter.js.map +1 -0
  162. package/dist/src/type/block-metadata.d.ts +2 -1
  163. package/dist/src/type/color-value.d.ts +2 -0
  164. package/dist/src/type/color-value.js +3 -0
  165. package/dist/src/type/color-value.js.map +1 -0
  166. package/dist/src/type/request-context.d.ts +7 -0
  167. package/dist/src/type/request-context.js +3 -0
  168. package/dist/src/type/request-context.js.map +1 -0
  169. package/dist/src/type/role.d.ts +8 -0
  170. package/dist/src/type/role.js +3 -0
  171. package/dist/src/type/role.js.map +1 -0
  172. package/dist/src/type/runtime-config.d.ts +4 -3
  173. package/dist/src/type/server-settings.d.ts +4 -3
  174. package/dist/test/unit/lib/environment-mocker/environment-mocker.d.ts +1 -0
  175. package/dist/test/unit/lib/environment-mocker/environment-mocker.js +40 -0
  176. package/dist/test/unit/lib/environment-mocker/environment-mocker.js.map +1 -0
  177. package/dist/test/unit/lib/grammar/index.d.ts +1 -0
  178. package/dist/test/unit/lib/grammar/index.js +60 -0
  179. package/dist/test/unit/lib/grammar/index.js.map +1 -0
  180. package/dist/test/unit/lib/grammar/inflector.d.ts +1 -0
  181. package/dist/test/unit/lib/grammar/inflector.js +72 -0
  182. package/dist/test/unit/lib/grammar/inflector.js.map +1 -0
  183. package/dist/test/unit/lib/http/parser/url.d.ts +1 -0
  184. package/dist/test/unit/lib/http/parser/url.js +27 -0
  185. package/dist/test/unit/lib/http/parser/url.js.map +1 -0
  186. package/dist/test/unit/lib/http/response/outgoing.d.ts +1 -0
  187. package/dist/test/unit/lib/http/response/outgoing.js +38 -0
  188. package/dist/test/unit/lib/http/response/outgoing.js.map +1 -0
  189. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.d.ts +1 -0
  190. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js +21 -0
  191. package/dist/test/unit/lib/http/utility/get-status-code-for-error-type.js.map +1 -0
  192. package/dist/test/unit/lib/key-generator/key-generator.d.ts +1 -0
  193. package/dist/test/unit/lib/key-generator/key-generator.js +23 -0
  194. package/dist/test/unit/lib/key-generator/key-generator.js.map +1 -0
  195. package/dist/test/unit/lib/log-capturer/log-capturer.d.ts +1 -0
  196. package/dist/test/unit/lib/log-capturer/log-capturer.js +35 -0
  197. package/dist/test/unit/lib/log-capturer/log-capturer.js.map +1 -0
  198. package/dist/test/unit/lib/logger/formatter.d.ts +1 -0
  199. package/dist/test/unit/lib/logger/formatter.js +32 -0
  200. package/dist/test/unit/lib/logger/formatter.js.map +1 -0
  201. package/dist/test/unit/lib/logger/logger.d.ts +1 -0
  202. package/dist/test/unit/lib/logger/logger.js +194 -0
  203. package/dist/test/unit/lib/logger/logger.js.map +1 -0
  204. package/dist/test/unit/lib/operation/operation.d.ts +1 -0
  205. package/dist/test/unit/lib/operation/operation.js +128 -0
  206. package/dist/test/unit/lib/operation/operation.js.map +1 -0
  207. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.d.ts +1 -0
  208. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js +41 -0
  209. package/dist/test/unit/lib/promise-wrapper/promise-wrapper.js.map +1 -0
  210. package/dist/test/unit/lib/string/create-slug.d.ts +1 -0
  211. package/dist/test/unit/lib/string/create-slug.js +15 -0
  212. package/dist/test/unit/lib/string/create-slug.js.map +1 -0
  213. package/dist/test/unit/lib/time/utility/sleep.d.ts +1 -0
  214. package/dist/test/unit/lib/time/utility/sleep.js +20 -0
  215. package/dist/test/unit/lib/time/utility/sleep.js.map +1 -0
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/package.json +11 -5
  218. package/dist/src/interface/provider.d.ts +0 -6
  219. package/dist/src/interface/provider.js.map +0 -1
@@ -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 {};
@@ -0,0 +1,128 @@
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 = __importDefault(require("node:assert"));
8
+ const log_capturer_1 = __importDefault(require("./../../../../src/lib/log-capturer/index.js"));
9
+ const operation_1 = __importDefault(require("./../../../../src/lib/operation/index.js"));
10
+ const test_1 = require("./../../../../src/lib/test/index.js");
11
+ (0, node_test_1.describe)('Operation', () => {
12
+ class MockOperation extends operation_1.default {
13
+ constructor(value, request_context) {
14
+ super(request_context);
15
+ this.value = value;
16
+ }
17
+ privilegedGetExecutionContext() {
18
+ return this.getExecutionContext();
19
+ }
20
+ privilegedGetSession() {
21
+ return this.getSession();
22
+ }
23
+ privilegedHasSession() {
24
+ return this.hasSession();
25
+ }
26
+ async performInternal() {
27
+ if (this.value) {
28
+ return this.value;
29
+ }
30
+ else {
31
+ throw new Error('Something strange happened');
32
+ }
33
+ }
34
+ logRunning() {
35
+ this.getLogger().info(`
36
+ Started!
37
+ `);
38
+ }
39
+ logSuccess(result) {
40
+ this.getLogger().success(`
41
+ Success! (${result})
42
+ `);
43
+ }
44
+ logFailure(error) {
45
+ this.getLogger().error(`
46
+ Failure! (${error.message})
47
+ `);
48
+ }
49
+ }
50
+ (0, node_test_1.it)('logs expected start message', async () => {
51
+ const operation = new MockOperation(true);
52
+ const output = await log_capturer_1.default.captureAsync(() => {
53
+ return operation.perform();
54
+ });
55
+ node_assert_1.default.match(output, /Started!/);
56
+ });
57
+ (0, node_test_1.it)('logs expected success message', async () => {
58
+ const operation = new MockOperation(true);
59
+ const output = await log_capturer_1.default.captureAsync(() => {
60
+ return operation.perform();
61
+ });
62
+ node_assert_1.default.match(output, /Success! \(true\)/);
63
+ });
64
+ (0, node_test_1.it)('logs expected failure message', async () => {
65
+ const operation = new MockOperation(false);
66
+ const output = await log_capturer_1.default.captureAsync(async () => {
67
+ try {
68
+ await operation.perform();
69
+ }
70
+ catch (error) {
71
+ const cast_error = error;
72
+ node_assert_1.default.strictEqual(cast_error.message, 'Something strange happened');
73
+ }
74
+ });
75
+ node_assert_1.default.match(output, /Failure! \(Something strange happened\)/);
76
+ });
77
+ (0, node_test_1.describe)('passing request context to constructor', () => {
78
+ const request_context = (0, test_1.buildExecutionContext)();
79
+ (0, node_test_1.it)('sets expected request context', () => {
80
+ const operation = new MockOperation(true, request_context);
81
+ const actual_request_context = operation.privilegedGetExecutionContext();
82
+ node_assert_1.default.strictEqual(actual_request_context, request_context);
83
+ });
84
+ });
85
+ (0, node_test_1.describe)('.getSession()', () => {
86
+ (0, node_test_1.it)('throws error if no request context is set', () => {
87
+ const operation = new MockOperation(true);
88
+ node_assert_1.default.throws(() => {
89
+ operation.privilegedGetSession();
90
+ }, /Tried to read request context, but it was not set/);
91
+ });
92
+ (0, node_test_1.it)('returns expected session instance', () => {
93
+ const session = {
94
+ id: 'abcd1234',
95
+ account_id: 'xxx',
96
+ username: 'xxx'
97
+ };
98
+ const request_context = (0, test_1.buildExecutionContext)();
99
+ request_context.setSession(session);
100
+ const operation = new MockOperation(true, request_context);
101
+ const actual_session = operation.privilegedGetSession();
102
+ node_assert_1.default.strictEqual(actual_session, session);
103
+ });
104
+ });
105
+ (0, node_test_1.describe)('.hasSession()', () => {
106
+ (0, node_test_1.it)('returns false if no request context is set', () => {
107
+ const operation = new MockOperation(true);
108
+ node_assert_1.default.strictEqual(operation.privilegedHasSession(), false);
109
+ });
110
+ (0, node_test_1.it)('returns false if request context has no session', () => {
111
+ const request_context = (0, test_1.buildExecutionContext)();
112
+ const operation = new MockOperation(true, request_context);
113
+ node_assert_1.default.strictEqual(operation.privilegedHasSession(), false);
114
+ });
115
+ (0, node_test_1.it)('returns true if request context has session', () => {
116
+ const session = {
117
+ id: 'abcd1234',
118
+ account_id: 'xxx',
119
+ username: 'xxx'
120
+ };
121
+ const request_context = (0, test_1.buildExecutionContext)();
122
+ request_context.setSession(session);
123
+ const operation = new MockOperation(true, request_context);
124
+ node_assert_1.default.strictEqual(operation.privilegedHasSession(), true);
125
+ });
126
+ });
127
+ });
128
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../../test/unit/lib/operation/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
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
+ (0, node_test_1.describe)('PromiseWrapper', () => {
10
+ (0, node_test_1.describe)('.getPromise()', () => {
11
+ (0, node_test_1.it)('returns the same promise when called multiple times', () => {
12
+ const promise_wrapper = new promise_wrapper_1.default();
13
+ const first_promise = promise_wrapper.getPromise();
14
+ const second_promise = promise_wrapper.getPromise();
15
+ (0, node_assert_1.strictEqual)(first_promise, second_promise);
16
+ });
17
+ });
18
+ (0, node_test_1.describe)('.resolve()', () => {
19
+ (0, node_test_1.it)('fulfills inner promise', async () => {
20
+ const promise_wrapper = new promise_wrapper_1.default();
21
+ promise_wrapper.getPromise().then((result) => {
22
+ (0, node_assert_1.strictEqual)(result, 'gandalf');
23
+ });
24
+ promise_wrapper.resolve('gandalf');
25
+ await promise_wrapper.getPromise();
26
+ });
27
+ });
28
+ (0, node_test_1.describe)('.reject()', () => {
29
+ (0, node_test_1.it)('rejects inner promise', async () => {
30
+ const promise_wrapper = new promise_wrapper_1.default();
31
+ const test_wrapper = new promise_wrapper_1.default();
32
+ promise_wrapper.getPromise().catch((error) => {
33
+ (0, node_assert_1.strictEqual)(error.message, 'some error');
34
+ test_wrapper.resolve();
35
+ });
36
+ promise_wrapper.reject(new Error('some error'));
37
+ await test_wrapper.getPromise();
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=promise-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-wrapper.js","sourceRoot":"","sources":["../../../../../test/unit/lib/promise-wrapper/promise-wrapper.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,6CAAwC;AAExC,0EAAiD;AAEjD,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,IAAA,oBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC9B,IAAA,cAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC9D,MAAM,eAAe,GAAG,IAAI,yBAAc,EAAU,CAAC;YACrD,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YACnD,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAA,yBAAW,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,oBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,IAAA,cAAE,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,eAAe,GAAG,IAAI,yBAAc,EAAU,CAAC;YAErD,eAAe,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC5C,IAAA,yBAAW,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEnC,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;QAC1B,IAAA,cAAE,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,eAAe,GAAG,IAAI,yBAAc,EAAU,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,yBAAc,EAAQ,CAAC;YAEhD,eAAe,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5C,IAAA,yBAAW,EAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACzC,YAAY,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAEhD,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
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 string_1 = require("./../../../../src/lib/string/index.js");
6
+ (0, node_test_1.describe)('createSlug()', () => {
7
+ (0, node_test_1.describe)('when given a string containing an emoji', () => {
8
+ (0, node_test_1.it)('produces the expected output', () => {
9
+ const input = '🗡️ sword of damocles';
10
+ const output = (0, string_1.createSlug)(input);
11
+ (0, node_assert_1.strictEqual)(output, 'sword-of-damocles');
12
+ });
13
+ });
14
+ });
15
+ //# sourceMappingURL=create-slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-slug.js","sourceRoot":"","sources":["../../../../../test/unit/lib/string/create-slug.ts"],"names":[],"mappings":";;AAAA,yCAAuC;AACvC,6CAAwC;AAExC,uCAAsC;AAEtC,IAAA,oBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,IAAA,oBAAQ,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACxD,IAAA,cAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAG,uBAAuB,CAAC;YACtC,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC;YAEjC,IAAA,yBAAW,EAAC,MAAM,EAAG,mBAAmB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
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 = __importDefault(require("node:assert"));
8
+ const time_1 = require("./../../../../../src/lib/time/index.js");
9
+ (0, node_test_1.describe)('sleep()', () => {
10
+ (0, node_test_1.it)('returns a promise that resolves after the specified interval', async () => {
11
+ const start = Date.now();
12
+ const duration = 50;
13
+ await (0, time_1.sleep)(duration);
14
+ const end = Date.now();
15
+ const delta = end - start;
16
+ // Give it 5ms or so of wiggle room to prevent test flakiness.
17
+ (0, node_assert_1.default)(delta >= duration - 5, 'sleep() waits the specified duration');
18
+ });
19
+ });
20
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../../../../test/unit/lib/time/utility/sleep.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuC;AACvC,8DAAiC;AAEjC,mCAA+B;AAE/B,IAAA,oBAAQ,EAAC,SAAS,EAAE,GAAG,EAAE;IACxB,IAAA,cAAE,EAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,MAAM,IAAA,YAAK,EAAC,QAAQ,CAAC,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QAE1B,8DAA8D;QAC9D,IAAA,qBAAM,EAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}