@digabi/exam-engine-core 23.8.1 → 23.8.2-alpha.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.
Files changed (207) hide show
  1. package/dist/__tests__/examServerApi.d.ts.map +1 -1
  2. package/dist/__tests__/examServerApi.js +2 -0
  3. package/dist/__tests__/examServerApi.js.map +1 -1
  4. package/dist/__tests__/playwright/exam/Exam.test.js +17 -18
  5. package/dist/__tests__/playwright/exam/Exam.test.js.map +1 -1
  6. package/dist/__tests__/playwright/stories/exam/Exam.story.d.ts +1 -5
  7. package/dist/__tests__/playwright/stories/exam/Exam.story.d.ts.map +1 -1
  8. package/dist/__tests__/playwright/stories/exam/Exam.story.js +7 -45
  9. package/dist/__tests__/playwright/stories/exam/Exam.story.js.map +1 -1
  10. package/dist/__tests__/playwright/utils/utils.d.ts +1 -1
  11. package/dist/__tests__/playwright/utils/utils.d.ts.map +1 -1
  12. package/dist/__tests__/playwright/utils/utils.js +2 -2
  13. package/dist/__tests__/playwright/utils/utils.js.map +1 -1
  14. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  15. package/dist/assets/NotoMono.ttf +0 -0
  16. package/dist/assets/NotoMono.woff +0 -0
  17. package/dist/assets/NotoMono.woff2 +0 -0
  18. package/dist/assets/NotoSans-Bold.ttf +0 -0
  19. package/dist/assets/NotoSans-Bold.woff +0 -0
  20. package/dist/assets/NotoSans-Bold.woff2 +0 -0
  21. package/dist/assets/NotoSans-BoldItalic.ttf +0 -0
  22. package/dist/assets/NotoSans-BoldItalic.woff +0 -0
  23. package/dist/assets/NotoSans-BoldItalic.woff2 +0 -0
  24. package/dist/assets/NotoSans-Italic.ttf +0 -0
  25. package/dist/assets/NotoSans-Italic.woff +0 -0
  26. package/dist/assets/NotoSans-Italic.woff2 +0 -0
  27. package/dist/assets/NotoSans-Light.ttf +0 -0
  28. package/dist/assets/NotoSans-Light.woff +0 -0
  29. package/dist/assets/NotoSans-Light.woff2 +0 -0
  30. package/dist/assets/NotoSans-LightItalic.ttf +0 -0
  31. package/dist/assets/NotoSans-LightItalic.woff +0 -0
  32. package/dist/assets/NotoSans-LightItalic.woff2 +0 -0
  33. package/dist/assets/NotoSans-Regular.ttf +0 -0
  34. package/dist/assets/NotoSans-Regular.woff +0 -0
  35. package/dist/assets/NotoSans-Regular.woff2 +0 -0
  36. package/dist/assets/NotoSans-SemiBold.ttf +0 -0
  37. package/dist/assets/NotoSans-SemiBold.woff +0 -0
  38. package/dist/assets/NotoSans-SemiBold.woff2 +0 -0
  39. package/dist/assets/NotoSans-SemiBoldItalic.ttf +0 -0
  40. package/dist/assets/NotoSans-SemiBoldItalic.woff +0 -0
  41. package/dist/assets/NotoSans-SemiBoldItalic.woff2 +0 -0
  42. package/dist/components/context/QuestionContext.d.ts.map +1 -1
  43. package/dist/components/context/QuestionContext.js +1 -1
  44. package/dist/components/context/QuestionContext.js.map +1 -1
  45. package/dist/components/exam/AudioAnswer.d.ts +7 -0
  46. package/dist/components/exam/AudioAnswer.d.ts.map +1 -0
  47. package/dist/components/exam/AudioAnswer.js +79 -0
  48. package/dist/components/exam/AudioAnswer.js.map +1 -0
  49. package/dist/components/exam/AudioAnswerRecorder.d.ts +10 -0
  50. package/dist/components/exam/AudioAnswerRecorder.d.ts.map +1 -0
  51. package/dist/components/exam/AudioAnswerRecorder.js +28 -0
  52. package/dist/components/exam/AudioAnswerRecorder.js.map +1 -0
  53. package/dist/components/exam/Exam.d.ts.map +1 -1
  54. package/dist/components/exam/Exam.js +13 -2
  55. package/dist/components/exam/Exam.js.map +1 -1
  56. package/dist/components/exam/OralAnswer.d.ts +6 -0
  57. package/dist/components/exam/OralAnswer.d.ts.map +1 -0
  58. package/dist/components/exam/OralAnswer.js +18 -0
  59. package/dist/components/exam/OralAnswer.js.map +1 -0
  60. package/dist/components/grading/GradingAnswer.d.ts +2 -6
  61. package/dist/components/grading/GradingAnswer.d.ts.map +1 -1
  62. package/dist/components/grading/GradingAnswer.js +4 -3
  63. package/dist/components/grading/GradingAnswer.js.map +1 -1
  64. package/dist/components/results/AudioAnswer.d.ts +6 -0
  65. package/dist/components/results/AudioAnswer.d.ts.map +1 -0
  66. package/dist/components/results/AudioAnswer.js +13 -0
  67. package/dist/components/results/AudioAnswer.js.map +1 -0
  68. package/dist/components/results/Results.d.ts.map +1 -1
  69. package/dist/components/results/Results.js +3 -1
  70. package/dist/components/results/Results.js.map +1 -1
  71. package/dist/components/shared/internal/AudioError.d.ts +8 -0
  72. package/dist/components/shared/internal/AudioError.d.ts.map +1 -0
  73. package/dist/components/shared/internal/AudioError.js +17 -0
  74. package/dist/components/shared/internal/AudioError.js.map +1 -0
  75. package/dist/components/shared/internal/AudioRecordingError.d.ts +8 -0
  76. package/dist/components/shared/internal/AudioRecordingError.d.ts.map +1 -0
  77. package/dist/components/shared/internal/AudioRecordingError.js +17 -0
  78. package/dist/components/shared/internal/AudioRecordingError.js.map +1 -0
  79. package/dist/dom-utils.js +1 -1
  80. package/dist/dom-utils.js.map +1 -1
  81. package/dist/i18n/fi-FI.d.ts +4 -0
  82. package/dist/i18n/fi-FI.d.ts.map +1 -1
  83. package/dist/i18n/fi-FI.js +4 -0
  84. package/dist/i18n/fi-FI.js.map +1 -1
  85. package/dist/i18n/sv-FI.d.ts.map +1 -1
  86. package/dist/i18n/sv-FI.js +4 -0
  87. package/dist/i18n/sv-FI.js.map +1 -1
  88. package/dist/index.d.ts +1 -1
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/main-bundle.js +13 -13
  91. package/dist/main-bundle.js.LICENSE.txt +7 -0
  92. package/dist/main.css +1 -1
  93. package/dist/node_modules_music-metadata_lib_aiff_AiffParser_js.main-bundle.js +33 -0
  94. package/dist/node_modules_music-metadata_lib_dsdiff_DsdiffParser_js.main-bundle.js +26 -0
  95. package/dist/node_modules_music-metadata_lib_dsf_DsfParser_js.main-bundle.js +33 -0
  96. package/dist/node_modules_music-metadata_lib_wavpack_WavPackParser_js.main-bundle.js +26 -0
  97. package/dist/parser/parseExamStructure.d.ts +8 -1
  98. package/dist/parser/parseExamStructure.d.ts.map +1 -1
  99. package/dist/parser/parseExamStructure.js +1 -1
  100. package/dist/parser/parseExamStructure.js.map +1 -1
  101. package/dist/types/ExamAnswer.d.ts +5 -1
  102. package/dist/types/ExamAnswer.d.ts.map +1 -1
  103. package/dist/types/ExamServerAPI.d.ts +4 -0
  104. package/dist/types/ExamServerAPI.d.ts.map +1 -1
  105. package/dist/types/GradingStructure.d.ts +7 -1
  106. package/dist/types/GradingStructure.d.ts.map +1 -1
  107. package/dist/validateAnswers.d.ts.map +1 -1
  108. package/dist/validateAnswers.js +1 -0
  109. package/dist/validateAnswers.js.map +1 -1
  110. package/dist/vendors-node_modules_music-metadata_lib_asf_AsfParser_js.main-bundle.js +40 -0
  111. package/dist/vendors-node_modules_music-metadata_lib_flac_FlacParser_js.main-bundle.js +47 -0
  112. package/dist/vendors-node_modules_music-metadata_lib_id3v2_ID3v2Parser_js.main-bundle.js +26 -0
  113. package/dist/vendors-node_modules_music-metadata_lib_matroska_MatroskaParser_js.main-bundle.js +40 -0
  114. package/dist/vendors-node_modules_music-metadata_lib_mp4_MP4Parser_js.main-bundle.js +33 -0
  115. package/dist/vendors-node_modules_music-metadata_lib_mpeg_MpegParser_js.main-bundle.js +47 -0
  116. package/dist/vendors-node_modules_music-metadata_lib_musepack_MusepackParser_js.main-bundle.js +68 -0
  117. package/dist/vendors-node_modules_music-metadata_lib_ogg_OggParser_js.main-bundle.js +82 -0
  118. package/dist/vendors-node_modules_music-metadata_lib_wav_WaveParser_js.main-bundle.js +40 -0
  119. package/package.json +4 -3
  120. package/dist/__tests__/annotations.test.d.ts +0 -2
  121. package/dist/__tests__/annotations.test.d.ts.map +0 -1
  122. package/dist/__tests__/annotations.test.js +0 -306
  123. package/dist/__tests__/annotations.test.js.map +0 -1
  124. package/dist/__tests__/playwright/Annotations.test.d.ts +0 -2
  125. package/dist/__tests__/playwright/Annotations.test.d.ts.map +0 -1
  126. package/dist/__tests__/playwright/Annotations.test.js +0 -201
  127. package/dist/__tests__/playwright/Annotations.test.js.map +0 -1
  128. package/dist/__tests__/playwright/attachments/Attachments.test.d.ts +0 -2
  129. package/dist/__tests__/playwright/attachments/Attachments.test.d.ts.map +0 -1
  130. package/dist/__tests__/playwright/attachments/Attachments.test.js +0 -30
  131. package/dist/__tests__/playwright/attachments/Attachments.test.js.map +0 -1
  132. package/dist/__tests__/playwright/grading-instructions/GradingInstructions.test.d.ts +0 -2
  133. package/dist/__tests__/playwright/grading-instructions/GradingInstructions.test.d.ts.map +0 -1
  134. package/dist/__tests__/playwright/grading-instructions/GradingInstructions.test.js +0 -30
  135. package/dist/__tests__/playwright/grading-instructions/GradingInstructions.test.js.map +0 -1
  136. package/dist/__tests__/playwright/stories/Annotations.story.d.ts +0 -15
  137. package/dist/__tests__/playwright/stories/Annotations.story.d.ts.map +0 -1
  138. package/dist/__tests__/playwright/stories/Annotations.story.js +0 -27
  139. package/dist/__tests__/playwright/stories/Annotations.story.js.map +0 -1
  140. package/dist/__tests__/playwright/stories/attachments/Attachments.story.d.ts +0 -13
  141. package/dist/__tests__/playwright/stories/attachments/Attachments.story.d.ts.map +0 -1
  142. package/dist/__tests__/playwright/stories/attachments/Attachments.story.js +0 -17
  143. package/dist/__tests__/playwright/stories/attachments/Attachments.story.js.map +0 -1
  144. package/dist/__tests__/playwright/stories/grading-intructions/GradingInstructions.story.d.ts +0 -13
  145. package/dist/__tests__/playwright/stories/grading-intructions/GradingInstructions.story.d.ts.map +0 -1
  146. package/dist/__tests__/playwright/stories/grading-intructions/GradingInstructions.story.js +0 -16
  147. package/dist/__tests__/playwright/stories/grading-intructions/GradingInstructions.story.js.map +0 -1
  148. package/dist/assets/closeButton.svg +0 -1
  149. package/dist/assets/collapse.svg +0 -12
  150. package/dist/assets/expand.svg +0 -12
  151. package/dist/assets/helpButton.svg +0 -9
  152. package/dist/assets/redoButton.svg +0 -5
  153. package/dist/assets/undoButton.svg +0 -5
  154. package/dist/components/grading/examAnnotationUtils.d.ts +0 -4
  155. package/dist/components/grading/examAnnotationUtils.d.ts.map +0 -1
  156. package/dist/components/grading/examAnnotationUtils.js +0 -123
  157. package/dist/components/grading/examAnnotationUtils.js.map +0 -1
  158. package/dist/components/results/DNDAnswerContainer.d.ts +0 -4
  159. package/dist/components/results/DNDAnswerContainer.d.ts.map +0 -1
  160. package/dist/components/results/DNDAnswerContainer.js +0 -22
  161. package/dist/components/results/DNDAnswerContainer.js.map +0 -1
  162. package/dist/components/shared/AnnotatableText.d.ts +0 -5
  163. package/dist/components/shared/AnnotatableText.d.ts.map +0 -1
  164. package/dist/components/shared/AnnotatableText.js +0 -25
  165. package/dist/components/shared/AnnotatableText.js.map +0 -1
  166. package/dist/components/shared/AnnotationImageMark.d.ts +0 -16
  167. package/dist/components/shared/AnnotationImageMark.d.ts.map +0 -1
  168. package/dist/components/shared/AnnotationImageMark.js +0 -99
  169. package/dist/components/shared/AnnotationImageMark.js.map +0 -1
  170. package/dist/components/shared/AnnotationMark.d.ts +0 -9
  171. package/dist/components/shared/AnnotationMark.d.ts.map +0 -1
  172. package/dist/components/shared/AnnotationMark.js +0 -14
  173. package/dist/components/shared/AnnotationMark.js.map +0 -1
  174. package/dist/components/shared/AnnotationPopup.d.ts +0 -3
  175. package/dist/components/shared/AnnotationPopup.d.ts.map +0 -1
  176. package/dist/components/shared/AnnotationPopup.js +0 -24
  177. package/dist/components/shared/AnnotationPopup.js.map +0 -1
  178. package/dist/components/shared/AnnotationTextMark.d.ts +0 -11
  179. package/dist/components/shared/AnnotationTextMark.d.ts.map +0 -1
  180. package/dist/components/shared/AnnotationTextMark.js +0 -21
  181. package/dist/components/shared/AnnotationTextMark.js.map +0 -1
  182. package/dist/components/shared/markText.d.ts +0 -6
  183. package/dist/components/shared/markText.d.ts.map +0 -1
  184. package/dist/components/shared/markText.js +0 -77
  185. package/dist/components/shared/markText.js.map +0 -1
  186. package/dist/eslint.config.d.ts +0 -22
  187. package/dist/eslint.config.d.ts.map +0 -1
  188. package/dist/eslint.config.js +0 -31
  189. package/dist/eslint.config.js.map +0 -1
  190. package/dist/i18n/exam_titles_fi-FI.d.ts +0 -46
  191. package/dist/i18n/exam_titles_fi-FI.d.ts.map +0 -1
  192. package/dist/i18n/exam_titles_fi-FI.js +0 -46
  193. package/dist/i18n/exam_titles_fi-FI.js.map +0 -1
  194. package/dist/i18n/exam_titles_fi-FI.json +0 -45
  195. package/dist/i18n/exam_titles_sv-FI.d.ts +0 -46
  196. package/dist/i18n/exam_titles_sv-FI.d.ts.map +0 -1
  197. package/dist/i18n/exam_titles_sv-FI.js +0 -46
  198. package/dist/i18n/exam_titles_sv-FI.js.map +0 -1
  199. package/dist/i18n/exam_titles_sv-FI.json +0 -45
  200. package/dist/i18n/exams.d.ts +0 -11
  201. package/dist/i18n/exams.d.ts.map +0 -1
  202. package/dist/i18n/exams.js +0 -10
  203. package/dist/i18n/exams.js.map +0 -1
  204. package/dist/types/ExamAnnotations.d.ts +0 -46
  205. package/dist/types/ExamAnnotations.d.ts.map +0 -1
  206. package/dist/types/ExamAnnotations.js +0 -2
  207. package/dist/types/ExamAnnotations.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /*
3
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
4
+ * This devtool is neither made for production nor for readable output files.
5
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
6
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
+ * or disable the default devtool with "devtool: false".
8
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
+ */
10
+ (this["webpackChunkExamBundle"] = this["webpackChunkExamBundle"] || []).push([["vendors-node_modules_music-metadata_lib_ogg_OggParser_js"],{
11
+
12
+ /***/ "../../node_modules/music-metadata/lib/ogg/OggParser.js":
13
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
14
+
15
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OggContentError: () => (/* binding */ OggContentError),\n/* harmony export */ OggParser: () => (/* binding */ OggParser),\n/* harmony export */ SegmentTable: () => (/* binding */ SegmentTable)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var strtok3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/strtok3/lib/core.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../node_modules/debug/src/browser.js\");\n/* harmony import */ var _common_Util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/Util.js\");\n/* harmony import */ var _common_FourCC_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/FourCC.js\");\n/* harmony import */ var _common_BasicParser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/BasicParser.js\");\n/* harmony import */ var _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js\");\n/* harmony import */ var _opus_OpusParser_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/opus/OpusParser.js\");\n/* harmony import */ var _speex_SpeexParser_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/speex/SpeexParser.js\");\n/* harmony import */ var _theora_TheoraParser_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/theora/TheoraParser.js\");\n/* harmony import */ var _ParseError_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ParseError.js\");\n\n\n\n\n\n\n\n\n\n\n\nclass OggContentError extends (0,_ParseError_js__WEBPACK_IMPORTED_MODULE_10__.makeUnexpectedFileContentError)('Ogg') {\n}\nconst debug = debug__WEBPACK_IMPORTED_MODULE_2__('music-metadata:parser:ogg');\nclass SegmentTable {\n static sum(buf, off, len) {\n const dv = new DataView(buf.buffer, 0);\n let s = 0;\n for (let i = off; i < off + len; ++i) {\n s += dv.getUint8(i);\n }\n return s;\n }\n constructor(header) {\n this.len = header.page_segments;\n }\n get(buf, off) {\n return {\n totalPageSize: SegmentTable.sum(buf, off, this.len)\n };\n }\n}\n/**\n * Parser for Ogg logical bitstream framing\n */\nclass OggParser extends _common_BasicParser_js__WEBPACK_IMPORTED_MODULE_5__.BasicParser {\n constructor() {\n super(...arguments);\n this.header = null;\n this.pageNumber = 0;\n this.pageConsumer = null;\n }\n /**\n * Parse page\n * @returns {Promise<void>}\n */\n async parse() {\n debug('pos=%s, parsePage()', this.tokenizer.position);\n try {\n let header;\n do {\n header = await this.tokenizer.readToken(OggParser.Header);\n if (header.capturePattern !== 'OggS')\n throw new OggContentError('Invalid Ogg capture pattern');\n this.metadata.setFormat('container', 'Ogg');\n this.header = header;\n this.pageNumber = header.pageSequenceNo;\n debug('page#=%s, Ogg.id=%s', header.pageSequenceNo, header.capturePattern);\n const segmentTable = await this.tokenizer.readToken(new SegmentTable(header));\n debug('totalPageSize=%s', segmentTable.totalPageSize);\n const pageData = await this.tokenizer.readToken(new token_types__WEBPACK_IMPORTED_MODULE_0__.Uint8ArrayType(segmentTable.totalPageSize));\n debug('firstPage=%s, lastPage=%s, continued=%s', header.headerType.firstPage, header.headerType.lastPage, header.headerType.continued);\n if (header.headerType.firstPage) {\n const id = new TextDecoder('ascii').decode(pageData.subarray(0, 7));\n switch (id) {\n case '\\x01vorbis': // Ogg/Vorbis\n debug('Set page consumer to Ogg/Vorbis');\n this.pageConsumer = new _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_6__.VorbisParser(this.metadata, this.options);\n break;\n case 'OpusHea': // Ogg/Opus\n debug('Set page consumer to Ogg/Opus');\n this.pageConsumer = new _opus_OpusParser_js__WEBPACK_IMPORTED_MODULE_7__.OpusParser(this.metadata, this.options, this.tokenizer);\n break;\n case 'Speex ': // Ogg/Speex\n debug('Set page consumer to Ogg/Speex');\n this.pageConsumer = new _speex_SpeexParser_js__WEBPACK_IMPORTED_MODULE_8__.SpeexParser(this.metadata, this.options, this.tokenizer);\n break;\n case 'fishead':\n case '\\x00theora': // Ogg/Theora\n debug('Set page consumer to Ogg/Theora');\n this.pageConsumer = new _theora_TheoraParser_js__WEBPACK_IMPORTED_MODULE_9__.TheoraParser(this.metadata, this.options, this.tokenizer);\n break;\n default:\n throw new OggContentError(`gg audio-codec not recognized (id=${id})`);\n }\n }\n await this.pageConsumer.parsePage(header, pageData);\n } while (!header.headerType.lastPage);\n }\n catch (err) {\n if (err instanceof Error) {\n if (err instanceof strtok3__WEBPACK_IMPORTED_MODULE_1__.EndOfStreamError) {\n this.metadata.addWarning('Last OGG-page is not marked with last-page flag');\n debug(\"End-of-stream\");\n this.metadata.addWarning('Last OGG-page is not marked with last-page flag');\n if (this.header) {\n this.pageConsumer.calculateDuration(this.header);\n }\n }\n else if (err.message.startsWith('FourCC')) {\n if (this.pageNumber > 0) {\n // ignore this error: work-around if last OGG-page is not marked with last-page flag\n this.metadata.addWarning('Invalid FourCC ID, maybe last OGG-page is not marked with last-page flag');\n await this.pageConsumer.flush();\n }\n }\n }\n else\n throw err;\n }\n }\n}\nOggParser.Header = {\n len: 27,\n get: (buf, off) => {\n return {\n capturePattern: _common_FourCC_js__WEBPACK_IMPORTED_MODULE_4__.FourCcToken.get(buf, off),\n version: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 4),\n headerType: {\n continued: _common_Util_js__WEBPACK_IMPORTED_MODULE_3__.getBit(buf, off + 5, 0),\n firstPage: _common_Util_js__WEBPACK_IMPORTED_MODULE_3__.getBit(buf, off + 5, 1),\n lastPage: _common_Util_js__WEBPACK_IMPORTED_MODULE_3__.getBit(buf, off + 5, 2)\n },\n // packet_flag: Token.UINT8.get(buf, off + 5),\n absoluteGranulePosition: Number(token_types__WEBPACK_IMPORTED_MODULE_0__.UINT64_LE.get(buf, off + 6)),\n streamSerialNumber: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 14),\n pageSequenceNo: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 18),\n pageChecksum: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 22),\n page_segments: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 26)\n };\n }\n};\n//# sourceMappingURL=OggParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/OggParser.js?");
16
+
17
+ /***/ }),
18
+
19
+ /***/ "../../node_modules/music-metadata/lib/ogg/opus/Opus.js":
20
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
21
+
22
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IdHeader: () => (/* binding */ IdHeader),\n/* harmony export */ OpusContentError: () => (/* binding */ OpusContentError)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _ParseError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ParseError.js\");\n\n\nclass OpusContentError extends (0,_ParseError_js__WEBPACK_IMPORTED_MODULE_1__.makeUnexpectedFileContentError)('Opus') {\n}\n/**\n * Opus ID Header parser\n * Ref: https://wiki.xiph.org/OggOpus#ID_Header\n */\nclass IdHeader {\n constructor(len) {\n this.len = len;\n if (len < 19) {\n throw new OpusContentError('ID-header-page 0 should be at least 19 bytes long');\n }\n }\n get(buf, off) {\n return {\n magicSignature: new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(8, 'ascii').get(buf, off + 0),\n version: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 8),\n channelCount: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 9),\n preSkip: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off + 10),\n inputSampleRate: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 12),\n outputGain: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off + 16),\n channelMapping: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 18)\n };\n }\n}\n//# sourceMappingURL=Opus.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/opus/Opus.js?");
23
+
24
+ /***/ }),
25
+
26
+ /***/ "../../node_modules/music-metadata/lib/ogg/opus/OpusParser.js":
27
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
28
+
29
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OpusParser: () => (/* binding */ OpusParser)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js\");\n/* harmony import */ var _Opus_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/opus/Opus.js\");\n\n\n\n\n/**\n * Opus parser\n * Internet Engineering Task Force (IETF) - RFC 6716\n * Used by OggParser\n */\nclass OpusParser extends _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_1__.VorbisParser {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.tokenizer = tokenizer;\n this.idHeader = null;\n this.lastPos = -1;\n }\n /**\n * Parse first Opus Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(header, pageData) {\n this.metadata.setFormat('codec', 'Opus');\n // Parse Opus ID Header\n this.idHeader = new _Opus_js__WEBPACK_IMPORTED_MODULE_2__.IdHeader(pageData.length).get(pageData, 0);\n if (this.idHeader.magicSignature !== \"OpusHead\")\n throw new _Opus_js__WEBPACK_IMPORTED_MODULE_2__.OpusContentError(\"Illegal ogg/Opus magic-signature\");\n this.metadata.setFormat('sampleRate', this.idHeader.inputSampleRate);\n this.metadata.setFormat('numberOfChannels', this.idHeader.channelCount);\n }\n async parseFullPage(pageData) {\n const magicSignature = new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(8, 'ascii').get(pageData, 0);\n switch (magicSignature) {\n case 'OpusTags':\n await this.parseUserCommentList(pageData, 8);\n this.lastPos = this.tokenizer.position - pageData.length;\n break;\n default:\n break;\n }\n }\n calculateDuration(header) {\n if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {\n // Calculate duration\n const pos_48bit = header.absoluteGranulePosition - this.idHeader.preSkip;\n this.metadata.setFormat('numberOfSamples', pos_48bit);\n this.metadata.setFormat('duration', pos_48bit / 48000);\n if (this.lastPos !== -1 && this.tokenizer.fileInfo.size && this.metadata.format.duration) {\n const dataSize = this.tokenizer.fileInfo.size - this.lastPos;\n this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n }\n }\n }\n}\n//# sourceMappingURL=OpusParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/opus/OpusParser.js?");
30
+
31
+ /***/ }),
32
+
33
+ /***/ "../../node_modules/music-metadata/lib/ogg/speex/Speex.js":
34
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
35
+
36
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Header: () => (/* binding */ Header)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _common_Util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/Util.js\");\n\n\n/**\n * Speex Header Packet\n * Ref: https://www.speex.org/docs/manual/speex-manual/node8.html#SECTION00830000000000000000\n */\nconst Header = {\n len: 80,\n get: (buf, off) => {\n return {\n speex: new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(8, 'ascii').get(buf, off + 0),\n version: _common_Util_js__WEBPACK_IMPORTED_MODULE_1__.trimRightNull(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(20, 'ascii').get(buf, off + 8)),\n version_id: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 28),\n header_size: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 32),\n rate: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 36),\n mode: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 40),\n mode_bitstream_version: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 44),\n nb_channels: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 48),\n bitrate: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 52),\n frame_size: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 56),\n vbr: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 60),\n frames_per_packet: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 64),\n extra_headers: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 68),\n reserved1: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 72),\n reserved2: token_types__WEBPACK_IMPORTED_MODULE_0__.INT32_LE.get(buf, off + 76)\n };\n }\n};\n//# sourceMappingURL=Speex.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/speex/Speex.js?");
37
+
38
+ /***/ }),
39
+
40
+ /***/ "../../node_modules/music-metadata/lib/ogg/speex/SpeexParser.js":
41
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
42
+
43
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SpeexParser: () => (/* binding */ SpeexParser)\n/* harmony export */ });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/debug/src/browser.js\");\n/* harmony import */ var _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js\");\n/* harmony import */ var _Speex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/speex/Speex.js\");\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_0__('music-metadata:parser:ogg:speex');\n/**\n * Speex, RFC 5574\n * Ref:\n * - https://www.speex.org/docs/manual/speex-manual/\n * - https://tools.ietf.org/html/rfc5574\n */\nclass SpeexParser extends _vorbis_VorbisParser_js__WEBPACK_IMPORTED_MODULE_1__.VorbisParser {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.tokenizer = tokenizer;\n }\n /**\n * Parse first Speex Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(header, pageData) {\n debug('First Ogg/Speex page');\n const speexHeader = _Speex_js__WEBPACK_IMPORTED_MODULE_2__.Header.get(pageData, 0);\n this.metadata.setFormat('codec', `Speex ${speexHeader.version}`);\n this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);\n this.metadata.setFormat('sampleRate', speexHeader.rate);\n if (speexHeader.bitrate !== -1) {\n this.metadata.setFormat('bitrate', speexHeader.bitrate);\n }\n }\n}\n//# sourceMappingURL=SpeexParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/speex/SpeexParser.js?");
44
+
45
+ /***/ }),
46
+
47
+ /***/ "../../node_modules/music-metadata/lib/ogg/theora/Theora.js":
48
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
49
+
50
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IdentificationHeader: () => (/* binding */ IdentificationHeader)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n\n/**\n * 6.2 Identification Header\n * Ref: https://theora.org/doc/Theora.pdf: 6.2 Identification Header Decode\n */\nconst IdentificationHeader = {\n len: 42,\n get: (buf, off) => {\n return {\n id: new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(7, 'ascii').get(buf, off),\n vmaj: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 7),\n vmin: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 8),\n vrev: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 9),\n vmbw: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_BE.get(buf, off + 10),\n vmbh: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_BE.get(buf, off + 17),\n nombr: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT24_BE.get(buf, off + 37),\n nqual: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off + 40)\n };\n }\n};\n//# sourceMappingURL=Theora.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/theora/Theora.js?");
51
+
52
+ /***/ }),
53
+
54
+ /***/ "../../node_modules/music-metadata/lib/ogg/theora/TheoraParser.js":
55
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
56
+
57
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TheoraParser: () => (/* binding */ TheoraParser)\n/* harmony export */ });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/debug/src/browser.js\");\n/* harmony import */ var _Theora_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/theora/Theora.js\");\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_0__('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://theora.org/doc/Theora.pdf\n */\nclass TheoraParser {\n constructor(metadata, options, tokenizer) {\n this.metadata = metadata;\n this.tokenizer = tokenizer;\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n await this.parseFirstPage(header, pageData);\n }\n }\n async flush() {\n debug('flush');\n }\n calculateDuration(header) {\n debug('duration calculation not implemented');\n }\n /**\n * Parse first Theora Ogg page. the initial identification header packet\n * @param {IPageHeader} header\n * @param {Buffer} pageData\n */\n async parseFirstPage(header, pageData) {\n debug('First Ogg/Theora page');\n this.metadata.setFormat('codec', 'Theora');\n const idHeader = _Theora_js__WEBPACK_IMPORTED_MODULE_1__.IdentificationHeader.get(pageData, 0);\n this.metadata.setFormat('bitrate', idHeader.nombr);\n }\n}\n//# sourceMappingURL=TheoraParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/theora/TheoraParser.js?");
58
+
59
+ /***/ }),
60
+
61
+ /***/ "../../node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js":
62
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
63
+
64
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CommonHeader: () => (/* binding */ CommonHeader),\n/* harmony export */ IdentificationHeader: () => (/* binding */ IdentificationHeader),\n/* harmony export */ VorbisPictureToken: () => (/* binding */ VorbisPictureToken)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _id3v2_ID3v2Token_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/id3v2/ID3v2Token.js\");\n\n\n/**\n * Parse the METADATA_BLOCK_PICTURE\n * Ref: https://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE\n * Ref: https://xiph.org/flac/format.html#metadata_block_picture\n * // ToDo: move to ID3 / APIC?\n */\nclass VorbisPictureToken {\n static fromBase64(base64str) {\n return VorbisPictureToken.fromBuffer(Uint8Array.from(atob(base64str), c => c.charCodeAt(0)));\n }\n static fromBuffer(buffer) {\n const pic = new VorbisPictureToken(buffer.length);\n return pic.get(buffer, 0);\n }\n constructor(len) {\n this.len = len;\n }\n get(buffer, offset) {\n const type = _id3v2_ID3v2Token_js__WEBPACK_IMPORTED_MODULE_1__.AttachedPictureType[token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset)];\n offset += 4;\n const mimeLen = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const format = new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(mimeLen, 'utf-8').get(buffer, offset);\n offset += mimeLen;\n const descLen = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const description = new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(descLen, 'utf-8').get(buffer, offset);\n offset += descLen;\n const width = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const height = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const colour_depth = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const indexed_color = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const picDataLen = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_BE.get(buffer, offset);\n offset += 4;\n const data = Uint8Array.from(buffer.slice(offset, offset + picDataLen));\n return {\n type,\n format,\n description,\n width,\n height,\n colour_depth,\n indexed_color,\n data\n };\n }\n}\n/**\n * Comment header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-620004.2.1\n */\nconst CommonHeader = {\n len: 7,\n get: (buf, off) => {\n return {\n packetType: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(buf, off),\n vorbis: new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(6, 'ascii').get(buf, off + 1)\n };\n }\n};\n/**\n * Identification header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-630004.2.2\n */\nconst IdentificationHeader = {\n len: 23,\n get: (uint8Array, off) => {\n return {\n version: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8Array, off + 0),\n channelMode: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT8.get(uint8Array, off + 4),\n sampleRate: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8Array, off + 5),\n bitrateMax: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8Array, off + 9),\n bitrateNominal: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8Array, off + 13),\n bitrateMin: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8Array, off + 17)\n };\n }\n};\n//# sourceMappingURL=Vorbis.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js?");
65
+
66
+ /***/ }),
67
+
68
+ /***/ "../../node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js":
69
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
70
+
71
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VorbisDecoder: () => (/* binding */ VorbisDecoder)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n\nclass VorbisDecoder {\n constructor(data, offset) {\n this.data = data;\n this.offset = offset;\n }\n readInt32() {\n const value = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(this.data, this.offset);\n this.offset += 4;\n return value;\n }\n readStringUtf8() {\n const len = this.readInt32();\n const value = new TextDecoder('utf-8').decode(this.data.subarray(this.offset, this.offset + len));\n this.offset += len;\n return value;\n }\n parseUserComment() {\n const offset0 = this.offset;\n const v = this.readStringUtf8();\n const idx = v.indexOf('=');\n return {\n key: v.slice(0, idx).toUpperCase(),\n value: v.slice(idx + 1),\n len: this.offset - offset0\n };\n }\n}\n//# sourceMappingURL=VorbisDecoder.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js?");
72
+
73
+ /***/ }),
74
+
75
+ /***/ "../../node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js":
76
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
77
+
78
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VorbisContentError: () => (/* binding */ VorbisContentError),\n/* harmony export */ VorbisParser: () => (/* binding */ VorbisParser)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/debug/src/browser.js\");\n/* harmony import */ var _VorbisDecoder_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js\");\n/* harmony import */ var _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js\");\n/* harmony import */ var _ParseError_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ParseError.js\");\n\n\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_1__('music-metadata:parser:ogg:vorbis1');\nclass VorbisContentError extends (0,_ParseError_js__WEBPACK_IMPORTED_MODULE_4__.makeUnexpectedFileContentError)('Vorbis') {\n}\n/**\n * Vorbis 1 Parser.\n * Used by OggParser\n */\nclass VorbisParser {\n constructor(metadata, options) {\n this.metadata = metadata;\n this.options = options;\n this.pageSegments = [];\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n this.parseFirstPage(header, pageData);\n }\n else {\n if (header.headerType.continued) {\n if (this.pageSegments.length === 0) {\n throw new VorbisContentError('Cannot continue on previous page');\n }\n this.pageSegments.push(pageData);\n }\n if (header.headerType.lastPage || !header.headerType.continued) {\n // Flush page segments\n if (this.pageSegments.length > 0) {\n const fullPage = VorbisParser.mergeUint8Arrays(this.pageSegments);\n await this.parseFullPage(fullPage);\n }\n // Reset page segments\n this.pageSegments = header.headerType.lastPage ? [] : [pageData];\n }\n }\n if (header.headerType.lastPage) {\n this.calculateDuration(header);\n }\n }\n static mergeUint8Arrays(arrays) {\n const totalSize = arrays.reduce((acc, e) => acc + e.length, 0);\n const merged = new Uint8Array(totalSize);\n arrays.forEach((array, i, _arrays) => {\n const offset = _arrays.slice(0, i).reduce((acc, e) => acc + e.length, 0);\n merged.set(array, offset);\n });\n return merged;\n }\n async flush() {\n await this.parseFullPage(VorbisParser.mergeUint8Arrays(this.pageSegments));\n }\n async parseUserComment(pageData, offset) {\n const decoder = new _VorbisDecoder_js__WEBPACK_IMPORTED_MODULE_2__.VorbisDecoder(pageData, offset);\n const tag = decoder.parseUserComment();\n await this.addTag(tag.key, tag.value);\n return tag.len;\n }\n async addTag(id, value) {\n if (id === 'METADATA_BLOCK_PICTURE' && (typeof value === 'string')) {\n if (this.options.skipCovers) {\n debug(\"Ignore picture\");\n return;\n }\n value = _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.VorbisPictureToken.fromBase64(value);\n debug(`Push picture: id=${id}, format=${value.format}`);\n }\n else {\n debug(`Push tag: id=${id}, value=${value}`);\n }\n await this.metadata.addTag('vorbis', id, value);\n }\n calculateDuration(header) {\n if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {\n // Calculate duration\n this.metadata.setFormat('numberOfSamples', header.absoluteGranulePosition);\n this.metadata.setFormat('duration', header.absoluteGranulePosition / this.metadata.format.sampleRate);\n }\n }\n /**\n * Parse first Ogg/Vorbis page\n * @param header\n * @param pageData\n */\n parseFirstPage(header, pageData) {\n this.metadata.setFormat('codec', 'Vorbis I');\n debug('Parse first page');\n // Parse Vorbis common header\n const commonHeader = _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.CommonHeader.get(pageData, 0);\n if (commonHeader.vorbis !== 'vorbis')\n throw new VorbisContentError('Metadata does not look like Vorbis');\n if (commonHeader.packetType === 1) {\n const idHeader = _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.IdentificationHeader.get(pageData, _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.CommonHeader.len);\n this.metadata.setFormat('sampleRate', idHeader.sampleRate);\n this.metadata.setFormat('bitrate', idHeader.bitrateNominal);\n this.metadata.setFormat('numberOfChannels', idHeader.channelMode);\n debug('sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s', idHeader.sampleRate, idHeader.bitrateNominal, idHeader.channelMode);\n }\n else\n throw new VorbisContentError('First Ogg page should be type 1: the identification header');\n }\n async parseFullPage(pageData) {\n // New page\n const commonHeader = _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.CommonHeader.get(pageData, 0);\n debug('Parse full page: type=%s, byteLength=%s', commonHeader.packetType, pageData.byteLength);\n switch (commonHeader.packetType) {\n case 3: // type 3: comment header\n return this.parseUserCommentList(pageData, _Vorbis_js__WEBPACK_IMPORTED_MODULE_3__.CommonHeader.len);\n case 1: // type 1: the identification header\n case 5: // type 5: setup header type\n break; // ignore\n }\n }\n /**\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-840005.2\n */\n async parseUserCommentList(pageData, offset) {\n const strLen = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(pageData, offset);\n offset += 4;\n // const vendorString = new Token.StringType(strLen, 'utf-8').get(pageData, offset);\n offset += strLen;\n let userCommentListLength = token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(pageData, offset);\n offset += 4;\n while (userCommentListLength-- > 0) {\n offset += (await this.parseUserComment(pageData, offset));\n }\n }\n}\n//# sourceMappingURL=VorbisParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js?");
79
+
80
+ /***/ })
81
+
82
+ }]);
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /*
3
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
4
+ * This devtool is neither made for production nor for readable output files.
5
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
6
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
+ * or disable the default devtool with "devtool: false".
8
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
+ */
10
+ (this["webpackChunkExamBundle"] = this["webpackChunkExamBundle"] || []).push([["vendors-node_modules_music-metadata_lib_wav_WaveParser_js"],{
11
+
12
+ /***/ "../../node_modules/music-metadata/lib/riff/RiffChunk.js":
13
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
14
+
15
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Header: () => (/* binding */ Header),\n/* harmony export */ ListInfoTagValue: () => (/* binding */ ListInfoTagValue)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n\n/**\n * Common RIFF chunk header\n */\nconst Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(4, 'latin1').get(buf, off),\n // Size\n chunkSize: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 4)\n };\n }\n};\n/**\n * Token to parse RIFF-INFO tag value\n */\nclass ListInfoTagValue {\n constructor(tagHeader) {\n this.tagHeader = tagHeader;\n this.len = tagHeader.chunkSize;\n this.len += this.len & 1; // if it is an odd length, round up to even\n }\n get(buf, off) {\n return new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(this.tagHeader.chunkSize, 'ascii').get(buf, off);\n }\n}\n//# sourceMappingURL=RiffChunk.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/riff/RiffChunk.js?");
16
+
17
+ /***/ }),
18
+
19
+ /***/ "../../node_modules/music-metadata/lib/wav/BwfChunk.js":
20
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
21
+
22
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BroadcastAudioExtensionChunk: () => (/* binding */ BroadcastAudioExtensionChunk)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _common_Util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/Util.js\");\n\n\n/**\n * Broadcast Audio Extension Chunk\n * Ref: https://tech.ebu.ch/docs/tech/tech3285.pdf\n */\nconst BroadcastAudioExtensionChunk = {\n len: 420,\n get: (uint8array, off) => {\n return {\n description: (0,_common_Util_js__WEBPACK_IMPORTED_MODULE_1__.stripNulls)(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(256, 'ascii').get(uint8array, off)).trim(),\n originator: (0,_common_Util_js__WEBPACK_IMPORTED_MODULE_1__.stripNulls)(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(32, 'ascii').get(uint8array, off + 256)).trim(),\n originatorReference: (0,_common_Util_js__WEBPACK_IMPORTED_MODULE_1__.stripNulls)(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(32, 'ascii').get(uint8array, off + 288)).trim(),\n originationDate: (0,_common_Util_js__WEBPACK_IMPORTED_MODULE_1__.stripNulls)(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(10, 'ascii').get(uint8array, off + 320)).trim(),\n originationTime: (0,_common_Util_js__WEBPACK_IMPORTED_MODULE_1__.stripNulls)(new token_types__WEBPACK_IMPORTED_MODULE_0__.StringType(8, 'ascii').get(uint8array, off + 330)).trim(),\n timeReferenceLow: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8array, off + 338),\n timeReferenceHigh: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(uint8array, off + 342),\n version: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(uint8array, off + 346),\n umid: new token_types__WEBPACK_IMPORTED_MODULE_0__.Uint8ArrayType(64).get(uint8array, off + 348),\n loudnessValue: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(uint8array, off + 412),\n maxTruePeakLevel: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(uint8array, off + 414),\n maxMomentaryLoudness: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(uint8array, off + 416),\n maxShortTermLoudness: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(uint8array, off + 418)\n };\n }\n};\n//# sourceMappingURL=BwfChunk.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/wav/BwfChunk.js?");
23
+
24
+ /***/ }),
25
+
26
+ /***/ "../../node_modules/music-metadata/lib/wav/WaveChunk.js":
27
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
28
+
29
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FactChunk: () => (/* binding */ FactChunk),\n/* harmony export */ Format: () => (/* binding */ Format),\n/* harmony export */ WaveContentError: () => (/* binding */ WaveContentError),\n/* harmony export */ WaveFormat: () => (/* binding */ WaveFormat)\n/* harmony export */ });\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var _ParseError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/music-metadata/lib/ParseError.js\");\n\n\nclass WaveContentError extends (0,_ParseError_js__WEBPACK_IMPORTED_MODULE_1__.makeUnexpectedFileContentError)('Wave') {\n}\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx\n */\nvar WaveFormat;\n(function (WaveFormat) {\n WaveFormat[WaveFormat[\"PCM\"] = 1] = \"PCM\";\n // MPEG-4 and AAC Audio Types\n WaveFormat[WaveFormat[\"ADPCM\"] = 2] = \"ADPCM\";\n WaveFormat[WaveFormat[\"IEEE_FLOAT\"] = 3] = \"IEEE_FLOAT\";\n WaveFormat[WaveFormat[\"MPEG_ADTS_AAC\"] = 5632] = \"MPEG_ADTS_AAC\";\n WaveFormat[WaveFormat[\"MPEG_LOAS\"] = 5634] = \"MPEG_LOAS\";\n WaveFormat[WaveFormat[\"RAW_AAC1\"] = 255] = \"RAW_AAC1\";\n // Dolby Audio Types\n WaveFormat[WaveFormat[\"DOLBY_AC3_SPDIF\"] = 146] = \"DOLBY_AC3_SPDIF\";\n WaveFormat[WaveFormat[\"DVM\"] = 8192] = \"DVM\";\n WaveFormat[WaveFormat[\"RAW_SPORT\"] = 576] = \"RAW_SPORT\";\n WaveFormat[WaveFormat[\"ESST_AC3\"] = 577] = \"ESST_AC3\";\n WaveFormat[WaveFormat[\"DRM\"] = 9] = \"DRM\";\n WaveFormat[WaveFormat[\"DTS2\"] = 8193] = \"DTS2\";\n WaveFormat[WaveFormat[\"MPEG\"] = 80] = \"MPEG\";\n})(WaveFormat || (WaveFormat = {}));\n/**\n * format chunk; chunk-id is \"fmt \"\n * http://soundfile.sapp.org/doc/WaveFormat/\n */\nclass Format {\n constructor(header) {\n if (header.chunkSize < 16)\n throw new WaveContentError('Invalid chunk size');\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n wFormatTag: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off),\n nChannels: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off + 2),\n nSamplesPerSec: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 4),\n nAvgBytesPerSec: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off + 8),\n nBlockAlign: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off + 12),\n wBitsPerSample: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT16_LE.get(buf, off + 14)\n };\n }\n}\n/**\n * Fact chunk; chunk-id is \"fact\"\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html\n * http://www.recordingblogs.com/wiki/fact-chunk-of-a-wave-file\n */\nclass FactChunk {\n constructor(header) {\n if (header.chunkSize < 4) {\n throw new WaveContentError('Invalid fact chunk size.');\n }\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n dwSampleLength: token_types__WEBPACK_IMPORTED_MODULE_0__.UINT32_LE.get(buf, off)\n };\n }\n}\n//# sourceMappingURL=WaveChunk.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/wav/WaveChunk.js?");
30
+
31
+ /***/ }),
32
+
33
+ /***/ "../../node_modules/music-metadata/lib/wav/WaveParser.js":
34
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
35
+
36
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WaveParser: () => (/* binding */ WaveParser)\n/* harmony export */ });\n/* harmony import */ var strtok3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../node_modules/strtok3/lib/core.js\");\n/* harmony import */ var token_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../node_modules/token-types/lib/index.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../node_modules/debug/src/browser.js\");\n/* harmony import */ var _riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../node_modules/music-metadata/lib/riff/RiffChunk.js\");\n/* harmony import */ var _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../node_modules/music-metadata/lib/wav/WaveChunk.js\");\n/* harmony import */ var _id3v2_ID3v2Parser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"../../node_modules/music-metadata/lib/id3v2/ID3v2Parser.js\");\n/* harmony import */ var _common_Util_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/Util.js\");\n/* harmony import */ var _common_FourCC_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/FourCC.js\");\n/* harmony import */ var _common_BasicParser_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"../../node_modules/music-metadata/lib/common/BasicParser.js\");\n/* harmony import */ var _BwfChunk_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\"../../node_modules/music-metadata/lib/wav/BwfChunk.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_2__('music-metadata:parser:RIFF');\n/**\n * Resource Interchange File Format (RIFF) Parser\n *\n * WAVE PCM soundfile format\n *\n * Ref:\n * - http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html\n * - http://soundfile.sapp.org/doc/WaveFormat\n *\n * ToDo: Split WAVE part from RIFF parser\n */\nclass WaveParser extends _common_BasicParser_js__WEBPACK_IMPORTED_MODULE_8__.BasicParser {\n constructor() {\n super(...arguments);\n this.blockAlign = 0;\n }\n async parse() {\n const riffHeader = await this.tokenizer.readToken(_riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.Header);\n debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);\n if (riffHeader.chunkID !== 'RIFF')\n return; // Not RIFF format\n return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {\n if (!(err instanceof strtok3__WEBPACK_IMPORTED_MODULE_0__.EndOfStreamError)) {\n throw err;\n }\n });\n }\n async parseRiffChunk(chunkSize) {\n const type = await this.tokenizer.readToken(_common_FourCC_js__WEBPACK_IMPORTED_MODULE_7__.FourCcToken);\n this.metadata.setFormat('container', type);\n switch (type) {\n case 'WAVE':\n return this.readWaveChunk(chunkSize - _common_FourCC_js__WEBPACK_IMPORTED_MODULE_7__.FourCcToken.len);\n default:\n throw new _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__.WaveContentError(`Unsupported RIFF format: RIFF/${type}`);\n }\n }\n async readWaveChunk(remaining) {\n while (remaining >= _riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.Header.len) {\n const header = await this.tokenizer.readToken(_riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.Header);\n remaining -= _riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.Header.len + header.chunkSize;\n if (header.chunkSize > remaining) {\n this.metadata.addWarning('Data chunk size exceeds file size');\n }\n this.header = header;\n debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);\n switch (header.chunkID) {\n case 'LIST':\n await this.parseListTag(header);\n break;\n case 'fact': // extended Format chunk,\n this.metadata.setFormat('lossless', false);\n this.fact = await this.tokenizer.readToken(new _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__.FactChunk(header));\n break;\n case 'fmt ': { // The Util Chunk, non-PCM Formats\n const fmt = await this.tokenizer.readToken(new _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__.Format(header));\n let subFormat = _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__.WaveFormat[fmt.wFormatTag];\n if (!subFormat) {\n debug(`WAVE/non-PCM format=${fmt.wFormatTag}`);\n subFormat = `non-PCM (${fmt.wFormatTag})`;\n }\n this.metadata.setFormat('codec', subFormat);\n this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);\n this.metadata.setFormat('sampleRate', fmt.nSamplesPerSec);\n this.metadata.setFormat('numberOfChannels', fmt.nChannels);\n this.metadata.setFormat('bitrate', fmt.nBlockAlign * fmt.nSamplesPerSec * 8);\n this.blockAlign = fmt.nBlockAlign;\n break;\n }\n case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data\n case 'ID3 ': { // The way Mp3Tags stores ID3 meta-data\n const id3_data = await this.tokenizer.readToken(new token_types__WEBPACK_IMPORTED_MODULE_1__.Uint8ArrayType(header.chunkSize));\n const rst = strtok3__WEBPACK_IMPORTED_MODULE_0__.fromBuffer(id3_data);\n await new _id3v2_ID3v2Parser_js__WEBPACK_IMPORTED_MODULE_5__.ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n }\n case 'data': { // PCM-data\n if (this.metadata.format.lossless !== false) {\n this.metadata.setFormat('lossless', true);\n }\n let chunkSize = header.chunkSize;\n if (this.tokenizer.fileInfo.size) {\n const calcRemaining = this.tokenizer.fileInfo.size - this.tokenizer.position;\n if (calcRemaining < chunkSize) {\n this.metadata.addWarning('data chunk length exceeding file length');\n chunkSize = calcRemaining;\n }\n }\n const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);\n if (numberOfSamples) {\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (this.metadata.format.sampleRate) {\n this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);\n }\n }\n if (this.metadata.format.codec === 'ADPCM') { // ADPCM is 4 bits lossy encoding resulting in 352kbps\n this.metadata.setFormat('bitrate', 352000);\n }\n else if (this.metadata.format.sampleRate) {\n this.metadata.setFormat('bitrate', this.blockAlign * this.metadata.format.sampleRate * 8);\n }\n await this.tokenizer.ignore(header.chunkSize);\n break;\n }\n case 'bext': { // Broadcast Audio Extension chunk\thttps://tech.ebu.ch/docs/tech/tech3285.pdf\n const bext = await this.tokenizer.readToken(_BwfChunk_js__WEBPACK_IMPORTED_MODULE_9__.BroadcastAudioExtensionChunk);\n Object.keys(bext).forEach(key => {\n this.metadata.addTag('exif', `bext.${key}`, bext[key]);\n });\n const bextRemaining = header.chunkSize - _BwfChunk_js__WEBPACK_IMPORTED_MODULE_9__.BroadcastAudioExtensionChunk.len;\n await this.tokenizer.ignore(bextRemaining);\n break;\n }\n case '\\x00\\x00\\x00\\x00': // padding ??\n debug(`Ignore padding chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n break;\n default:\n debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n }\n if (this.header.chunkSize % 2 === 1) {\n debug('Read odd padding byte'); // https://wiki.multimedia.cx/index.php/RIFF\n await this.tokenizer.ignore(1);\n }\n }\n }\n async parseListTag(listHeader) {\n const listType = await this.tokenizer.readToken(new token_types__WEBPACK_IMPORTED_MODULE_1__.StringType(4, 'latin1'));\n debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);\n switch (listType) {\n case 'INFO':\n return this.parseRiffInfoTags(listHeader.chunkSize - 4);\n default:\n this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${listType}`);\n debug(`Ignoring chunkID=RIFF/WAVE/LIST/${listType}`);\n return this.tokenizer.ignore(listHeader.chunkSize - 4).then();\n }\n }\n async parseRiffInfoTags(chunkSize) {\n while (chunkSize >= 8) {\n const header = await this.tokenizer.readToken(_riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.Header);\n const valueToken = new _riff_RiffChunk_js__WEBPACK_IMPORTED_MODULE_3__.ListInfoTagValue(header);\n const value = await this.tokenizer.readToken(valueToken);\n this.addTag(header.chunkID, _common_Util_js__WEBPACK_IMPORTED_MODULE_6__.stripNulls(value));\n chunkSize -= (8 + valueToken.len);\n }\n if (chunkSize !== 0) {\n throw new _WaveChunk_js__WEBPACK_IMPORTED_MODULE_4__.WaveContentError(`Illegal remaining size: ${chunkSize}`);\n }\n }\n addTag(id, value) {\n this.metadata.addTag('exif', id, value);\n }\n}\n//# sourceMappingURL=WaveParser.js.map\n\n//# sourceURL=webpack://ExamBundle/../../node_modules/music-metadata/lib/wav/WaveParser.js?");
37
+
38
+ /***/ })
39
+
40
+ }]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digabi/exam-engine-core",
3
- "version": "23.8.1",
3
+ "version": "23.8.2-alpha.0",
4
4
  "main": "dist/main-bundle.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Matriculation Examination Board, Finland",
@@ -46,12 +46,13 @@
46
46
  "react-css-transition-replace": "^5.0.1",
47
47
  "react-dom": "^18.2.0",
48
48
  "react-i18next": "^15.0.0",
49
+ "react-media-recorder": "^1.7.1",
49
50
  "react-redux": "^9.1.0",
50
51
  "react-test-renderer": "^18.2.0",
51
52
  "redux": "^5.0.1",
52
53
  "redux-saga": "^1.2.3",
53
54
  "redux-saga-test-plan": "^4.0.6",
54
- "rich-text-editor": "8.3.0",
55
+ "rich-text-editor": "8.3.1",
55
56
  "sanitize-html": "^2.0.0",
56
57
  "typesafe-actions": "^5.1.0",
57
58
  "utility-types": "^3.10.0",
@@ -60,5 +61,5 @@
60
61
  "webpack-bundle-analyzer": "^4.1.0",
61
62
  "webpack-cli": "^6.0.0"
62
63
  },
63
- "gitHead": "c1de096c3504f3038a7d365ff8406f2840646741"
64
+ "gitHead": "140db0f227850fcff6089ae00b423b67ad479b93"
64
65
  }
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=annotations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotations.test.d.ts","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"AAEA,OAAO,2BAA2B,CAAA"}
@@ -1,306 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const exam_engine_exams_1 = require("@digabi/exam-engine-exams");
7
- const exam_engine_mastering_1 = require("@digabi/exam-engine-mastering");
8
- require("@testing-library/jest-dom");
9
- const react_1 = require("@testing-library/react");
10
- const user_event_1 = __importDefault(require("@testing-library/user-event"));
11
- const fs_1 = require("fs");
12
- const path_1 = __importDefault(require("path"));
13
- const react_2 = __importDefault(require("react"));
14
- const parseExam_1 = __importDefault(require("../dist/parser/parseExam"));
15
- const Attachments_1 = __importDefault(require("../src/components/attachments/Attachments"));
16
- const Exam_1 = __importDefault(require("../src/components/exam/Exam"));
17
- const GradingInstructions_1 = __importDefault(require("../src/components/grading-instructions/GradingInstructions"));
18
- const examServerApi_1 = require("./examServerApi");
19
- const lodash_1 = require("lodash");
20
- class IntersectionObserver {
21
- constructor() {
22
- this.root = null;
23
- this.rootMargin = '';
24
- this.thresholds = [];
25
- this.disconnect = () => null;
26
- this.observe = () => null;
27
- this.takeRecords = () => [];
28
- this.unobserve = () => null;
29
- }
30
- }
31
- window.IntersectionObserver = IntersectionObserver;
32
- global.IntersectionObserver = IntersectionObserver;
33
- window.scrollTo = jest.fn();
34
- document.execCommand = jest.fn();
35
- describe('Annotations', () => {
36
- let doc;
37
- beforeEach(async () => {
38
- window.getSelection = jest.fn();
39
- const examPath = (0, exam_engine_exams_1.resolveExam)('FF/FF.xml');
40
- const resolveAttachment = (filename) => path_1.default.resolve(path_1.default.dirname(examPath), 'attachments', filename);
41
- const source = await fs_1.promises.readFile(examPath, 'utf-8');
42
- const results = await (0, exam_engine_mastering_1.masterExam)(source, () => '', (0, exam_engine_mastering_1.getMediaMetadataFromLocalFile)(resolveAttachment), {
43
- removeCorrectAnswers: false
44
- });
45
- doc = (0, parseExam_1.default)(results[0].xml, true);
46
- });
47
- afterEach(() => {
48
- ;
49
- window.getSelection.mockReset();
50
- window.scrollTo.mockReset();
51
- document.execCommand.mockReset();
52
- });
53
- // Do NOT modify the line breaks and indentations below
54
- const defaultTextToAnnotate = `
55
- Valitse jokin pienempi tai suurempi yhteisö – esimerkiksi jokin koulu, katsomuksellinen ryhmä tai valtio –
56
- ja pohdi, mikä ero valitsemassasi yhteisössä on moraalin ja tapojen välillä.
57
- `;
58
- const defaultAnnotationAnchor = 'e:exam:0 > e:section:1 > e:question:2 > e:question-instruction:1 > span:0 > p:1 > #text:0';
59
- it('popup is rendered', async () => {
60
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: [], onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
61
- await annotateText(exam, defaultAnnotationAnchor);
62
- expect(exam.getByTestId('e-popup')).toBeVisible();
63
- });
64
- it('popup is not rendered if annotation props are not passed', async () => {
65
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps() }));
66
- const text = 'Sekä moraali että tavat pyrkivät ohjaamaan ihmisten käyttäytymistä.';
67
- const textElement = exam.getByText(text);
68
- mockWindowSelection(text, textElement, text.length);
69
- await user_event_1.default.click(textElement);
70
- expect(exam.queryByTestId('e-popup')).not.toBeInTheDocument();
71
- });
72
- it('callback is called when annotation is saved', async () => {
73
- const saveAnnotationMock = jest.fn();
74
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: [], onClickAnnotation: () => { }, onSaveAnnotation: saveAnnotationMock }));
75
- await annotateText(exam, defaultAnnotationAnchor);
76
- const textbox = exam.container.querySelector('.comment-content');
77
- react_1.fireEvent.input(textbox, {
78
- target: { innerText: 'New comment', innerHTML: 'New comment' }
79
- });
80
- await user_event_1.default.click(exam.getByText('Tallenna'));
81
- const annotationPart = {
82
- annotationAnchor: defaultAnnotationAnchor,
83
- selectedText: defaultTextToAnnotate,
84
- startIndex: 0,
85
- length: defaultTextToAnnotate.length
86
- };
87
- expect(saveAnnotationMock).toHaveBeenCalledTimes(1);
88
- expect(saveAnnotationMock).toHaveBeenCalledWith({
89
- annotationParts: [annotationPart],
90
- displayNumber: '2',
91
- selectedText: defaultTextToAnnotate
92
- }, 'New comment');
93
- });
94
- it('popup field is empty when creating new annotation', async () => {
95
- var _a;
96
- const annotationAnchor_7_1 = 'e:exam:0 > e:section:2 > e:question:7 > e:question:7.1 > e:question-title:0 > span:0 > #text:0';
97
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: [], onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
98
- await annotateText(exam, defaultAnnotationAnchor);
99
- const textbox = exam.container.querySelector('.comment-content');
100
- react_1.fireEvent.input(textbox, {
101
- target: { innerText: 'New Value', innerHTML: 'New Value' }
102
- });
103
- await user_event_1.default.click(exam.getByText('Tallenna'));
104
- // text picked by getMarkedText includes leading/trailing whitespace, so they must be here too
105
- await annotateText(exam, annotationAnchor_7_1);
106
- expect((_a = exam.container.querySelector('.comment-content')) === null || _a === void 0 ? void 0 : _a.textContent).toHaveLength(0);
107
- });
108
- it('callback is called when annotation is clicked', async () => {
109
- const clickAnnotationMock = jest.fn();
110
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: createAnnotations([{ id: 1, startIndex: 5, selectedText: 'moraali että' }]), onClickAnnotation: clickAnnotationMock, onSaveAnnotation: () => { } }));
111
- await user_event_1.default.click(exam.container.querySelector('[data-annotation-id="1"]'));
112
- const clickedAnnotation = {
113
- annotationAnchor: defaultAnnotationAnchor,
114
- annotationId: 1,
115
- hidden: false,
116
- length: 12,
117
- selectedText: 'moraali että',
118
- startIndex: 5,
119
- markNumber: 1
120
- };
121
- expect(clickAnnotationMock).toHaveBeenCalledTimes(1);
122
- expect(clickAnnotationMock).toHaveBeenCalledWith(expect.anything(), clickedAnnotation);
123
- });
124
- it('annotations are added to dom when provided', () => {
125
- var _a, _b;
126
- const annotationProps = {
127
- annotations: createAnnotations([
128
- { id: 1, startIndex: 27, selectedText: 'pienempi' },
129
- { id: 3, startIndex: 166, selectedText: 'yhteisössä' }
130
- ]),
131
- onClickAnnotation: () => { },
132
- onSaveAnnotation: () => { }
133
- };
134
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
135
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
136
- expect((_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.textContent).toBe('pienempi');
137
- expect(exam.container.querySelector('[data-annotation-id="1"] sup')).toHaveAttribute('data-content', '1');
138
- expect(exam.container.querySelector('[data-annotation-id="3"]')).toBeInTheDocument();
139
- expect((_b = exam.container.querySelector('[data-annotation-id="3"]')) === null || _b === void 0 ? void 0 : _b.textContent).toBe('yhteisössä');
140
- expect(exam.container.querySelector('[data-annotation-id="3"] sup')).toHaveAttribute('data-content', '2');
141
- });
142
- it('"August 2024" annotations are added to dom when provided', () => {
143
- var _a;
144
- /** the difference of startIndex between an "August 2024 annotation" and a normal annotation
145
- * (in this case, but the index varies depending on the exam content)
146
- */
147
- const startIndexDifference = 24;
148
- const annotationProps = {
149
- annotations: createAnnotations([{ id: 1, startIndex: 166 - startIndexDifference, selectedText: 'yhteisössä' }]),
150
- onClickAnnotation: () => { },
151
- onSaveAnnotation: () => { }
152
- };
153
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
154
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
155
- expect((_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.textContent).toBe('yhteisössä');
156
- expect(exam.container.querySelector('[data-annotation-id="1"] sup')).toHaveAttribute('data-content', '1');
157
- });
158
- it('if two annotations have same id, only latter renders <sup>', () => {
159
- const annotationProps = {
160
- annotations: createAnnotations([
161
- { id: 1, startIndex: 71, selectedText: 'jokin' },
162
- { id: 1, startIndex: 77, selectedText: 'koulu' },
163
- { id: 2, startIndex: 142, selectedText: 'mikä' },
164
- { id: 2, startIndex: 147, selectedText: 'ero' }
165
- ]),
166
- onClickAnnotation: () => { },
167
- onSaveAnnotation: () => { }
168
- };
169
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
170
- const marks = (id) => exam.container.querySelectorAll(`.e-annotation[data-annotation-id="${id}"]`);
171
- const marksId1 = marks('1');
172
- const marksId2 = marks('2');
173
- expect(marksId1[0].textContent).toBe('jokin');
174
- expect(marksId1[0].querySelector('sup')).not.toBeInTheDocument();
175
- expect(marksId1[1].textContent).toBe('koulu');
176
- expect(marksId1[1]).toBeInTheDocument();
177
- expect(marksId1[1].querySelector('sup')).toHaveAttribute('data-content', '1');
178
- expect(marksId2[0].textContent).toBe('mikä');
179
- expect(marksId2[0].querySelector('sup')).not.toBeInTheDocument();
180
- expect(marksId2[1].textContent).toBe('ero');
181
- expect(marksId2[1]).toBeInTheDocument();
182
- expect(marksId2[1].querySelector('sup')).toHaveAttribute('data-content', '2');
183
- });
184
- it('hidden annotation works correctly', () => {
185
- var _a, _b;
186
- const annotations = createAnnotations([{ id: 1, startIndex: 59, selectedText: 'esimerkiksi', hidden: true }]);
187
- const annotationProps = {
188
- annotations,
189
- onClickAnnotation: () => { },
190
- onSaveAnnotation: () => { }
191
- };
192
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
193
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
194
- expect(exam.container.querySelector('[data-annotation-id="1"] sup')).not.toBeInTheDocument();
195
- expect((_b = (_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.textContent).toBe(defaultTextToAnnotate);
196
- });
197
- it('annotations can not overlap — overlapping annotations are not rendered', () => {
198
- var _a, _b, _c, _d;
199
- const annotations = createAnnotations([
200
- { id: 1, startIndex: 59, selectedText: 'esimerkiksi' },
201
- { id: 2, startIndex: 62, selectedText: 'merkiksi jo' },
202
- { id: 3, startIndex: 65, selectedText: 'kiksi jokin' },
203
- { id: 4, startIndex: 71, selectedText: 'jokin koulu' } // does NOT overlap with the first annotation
204
- ]);
205
- const annotationProps = {
206
- annotations,
207
- onClickAnnotation: () => { },
208
- onSaveAnnotation: () => { }
209
- };
210
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
211
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
212
- expect(exam.container.querySelector('[data-annotation-id="1"] sup')).toBeInTheDocument();
213
- expect((_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.textContent).toBe('esimerkiksi');
214
- expect(exam.container.querySelector('[data-annotation-id="2"]')).toBeInTheDocument();
215
- expect(exam.container.querySelector('[data-annotation-id="2"] sup')).not.toBeInTheDocument();
216
- expect((_b = exam.container.querySelector('[data-annotation-id="2"]')) === null || _b === void 0 ? void 0 : _b.textContent).toBe('');
217
- expect(exam.container.querySelector('[data-annotation-id="3"]')).toBeInTheDocument();
218
- expect(exam.container.querySelector('[data-annotation-id="3"] sup')).not.toBeInTheDocument();
219
- expect((_c = exam.container.querySelector('[data-annotation-id="2"]')) === null || _c === void 0 ? void 0 : _c.textContent).toBe('');
220
- expect(exam.container.querySelector('[data-annotation-id="4"]')).toBeInTheDocument();
221
- expect(exam.container.querySelector('[data-annotation-id="4"]')).toBeInTheDocument();
222
- expect((_d = exam.container.querySelector('[data-annotation-id="4"]')) === null || _d === void 0 ? void 0 : _d.textContent).toBe('jokin koulu');
223
- });
224
- it('grading instructions can be annotated', async () => {
225
- const gi = (0, react_1.render)(react_2.default.createElement(GradingInstructions_1.default, { ...getCommonProps(), annotations: [], onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
226
- await annotateText(gi, defaultAnnotationAnchor);
227
- expect(gi.getByTestId('e-popup')).toBeVisible();
228
- });
229
- it('attachments can be annotated', async () => {
230
- const annotationAnchor_7_A = 'e:exam:0 > e:section:2 > e:question:7 > e:external-material:3 > e:attachment:0 > span:1 > p:3 > #text:0';
231
- const gi = (0, react_1.render)(react_2.default.createElement(Attachments_1.default, { ...getCommonProps(), annotations: [], onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
232
- await annotateText(gi, annotationAnchor_7_A);
233
- expect(gi.getByTestId('e-popup')).toBeVisible();
234
- });
235
- function createAnnotations(annotations) {
236
- const annotationsById = (0, lodash_1.groupBy)(annotations, 'id');
237
- return Object.keys(annotationsById).map((id, index) => {
238
- const annotationParts = annotationsById[id];
239
- return {
240
- annotationId: Number(id),
241
- selectedText: annotations.map(a => a.selectedText).join(' '),
242
- type: 'text',
243
- displayNumber: '2',
244
- hidden: annotationParts.some(a => a.hidden),
245
- markNumber: index + 1,
246
- annotationParts: annotationParts.map(p => ({
247
- startIndex: p.startIndex,
248
- length: p.selectedText.length,
249
- annotationAnchor: defaultAnnotationAnchor,
250
- selectedText: p.selectedText,
251
- annotationId: Number(id)
252
- }))
253
- };
254
- });
255
- }
256
- async function annotateText(exam, elementAnchor) {
257
- const textElement = exam.getByTestId(elementAnchor);
258
- const fullText = (textElement === null || textElement === void 0 ? void 0 : textElement.textContent) || '';
259
- const annotationLength = fullText.length;
260
- const text = fullText.substring(0, annotationLength);
261
- mockWindowSelection(text, textElement, annotationLength);
262
- await user_event_1.default.click(textElement);
263
- }
264
- function mockWindowSelection(text = 'mocked selection text', element, length) {
265
- ;
266
- window.getSelection.mockImplementation(() => ({
267
- toString: () => text,
268
- rangeCount: 1,
269
- anchorNode: element.firstChild,
270
- focusNode: element.firstChild,
271
- getRangeAt: jest.fn().mockReturnValue({
272
- startOffset: 0,
273
- endOffset: length,
274
- startContainer: element,
275
- endContainer: element,
276
- cloneContents: jest.fn().mockReturnValue({ children: [], childNodes: [] })
277
- })
278
- }));
279
- }
280
- function getCommonProps() {
281
- return {
282
- doc,
283
- answers: [],
284
- attachmentsURL: '/attachments',
285
- resolveAttachment: (filename) => `/attachments/${encodeURIComponent(filename)}`
286
- };
287
- }
288
- function getExamProps() {
289
- const examProps = {
290
- ...getCommonProps(),
291
- casStatus: 'forbidden',
292
- examServerApi: examServerApi_1.examServerApi,
293
- restrictedAudioPlaybackStats: [],
294
- studentName: '[Kokelaan Nimi]',
295
- showUndoView: false,
296
- undoViewProps: {
297
- questionId: 0,
298
- title: '',
299
- close: () => undefined,
300
- restoreAnswer: () => undefined
301
- }
302
- };
303
- return examProps;
304
- }
305
- });
306
- //# sourceMappingURL=annotations.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotations.test.js","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Annotations.test.d.ts.map