@openstax/ts-utils 1.44.1 → 1.44.3

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 (230) hide show
  1. package/dist/cjs/aws/ssmService.js +2 -2
  2. package/dist/cjs/config/awsParameterConfig.d.ts +1 -1
  3. package/dist/cjs/config/awsParameterConfig.js +7 -7
  4. package/dist/cjs/config/envConfig.d.ts +1 -1
  5. package/dist/cjs/config/envConfig.js +2 -2
  6. package/dist/cjs/config/index.d.ts +5 -5
  7. package/dist/cjs/config/index.js +5 -5
  8. package/dist/cjs/config/lambdaParameterConfig.d.ts +1 -1
  9. package/dist/cjs/config/lambdaParameterConfig.js +10 -10
  10. package/dist/cjs/config/replaceConfig.d.ts +1 -1
  11. package/dist/cjs/config/replaceConfig.js +3 -3
  12. package/dist/cjs/config/resolveConfigValue.d.ts +1 -1
  13. package/dist/cjs/errors/index.d.ts +1 -1
  14. package/dist/cjs/fetch/fetchStatusRetry.d.ts +2 -2
  15. package/dist/cjs/fetch/fetchStatusRetry.js +2 -2
  16. package/dist/cjs/fetch/index.d.ts +1 -1
  17. package/dist/cjs/index.d.ts +5 -5
  18. package/dist/cjs/index.js +5 -5
  19. package/dist/cjs/middleware/apiErrorHandler.d.ts +3 -3
  20. package/dist/cjs/middleware/apiErrorHandler.js +12 -12
  21. package/dist/cjs/middleware/apiSlowResponseMiddleware.d.ts +3 -3
  22. package/dist/cjs/middleware/apiSlowResponseMiddleware.js +9 -9
  23. package/dist/cjs/middleware/index.d.ts +1 -1
  24. package/dist/cjs/middleware/lambdaCorsResponseMiddleware.d.ts +2 -2
  25. package/dist/cjs/middleware/lambdaCorsResponseMiddleware.js +5 -5
  26. package/dist/cjs/middleware/throwNotFoundMiddleware.js +2 -2
  27. package/dist/cjs/misc/helpers.d.ts +1 -1
  28. package/dist/cjs/misc/jwks.js +3 -3
  29. package/dist/cjs/misc/merge.d.ts +1 -1
  30. package/dist/cjs/misc/merge.js +2 -2
  31. package/dist/cjs/pagination/index.d.ts +1 -1
  32. package/dist/cjs/pagination/index.js +10 -10
  33. package/dist/cjs/routing/helpers.d.ts +1 -1
  34. package/dist/cjs/routing/helpers.js +7 -7
  35. package/dist/cjs/routing/index.d.ts +2 -2
  36. package/dist/cjs/routing/index.js +6 -6
  37. package/dist/cjs/routing/lambdaBatchRequestHandler.d.ts +2 -2
  38. package/dist/cjs/routing/lambdaBatchRequestHandler.js +6 -6
  39. package/dist/cjs/routing/validators/zod.js +2 -2
  40. package/dist/cjs/services/accountsGateway/index.d.ts +5 -5
  41. package/dist/cjs/services/accountsGateway/index.js +18 -18
  42. package/dist/cjs/services/apiGateway/index.d.ts +5 -5
  43. package/dist/cjs/services/apiGateway/index.js +12 -12
  44. package/dist/cjs/services/authProvider/browser.d.ts +4 -4
  45. package/dist/cjs/services/authProvider/browser.js +14 -14
  46. package/dist/cjs/services/authProvider/decryption.d.ts +3 -3
  47. package/dist/cjs/services/authProvider/decryption.js +17 -17
  48. package/dist/cjs/services/authProvider/index.d.ts +3 -3
  49. package/dist/cjs/services/authProvider/index.js +7 -7
  50. package/dist/cjs/services/authProvider/launchToken.d.ts +4 -4
  51. package/dist/cjs/services/authProvider/launchToken.js +6 -6
  52. package/dist/cjs/services/authProvider/subrequest.d.ts +3 -3
  53. package/dist/cjs/services/authProvider/subrequest.js +12 -12
  54. package/dist/cjs/services/authProvider/utils/decryptAndVerify.d.ts +1 -1
  55. package/dist/cjs/services/authProvider/utils/decryptAndVerify.js +3 -3
  56. package/dist/cjs/services/authProvider/utils/embeddedAuthProvider.d.ts +2 -2
  57. package/dist/cjs/services/authProvider/utils/userRoleValidator.d.ts +3 -3
  58. package/dist/cjs/services/authProvider/utils/userRoleValidator.js +7 -7
  59. package/dist/cjs/services/authProvider/utils/userSubrequest.d.ts +2 -2
  60. package/dist/cjs/services/documentStore/dynamoEncoding.d.ts +1 -1
  61. package/dist/cjs/services/documentStore/dynamoEncoding.js +2 -2
  62. package/dist/cjs/services/documentStore/unversioned/dynamodb.d.ts +2 -2
  63. package/dist/cjs/services/documentStore/unversioned/dynamodb.js +30 -30
  64. package/dist/cjs/services/documentStore/unversioned/file-system.d.ts +2 -2
  65. package/dist/cjs/services/documentStore/unversioned/file-system.js +13 -13
  66. package/dist/cjs/services/documentStore/unversioned/index.d.ts +1 -1
  67. package/dist/cjs/services/documentStore/versioned/dynamodb.d.ts +3 -3
  68. package/dist/cjs/services/documentStore/versioned/dynamodb.js +17 -17
  69. package/dist/cjs/services/documentStore/versioned/file-system.d.ts +3 -3
  70. package/dist/cjs/services/documentStore/versioned/file-system.js +2 -2
  71. package/dist/cjs/services/documentStore/versioned/index.d.ts +2 -2
  72. package/dist/cjs/services/exercisesGateway/index.d.ts +2 -2
  73. package/dist/cjs/services/exercisesGateway/index.js +14 -14
  74. package/dist/cjs/services/fileServer/index.js +3 -3
  75. package/dist/cjs/services/fileServer/localFileServer.d.ts +2 -2
  76. package/dist/cjs/services/fileServer/localFileServer.js +89 -28
  77. package/dist/cjs/services/fileServer/s3FileServer.d.ts +2 -2
  78. package/dist/cjs/services/fileServer/s3FileServer.js +14 -14
  79. package/dist/cjs/services/httpMessageVerifier/index.d.ts +1 -1
  80. package/dist/cjs/services/httpMessageVerifier/index.js +20 -20
  81. package/dist/cjs/services/launchParams/index.d.ts +2 -2
  82. package/dist/cjs/services/launchParams/index.js +4 -4
  83. package/dist/cjs/services/launchParams/signer.d.ts +2 -2
  84. package/dist/cjs/services/launchParams/signer.js +9 -9
  85. package/dist/cjs/services/launchParams/verifier.d.ts +1 -1
  86. package/dist/cjs/services/launchParams/verifier.js +11 -11
  87. package/dist/cjs/services/logger/console.d.ts +1 -1
  88. package/dist/cjs/services/logger/console.js +2 -2
  89. package/dist/cjs/services/logger/index.d.ts +1 -1
  90. package/dist/cjs/services/lrsGateway/addStatementDefaultFields.d.ts +1 -1
  91. package/dist/cjs/services/lrsGateway/addStatementDefaultFields.js +2 -7
  92. package/dist/cjs/services/lrsGateway/attempt-utils.d.ts +11 -10
  93. package/dist/cjs/services/lrsGateway/attempt-utils.js +23 -8
  94. package/dist/cjs/services/lrsGateway/batching.d.ts +2 -2
  95. package/dist/cjs/services/lrsGateway/batching.js +2 -2
  96. package/dist/cjs/services/lrsGateway/file-system.d.ts +3 -3
  97. package/dist/cjs/services/lrsGateway/file-system.js +12 -17
  98. package/dist/cjs/services/lrsGateway/index.d.ts +7 -12
  99. package/dist/cjs/services/lrsGateway/index.js +26 -47
  100. package/dist/cjs/services/lrsGateway/xapiUtils.d.ts +4 -4
  101. package/dist/cjs/services/lrsGateway/xapiUtils.js +7 -7
  102. package/dist/cjs/services/postgresConnection/index.d.ts +2 -2
  103. package/dist/cjs/services/postgresConnection/index.js +14 -14
  104. package/dist/cjs/services/queueProvider/local.d.ts +2 -2
  105. package/dist/cjs/services/queueProvider/local.js +6 -7
  106. package/dist/cjs/services/queueProvider/sqs.d.ts +2 -2
  107. package/dist/cjs/services/queueProvider/sqs.js +7 -7
  108. package/dist/cjs/services/searchProvider/memorySearchTheBadWay.d.ts +1 -1
  109. package/dist/cjs/services/searchProvider/memorySearchTheBadWay.js +9 -9
  110. package/dist/cjs/services/searchProvider/openSearch.d.ts +2 -2
  111. package/dist/cjs/services/searchProvider/openSearch.js +9 -9
  112. package/dist/cjs/services/searchProvider/streamIndexer.d.ts +2 -2
  113. package/dist/cjs/services/searchProvider/streamIndexer.js +3 -3
  114. package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
  115. package/dist/esm/aws/ssmService.js +1 -1
  116. package/dist/esm/config/awsParameterConfig.d.ts +1 -1
  117. package/dist/esm/config/awsParameterConfig.js +3 -3
  118. package/dist/esm/config/envConfig.d.ts +1 -1
  119. package/dist/esm/config/envConfig.js +1 -1
  120. package/dist/esm/config/index.d.ts +5 -5
  121. package/dist/esm/config/index.js +5 -5
  122. package/dist/esm/config/lambdaParameterConfig.d.ts +1 -1
  123. package/dist/esm/config/lambdaParameterConfig.js +4 -4
  124. package/dist/esm/config/replaceConfig.d.ts +1 -1
  125. package/dist/esm/config/replaceConfig.js +1 -1
  126. package/dist/esm/config/resolveConfigValue.d.ts +1 -1
  127. package/dist/esm/errors/index.d.ts +1 -1
  128. package/dist/esm/fetch/fetchStatusRetry.d.ts +2 -2
  129. package/dist/esm/fetch/fetchStatusRetry.js +1 -1
  130. package/dist/esm/fetch/index.d.ts +1 -1
  131. package/dist/esm/index.d.ts +5 -5
  132. package/dist/esm/index.js +5 -5
  133. package/dist/esm/middleware/apiErrorHandler.d.ts +3 -3
  134. package/dist/esm/middleware/apiErrorHandler.js +3 -3
  135. package/dist/esm/middleware/apiSlowResponseMiddleware.d.ts +3 -3
  136. package/dist/esm/middleware/apiSlowResponseMiddleware.js +4 -4
  137. package/dist/esm/middleware/index.d.ts +1 -1
  138. package/dist/esm/middleware/lambdaCorsResponseMiddleware.d.ts +2 -2
  139. package/dist/esm/middleware/lambdaCorsResponseMiddleware.js +3 -3
  140. package/dist/esm/middleware/throwNotFoundMiddleware.js +1 -1
  141. package/dist/esm/misc/helpers.d.ts +1 -1
  142. package/dist/esm/misc/jwks.js +1 -1
  143. package/dist/esm/misc/merge.d.ts +1 -1
  144. package/dist/esm/misc/merge.js +1 -1
  145. package/dist/esm/pagination/index.d.ts +1 -1
  146. package/dist/esm/pagination/index.js +3 -3
  147. package/dist/esm/routing/helpers.d.ts +1 -1
  148. package/dist/esm/routing/helpers.js +3 -3
  149. package/dist/esm/routing/index.d.ts +2 -2
  150. package/dist/esm/routing/index.js +3 -3
  151. package/dist/esm/routing/lambdaBatchRequestHandler.d.ts +2 -2
  152. package/dist/esm/routing/lambdaBatchRequestHandler.js +3 -3
  153. package/dist/esm/routing/validators/zod.js +1 -1
  154. package/dist/esm/services/accountsGateway/index.d.ts +5 -5
  155. package/dist/esm/services/accountsGateway/index.js +5 -5
  156. package/dist/esm/services/apiGateway/index.d.ts +5 -5
  157. package/dist/esm/services/apiGateway/index.js +5 -5
  158. package/dist/esm/services/authProvider/browser.d.ts +4 -4
  159. package/dist/esm/services/authProvider/browser.js +6 -6
  160. package/dist/esm/services/authProvider/decryption.d.ts +3 -3
  161. package/dist/esm/services/authProvider/decryption.js +7 -7
  162. package/dist/esm/services/authProvider/index.d.ts +3 -3
  163. package/dist/esm/services/authProvider/index.js +2 -2
  164. package/dist/esm/services/authProvider/launchToken.d.ts +4 -4
  165. package/dist/esm/services/authProvider/launchToken.js +2 -2
  166. package/dist/esm/services/authProvider/subrequest.d.ts +3 -3
  167. package/dist/esm/services/authProvider/subrequest.js +5 -5
  168. package/dist/esm/services/authProvider/utils/decryptAndVerify.d.ts +1 -1
  169. package/dist/esm/services/authProvider/utils/decryptAndVerify.js +1 -1
  170. package/dist/esm/services/authProvider/utils/embeddedAuthProvider.d.ts +2 -2
  171. package/dist/esm/services/authProvider/utils/userRoleValidator.d.ts +3 -3
  172. package/dist/esm/services/authProvider/utils/userRoleValidator.js +4 -4
  173. package/dist/esm/services/authProvider/utils/userSubrequest.d.ts +2 -2
  174. package/dist/esm/services/documentStore/dynamoEncoding.d.ts +1 -1
  175. package/dist/esm/services/documentStore/dynamoEncoding.js +1 -1
  176. package/dist/esm/services/documentStore/unversioned/dynamodb.d.ts +2 -2
  177. package/dist/esm/services/documentStore/unversioned/dynamodb.js +5 -5
  178. package/dist/esm/services/documentStore/unversioned/file-system.d.ts +2 -2
  179. package/dist/esm/services/documentStore/unversioned/file-system.js +4 -4
  180. package/dist/esm/services/documentStore/unversioned/index.d.ts +1 -1
  181. package/dist/esm/services/documentStore/versioned/dynamodb.d.ts +3 -3
  182. package/dist/esm/services/documentStore/versioned/dynamodb.js +4 -4
  183. package/dist/esm/services/documentStore/versioned/file-system.d.ts +3 -3
  184. package/dist/esm/services/documentStore/versioned/file-system.js +1 -1
  185. package/dist/esm/services/documentStore/versioned/index.d.ts +2 -2
  186. package/dist/esm/services/exercisesGateway/index.d.ts +2 -2
  187. package/dist/esm/services/exercisesGateway/index.js +5 -5
  188. package/dist/esm/services/fileServer/index.js +1 -1
  189. package/dist/esm/services/fileServer/localFileServer.d.ts +2 -2
  190. package/dist/esm/services/fileServer/localFileServer.js +83 -22
  191. package/dist/esm/services/fileServer/s3FileServer.d.ts +2 -2
  192. package/dist/esm/services/fileServer/s3FileServer.js +5 -5
  193. package/dist/esm/services/httpMessageVerifier/index.d.ts +1 -1
  194. package/dist/esm/services/httpMessageVerifier/index.js +6 -6
  195. package/dist/esm/services/launchParams/index.d.ts +2 -2
  196. package/dist/esm/services/launchParams/index.js +2 -2
  197. package/dist/esm/services/launchParams/signer.d.ts +2 -2
  198. package/dist/esm/services/launchParams/signer.js +3 -3
  199. package/dist/esm/services/launchParams/verifier.d.ts +1 -1
  200. package/dist/esm/services/launchParams/verifier.js +5 -5
  201. package/dist/esm/services/logger/console.d.ts +1 -1
  202. package/dist/esm/services/logger/console.js +1 -1
  203. package/dist/esm/services/logger/index.d.ts +1 -1
  204. package/dist/esm/services/lrsGateway/addStatementDefaultFields.d.ts +1 -1
  205. package/dist/esm/services/lrsGateway/addStatementDefaultFields.js +2 -7
  206. package/dist/esm/services/lrsGateway/attempt-utils.d.ts +11 -10
  207. package/dist/esm/services/lrsGateway/attempt-utils.js +21 -7
  208. package/dist/esm/services/lrsGateway/batching.d.ts +2 -2
  209. package/dist/esm/services/lrsGateway/batching.js +1 -1
  210. package/dist/esm/services/lrsGateway/file-system.d.ts +3 -3
  211. package/dist/esm/services/lrsGateway/file-system.js +7 -12
  212. package/dist/esm/services/lrsGateway/index.d.ts +7 -12
  213. package/dist/esm/services/lrsGateway/index.js +12 -33
  214. package/dist/esm/services/lrsGateway/xapiUtils.d.ts +4 -4
  215. package/dist/esm/services/lrsGateway/xapiUtils.js +2 -2
  216. package/dist/esm/services/postgresConnection/index.d.ts +2 -2
  217. package/dist/esm/services/postgresConnection/index.js +4 -4
  218. package/dist/esm/services/queueProvider/local.d.ts +2 -2
  219. package/dist/esm/services/queueProvider/local.js +3 -4
  220. package/dist/esm/services/queueProvider/sqs.d.ts +2 -2
  221. package/dist/esm/services/queueProvider/sqs.js +3 -3
  222. package/dist/esm/services/searchProvider/memorySearchTheBadWay.d.ts +1 -1
  223. package/dist/esm/services/searchProvider/memorySearchTheBadWay.js +3 -3
  224. package/dist/esm/services/searchProvider/openSearch.d.ts +2 -2
  225. package/dist/esm/services/searchProvider/openSearch.js +4 -4
  226. package/dist/esm/services/searchProvider/streamIndexer.d.ts +2 -2
  227. package/dist/esm/services/searchProvider/streamIndexer.js +1 -1
  228. package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
  229. package/package.json +39 -44
  230. package/script/build.bash +1 -1
@@ -35,16 +35,16 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.exercisesGateway = void 0;
37
37
  const queryString = __importStar(require("query-string"));
38
- const __1 = require("../..");
39
- const assertions_1 = require("../../assertions");
40
- const config_1 = require("../../config");
41
- const guards_1 = require("../../guards");
42
- const routing_1 = require("../../routing");
38
+ const index_js_1 = require("../../assertions/index.js");
39
+ const index_js_2 = require("../../config/index.js");
40
+ const index_js_3 = require("../../guards/index.js");
41
+ const index_js_4 = require("../../index.js");
42
+ const index_js_5 = require("../../routing/index.js");
43
43
  const exercisesGateway = (initializer) => (configProvider) => {
44
- const config = configProvider[(0, guards_1.ifDefined)(initializer.configSpace, 'exercises')];
45
- const exercisesHost = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.exercisesHost));
46
- const exercisesAuthToken = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.exercisesAuthToken));
47
- const defaultCorrectness = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.defaultCorrectness || ''));
44
+ const config = configProvider[(0, index_js_3.ifDefined)(initializer.configSpace, 'exercises')];
45
+ const exercisesHost = (0, index_js_4.once)(() => (0, index_js_2.resolveConfigValue)(config.exercisesHost));
46
+ const exercisesAuthToken = (0, index_js_4.once)(() => (0, index_js_2.resolveConfigValue)(config.exercisesAuthToken));
47
+ const defaultCorrectness = (0, index_js_4.once)(() => (0, index_js_2.resolveConfigValue)(config.defaultCorrectness || ''));
48
48
  const doDefaultCorrectness = async (exercise) => {
49
49
  if (await defaultCorrectness() !== 'true') {
50
50
  return exercise;
@@ -82,17 +82,17 @@ const exercisesGateway = (initializer) => (configProvider) => {
82
82
  });
83
83
  };
84
84
  const searchDigest = async (query, page = 1, per_page = 100) => {
85
- const response = await request(routing_1.METHOD.HEAD, 'exercises', { query, page, per_page });
86
- return (0, assertions_1.assertString)(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint HEAD did not return an X-Digest header');
85
+ const response = await request(index_js_5.METHOD.HEAD, 'exercises', { query, page, per_page });
86
+ return (0, index_js_1.assertString)(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint HEAD did not return an X-Digest header');
87
87
  };
88
88
  const search = async (query, page = 1, per_page = 100) => {
89
- const response = await request(routing_1.METHOD.GET, 'exercises', { query, page, per_page });
90
- const digest = (0, assertions_1.assertString)(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint GET did not return an X-Digest header');
89
+ const response = await request(index_js_5.METHOD.GET, 'exercises', { query, page, per_page });
90
+ const digest = (0, index_js_1.assertString)(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint GET did not return an X-Digest header');
91
91
  const { items, total_count } = await response.json();
92
92
  return { digest, items: await Promise.all(items.map(doDefaultCorrectness)), total_count };
93
93
  };
94
94
  const get = async (uuid) => {
95
- const response = await request(routing_1.METHOD.GET, `exercises/${uuid}`);
95
+ const response = await request(index_js_5.METHOD.GET, `exercises/${uuid}`);
96
96
  return response.status === 404
97
97
  ? undefined
98
98
  : response.json().then(doDefaultCorrectness);
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isFileOrFolder = exports.isFolderValue = exports.isFileValue = void 0;
4
- const guards_1 = require("../../guards");
5
- const isFileValue = (thing) => (0, guards_1.isPlainObject)(thing)
4
+ const index_js_1 = require("../../guards/index.js");
5
+ const isFileValue = (thing) => (0, index_js_1.isPlainObject)(thing)
6
6
  && Object.keys(thing).every(key => ['dataType', 'path', 'label', 'mimeType'].includes(key))
7
7
  && thing.dataType === 'file'
8
8
  && typeof thing.mimeType === 'string'
9
9
  && typeof thing.path === 'string'
10
10
  && typeof thing.label === 'string';
11
11
  exports.isFileValue = isFileValue;
12
- const isFolderValue = (thing) => (0, guards_1.isPlainObject)(thing)
12
+ const isFolderValue = (thing) => (0, index_js_1.isPlainObject)(thing)
13
13
  && Object.keys(thing).every(key => ['dataType', 'files'].includes(key))
14
14
  && thing.dataType === 'folder'
15
15
  && thing.files instanceof Array
@@ -1,5 +1,5 @@
1
- import { ConfigProviderForConfig } from '../../config';
2
- import { FileServerAdapter } from '.';
1
+ import { ConfigProviderForConfig } from '../../config/index.js';
2
+ import { FileServerAdapter } from './index.js';
3
3
  export type Config = {
4
4
  port?: string;
5
5
  host?: string;
@@ -4,42 +4,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.localFileServer = void 0;
7
- /* cspell:ignore originalname */
7
+ /* spell-checker: ignore originalname busboy */
8
8
  const crypto_1 = __importDefault(require("crypto"));
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const https_1 = __importDefault(require("https"));
11
11
  const path_1 = __importDefault(require("path"));
12
- const cors_1 = __importDefault(require("cors"));
13
- const express_1 = __importDefault(require("express"));
14
- const multer_1 = __importDefault(require("multer"));
12
+ const promises_1 = require("stream/promises");
13
+ const busboy_1 = __importDefault(require("busboy"));
15
14
  const uuid_1 = require("uuid");
16
- const assertions_1 = require("../../assertions");
17
- const config_1 = require("../../config");
18
- const guards_1 = require("../../guards");
19
- const helpers_1 = require("../../misc/helpers");
15
+ const index_js_1 = require("../../assertions/index.js");
16
+ const index_js_2 = require("../../config/index.js");
17
+ const index_js_3 = require("../../guards/index.js");
18
+ const helpers_js_1 = require("../../misc/helpers.js");
20
19
  /* istanbul ignore next */
21
- const startServer = (0, helpers_1.memoize)((port, uploadDir) => {
22
- // TODO - re-evaluate the `preservePath` behavior to match whatever s3 does
23
- const upload = (0, multer_1.default)({ dest: uploadDir, preservePath: true });
24
- const fileServerApp = (0, express_1.default)();
25
- fileServerApp.use((0, cors_1.default)());
26
- fileServerApp.use(express_1.default.static(uploadDir));
27
- fileServerApp.post('/', upload.single('file'), async (req, res) => {
28
- const file = req.file;
29
- if (!file) {
30
- return res.status(400).send({ message: 'file is required' });
20
+ const serveStaticFile = async (filePath, res) => {
21
+ try {
22
+ const stat = await fs_1.default.promises.stat(filePath);
23
+ if (!stat.isFile()) {
24
+ res.writeHead(404);
25
+ res.end();
26
+ return;
27
+ }
28
+ res.writeHead(200, { 'Content-Length': stat.size });
29
+ await (0, promises_1.pipeline)(fs_1.default.createReadStream(filePath), res);
30
+ }
31
+ catch {
32
+ res.writeHead(404);
33
+ res.end();
34
+ }
35
+ };
36
+ /* istanbul ignore next */
37
+ const handleUpload = (req, res, uploadDir) => {
38
+ const busboy = (0, busboy_1.default)({ headers: req.headers });
39
+ let key = '';
40
+ let originalName = '';
41
+ let tempPath = '';
42
+ busboy.on('field', (name, value) => {
43
+ if (name === 'key')
44
+ key = value;
45
+ });
46
+ busboy.on('file', (_name, file, info) => {
47
+ originalName = info.filename;
48
+ tempPath = path_1.default.join(uploadDir, (0, uuid_1.v4)());
49
+ file.pipe(fs_1.default.createWriteStream(tempPath));
50
+ });
51
+ busboy.on('finish', async () => {
52
+ if (!tempPath) {
53
+ res.writeHead(400, { 'Content-Type': 'application/json' });
54
+ res.end(JSON.stringify({ message: 'file is required' }));
55
+ return;
31
56
  }
32
- const destinationName = req.body.key.replace('${filename}', file.originalname);
57
+ const destinationName = key.replace('${filename}', originalName);
33
58
  const destinationPath = path_1.default.join(uploadDir, destinationName);
34
59
  const destinationDirectory = path_1.default.dirname(destinationPath);
35
60
  await fs_1.default.promises.mkdir(destinationDirectory, { recursive: true });
36
- await fs_1.default.promises.rename(file.path, destinationPath);
37
- res.status(201).send();
61
+ await fs_1.default.promises.rename(tempPath, destinationPath);
62
+ res.writeHead(201);
63
+ res.end();
38
64
  });
65
+ req.pipe(busboy);
66
+ };
67
+ /* istanbul ignore next */
68
+ const setCorsHeaders = (res) => {
69
+ res.setHeader('Access-Control-Allow-Origin', '*');
70
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
71
+ res.setHeader('Access-Control-Allow-Headers', '*');
72
+ };
73
+ /* istanbul ignore next */
74
+ const startServer = (0, helpers_js_1.memoize)((port, uploadDir) => {
39
75
  const server = https_1.default.createServer({
40
- key: fs_1.default.readFileSync((0, assertions_1.assertString)(process.env.SSL_KEY_FILE, new Error('ssl key is required for localFileServer')), 'utf8'),
41
- cert: fs_1.default.readFileSync((0, assertions_1.assertString)(process.env.SSL_CRT_FILE, new Error('ssl key is required for localFileServer')), 'utf8'),
42
- }, fileServerApp);
76
+ key: fs_1.default.readFileSync((0, index_js_1.assertString)(process.env.SSL_KEY_FILE, new Error('ssl key is required for localFileServer')), 'utf8'),
77
+ cert: fs_1.default.readFileSync((0, index_js_1.assertString)(process.env.SSL_CRT_FILE, new Error('ssl key is required for localFileServer')), 'utf8'),
78
+ }, (req, res) => {
79
+ setCorsHeaders(res);
80
+ if (req.method === 'OPTIONS') {
81
+ res.writeHead(204);
82
+ res.end();
83
+ return;
84
+ }
85
+ if (req.method === 'POST' && req.url === '/') {
86
+ handleUpload(req, res, uploadDir);
87
+ return;
88
+ }
89
+ if (req.method === 'GET') {
90
+ const urlPath = decodeURIComponent(new URL(req.url || '/', 'https://localhost').pathname);
91
+ const filePath = path_1.default.join(uploadDir, urlPath);
92
+ // prevent directory traversal
93
+ if (!filePath.startsWith(uploadDir)) {
94
+ res.writeHead(403);
95
+ res.end();
96
+ return;
97
+ }
98
+ serveStaticFile(filePath, res);
99
+ return;
100
+ }
101
+ res.writeHead(405);
102
+ res.end();
103
+ });
43
104
  server.once('error', function (err) {
44
105
  if (err.code === 'EADDRINUSE') {
45
106
  // when the local dev server reloads files on every request it doesn't
@@ -53,10 +114,10 @@ const startServer = (0, helpers_1.memoize)((port, uploadDir) => {
53
114
  return true;
54
115
  });
55
116
  const localFileServer = (initializer) => (configProvider) => {
56
- const config = configProvider[(0, guards_1.ifDefined)(initializer.configSpace, 'local')];
57
- const port = (0, config_1.resolveConfigValue)(config.port || '');
58
- const host = (0, config_1.resolveConfigValue)(config.host || '');
59
- const storagePrefix = (0, config_1.resolveConfigValue)(config.storagePrefix);
117
+ const config = configProvider[(0, index_js_3.ifDefined)(initializer.configSpace, 'local')];
118
+ const port = (0, index_js_2.resolveConfigValue)(config.port || '');
119
+ const host = (0, index_js_2.resolveConfigValue)(config.host || '');
120
+ const storagePrefix = (0, index_js_2.resolveConfigValue)(config.storagePrefix);
60
121
  const fileDir = storagePrefix.then((prefix) => path_1.default.join(initializer.dataDir, prefix));
61
122
  Promise.all([port, fileDir])
62
123
  .then(([port, fileDir]) => port && startServer(port, fileDir));
@@ -1,6 +1,6 @@
1
1
  import { S3Client } from '@aws-sdk/client-s3';
2
- import { ConfigProviderForConfig } from '../../config';
3
- import { FileServerAdapter } from '.';
2
+ import { ConfigProviderForConfig } from '../../config/index.js';
3
+ import { FileServerAdapter } from './index.js';
4
4
  export type Config = {
5
5
  bucketName: string;
6
6
  bucketRegion: string;
@@ -4,24 +4,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.s3FileServer = void 0;
7
- /* cspell:ignore presigner */
7
+ /* spell-checker: ignore presigner */
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const client_s3_1 = require("@aws-sdk/client-s3");
10
10
  const s3_presigned_post_1 = require("@aws-sdk/s3-presigned-post");
11
11
  const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
12
12
  const uuid_1 = require("uuid");
13
- const __1 = require("../..");
14
- const assertions_1 = require("../../assertions");
15
- const config_1 = require("../../config");
16
- const guards_1 = require("../../guards");
13
+ const index_js_1 = require("../../assertions/index.js");
14
+ const index_js_2 = require("../../config/index.js");
15
+ const index_js_3 = require("../../guards/index.js");
16
+ const index_js_4 = require("../../index.js");
17
17
  const s3FileServer = (initializer) => (configProvider) => {
18
- const config = configProvider[(0, guards_1.ifDefined)(initializer.configSpace, 'deployed')];
19
- const bucketName = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.bucketName));
20
- const bucketRegion = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.bucketRegion));
21
- const publicViewerDomain = (0, __1.once)(() => 'publicViewerDomain' in config && config.publicViewerDomain
22
- ? (0, config_1.resolveConfigValue)(config.publicViewerDomain)
18
+ const config = configProvider[(0, index_js_3.ifDefined)(initializer.configSpace, 'deployed')];
19
+ const bucketName = (0, index_js_4.once)(() => (0, index_js_2.resolveConfigValue)(config.bucketName));
20
+ const bucketRegion = (0, index_js_4.once)(() => (0, index_js_2.resolveConfigValue)(config.bucketRegion));
21
+ const publicViewerDomain = (0, index_js_4.once)(() => 'publicViewerDomain' in config && config.publicViewerDomain
22
+ ? (0, index_js_2.resolveConfigValue)(config.publicViewerDomain)
23
23
  : undefined);
24
- const s3Service = (0, __1.once)(async () => {
24
+ const s3Service = (0, index_js_4.once)(async () => {
25
25
  var _a, _b;
26
26
  const args = { apiVersion: '2012-08-10', region: await bucketRegion() };
27
27
  return (_b = (_a = initializer.getS3Client) === null || _a === void 0 ? void 0 : _a.call(initializer, args)) !== null && _b !== void 0 ? _b : new client_s3_1.S3Client(args);
@@ -37,14 +37,14 @@ const s3FileServer = (initializer) => (configProvider) => {
37
37
  });
38
38
  };
39
39
  const getPublicViewerUrl = async (source) => {
40
- const host = (0, assertions_1.assertDefined)(await publicViewerDomain(), new Error(`Tried to get public viewer URL for ${source.path} but no publicViewerDomain configured`));
40
+ const host = (0, index_js_1.assertDefined)(await publicViewerDomain(), new Error(`Tried to get public viewer URL for ${source.path} but no publicViewerDomain configured`));
41
41
  return `https://${host}/${source.path}`;
42
42
  };
43
43
  const getFileContent = async (source) => {
44
44
  const bucket = await bucketName();
45
45
  const command = new client_s3_1.GetObjectCommand({ Bucket: bucket, Key: source.path });
46
46
  const response = await (await s3Service()).send(command);
47
- return Buffer.from(await (0, assertions_1.assertDefined)(response.Body, new Error('Invalid Response from s3')).transformToByteArray());
47
+ return Buffer.from(await (0, index_js_1.assertDefined)(response.Body, new Error('Invalid Response from s3')).transformToByteArray());
48
48
  };
49
49
  const putFileContent = async (source, content) => {
50
50
  const bucket = await bucketName();
@@ -110,7 +110,7 @@ const s3FileServer = (initializer) => (configProvider) => {
110
110
  const bucket = (await bucketName());
111
111
  const command = new client_s3_1.HeadObjectCommand({ Bucket: bucket, Key: source.path });
112
112
  const response = await (await s3Service()).send(command);
113
- return (0, assertions_1.assertDefined)(response.ETag);
113
+ return (0, index_js_1.assertDefined)(response.ETag);
114
114
  };
115
115
  const filesEqual = async (sourceA, sourceB) => {
116
116
  const [aSum, bSum] = await Promise.all([getFileChecksum(sourceA), getFileChecksum(sourceB)]);
@@ -1,7 +1,7 @@
1
1
  import { APIGatewayProxyEventV2 } from 'aws-lambda';
2
2
  import { VerifyConfig } from 'http-message-signatures';
3
3
  import { JWK } from 'node-jose';
4
- import { ConfigProviderForConfig } from '../../config';
4
+ import { ConfigProviderForConfig } from '../../config/index.js';
5
5
  type Config = {
6
6
  apiHost: string;
7
7
  bypassSignatureVerification: string;
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createHttpMessageVerifier = void 0;
4
- // cspell:ignore algs, httpbis, keyid
4
+ /* spell-checker: ignore algs httpbis keyid */
5
5
  const crypto_1 = require("crypto");
6
6
  const http_message_signatures_1 = require("http-message-signatures");
7
7
  const jwks_rsa_1 = require("jwks-rsa");
8
8
  const structured_headers_1 = require("structured-headers");
9
- const assertions_1 = require("../../assertions");
10
- const config_1 = require("../../config");
11
- const errors_1 = require("../../errors");
12
- const helpers_1 = require("../../misc/helpers");
13
- const jwks_1 = require("../../misc/jwks");
9
+ const index_js_1 = require("../../assertions/index.js");
10
+ const index_js_2 = require("../../config/index.js");
11
+ const index_js_3 = require("../../errors/index.js");
12
+ const helpers_js_1 = require("../../misc/helpers.js");
13
+ const jwks_js_1 = require("../../misc/jwks.js");
14
14
  const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider) => {
15
15
  const config = configProvider[configSpace !== null && configSpace !== void 0 ? configSpace : 'verifier'];
16
- const getApiHost = (0, helpers_1.once)(async () => await (0, config_1.resolveConfigValue)(config.apiHost));
17
- const getBypassSignatureVerification = (0, helpers_1.once)(async () => (await (0, config_1.resolveConfigValue)(config.bypassSignatureVerification)) === 'true');
16
+ const getApiHost = (0, helpers_js_1.once)(async () => await (0, index_js_2.resolveConfigValue)(config.apiHost));
17
+ const getBypassSignatureVerification = (0, helpers_js_1.once)(async () => (await (0, index_js_2.resolveConfigValue)(config.bypassSignatureVerification)) === 'true');
18
18
  return ({ request }) => ({
19
19
  verify: async ({ configOverride, signatureAgentVerifier }) => {
20
20
  var _a;
@@ -46,16 +46,16 @@ const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider)
46
46
  if (bareItem instanceof structured_headers_1.Token) {
47
47
  return bareItem.toString();
48
48
  }
49
- return (0, assertions_1.assertString)(bareItem, new errors_1.InvalidRequestError('Signature-Agent values must be strings or tokens'));
49
+ return (0, index_js_1.assertString)(bareItem, new index_js_3.InvalidRequestError('Signature-Agent values must be strings or tokens'));
50
50
  }))];
51
51
  if (signatureAgents.length === 0) {
52
- throw new errors_1.InvalidRequestError('Signature-Agent header is required');
52
+ throw new index_js_3.InvalidRequestError('Signature-Agent header is required');
53
53
  }
54
54
  const keys = (await Promise.all(signatureAgents.map(async (signatureAgent) => {
55
55
  if (!await signatureAgentVerifier(signatureAgent)) {
56
- throw new errors_1.InvalidRequestError('Signature-Agent verification failed');
56
+ throw new index_js_3.InvalidRequestError('Signature-Agent verification failed');
57
57
  }
58
- return (0, jwks_1.getJwksClient)(signatureAgent, fetcher).getSigningKeys();
58
+ return (0, jwks_js_1.getJwksClient)(signatureAgent, fetcher).getSigningKeys();
59
59
  }))).flat();
60
60
  const { body, requestContext } = request;
61
61
  const verificationRequest = {
@@ -79,7 +79,7 @@ const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider)
79
79
  throw new jwks_rsa_1.SigningKeyNotFoundError(`Unable to find a signing key that matches "${keyid}"`);
80
80
  const alg = (_a = parameters.alg) !== null && _a !== void 0 ? _a : key.alg;
81
81
  if (!alg) {
82
- throw new errors_1.InvalidRequestError('Signature algorithm must be specified either as a signature param or in the JWKS key');
82
+ throw new index_js_3.InvalidRequestError('Signature algorithm must be specified either as a signature param or in the JWKS key');
83
83
  }
84
84
  return {
85
85
  id: key.kid,
@@ -91,7 +91,7 @@ const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider)
91
91
  tolerance: 300,
92
92
  ...configOverride,
93
93
  }, verificationRequest))
94
- throw new errors_1.InvalidRequestError('Signature verification failed');
94
+ throw new index_js_3.InvalidRequestError('Signature verification failed');
95
95
  // For example, if a GET request uses configOverride to make content-digest not required
96
96
  if (!headers['content-digest'])
97
97
  return true;
@@ -100,10 +100,10 @@ const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider)
100
100
  contentDigest = (0, structured_headers_1.parseDictionary)(headers['content-digest']);
101
101
  }
102
102
  catch {
103
- throw new errors_1.InvalidRequestError('Unsupported Content-Digest header format');
103
+ throw new index_js_3.InvalidRequestError('Unsupported Content-Digest header format');
104
104
  }
105
105
  if (contentDigest.size === 0) {
106
- throw new errors_1.InvalidRequestError('Content-Digest header is required');
106
+ throw new index_js_3.InvalidRequestError('Content-Digest header is required');
107
107
  }
108
108
  // Map Content-Digest algorithm names to Node's crypto algorithm names
109
109
  const algorithmMap = {
@@ -115,16 +115,16 @@ const createHttpMessageVerifier = ({ configSpace, fetcher }) => (configProvider)
115
115
  // Convert ByteSequence to string, or assert it's already a string
116
116
  const hashValue = bareItem instanceof structured_headers_1.ByteSequence
117
117
  ? bareItem.toBase64()
118
- : (0, assertions_1.assertString)(bareItem, new errors_1.InvalidRequestError('Content-Digest values must be strings'));
118
+ : (0, index_js_1.assertString)(bareItem, new index_js_3.InvalidRequestError('Content-Digest values must be strings'));
119
119
  const cryptoAlgorithm = algorithmMap[algorithm];
120
120
  if (!cryptoAlgorithm) {
121
- throw new errors_1.InvalidRequestError(`Unsupported Content-Digest algorithm: ${algorithm}`);
121
+ throw new index_js_3.InvalidRequestError(`Unsupported Content-Digest algorithm: ${algorithm}`);
122
122
  }
123
123
  // Calculate the hash
124
- const calculatedHash = (0, crypto_1.createHash)(cryptoAlgorithm).update((0, assertions_1.assertString)(body, new errors_1.InvalidRequestError('Request body is required when Content-Digest is present'))).digest('base64');
124
+ const calculatedHash = (0, crypto_1.createHash)(cryptoAlgorithm).update((0, index_js_1.assertString)(body, new index_js_3.InvalidRequestError('Request body is required when Content-Digest is present'))).digest('base64');
125
125
  // Compare with the provided hash
126
126
  if (calculatedHash !== hashValue) {
127
- throw new errors_1.InvalidRequestError(`Calculated Content-Digest value did not match header for algorithm ${algorithm}`);
127
+ throw new index_js_3.InvalidRequestError(`Calculated Content-Digest value did not match header for algorithm ${algorithm}`);
128
128
  }
129
129
  }
130
130
  return true;
@@ -1,2 +1,2 @@
1
- export { createLaunchSigner } from './signer';
2
- export { createLaunchVerifier } from './verifier';
1
+ export { createLaunchSigner } from './signer.js';
2
+ export { createLaunchVerifier } from './verifier.js';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLaunchVerifier = exports.createLaunchSigner = void 0;
4
- var signer_1 = require("./signer");
5
- Object.defineProperty(exports, "createLaunchSigner", { enumerable: true, get: function () { return signer_1.createLaunchSigner; } });
6
- var verifier_1 = require("./verifier");
7
- Object.defineProperty(exports, "createLaunchVerifier", { enumerable: true, get: function () { return verifier_1.createLaunchVerifier; } });
4
+ var signer_js_1 = require("./signer.js");
5
+ Object.defineProperty(exports, "createLaunchSigner", { enumerable: true, get: function () { return signer_js_1.createLaunchSigner; } });
6
+ var verifier_js_1 = require("./verifier.js");
7
+ Object.defineProperty(exports, "createLaunchVerifier", { enumerable: true, get: function () { return verifier_js_1.createLaunchVerifier; } });
@@ -1,6 +1,6 @@
1
1
  import { JWK } from 'node-jose';
2
- import { ConfigProviderForConfig } from '../../config';
3
- import type { JsonCompatibleStruct } from '../../routing';
2
+ import { ConfigProviderForConfig } from '../../config/index.js';
3
+ import type { JsonCompatibleStruct } from '../../routing/index.js';
4
4
  type Config = {
5
5
  alg: string;
6
6
  expiresIn: string;
@@ -7,9 +7,9 @@ exports.createLaunchSigner = void 0;
7
7
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
8
  const ms_1 = __importDefault(require("ms"));
9
9
  const node_jose_1 = require("node-jose");
10
- const __1 = require("../..");
11
- const config_1 = require("../../config");
12
- const guards_1 = require("../../guards");
10
+ const index_js_1 = require("../../config/index.js");
11
+ const index_js_2 = require("../../guards/index.js");
12
+ const index_js_3 = require("../../index.js");
13
13
  const SUPPORTED_ALGORITHMS = [
14
14
  'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'PS256', 'PS384', 'PS512'
15
15
  ];
@@ -23,12 +23,12 @@ const assertAlg = (alg) => {
23
23
  * Creates a class that can sign launch params
24
24
  */
25
25
  const createLaunchSigner = ({ configSpace }) => (configProvider) => {
26
- const config = configProvider[(0, guards_1.ifDefined)(configSpace, 'launch')];
27
- const getAlg = (0, __1.once)(async () => assertAlg(await (0, config_1.resolveConfigValue)(config.alg)));
28
- const getExpiresIn = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.expiresIn));
29
- const getIss = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.iss));
30
- const getPrivateKey = (0, __1.once)(() => (0, config_1.resolveConfigValue)(config.privateKey));
31
- const getKeyStore = (0, __1.once)(async () => {
26
+ const config = configProvider[(0, index_js_2.ifDefined)(configSpace, 'launch')];
27
+ const getAlg = (0, index_js_3.once)(async () => assertAlg(await (0, index_js_1.resolveConfigValue)(config.alg)));
28
+ const getExpiresIn = (0, index_js_3.once)(() => (0, index_js_1.resolveConfigValue)(config.expiresIn));
29
+ const getIss = (0, index_js_3.once)(() => (0, index_js_1.resolveConfigValue)(config.iss));
30
+ const getPrivateKey = (0, index_js_3.once)(() => (0, index_js_1.resolveConfigValue)(config.privateKey));
31
+ const getKeyStore = (0, index_js_3.once)(async () => {
32
32
  const keystore = node_jose_1.JWK.createKeyStore();
33
33
  await keystore.add(await getPrivateKey(), 'pem');
34
34
  return keystore;
@@ -1,6 +1,6 @@
1
1
  import jwt from 'jsonwebtoken';
2
2
  import type { JWK } from 'node-jose';
3
- import { ConfigProviderForConfig } from '../../config';
3
+ import { ConfigProviderForConfig } from '../../config/index.js';
4
4
  type Config = {
5
5
  trustedDomain: string;
6
6
  bypassSignatureVerification: string;
@@ -35,18 +35,18 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.createLaunchVerifier = void 0;
37
37
  const jsonwebtoken_1 = __importStar(require("jsonwebtoken"));
38
- const config_1 = require("../../config");
39
- const errors_1 = require("../../errors");
40
- const guards_1 = require("../../guards");
41
- const helpers_1 = require("../../misc/helpers");
42
- const jwks_1 = require("../../misc/jwks");
38
+ const index_js_1 = require("../../config/index.js");
39
+ const index_js_2 = require("../../errors/index.js");
40
+ const index_js_3 = require("../../guards/index.js");
41
+ const helpers_js_1 = require("../../misc/helpers.js");
42
+ const jwks_js_1 = require("../../misc/jwks.js");
43
43
  /**
44
44
  * Creates a class that can verify launch params
45
45
  */
46
46
  const createLaunchVerifier = ({ configSpace, fetcher }) => (configProvider) => {
47
- const config = configProvider[(0, guards_1.ifDefined)(configSpace, 'launch')];
48
- const getTrustedDomain = (0, helpers_1.once)(() => (0, config_1.resolveConfigValue)(config.trustedDomain));
49
- const getBypassSignatureVerification = (0, helpers_1.once)(async () => (await (0, config_1.resolveConfigValue)(config.bypassSignatureVerification)) === 'true');
47
+ const config = configProvider[(0, index_js_3.ifDefined)(configSpace, 'launch')];
48
+ const getTrustedDomain = (0, helpers_js_1.once)(() => (0, index_js_1.resolveConfigValue)(config.trustedDomain));
49
+ const getBypassSignatureVerification = (0, helpers_js_1.once)(async () => (await (0, index_js_1.resolveConfigValue)(config.bypassSignatureVerification)) === 'true');
50
50
  const getKey = async (header, callback) => {
51
51
  // The JWT spec allows iss in the header as a copy of the iss claim, but we require it
52
52
  const { iss, kid } = header;
@@ -59,7 +59,7 @@ const createLaunchVerifier = ({ configSpace, fetcher }) => (configProvider) => {
59
59
  if (domain !== trustedDomain && !domain.endsWith(`.${trustedDomain}`)) {
60
60
  return callback(new Error(`Untrusted JWKS domain: "${domain}"`));
61
61
  }
62
- const key = await (0, jwks_1.getJwksKey)(iss, kid, fetcher);
62
+ const key = await (0, jwks_js_1.getJwksKey)(iss, kid, fetcher);
63
63
  callback(null, key.getPublicKey());
64
64
  }
65
65
  catch (error) {
@@ -77,11 +77,11 @@ const createLaunchVerifier = ({ configSpace, fetcher }) => (configProvider) => {
77
77
  return new Promise((resolve, reject) => {
78
78
  const token = inputToken !== null && inputToken !== void 0 ? inputToken : getDefaultToken === null || getDefaultToken === void 0 ? void 0 : getDefaultToken();
79
79
  if (!token) {
80
- return reject(new errors_1.InvalidRequestError('Missing token for launch verification'));
80
+ return reject(new index_js_2.InvalidRequestError('Missing token for launch verification'));
81
81
  }
82
82
  const resolvePayload = (err, payload) => {
83
83
  if (err && err instanceof jsonwebtoken_1.TokenExpiredError) {
84
- reject(new errors_1.SessionExpiredError());
84
+ reject(new index_js_2.SessionExpiredError());
85
85
  }
86
86
  else if (err) {
87
87
  reject(err);
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Creates a logger that logs to the console.
3
3
  */
4
- export declare const createConsoleLogger: () => import(".").Logger;
4
+ export declare const createConsoleLogger: () => import("./index.js").Logger;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createConsoleLogger = void 0;
4
- const _1 = require(".");
4
+ const index_js_1 = require("./index.js");
5
5
  /**
6
6
  * Creates a logger that logs to the console.
7
7
  */
8
- const createConsoleLogger = () => (0, _1.createCoreLogger)((level, event) => console[level](JSON.stringify({
8
+ const createConsoleLogger = () => (0, index_js_1.createCoreLogger)((level, event) => console[level](JSON.stringify({
9
9
  eventType: level.toUpperCase(),
10
10
  ...event,
11
11
  })));
@@ -1,4 +1,4 @@
1
- import { JsonCompatibleStruct } from '../../routing';
1
+ import { JsonCompatibleStruct } from '../../routing/index.js';
2
2
  /**
3
3
  * The log level
4
4
  */
@@ -1,4 +1,4 @@
1
- import { EagerXapiStatement, UXapiStatement, XapiStatement } from '.';
1
+ import { EagerXapiStatement, UXapiStatement, XapiStatement } from './index.js';
2
2
  export declare const addStatementDefaultFields: (statement: (Pick<XapiStatement, "object" | "verb" | "context" | "result"> & {
3
3
  id?: string;
4
4
  }) | UXapiStatement, user: {
@@ -6,15 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.addStatementDefaultFields = void 0;
7
7
  const formatISO_1 = __importDefault(require("date-fns/formatISO"));
8
8
  const uuid_1 = require("uuid");
9
+ const attempt_utils_js_1 = require("./attempt-utils.js");
9
10
  const addStatementDefaultFields = (statement, user) => ({
10
11
  id: (0, uuid_1.v4)(),
11
- actor: {
12
- account: {
13
- homePage: 'https://openstax.org',
14
- name: user.uuid,
15
- },
16
- objectType: 'Agent',
17
- },
12
+ actor: (0, attempt_utils_js_1.formatAgent)(user.uuid),
18
13
  timestamp: (0, formatISO_1.default)(new Date()),
19
14
  ...statement,
20
15
  });