@digabi/exam-engine-mastering 23.25.0 → 23.26.0
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/__tests__/testMexCreation.js +19 -0
- package/dist/__tests__/testMexCreation.js.map +1 -1
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/createMex.d.ts +7 -2
- package/dist/createMex.d.ts.map +1 -1
- package/dist/createMex.js +24 -2
- package/dist/createMex.js.map +1 -1
- package/package.json +4 -5
package/dist/createMex.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Readable, Writable } from 'stream';
|
|
2
|
+
/**
|
|
3
|
+
* Name of the top-level, unencrypted but signed manifest that declares the
|
|
4
|
+
* KTP server version the package requires.
|
|
5
|
+
*/
|
|
6
|
+
export declare const REQUIRED_SERVER_VERSION_FILENAME = "required-server-version.json";
|
|
2
7
|
export interface ExamFile {
|
|
3
8
|
/** A relative filename (e.g. "foo.mp3"). This should be the same filename than in the exam XML. */
|
|
4
9
|
filename: string;
|
|
@@ -9,6 +14,6 @@ export interface AttachmentFile extends ExamFile {
|
|
|
9
14
|
/** Whether this attachment is restricted or not. */
|
|
10
15
|
restricted: boolean;
|
|
11
16
|
}
|
|
12
|
-
export declare function createMex(xml: string, attachments: AttachmentFile[], nsaScripts: Readable, securityCodes: Readable | null, passphrase: string, answersPrivateKey: string, outputStream: Writable, json?: Buffer | null, ktpUpdate?: Readable, koeUpdate?: Readable): Promise<void>;
|
|
13
|
-
export declare function createMultiMex(exams: ExamFile[], nsaScripts: Readable, securityCodes: Readable, passphrase: string, answersPrivateKey: string, outputStream: Writable, loadSimulationConfiguration?: Readable, ktpUpdate?: Readable, koeUpdate?: Readable): Promise<void>;
|
|
17
|
+
export declare function createMex(xml: string, attachments: AttachmentFile[], nsaScripts: Readable, securityCodes: Readable | null, passphrase: string, answersPrivateKey: string, outputStream: Writable, json?: Buffer | null, ktpUpdate?: Readable, koeUpdate?: Readable, requiredServerVersion?: string): Promise<void>;
|
|
18
|
+
export declare function createMultiMex(exams: ExamFile[], nsaScripts: Readable, securityCodes: Readable, passphrase: string, answersPrivateKey: string, outputStream: Writable, loadSimulationConfiguration?: Readable, ktpUpdate?: Readable, koeUpdate?: Readable, requiredServerVersion?: string): Promise<void>;
|
|
14
19
|
//# sourceMappingURL=createMex.d.ts.map
|
package/dist/createMex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMex.d.ts","sourceRoot":"","sources":["../src/createMex.ts"],"names":[],"mappings":"AAEA,OAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AASnD,MAAM,WAAW,QAAQ;IACvB,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,QAAQ,GAAG,IAAI,EAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,QAAQ,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,SAAS,CAAC,EAAE,QAAQ,EACpB,SAAS,CAAC,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"createMex.d.ts","sourceRoot":"","sources":["../src/createMex.ts"],"names":[],"mappings":"AAEA,OAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AASnD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAA;AAE9E,MAAM,WAAW,QAAQ;IACvB,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,QAAQ,GAAG,IAAI,EAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,QAAQ,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,SAAS,CAAC,EAAE,QAAQ,EACpB,SAAS,CAAC,EAAE,QAAQ,EACpB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Df;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,QAAQ,EACtB,2BAA2B,CAAC,EAAE,QAAQ,EACtC,SAAS,CAAC,EAAE,QAAQ,EACpB,SAAS,CAAC,EAAE,QAAQ,EACpB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|
package/dist/createMex.js
CHANGED
|
@@ -36,6 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.REQUIRED_SERVER_VERSION_FILENAME = void 0;
|
|
39
40
|
exports.createMex = createMex;
|
|
40
41
|
exports.createMultiMex = createMultiMex;
|
|
41
42
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -47,7 +48,12 @@ const cloneable_readable_1 = __importDefault(require("cloneable-readable"));
|
|
|
47
48
|
const util_1 = require("util");
|
|
48
49
|
const glob_1 = require("glob");
|
|
49
50
|
const pipeline = (0, util_1.promisify)(stream_1.default.pipeline);
|
|
50
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Name of the top-level, unencrypted but signed manifest that declares the
|
|
53
|
+
* KTP server version the package requires.
|
|
54
|
+
*/
|
|
55
|
+
exports.REQUIRED_SERVER_VERSION_FILENAME = 'required-server-version.json';
|
|
56
|
+
async function createMex(xml, attachments, nsaScripts, securityCodes, passphrase, answersPrivateKey, outputStream, json, ktpUpdate, koeUpdate, requiredServerVersion) {
|
|
51
57
|
const bundleDir = path_1.default.dirname(require.resolve('@digabi/exam-engine-core/dist/main-bundle.js'));
|
|
52
58
|
const renderingFiles = await (0, glob_1.glob)(`${bundleDir}/{main-bundle.js,main.css,assets/*}`, {
|
|
53
59
|
nodir: true,
|
|
@@ -55,6 +61,9 @@ async function createMex(xml, attachments, nsaScripts, securityCodes, passphrase
|
|
|
55
61
|
});
|
|
56
62
|
const zipFile = new yazl_1.default.ZipFile();
|
|
57
63
|
const keyAndIv = (0, crypto_utils_1.deriveAES256KeyAndIv)(passphrase);
|
|
64
|
+
if (requiredServerVersion) {
|
|
65
|
+
addSignedManifest(zipFile, answersPrivateKey, requiredServerVersion);
|
|
66
|
+
}
|
|
58
67
|
encryptAndSign(zipFile, json ? 'abitti-exam.xml' : 'exam.xml', keyAndIv, answersPrivateKey, toStream(Buffer.from(xml)));
|
|
59
68
|
if (json) {
|
|
60
69
|
encryptAndSign(zipFile, 'exam.json', keyAndIv, answersPrivateKey, toStream(json));
|
|
@@ -83,9 +92,12 @@ async function createMex(xml, attachments, nsaScripts, securityCodes, passphrase
|
|
|
83
92
|
zipFile.end();
|
|
84
93
|
await promise;
|
|
85
94
|
}
|
|
86
|
-
async function createMultiMex(exams, nsaScripts, securityCodes, passphrase, answersPrivateKey, outputStream, loadSimulationConfiguration, ktpUpdate, koeUpdate) {
|
|
95
|
+
async function createMultiMex(exams, nsaScripts, securityCodes, passphrase, answersPrivateKey, outputStream, loadSimulationConfiguration, ktpUpdate, koeUpdate, requiredServerVersion) {
|
|
87
96
|
const zipFile = new yazl_1.default.ZipFile();
|
|
88
97
|
const keyAndIv = (0, crypto_utils_1.deriveAES256KeyAndIv)(passphrase);
|
|
98
|
+
if (requiredServerVersion) {
|
|
99
|
+
addSignedManifest(zipFile, answersPrivateKey, requiredServerVersion);
|
|
100
|
+
}
|
|
89
101
|
for (const exam of exams) {
|
|
90
102
|
zipFile.addReadStream(exam.contents, exam.filename);
|
|
91
103
|
}
|
|
@@ -123,6 +135,16 @@ function sign(zipFile, filename, answersPrivateKey, input) {
|
|
|
123
135
|
const signer = (0, crypto_utils_1.signWithSHA256AndRSA)(input, answersPrivateKey);
|
|
124
136
|
zipFile.addReadStream(signer, `${filename}.sig`);
|
|
125
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Adds the required-server-version manifest as a top-level, unencrypted but signed
|
|
140
|
+
* file (`required-server-version.json` + `required-server-version.json.sig`).
|
|
141
|
+
*/
|
|
142
|
+
function addSignedManifest(zipFile, answersPrivateKey, requiredServerVersion) {
|
|
143
|
+
const manifest = Buffer.from(JSON.stringify({ requiredServerVersion }));
|
|
144
|
+
const input = (0, cloneable_readable_1.default)(toStream(manifest));
|
|
145
|
+
zipFile.addReadStream(input.clone(), exports.REQUIRED_SERVER_VERSION_FILENAME);
|
|
146
|
+
sign(zipFile, exports.REQUIRED_SERVER_VERSION_FILENAME, answersPrivateKey, input);
|
|
147
|
+
}
|
|
126
148
|
function toStream(buffer) {
|
|
127
149
|
const readable = new stream_1.Readable();
|
|
128
150
|
readable.push(buffer);
|
package/dist/createMex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMex.js","sourceRoot":"","sources":["../src/createMex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMex.js","sourceRoot":"","sources":["../src/createMex.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digabi/exam-engine-mastering",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.26.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"repository": "https://github.com/digabi/exam-engine",
|
|
6
6
|
"author": "Matriculation Examination Board, Finland",
|
|
@@ -10,17 +10,16 @@
|
|
|
10
10
|
"schema"
|
|
11
11
|
],
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@digabi/exam-engine-core": "23.
|
|
14
|
-
"@digabi/exam-engine-rendering": "23.25.0",
|
|
13
|
+
"@digabi/exam-engine-core": "23.26.0",
|
|
15
14
|
"@ffprobe-installer/ffprobe": "^2.0.0",
|
|
16
15
|
"cloneable-readable": "^3.0.0",
|
|
17
16
|
"compare-versions": "^6.0.0",
|
|
18
17
|
"ffprobe": "^1.1.0",
|
|
19
18
|
"glob": "^13.0.0",
|
|
20
|
-
"i18next": "^26.
|
|
19
|
+
"i18next": "^26.3.1",
|
|
21
20
|
"libxmljs2": "^0.37.0",
|
|
22
21
|
"mathjax-node": "^2.1.1",
|
|
23
22
|
"yazl": "^3.2.1"
|
|
24
23
|
},
|
|
25
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "7752fec02f0944f6a278053684612d3923b213dc"
|
|
26
25
|
}
|