diff --git a/.circleci/config.yml b/.circleci/config.yml index 2caa51a..bdfec5a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -38,7 +38,7 @@ jobs: - node_modules key: v1-dependencies-{{ checksum "package.json" }} - - run: mkdir reports dist docs + - run: mkdir reports dist docs || true # Run mocha - run: @@ -50,7 +50,7 @@ jobs: - run: name: eslint command: | - ./node_modules/.bin/eslint ./ --format junit --output-file ./reports/eslint/eslint.xml + ./node_modules/.bin/eslint ./src --format junit --output-file ./reports/eslint/eslint.xml when: always # Run coverage report for Code Climate diff --git a/dist/scorm-again.min.js b/dist/scorm-again.min.js index b9d4e6f..acbbf72 100644 --- a/dist/scorm-again.min.js +++ b/dist/scorm-again.min.js @@ -1,36 +1,1420 @@ -(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i=this.apiLogLevel)switch(i){case api_constants.LOG_LEVEL_ERROR:console.error(r);break;case api_constants.LOG_LEVEL_WARNING:console.warn(r);break;case api_constants.LOG_LEVEL_INFO:console.info(r)}}},{key:"formatMessage",value:function(e,t,r){var i="";i+=e;for(var s=20-i.length,a=0;a-1}},{key:"getLmsErrorMessageDetails",value:function(e,t){return"No error"}},{key:"getCMIValue",value:function(e){return""}},{key:"setCMIValue",value:function(e,t){}},{key:"_commonSetCMIValue",value:function(e,t,r,i){if(!r||""===r)return api_constants.SCORM_FALSE;for(var s=r.split("."),a=this,n=api_constants.SCORM_FALSE,o="The data model element passed to ".concat(e," (").concat(r,") is not a valid SCORM data model element."),l=t?_classPrivateFieldGet(this,_error_codes).UNDEFINED_DATA_MODEL:_classPrivateFieldGet(this,_error_codes).GENERAL,c=0;c1&&(n=e.replace(a+".","")),this.listenerArray.push({functionName:a,CMIElement:n,callback:t})}}},{key:"processListeners",value:function(e,t,r){for(var i=0;i0&&u.length<=_.max?this.checkCorrectResponseValue(n,u,r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE,"Data Model Element Pattern Too Long")}0===this.lastErrorCode&&(t=new _scorm2004_cmi.CMIInteractionsCorrectResponsesObject(this))}else this.stringContains(e,".objectives")?t=new _scorm2004_cmi.CMIInteractionsObjectivesObject(this):this.stringContains(e,"cmi.interactions")?t=new _scorm2004_cmi.CMIInteractionsObject(this):this.stringContains(e,"cmi.comments_from_learner")?t=new _scorm2004_cmi.CMICommentsFromLearnerObject(this):this.stringContains(e,"cmi.comments_from_lms")&&(t=new _scorm2004_cmi.CMICommentsFromLMSObject(this));return t}},{key:"validateCorrectResponse",value:function(e,r){var t=e.split("."),o=Number(t[2]),s=Number(t[4]),i=this.cmi.interactions.childArray[o],n=i.type,c=i.correct_responses._count;if("choice"===n)for(var a=0;a0&&u.length<=_.max?this.checkCorrectResponseValue(n,u,r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE,"Data Model Element Pattern Too Long"),0===this.lastErrorCode&&(!_.duplicate||!this.checkDuplicatedPattern(i.correct_responses,s,r))||0===this.lastErrorCode&&""===r||0===this.lastErrorCode&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE,"Data Model Element Pattern Already Exists")}else this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE,"Data Model Element Collection Limit Reached")}},{key:"getCMIValue",value:function(e){return this._commonGetCMIValue("GetValue",!0,e)}},{key:"getLmsErrorMessageDetails",value:function(e,r){var t="",o="";return e=String(e),constants.error_descriptions[e]&&(t=constants.error_descriptions[e].basicMessage,o=constants.error_descriptions[e].detailMessage),r?o:t}},{key:"checkCorrectResponseValue",value:function(e,r,t){for(var o=_response_constants.correct_responses[e],s=new RegExp(o.format),i=0;i1)Number(r[0])>Number(r[1])&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH);else if(""!==r[i]&&o.unique)for(var l=0;l0&&void 0===_language_constants.valid_languages[c.toLowerCase()]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH)}o=!0;break;case"case_matters":o||r||t||"true"!==i[3]&&"false"!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH),t=!0;break;case"order_matters":t||o||r||"true"!==i[3]&&"false"!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH),r=!0}e=e.substr(i[1].length),i=e.match(s)}return e}},{key:"replaceWithAnotherScormAPI",value:function(e){this.cmi=e.cmi,this.adl=e.adl}},{key:"getCurrentTotalTime",value:function(){var e=this.cmi.total_time,r=this.cmi.session_time;return Util.addTwoDurations(e,r,_regex.scorm2004_regex.CMITimespan)}},{key:"version",get:function(){return _classPrivateFieldGet(this,_version)}}]),r}(_BaseAPI2.default);exports.default=Scorm2004API;var _version=new WeakMap; -},{"./BaseAPI":2,"./cmi/scorm2004_cmi":8,"./constants/api_constants":9,"./constants/error_codes":10,"./constants/language_constants":12,"./constants/regex":13,"./constants/response_constants":14,"./utilities":16}],5:[function(require,module,exports){ -"use strict";function _getRequireWildcardCache(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return _getRequireWildcardCache=function(){return t},t}function _interopRequireWildcard(t){if(t&&t.__esModule)return t;if(null===t||"object"!==_typeof(t)&&"function"!=typeof t)return{default:t};var e=_getRequireWildcardCache();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var o=i?Object.getOwnPropertyDescriptor(t,n):null;o&&(o.get||o.set)?Object.defineProperty(r,n,o):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _classPrivateFieldSet(t,e,r){var i=e.get(t);if(!i)throw new TypeError("attempted to set private field on non-instance");if(i.set)i.set.call(t,r);else{if(!i.writable)throw new TypeError("attempted to set read only private field");i.value=r}return r}function _classPrivateFieldGet(t,e){var r=e.get(t);if(!r)throw new TypeError("attempted to get private field on non-instance");return r.get?r.get.call(t):r.value}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var r=0;r=r[0]){if("*"===r[1]||e<=r[1])return!0;throw new _exceptions.ValidationError(i)}throw new _exceptions.ValidationError(i)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkValidFormat=checkValidFormat,exports.checkValidRange=checkValidRange,exports.CMIArray=exports.CMIScore=exports.BaseCMI=void 0;var _api_constants=require("../constants/api_constants"),_error_codes=require("../constants/error_codes"),_exceptions=require("../exceptions"),_regex=require("../constants/regex"),BaseCMI=function(){function e(){_classCallCheck(this,e),_defineProperty(this,"jsonString",!1),_initialized.set(this,{writable:!0,value:!1})}return _createClass(e,[{key:"initialize",value:function(){_classPrivateFieldSet(this,_initialized,!0)}},{key:"initialized",get:function(){return _classPrivateFieldGet(this,_initialized)}}]),e}();exports.BaseCMI=BaseCMI;var _initialized=new WeakMap,CMIScore=function(e){function t(e){var i,r=e.score_children,a=e.score_range,s=e.max,n=e.invalidErrorCode,o=e.invalidTypeCode,l=e.invalidRangeCode,_=e.decimalRegex;return _classCallCheck(this,t),i=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this)),_children2.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_score_range.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_invalid_error_code.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_invalid_type_code.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_invalid_range_code.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_decimal_regex.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_raw.set(_assertThisInitialized(i),{writable:!0,value:""}),_min.set(_assertThisInitialized(i),{writable:!0,value:""}),_max.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_classPrivateFieldSet(_assertThisInitialized(i),_children2,r||_api_constants.scorm12_constants.score_children),_classPrivateFieldSet(_assertThisInitialized(i),_score_range,!!a&&_regex.scorm12_regex.score_range),_classPrivateFieldSet(_assertThisInitialized(i),_max,s||""===s?s:"100"),_classPrivateFieldSet(_assertThisInitialized(i),_invalid_error_code,n||_error_codes.scorm12_error_codes.INVALID_SET_VALUE),_classPrivateFieldSet(_assertThisInitialized(i),_invalid_type_code,o||_error_codes.scorm12_error_codes.TYPE_MISMATCH),_classPrivateFieldSet(_assertThisInitialized(i),_invalid_range_code,l||_error_codes.scorm12_error_codes.VALUE_OUT_OF_RANGE),_classPrivateFieldSet(_assertThisInitialized(i),_decimal_regex,_||_regex.scorm12_regex.CMIDecimal),i}return _inherits(t,e),_createClass(t,[{key:"toJSON",value:function(){return{raw:this.raw,min:this.min,max:this.max}}},{key:"_children",get:function(){return _classPrivateFieldGet(this,_children2)},set:function(e){throw new _exceptions.ValidationError(_classPrivateFieldGet(this,_invalid_error_code))}},{key:"raw",get:function(){return _classPrivateFieldGet(this,_raw)},set:function(e){!checkValidFormat(e,_classPrivateFieldGet(this,_decimal_regex),_classPrivateFieldGet(this,_invalid_type_code))||_classPrivateFieldGet(this,_score_range)&&!checkValidRange(e,_classPrivateFieldGet(this,_score_range),_classPrivateFieldGet(this,_invalid_range_code))||_classPrivateFieldSet(this,_raw,e)}},{key:"min",get:function(){return _classPrivateFieldGet(this,_min)},set:function(e){!checkValidFormat(e,_classPrivateFieldGet(this,_decimal_regex),_classPrivateFieldGet(this,_invalid_type_code))||_classPrivateFieldGet(this,_score_range)&&!checkValidRange(e,_classPrivateFieldGet(this,_score_range),_classPrivateFieldGet(this,_invalid_range_code))||_classPrivateFieldSet(this,_min,e)}},{key:"max",get:function(){return _classPrivateFieldGet(this,_max)},set:function(e){!checkValidFormat(e,_classPrivateFieldGet(this,_decimal_regex),_classPrivateFieldGet(this,_invalid_type_code))||_classPrivateFieldGet(this,_score_range)&&!checkValidRange(e,_classPrivateFieldGet(this,_score_range),_classPrivateFieldGet(this,_invalid_range_code))||_classPrivateFieldSet(this,_max,e)}}]),t}(BaseCMI);exports.CMIScore=CMIScore;var _children2=new WeakMap,_score_range=new WeakMap,_invalid_error_code=new WeakMap,_invalid_type_code=new WeakMap,_invalid_range_code=new WeakMap,_decimal_regex=new WeakMap,_raw=new WeakMap,_min=new WeakMap,_max=new WeakMap,CMIArray=function(e){function t(e){var i,r=e.children,a=e.errorCode;return _classCallCheck(this,t),i=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this)),_errorCode.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_children3.set(_assertThisInitialized(i),{writable:!0,value:void 0}),_classPrivateFieldSet(_assertThisInitialized(i),_children3,r),_classPrivateFieldSet(_assertThisInitialized(i),_errorCode,a),i.childArray=[],i}return _inherits(t,e),_createClass(t,[{key:"toJSON",value:function(){this.jsonString=!0;for(var e={},t=0;t0&&t.length<=i.max))throw new _exceptions.ValidationError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE);for(var r=new RegExp(i.format),s=0;s0&&(s+=r),s&&(t+="".concat(s).concat(o))}),t}function getTimeAsSeconds(e,t){if(!e||"string"!=typeof e||!e.match(t))return 0;var r=e.split(":");return 3600*Number(r[0])+60*Number(r[1])+Number(r[2])}function getDurationAsSeconds(e,t){if(!e||!e.match(t))return 0;var r=new RegExp(t).exec(e)||[],n=_slicedToArray(r,8),o=n[1],S=n[2],s=n[4],i=n[5],a=n[6],u=n[7],E=new Date,_=new Date(E);if(_.setFullYear(_.getFullYear()+Number(o||0)),_.setMonth(_.getMonth()+Number(S||0)),_.setDate(_.getDate()+Number(s||0)),_.setHours(_.getHours()+Number(i||0)),_.setMinutes(_.getMinutes()+Number(a||0)),_.setSeconds(_.getSeconds()+Number(u||0)),u&&String(u).indexOf(".")>0){var c=1e3*Number(Number(u)%1).toFixed(6);_.setMilliseconds(_.getMilliseconds()+c)}return(1*_-E)/1e3}function addTwoDurations(e,t,r){return getSecondsAsISODuration(getDurationAsSeconds(e,r)+getDurationAsSeconds(t,r))}function addHHMMSSTimeStrings(e,t,r){return getSecondsAsHHMMSS(getTimeAsSeconds(e,r)+getTimeAsSeconds(t,r))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSecondsAsHHMMSS=getSecondsAsHHMMSS,exports.getSecondsAsISODuration=getSecondsAsISODuration,exports.getTimeAsSeconds=getTimeAsSeconds,exports.getDurationAsSeconds=getDurationAsSeconds,exports.addTwoDurations=addTwoDurations,exports.addHHMMSSTimeStrings=addHHMMSSTimeStrings,exports.SECONDS_PER_DAY=exports.SECONDS_PER_HOUR=exports.SECONDS_PER_MINUTE=exports.SECONDS_PER_SECOND=void 0;var SECONDS_PER_SECOND=1;exports.SECONDS_PER_SECOND=SECONDS_PER_SECOND;var SECONDS_PER_MINUTE=60;exports.SECONDS_PER_MINUTE=SECONDS_PER_MINUTE;var SECONDS_PER_HOUR=60*SECONDS_PER_MINUTE;exports.SECONDS_PER_HOUR=SECONDS_PER_HOUR;var SECONDS_PER_DAY=24*SECONDS_PER_HOUR;exports.SECONDS_PER_DAY=SECONDS_PER_DAY;var designations=[["D",SECONDS_PER_DAY],["H",SECONDS_PER_HOUR],["M",SECONDS_PER_MINUTE],["S",SECONDS_PER_SECOND]]; -},{}]},{},[1,2,5,6,7,8,9,10,11,12,13,14,15,3,4,16]) +(function() { + function r(e, n, t) { + function o(i, f) { + if (!n[i]) { + if (!e[i]) { + const c='function'==typeof require&&require; if (!f&&c) return c(i, !0); if (u) return u(i, !0); const a=new Error('Cannot find module \''+i+'\''); throw a.code='MODULE_NOT_FOUND', a; + } const p=n[i]={exports: {}}; e[i][0].call(p.exports, function(r) { + const n=e[i][1][r]; return o(n||r); + }, p, p.exports, r, e, n, t); + } return n[i].exports; + } for (var u='function'==typeof require&&require, i=0; i=this.apiLogLevel) { + switch (i) { + case api_constants.LOG_LEVEL_ERROR: console.error(r); break; case api_constants.LOG_LEVEL_WARNING: console.warn(r); break; case api_constants.LOG_LEVEL_INFO: console.info(r); + } + } + }}, {key: 'formatMessage', value: function(e, t, r) { + let i=''; i+=e; for (var s=20-i.length, a=0; a-1; + }}, {key: 'getLmsErrorMessageDetails', value: function(e, t) { + return 'No error'; + }}, {key: 'getCMIValue', value: function(e) { + return ''; + }}, {key: 'setCMIValue', value: function(e, t) {}}, {key: '_commonSetCMIValue', value: function(e, t, r, i) { + if (!r||''===r) return api_constants.SCORM_FALSE; for (var s=r.split('.'), a=this, n=api_constants.SCORM_FALSE, o='The data model element passed to '.concat(e, ' (').concat(r, ') is not a valid SCORM data model element.'), l=t?_classPrivateFieldGet(this, _error_codes).UNDEFINED_DATA_MODEL:_classPrivateFieldGet(this, _error_codes).GENERAL, c=0; c1&&(n=e.replace(a+'.', '')), this.listenerArray.push({functionName: a, CMIElement: n, callback: t}); + } + } + }}, {key: 'processListeners', value: function(e, t, r) { + for (let i=0; i0&&u.length<=_.max?this.checkCorrectResponseValue(n, u, r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Too Long'); + }0===this.lastErrorCode&&(t=new _scorm2004_cmi.CMIInteractionsCorrectResponsesObject(this)); + } else this.stringContains(e, '.objectives')?t=new _scorm2004_cmi.CMIInteractionsObjectivesObject(this):this.stringContains(e, 'cmi.interactions')?t=new _scorm2004_cmi.CMIInteractionsObject(this):this.stringContains(e, 'cmi.comments_from_learner')?t=new _scorm2004_cmi.CMICommentsFromLearnerObject(this):this.stringContains(e, 'cmi.comments_from_lms')&&(t=new _scorm2004_cmi.CMICommentsFromLMSObject(this)); return t; + }}, {key: 'validateCorrectResponse', value: function(e, r) { + const t=e.split('.'); const o=Number(t[2]); const s=Number(t[4]); const i=this.cmi.interactions.childArray[o]; const n=i.type; const c=i.correct_responses._count; if ('choice'===n) { + for (let a=0; a0&&u.length<=_.max?this.checkCorrectResponseValue(n, u, r):u.length>_.max&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Too Long'), 0===this.lastErrorCode&&(!_.duplicate||!this.checkDuplicatedPattern(i.correct_responses, s, r))||0===this.lastErrorCode&&''===r||0===this.lastErrorCode&&this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Pattern Already Exists'); + } else this.throwSCORMError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE, 'Data Model Element Collection Limit Reached'); + }}, {key: 'getCMIValue', value: function(e) { + return this._commonGetCMIValue('GetValue', !0, e); + }}, {key: 'getLmsErrorMessageDetails', value: function(e, r) { + let t=''; let o=''; return e=String(e), constants.error_descriptions[e]&&(t=constants.error_descriptions[e].basicMessage, o=constants.error_descriptions[e].detailMessage), r?o:t; + }}, {key: 'checkCorrectResponseValue', value: function(e, r, t) { + for (let o=_response_constants.correct_responses[e], s=new RegExp(o.format), i=0; i1)Number(r[0])>Number(r[1])&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH); else if (''!==r[i]&&o.unique) for (let l=0; l0&&void 0===_language_constants.valid_languages[c.toLowerCase()]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH); + }o=!0; break; case 'case_matters': o||r||t||'true'!==i[3]&&'false'!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH), t=!0; break; case 'order_matters': t||o||r||'true'!==i[3]&&'false'!==i[3]&&this.throwSCORMError(_error_codes.scorm2004_error_codes.TYPE_MISMATCH), r=!0; + }e=e.substr(i[1].length), i=e.match(s); + } return e; + }}, {key: 'replaceWithAnotherScormAPI', value: function(e) { + this.cmi=e.cmi, this.adl=e.adl; + }}, {key: 'getCurrentTotalTime', value: function() { + const e=this.cmi.total_time; const r=this.cmi.session_time; return Util.addTwoDurations(e, r, _regex.scorm2004_regex.CMITimespan); + }}, {key: 'version', get: function() { + return _classPrivateFieldGet(this, _version); + }}]), r; + }(_BaseAPI2.default); exports.default=Scorm2004API; var _version=new WeakMap; +}, {'./BaseAPI': 2, './cmi/scorm2004_cmi': 8, './constants/api_constants': 9, './constants/error_codes': 10, './constants/language_constants': 12, './constants/regex': 13, './constants/response_constants': 14, './utilities': 16}], 5: [function(require, module, exports) { + 'use strict'; function _getRequireWildcardCache() { + if ('function'!=typeof WeakMap) return null; const t=new WeakMap; return _getRequireWildcardCache=function() { + return t; + }, t; + } function _interopRequireWildcard(t) { + if (t&&t.__esModule) return t; if (null===t||'object'!==_typeof(t)&&'function'!=typeof t) return {default: t}; const e=_getRequireWildcardCache(); if (e&&e.has(t)) return e.get(t); const r={}; const i=Object.defineProperty&&Object.getOwnPropertyDescriptor; for (const n in t) { + if (Object.prototype.hasOwnProperty.call(t, n)) { + const o=i?Object.getOwnPropertyDescriptor(t, n):null; o&&(o.get||o.set)?Object.defineProperty(r, n, o):r[n]=t[n]; + } + } return r.default=t, e&&e.set(t, r), r; + } function _typeof(t) { + return (_typeof='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(t) { + return typeof t; + }:function(t) { + return t&&'function'==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?'symbol':typeof t; + })(t); + } function _classPrivateFieldSet(t, e, r) { + const i=e.get(t); if (!i) throw new TypeError('attempted to set private field on non-instance'); if (i.set)i.set.call(t, r); else { + if (!i.writable) throw new TypeError('attempted to set read only private field'); i.value=r; + } return r; + } function _classPrivateFieldGet(t, e) { + const r=e.get(t); if (!r) throw new TypeError('attempted to get private field on non-instance'); return r.get?r.get.call(t):r.value; + } function _classCallCheck(t, e) { + if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); + } function _defineProperties(t, e) { + for (let r=0; r=r[0]) { + if ('*'===r[1]||e<=r[1]) return !0; throw new _exceptions.ValidationError(i); + } throw new _exceptions.ValidationError(i); + }Object.defineProperty(exports, '__esModule', {value: !0}), exports.checkValidFormat=checkValidFormat, exports.checkValidRange=checkValidRange, exports.CMIArray=exports.CMIScore=exports.BaseCMI=void 0; const _api_constants=require('../constants/api_constants'); const _error_codes=require('../constants/error_codes'); var _exceptions=require('../exceptions'); const _regex=require('../constants/regex'); const BaseCMI=function() { + function e() { + _classCallCheck(this, e), _defineProperty(this, 'jsonString', !1), _initialized.set(this, {writable: !0, value: !1}); + } return _createClass(e, [{key: 'initialize', value: function() { + _classPrivateFieldSet(this, _initialized, !0); + }}, {key: 'initialized', get: function() { + return _classPrivateFieldGet(this, _initialized); + }}]), e; + }(); exports.BaseCMI=BaseCMI; var _initialized=new WeakMap; const CMIScore=function(e) { + function t(e) { + let i; const r=e.score_children; const a=e.score_range; const s=e.max; const n=e.invalidErrorCode; const o=e.invalidTypeCode; const l=e.invalidRangeCode; const _=e.decimalRegex; return _classCallCheck(this, t), i=_possibleConstructorReturn(this, _getPrototypeOf(t).call(this)), _children2.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _score_range.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_error_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_type_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _invalid_range_code.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _decimal_regex.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _raw.set(_assertThisInitialized(i), {writable: !0, value: ''}), _min.set(_assertThisInitialized(i), {writable: !0, value: ''}), _max.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _classPrivateFieldSet(_assertThisInitialized(i), _children2, r||_api_constants.scorm12_constants.score_children), _classPrivateFieldSet(_assertThisInitialized(i), _score_range, !!a&&_regex.scorm12_regex.score_range), _classPrivateFieldSet(_assertThisInitialized(i), _max, s||''===s?s:'100'), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_error_code, n||_error_codes.scorm12_error_codes.INVALID_SET_VALUE), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_type_code, o||_error_codes.scorm12_error_codes.TYPE_MISMATCH), _classPrivateFieldSet(_assertThisInitialized(i), _invalid_range_code, l||_error_codes.scorm12_error_codes.VALUE_OUT_OF_RANGE), _classPrivateFieldSet(_assertThisInitialized(i), _decimal_regex, _||_regex.scorm12_regex.CMIDecimal), i; + } return _inherits(t, e), _createClass(t, [{key: 'toJSON', value: function() { + return {raw: this.raw, min: this.min, max: this.max}; + }}, {key: '_children', get: function() { + return _classPrivateFieldGet(this, _children2); + }, set: function(e) { + throw new _exceptions.ValidationError(_classPrivateFieldGet(this, _invalid_error_code)); + }}, {key: 'raw', get: function() { + return _classPrivateFieldGet(this, _raw); + }, set: function(e) { + !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _raw, e); + }}, {key: 'min', get: function() { + return _classPrivateFieldGet(this, _min); + }, set: function(e) { + !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _min, e); + }}, {key: 'max', get: function() { + return _classPrivateFieldGet(this, _max); + }, set: function(e) { + !checkValidFormat(e, _classPrivateFieldGet(this, _decimal_regex), _classPrivateFieldGet(this, _invalid_type_code))||_classPrivateFieldGet(this, _score_range)&&!checkValidRange(e, _classPrivateFieldGet(this, _score_range), _classPrivateFieldGet(this, _invalid_range_code))||_classPrivateFieldSet(this, _max, e); + }}]), t; + }(BaseCMI); exports.CMIScore=CMIScore; var _children2=new WeakMap; var _score_range=new WeakMap; var _invalid_error_code=new WeakMap; var _invalid_type_code=new WeakMap; var _invalid_range_code=new WeakMap; var _decimal_regex=new WeakMap; var _raw=new WeakMap; var _min=new WeakMap; var _max=new WeakMap; const CMIArray=function(e) { + function t(e) { + let i; const r=e.children; const a=e.errorCode; return _classCallCheck(this, t), i=_possibleConstructorReturn(this, _getPrototypeOf(t).call(this)), _errorCode.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _children3.set(_assertThisInitialized(i), {writable: !0, value: void 0}), _classPrivateFieldSet(_assertThisInitialized(i), _children3, r), _classPrivateFieldSet(_assertThisInitialized(i), _errorCode, a), i.childArray=[], i; + } return _inherits(t, e), _createClass(t, [{key: 'toJSON', value: function() { + this.jsonString=!0; for (var e={}, t=0; t0&&t.length<=i.max)) throw new _exceptions.ValidationError(_error_codes.scorm2004_error_codes.GENERAL_SET_FAILURE); for (let r=new RegExp(i.format), s=0; s0&&(s+=r), s&&(t+=''.concat(s).concat(o)); + }), t; + } function getTimeAsSeconds(e, t) { + if (!e||'string'!=typeof e||!e.match(t)) return 0; const r=e.split(':'); return 3600*Number(r[0])+60*Number(r[1])+Number(r[2]); + } function getDurationAsSeconds(e, t) { + if (!e||!e.match(t)) return 0; const r=new RegExp(t).exec(e)||[]; const n=_slicedToArray(r, 8); const o=n[1]; const S=n[2]; const s=n[4]; const i=n[5]; const a=n[6]; const u=n[7]; const E=new Date; const _=new Date(E); if (_.setFullYear(_.getFullYear()+Number(o||0)), _.setMonth(_.getMonth()+Number(S||0)), _.setDate(_.getDate()+Number(s||0)), _.setHours(_.getHours()+Number(i||0)), _.setMinutes(_.getMinutes()+Number(a||0)), _.setSeconds(_.getSeconds()+Number(u||0)), u&&String(u).indexOf('.')>0) { + const c=1e3*Number(Number(u)%1).toFixed(6); _.setMilliseconds(_.getMilliseconds()+c); + } return (1*_-E)/1e3; + } function addTwoDurations(e, t, r) { + return getSecondsAsISODuration(getDurationAsSeconds(e, r)+getDurationAsSeconds(t, r)); + } function addHHMMSSTimeStrings(e, t, r) { + return getSecondsAsHHMMSS(getTimeAsSeconds(e, r)+getTimeAsSeconds(t, r)); + }Object.defineProperty(exports, '__esModule', {value: !0}), exports.getSecondsAsHHMMSS=getSecondsAsHHMMSS, exports.getSecondsAsISODuration=getSecondsAsISODuration, exports.getTimeAsSeconds=getTimeAsSeconds, exports.getDurationAsSeconds=getDurationAsSeconds, exports.addTwoDurations=addTwoDurations, exports.addHHMMSSTimeStrings=addHHMMSSTimeStrings, exports.SECONDS_PER_DAY=exports.SECONDS_PER_HOUR=exports.SECONDS_PER_MINUTE=exports.SECONDS_PER_SECOND=void 0; const SECONDS_PER_SECOND=1; exports.SECONDS_PER_SECOND=SECONDS_PER_SECOND; const SECONDS_PER_MINUTE=60; exports.SECONDS_PER_MINUTE=SECONDS_PER_MINUTE; var SECONDS_PER_HOUR=60*SECONDS_PER_MINUTE; exports.SECONDS_PER_HOUR=SECONDS_PER_HOUR; const SECONDS_PER_DAY=24*SECONDS_PER_HOUR; exports.SECONDS_PER_DAY=SECONDS_PER_DAY; var designations=[['D', SECONDS_PER_DAY], ['H', SECONDS_PER_HOUR], ['M', SECONDS_PER_MINUTE], ['S', SECONDS_PER_SECOND]]; +}, {}]}, {}, [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 16]); -//# sourceMappingURL=scorm-again.js.map \ No newline at end of file +// # sourceMappingURL=scorm-again.js.map