@openstax/ts-utils 1.37.0 → 1.37.2
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.
- package/dist/cjs/services/lrsGateway/attempt-utils.js +16 -6
- package/dist/cjs/services/queueProvider/index.d.ts +5 -0
- package/dist/cjs/services/queueProvider/index.js +2 -0
- package/dist/cjs/services/queueProvider/local.d.ts +10 -0
- package/dist/cjs/services/queueProvider/local.js +22 -0
- package/dist/cjs/services/queueProvider/sqs.d.ts +12 -0
- package/dist/cjs/services/queueProvider/sqs.js +26 -0
- package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
- package/dist/esm/services/lrsGateway/attempt-utils.js +16 -6
- package/dist/esm/services/queueProvider/index.d.ts +5 -0
- package/dist/esm/services/queueProvider/index.js +1 -0
- package/dist/esm/services/queueProvider/local.d.ts +10 -0
- package/dist/esm/services/queueProvider/local.js +18 -0
- package/dist/esm/services/queueProvider/sqs.d.ts +12 -0
- package/dist/esm/services/queueProvider/sqs.js +22 -0
- package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/script/bin/.init-params-script.bash.swp +0 -0
|
@@ -87,15 +87,25 @@ const resolveAttemptInfo = (statements, options) => {
|
|
|
87
87
|
return p.completed.result !== undefined &&
|
|
88
88
|
typeof ((_a = p.completed.result.score) === null || _a === void 0 ? void 0 : _a.scaled) === 'number';
|
|
89
89
|
};
|
|
90
|
-
//
|
|
91
|
-
const
|
|
92
|
-
|
|
90
|
+
// Find best scored pair
|
|
91
|
+
const bestScoredPair = completedPairs
|
|
92
|
+
.filter(hasScaledScore)
|
|
93
|
+
.reduce((best, pair) => {
|
|
93
94
|
if (!best)
|
|
94
95
|
return pair;
|
|
95
|
-
return pair.completed.result.score.scaled > best.completed.result.score.scaled
|
|
96
|
-
? pair
|
|
97
|
-
: best;
|
|
96
|
+
return pair.completed.result.score.scaled > best.completed.result.score.scaled ? pair : best;
|
|
98
97
|
}, undefined);
|
|
98
|
+
// if no scored pair get newest completed without a score
|
|
99
|
+
const bestDefaultPair = !bestScoredPair && completedPairs.length > 0
|
|
100
|
+
? completedPairs.reduce((best, pair) => {
|
|
101
|
+
if (!best)
|
|
102
|
+
return pair;
|
|
103
|
+
return (0, isAfter_1.default)((0, parseISO_1.default)(pair.attempt.timestamp), (0, parseISO_1.default)(best.attempt.timestamp))
|
|
104
|
+
? pair
|
|
105
|
+
: best;
|
|
106
|
+
}, undefined)
|
|
107
|
+
: undefined;
|
|
108
|
+
const bestPair = bestScoredPair !== null && bestScoredPair !== void 0 ? bestScoredPair : bestDefaultPair;
|
|
99
109
|
return {
|
|
100
110
|
attempts: attempts.length,
|
|
101
111
|
bestCompletedAttempt: bestPair === null || bestPair === void 0 ? void 0 : bestPair.attempt,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ConfigProviderForConfig } from '../../config';
|
|
2
|
+
import { QueueProvider } from '.';
|
|
3
|
+
export type Config = {
|
|
4
|
+
handlerModulePath: string;
|
|
5
|
+
};
|
|
6
|
+
interface Initializer<C> {
|
|
7
|
+
configSpace?: C;
|
|
8
|
+
}
|
|
9
|
+
export declare const localQueueProvider: <C extends string = "local">(initializer?: Initializer<C>) => <T>() => (configProvider: { [_key in C]: ConfigProviderForConfig<Config>; }) => QueueProvider<T>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.localQueueProvider = void 0;
|
|
4
|
+
const config_1 = require("../../config");
|
|
5
|
+
const guards_1 = require("../../guards");
|
|
6
|
+
const helpers_1 = require("../../misc/helpers");
|
|
7
|
+
const localQueueProvider = (initializer) => {
|
|
8
|
+
const init = (0, guards_1.ifDefined)(initializer, {});
|
|
9
|
+
return () => (configProvider) => {
|
|
10
|
+
const config = configProvider[(0, guards_1.ifDefined)(init.configSpace, 'local')];
|
|
11
|
+
const handlerModulePath = (0, helpers_1.once)(() => (0, config_1.resolveConfigValue)(config.handlerModulePath));
|
|
12
|
+
return {
|
|
13
|
+
enqueueMessage: async (payload, _options) => {
|
|
14
|
+
const modulePath = await handlerModulePath();
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const module = require(modulePath);
|
|
17
|
+
await module.handler(payload);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.localQueueProvider = localQueueProvider;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SQS } from '@aws-sdk/client-sqs';
|
|
2
|
+
import { ConfigProviderForConfig } from '../../config';
|
|
3
|
+
import { QueueProvider } from '.';
|
|
4
|
+
export type Config = {
|
|
5
|
+
queueUrl: string;
|
|
6
|
+
};
|
|
7
|
+
interface Initializer<C> {
|
|
8
|
+
configSpace?: C;
|
|
9
|
+
sqsClient?: SQS;
|
|
10
|
+
}
|
|
11
|
+
export declare const sqsQueueProvider: <C extends string = "deployed">(initializer?: Initializer<C>) => <T>() => (configProvider: { [_key in C]: ConfigProviderForConfig<Config>; }) => QueueProvider<T>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sqsQueueProvider = void 0;
|
|
4
|
+
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
5
|
+
const config_1 = require("../../config");
|
|
6
|
+
const guards_1 = require("../../guards");
|
|
7
|
+
const helpers_1 = require("../../misc/helpers");
|
|
8
|
+
const sqsQueueProvider = (initializer) => {
|
|
9
|
+
const init = (0, guards_1.ifDefined)(initializer, {});
|
|
10
|
+
const sqs = (0, helpers_1.once)(() => { var _a; return (_a = init.sqsClient) !== null && _a !== void 0 ? _a : new client_sqs_1.SQS({ apiVersion: '2012-11-05' }); });
|
|
11
|
+
return () => (configProvider) => {
|
|
12
|
+
const config = configProvider[(0, guards_1.ifDefined)(init.configSpace, 'deployed')];
|
|
13
|
+
const queueUrl = (0, helpers_1.once)(() => (0, config_1.resolveConfigValue)(config.queueUrl));
|
|
14
|
+
return {
|
|
15
|
+
enqueueMessage: async (payload, options) => {
|
|
16
|
+
const command = new client_sqs_1.SendMessageCommand({
|
|
17
|
+
QueueUrl: await queueUrl(),
|
|
18
|
+
MessageBody: JSON.stringify(payload),
|
|
19
|
+
DelaySeconds: options === null || options === void 0 ? void 0 : options.delaySeconds,
|
|
20
|
+
});
|
|
21
|
+
await sqs().send(command);
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.sqsQueueProvider = sqsQueueProvider;
|