@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
@@ -11,6 +11,18 @@ import intervalToDuration from 'date-fns/intervalToDuration';
11
11
  import isAfter from 'date-fns/isAfter';
12
12
  import isBefore from 'date-fns/isBefore';
13
13
  import parseISO from 'date-fns/parseISO';
14
+ export const formatAgent = (agent) => {
15
+ if (typeof agent === 'string') {
16
+ return {
17
+ objectType: 'Agent',
18
+ account: {
19
+ homePage: 'https://openstax.org',
20
+ name: agent,
21
+ },
22
+ };
23
+ }
24
+ return agent;
25
+ };
14
26
  var Verb;
15
27
  (function (Verb) {
16
28
  Verb["Attempted"] = "http://adlnet.gov/expapi/verbs/attempted";
@@ -153,7 +165,7 @@ export const loadActivityAttemptInfo = async (gateway, activityIRI, options) =>
153
165
  const loadOptions = parentActivityAttempt ? { ...partialOptions, registration: parentActivityAttempt } : partialOptions;
154
166
  return resolveAttemptInfo(await gateway.getAllXapiStatements({ ...loadOptions, activity: activityIRI }), { ...options, activityIRI });
155
167
  };
156
- export const createStatement = (verb, activity, attempt, parentActivityIRI) => {
168
+ export const createStatement = (verb, activity, attempt, parentActivityIRI, instructor) => {
157
169
  return {
158
170
  context: {
159
171
  ...(parentActivityIRI ? {
@@ -167,6 +179,7 @@ export const createStatement = (verb, activity, attempt, parentActivityIRI) => {
167
179
  },
168
180
  } : {}),
169
181
  registration: attempt,
182
+ ...(instructor ? { instructor: formatAgent(instructor) } : {}),
170
183
  },
171
184
  object: {
172
185
  definition: {
@@ -210,7 +223,7 @@ export const createAttemptStatement = (activity, parentActivity) => {
210
223
  } : {}),
211
224
  ...(parentActivity.attempt ? {
212
225
  registration: parentActivity.attempt,
213
- } : {})
226
+ } : {}),
214
227
  },
215
228
  } : {}),
216
229
  object: {
@@ -276,7 +289,7 @@ export const createCompletedStatement = (attemptStatement, result) => {
276
289
  statement: {
277
290
  objectType: 'StatementRef',
278
291
  id: attemptStatement.id,
279
- }
292
+ },
280
293
  },
281
294
  object: attemptStatement.object,
282
295
  verb: {
@@ -304,7 +317,7 @@ export const putCompletedPendingScoringStatement = async (gateway, attemptStatem
304
317
  ], user))[0];
305
318
  };
306
319
  // scored statement for when the open written response has been graded.
307
- export const createScoredStatement = (attemptStatement, result) => {
320
+ export const createScoredStatement = (attemptStatement, result, instructor) => {
308
321
  var _a, _b;
309
322
  return {
310
323
  context: {
@@ -317,7 +330,8 @@ export const createScoredStatement = (attemptStatement, result) => {
317
330
  statement: {
318
331
  objectType: 'StatementRef',
319
332
  id: attemptStatement.id,
320
- }
333
+ },
334
+ ...(instructor ? { instructor: formatAgent(instructor) } : {}),
321
335
  },
322
336
  object: attemptStatement.object,
323
337
  verb: {
@@ -330,8 +344,8 @@ export const createScoredStatement = (attemptStatement, result) => {
330
344
  }
331
345
  };
332
346
  };
333
- export const putScoredStatement = async (gateway, attemptStatement, result, user) => {
334
- return (await gateway.putXapiStatements([createScoredStatement(attemptStatement, result)], user))[0];
347
+ export const putScoredStatement = async (gateway, attemptStatement, result, user, instructor) => {
348
+ return (await gateway.putXapiStatements([createScoredStatement(attemptStatement, result, instructor)], user))[0];
335
349
  };
336
350
  // scored statement for retry assessments - records a score but marks the attempt as still pending scoring
337
351
  export const createScoredPendingScoringStatement = (attemptStatement, result) => createScoredStatement(attemptStatement, {
@@ -1,5 +1,5 @@
1
- import { GenericFetch, Response } from '../../fetch';
2
- import { METHOD } from '../../routing';
1
+ import { GenericFetch, Response } from '../../fetch/index.js';
2
+ import { METHOD } from '../../routing/index.js';
3
3
  export interface BatchRequest {
4
4
  id: string;
5
5
  path: string;
@@ -1,4 +1,4 @@
1
- import { METHOD } from '../../routing';
1
+ import { METHOD } from '../../routing/index.js';
2
2
  /**
3
3
  * Handles automatic request batching using microtask queue scheduling.
4
4
  * Batches concurrent requests within the same event loop tick.
@@ -1,6 +1,6 @@
1
- import { ConfigProviderForConfig } from '../../config';
2
- import { AuthProvider } from '../authProvider';
3
- import { LrsGateway } from '.';
1
+ import { ConfigProviderForConfig } from '../../config/index.js';
2
+ import { AuthProvider } from '../authProvider/index.js';
3
+ import { LrsGateway } from './index.js';
4
4
  type Config = {
5
5
  name: string;
6
6
  };
@@ -2,11 +2,12 @@ import * as fsModule from 'fs';
2
2
  import path from 'path';
3
3
  import formatISO from 'date-fns/formatISO';
4
4
  import { v4 as uuid } from 'uuid';
5
- import { assertDefined } from '../../assertions';
6
- import { resolveConfigValue } from '../../config';
7
- import { UnauthorizedError } from '../../errors';
8
- import { ifDefined } from '../../guards';
9
- import { hashValue } from '../../misc/hashValue';
5
+ import { assertDefined } from '../../assertions/index.js';
6
+ import { resolveConfigValue } from '../../config/index.js';
7
+ import { UnauthorizedError } from '../../errors/index.js';
8
+ import { ifDefined } from '../../guards/index.js';
9
+ import { hashValue } from '../../misc/hashValue.js';
10
+ import { formatAgent } from './attempt-utils.js';
10
11
  const pageSize = 5;
11
12
  export const fileSystemLrsGateway = (initializer) => (configProvider) => ({ authProvider }) => {
12
13
  const name = resolveConfigValue(configProvider[initializer.configSpace || 'fileSystem'].name);
@@ -69,13 +70,7 @@ export const fileSystemLrsGateway = (initializer) => (configProvider) => ({ auth
69
70
  const statementsWithDefaults = statements.map(statement => ({
70
71
  ...statement,
71
72
  id: uuid(),
72
- actor: {
73
- account: {
74
- homePage: 'https://openstax.org',
75
- name: author.uuid,
76
- },
77
- objectType: 'Agent',
78
- },
73
+ actor: formatAgent(author.uuid),
79
74
  timestamp: formatISO(new Date()),
80
75
  }));
81
76
  await load;
@@ -1,8 +1,8 @@
1
- import { ConfigProviderForConfig } from '../../config';
2
- import { GenericFetch } from '../../fetch';
3
- import { WithRequired } from '../../types';
4
- import { AuthProvider } from '../authProvider';
5
- import { Logger } from '../logger';
1
+ import { ConfigProviderForConfig } from '../../config/index.js';
2
+ import { GenericFetch } from '../../fetch/index.js';
3
+ import { WithRequired } from '../../types.js';
4
+ import { AuthProvider } from '../authProvider/index.js';
5
+ import { Logger } from '../logger/index.js';
6
6
  type Config = {
7
7
  lrsHost: string;
8
8
  lrsAuthorization: string;
@@ -23,13 +23,7 @@ export interface StateDocument {
23
23
  [key: string]: any;
24
24
  }
25
25
  export interface XapiStatement {
26
- actor: {
27
- account: {
28
- homePage: 'https://openstax.org';
29
- name: string;
30
- };
31
- objectType: 'Agent';
32
- };
26
+ actor: XapiAgent;
33
27
  id: string;
34
28
  context?: {
35
29
  contextActivities?: {
@@ -46,6 +40,7 @@ export interface XapiStatement {
46
40
  };
47
41
  registration?: string;
48
42
  platform?: string;
43
+ instructor?: XapiAgent;
49
44
  };
50
45
  object: {
51
46
  definition?: {
@@ -1,13 +1,14 @@
1
- import { once } from '../..';
2
- import { assertDefined } from '../../assertions';
3
- import { resolveConfigValue } from '../../config';
4
- import { UnauthorizedError } from '../../errors';
5
- import { fetchStatusRetry } from '../../fetch/fetchStatusRetry';
6
- import { ifDefined } from '../../guards';
7
- import { retryWithDelay } from '../../misc/helpers';
8
- import { METHOD } from '../../routing';
9
- import { addStatementDefaultFields } from './addStatementDefaultFields';
10
- import { RequestBatcher } from './batching';
1
+ import { assertDefined } from '../../assertions/index.js';
2
+ import { resolveConfigValue } from '../../config/index.js';
3
+ import { UnauthorizedError } from '../../errors/index.js';
4
+ import { fetchStatusRetry } from '../../fetch/fetchStatusRetry.js';
5
+ import { ifDefined } from '../../guards/index.js';
6
+ import { once } from '../../index.js';
7
+ import { retryWithDelay } from '../../misc/helpers.js';
8
+ import { METHOD } from '../../routing/index.js';
9
+ import { addStatementDefaultFields } from './addStatementDefaultFields.js';
10
+ import { formatAgent } from './attempt-utils.js';
11
+ import { RequestBatcher } from './batching.js';
11
12
  export const lrsGateway = (initializer) => (configProvider) => {
12
13
  const config = configProvider[ifDefined(initializer.configSpace, 'lrs')];
13
14
  const lrsHost = once(() => resolveConfigValue(config.lrsHost));
@@ -33,22 +34,6 @@ export const lrsGateway = (initializer) => (configProvider) => {
33
34
  const makeFetch = async (options) => {
34
35
  return enableBatching ? batcher.queueRequest(options) : batcher.singleRequest(options);
35
36
  };
36
- /**
37
- * Formats an agent parameter into a full XapiAgent object.
38
- * Accepts either a UUID string or a full XapiAgent object.
39
- */
40
- const formatAgent = (agent) => {
41
- if (typeof agent === 'string') {
42
- return {
43
- objectType: 'Agent',
44
- account: {
45
- homePage: 'https://openstax.org',
46
- name: agent,
47
- },
48
- };
49
- }
50
- return agent;
51
- };
52
37
  // Note: This method actually uses POST
53
38
  const putXapiStatements = async (statements, user) => {
54
39
  const userObj = user
@@ -110,13 +95,7 @@ ${await response.text()}`);
110
95
  queryParams.until = options.until;
111
96
  // Add agent unless anyUser is true
112
97
  if (anyUser !== true) {
113
- queryParams.agent = JSON.stringify({
114
- account: {
115
- homePage: 'https://openstax.org',
116
- name: user || assertDefined(await authProvider.getUser(), new UnauthorizedError()).uuid,
117
- },
118
- objectType: 'Agent',
119
- });
98
+ queryParams.agent = JSON.stringify(formatAgent(user || assertDefined(await authProvider.getUser(), new UnauthorizedError()).uuid));
120
99
  }
121
100
  return makeFetch({
122
101
  path: '/data/xAPI/statements',
@@ -1,7 +1,7 @@
1
- import { AccountsGateway, MappedUserInfo } from '../accountsGateway';
2
- import { AuthProvider } from '../authProvider';
3
- import { ActivityState, AttemptEntry } from './attempt-utils';
4
- import { LrsGateway } from '.';
1
+ import { AccountsGateway, MappedUserInfo } from '../accountsGateway/index.js';
2
+ import { AuthProvider } from '../authProvider/index.js';
3
+ import { ActivityState, AttemptEntry } from './attempt-utils.js';
4
+ import { LrsGateway } from './index.js';
5
5
  export interface Grade {
6
6
  activityProgress: 'Initialized' | 'Started' | 'inProgress' | 'Submitted' | 'Completed';
7
7
  comment?: string;
@@ -1,6 +1,6 @@
1
1
  import partition from 'lodash/fp/partition';
2
- import { roundToPrecision } from '../..';
3
- import { getStatementTimeString, resolveAttemptInfo } from './attempt-utils';
2
+ import { roundToPrecision } from '../../index.js';
3
+ import { getStatementTimeString, resolveAttemptInfo } from './attempt-utils.js';
4
4
  export const getRegistrationAttemptInfo = async (lrs, registration, options) => {
5
5
  const { currentPreference, ...xapiOptions } = options !== null && options !== void 0 ? options : {};
6
6
  const allStatements = await lrs.getAllXapiStatements({ ...xapiOptions, registration });
@@ -1,6 +1,6 @@
1
1
  import postgres, { Sql } from 'postgres';
2
- import { ConfigProviderForConfig } from '../../config';
3
- import type { Logger } from '../logger';
2
+ import { ConfigProviderForConfig } from '../../config/index.js';
3
+ import type { Logger } from '../logger/index.js';
4
4
  type Config = {
5
5
  host: string;
6
6
  readHost: string;
@@ -1,8 +1,8 @@
1
1
  import postgres from 'postgres';
2
- import { assertNotNaN } from '../../assertions';
3
- import { resolveConfigValue } from '../../config';
4
- import { ifDefined } from '../../guards';
5
- import { once } from '../../misc/helpers';
2
+ import { assertNotNaN } from '../../assertions/index.js';
3
+ import { resolveConfigValue } from '../../config/index.js';
4
+ import { ifDefined } from '../../guards/index.js';
5
+ import { once } from '../../misc/helpers.js';
6
6
  export const postgresConnection = (initializer) => (configProvider) => {
7
7
  const config = configProvider[ifDefined(initializer.configSpace, 'local')];
8
8
  const host = once(() => resolveConfigValue(config.host));
@@ -1,5 +1,5 @@
1
- import { ConfigProviderForConfig } from '../../config';
2
- import { QueueProvider } from '.';
1
+ import { ConfigProviderForConfig } from '../../config/index.js';
2
+ import { QueueProvider } from './index.js';
3
3
  export type Config = {
4
4
  handlerModulePath: string;
5
5
  };
@@ -1,6 +1,6 @@
1
- import { resolveConfigValue } from '../../config';
2
- import { ifDefined } from '../../guards';
3
- import { once } from '../../misc/helpers';
1
+ import { resolveConfigValue } from '../../config/index.js';
2
+ import { ifDefined } from '../../guards/index.js';
3
+ import { once } from '../../misc/helpers.js';
4
4
  export const localQueueProvider = (initializer) => {
5
5
  const init = ifDefined(initializer, {});
6
6
  return () => (configProvider) => {
@@ -9,7 +9,6 @@ export const localQueueProvider = (initializer) => {
9
9
  return {
10
10
  enqueueMessage: async (payload, _options) => {
11
11
  const modulePath = await handlerModulePath();
12
- // eslint-disable-next-line @typescript-eslint/no-var-requires
13
12
  const module = require(modulePath);
14
13
  await module.handler(payload);
15
14
  },
@@ -1,6 +1,6 @@
1
1
  import { SQS } from '@aws-sdk/client-sqs';
2
- import { ConfigProviderForConfig } from '../../config';
3
- import { QueueProvider } from '.';
2
+ import { ConfigProviderForConfig } from '../../config/index.js';
3
+ import { QueueProvider } from './index.js';
4
4
  export type Config = {
5
5
  queueUrl: string;
6
6
  };
@@ -1,7 +1,7 @@
1
1
  import { SendMessageCommand, SQS } from '@aws-sdk/client-sqs';
2
- import { resolveConfigValue } from '../../config';
3
- import { ifDefined } from '../../guards';
4
- import { once } from '../../misc/helpers';
2
+ import { resolveConfigValue } from '../../config/index.js';
3
+ import { ifDefined } from '../../guards/index.js';
4
+ import { once } from '../../misc/helpers.js';
5
5
  export const sqsQueueProvider = (initializer) => {
6
6
  const init = ifDefined(initializer, {});
7
7
  const sqs = once(() => { var _a; return (_a = init.sqsClient) !== null && _a !== void 0 ? _a : new SQS({ apiVersion: '2012-11-05' }); });
@@ -1,4 +1,4 @@
1
- import { FieldMappings, IndexOptions, SearchOptions } from '.';
1
+ import { FieldMappings, IndexOptions, SearchOptions } from './index.js';
2
2
  export type Config<T> = {
3
3
  mappings: FieldMappings;
4
4
  store: {
@@ -1,6 +1,6 @@
1
- import { coerceArray } from '../..';
2
- import { InvalidRequestError } from '../../errors';
3
- import { isDefined } from '../../guards';
1
+ import { InvalidRequestError } from '../../errors/index.js';
2
+ import { isDefined } from '../../guards/index.js';
3
+ import { coerceArray } from '../../index.js';
4
4
  const MIN_MATCH = 0.5;
5
5
  const MAX_RESULTS = 10;
6
6
  var MatchType;
@@ -1,5 +1,5 @@
1
- import { ConfigProviderForConfig } from '../../config';
2
- import { FieldMappings, IndexOptions, SearchOptions } from '.';
1
+ import { ConfigProviderForConfig } from '../../config/index.js';
2
+ import { FieldMappings, IndexOptions, SearchOptions } from './index.js';
3
3
  export type Config = {
4
4
  node: string;
5
5
  region: string;
@@ -1,10 +1,10 @@
1
- // cspell:ignore opensearch, Sigv
1
+ /* spell-checker: ignore opensearch Sigv */
2
2
  import { defaultProvider } from '@aws-sdk/credential-provider-node';
3
3
  import { Client } from '@opensearch-project/opensearch';
4
4
  import { AwsSigv4Signer } from '@opensearch-project/opensearch/aws';
5
- import { resolveConfigValue } from '../../config';
6
- import { ifDefined, isDefined } from '../../guards';
7
- import { once } from '../../misc/helpers';
5
+ import { resolveConfigValue } from '../../config/index.js';
6
+ import { ifDefined, isDefined } from '../../guards/index.js';
7
+ import { once } from '../../misc/helpers.js';
8
8
  const mapFilter = (filter) => {
9
9
  if ('key' in filter && 'value' in filter) {
10
10
  const { key } = filter;
@@ -1,6 +1,6 @@
1
1
  import { DynamoDBRecord } from 'aws-lambda';
2
- import { Logger } from '../logger';
3
- import { IndexOptions } from '../searchProvider';
2
+ import { Logger } from '../logger/index.js';
3
+ import { IndexOptions } from '../searchProvider/index.js';
4
4
  export interface SearchProvider<T> {
5
5
  index: (options: IndexOptions<T>) => Promise<void>;
6
6
  bulkIndex: (items: IndexOptions<T>[]) => Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { unmarshall } from '@aws-sdk/util-dynamodb';
2
- import { Level } from '../logger';
2
+ import { Level } from '../logger/index.js';
3
3
  const VALID_EVENTS = new Set(['INSERT', 'MODIFY']);
4
4
  /**
5
5
  * Function to update search index from DynamoDB Stream records.