{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/ts-loader/index.js!/data/src/dao/SituationFeedbackDAO.ts","dependencies":[{"path":"/data/src/dao/SituationFeedbackDAO.ts","mtime":1553611371628},{"path":"/data/node_modules/typescript-logging/dist/commonjs/typescript-logging.d.ts","mtime":1553611387808},{"path":"/data/node_modules/typescript-logging/dist/commonjs/control/LogGroupControl.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/control/CategoryServiceControl.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/MessagesToExtensionJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/MessagesFromExtensionJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/ExtensionMessageJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/ExtensionHelper.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/AbstractCategoryLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/LoggerOptions.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryService.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryConsoleLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryDelegateLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryMessageBufferImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/Logger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactory.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactoryService.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactoryRuntimeSettings.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/AbstractLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/ConsoleLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/MessageBufferLoggerImpl.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/DataStructures.d.ts","mtime":1553611387936},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/JSONHelper.d.ts","mtime":1553611387936},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/MessageUtils.d.ts","mtime":1553611387936},{"path":"/data/node_modules/moment/moment.d.ts","mtime":1553611386704},{"path":"/data/node_modules/axios/index.d.ts","mtime":1553611386356},{"path":"/data/typings/index.d.ts","mtime":1553611371628},{"path":"/data/node_modules/@types/fs-extra/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/node/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/node/inspector.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/glob/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/minimatch/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/glob/node_modules/@types/minimatch/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/handlebars/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/highlight.js/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/jest/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/jquery/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/lodash/index.d.ts","mtime":1553611386320},{"path":"/data/node_modules/@types/lodash/common/common.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/array.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/collection.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/date.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/function.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/lang.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/math.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/number.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/object.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/seq.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/string.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/util.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/marked/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/shelljs/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/urijs/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/typescript/lib/lib.es2015.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.core.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.collection.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.generator.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.promise.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.iterable.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.symbol.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.proxy.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.reflect.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es5.d.ts","mtime":1553611387388},{"path":"/data/node_modules/typescript/lib/lib.dom.d.ts","mtime":1553611387384},{"path":"/data/src/dao/BaseDAO.ts","mtime":1553611371628},{"path":"/data/src/api/IHasHTTP.ts","mtime":1553611371624},{"path":"/data/src/internal/IHash.ts","mtime":1553611371628},{"path":"/data/src/api/IOnmsHTTP.ts","mtime":1553611371624},{"path":"/data/src/api/OnmsError.ts","mtime":1553611371624},{"path":"/data/src/api/OnmsHTTPOptions.ts","mtime":1553611371624},{"path":"/data/src/model/OnmsSituationFeedback.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsSituationFeedbackType.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsParm.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsServiceType.ts","mtime":1553611371628},{"path":"/data/src/api/Log.ts","mtime":1553611371624},{"path":"/data/node_modules/typescript-logging/dist/commonjs/typescript-logging.d.ts","mtime":1553611387808},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992},{"path":"/data/node_modules/ts-loader/index.js","mtime":1553611386824}],"contextDependencies":[],"result":["\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) {\n            try {\n                step(generator.next(value));\n            } catch (e) {\n                reject(e);\n            }\n        }\n        function rejected(value) {\n            try {\n                step(generator[\"throw\"](value));\n            } catch (e) {\n                reject(e);\n            }\n        }\n        function step(result) {\n            result.done ? resolve(result.value) : new P(function (resolve) {\n                resolve(result.value);\n            }).then(fulfilled, rejected);\n        }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseDAO_1 = require(\"./BaseDAO\");\nvar OnmsError_1 = require(\"../api/OnmsError\");\nvar OnmsHTTPOptions_1 = require(\"../api/OnmsHTTPOptions\");\nvar OnmsSituationFeedback_1 = require(\"../model/OnmsSituationFeedback\");\nvar OnmsSituationFeedbackType_1 = require(\"../model/OnmsSituationFeedbackType\");\n/**\n * Data access for [[OnmsSituationFeedback]] objects.\n * @module SituationFeedbackDAO\n */\n\nvar SituationFeedbackDAO = function (_BaseDAO_1$BaseDAO) {\n    _inherits(SituationFeedbackDAO, _BaseDAO_1$BaseDAO);\n\n    function SituationFeedbackDAO(impl) {\n        _classCallCheck(this, SituationFeedbackDAO);\n\n        return _possibleConstructorReturn(this, (SituationFeedbackDAO.__proto__ || Object.getPrototypeOf(SituationFeedbackDAO)).call(this, impl));\n    }\n    /**\n     * Retrieve feedback.\n     *\n     * @version ReST v1\n     * @param {number} situationId - The alarmId of the Situation to use when querying.\n     * @return An array of [[OnmsSituationFeedback]] objects.\n     */\n\n\n    _createClass(SituationFeedbackDAO, [{\n        key: \"getFeedback\",\n        value: function getFeedback(situationId) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n                var _this2 = this;\n\n                var options;\n                return _regenerator2.default.wrap(function _callee$(_context) {\n                    while (1) {\n                        switch (_context.prev = _context.next) {\n                            case 0:\n                                options = new OnmsHTTPOptions_1.OnmsHTTPOptions();\n\n                                options.headers.accept = 'application/json';\n                                return _context.abrupt(\"return\", this.http.get(this.pathToEndpoint() + '/' + situationId, options).then(function (result) {\n                                    var data = _this2.getData(result);\n                                    if (!Array.isArray(data)) {\n                                        if (!data) {\n                                            return [];\n                                        }\n                                        throw new OnmsError_1.OnmsError('Expected an array of feedback but got \"' + (typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) + '\" instead.');\n                                    }\n                                    return data.map(function (feedbackData) {\n                                        return _this2.fromData(feedbackData);\n                                    });\n                                }));\n\n                            case 3:\n                            case \"end\":\n                                return _context.stop();\n                        }\n                    }\n                }, _callee, this);\n            }));\n        }\n        /**\n         * Submit Correlation Feedback for a Situation.\n         *\n         * @version ReST v1\n         * @param {number} situationId - The alarmId of the Situation to use when querying.\n         * @param {OnmsSituationFeedback[]} feedback - The [[OnmsSituationFeedback]].\n         */\n\n    }, {\n        key: \"saveFeedback\",\n        value: function saveFeedback(feedback, situationId) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n                return _regenerator2.default.wrap(function _callee2$(_context2) {\n                    while (1) {\n                        switch (_context2.prev = _context2.next) {\n                            case 0:\n                                return _context2.abrupt(\"return\", this.post(this.pathToEndpoint() + '/' + situationId, this.serializeFeedback(feedback)));\n\n                            case 1:\n                            case \"end\":\n                                return _context2.stop();\n                        }\n                    }\n                }, _callee2, this);\n            }));\n        }\n        /**\n         * Extracts the data from an HTTP Request result.\n         *\n         * @param result the HTTP Request result.\n         * @returns An array of [[OnmsSituationFeedback]] objects.\n         */\n\n    }, {\n        key: \"getData\",\n        value: function getData(result) {\n            var data = result.data;\n            if (!Array.isArray(data)) {\n                throw new OnmsError_1.OnmsError('Expected an array of situationFeedback but got \"' + (typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) + '\" instead.');\n            }\n            return data;\n        }\n        /**\n         * Generate a feedback object from the given dictionary.\n         * @hidden\n         */\n\n    }, {\n        key: \"fromData\",\n        value: function fromData(data) {\n            var feedback = new OnmsSituationFeedback_1.OnmsSituationFeedback();\n            feedback.situationKey = data.situationKey;\n            feedback.fingerprint = data.situationFingerprint;\n            feedback.alarmKey = data.alarmKey;\n            feedback.reason = data.reason;\n            feedback.user = data.user;\n            if (data.feedbackType) {\n                var fbt = data.feedbackType;\n                feedback.feedbackType = OnmsSituationFeedbackType_1.OnmsSituationFeedbackType.forId(fbt);\n            }\n            feedback.timestamp = this.toNumber(data.timestamp);\n            return feedback;\n        }\n        /**\n         * Serialize the feedbackType as a string.\n         * @hidden\n         */\n\n    }, {\n        key: \"serializeFeedback\",\n        value: function serializeFeedback(feedback) {\n            var serializeFeedback = [];\n            feedback.forEach(function (fb) {\n                // Create a shallow clone\n                var sfb = Object.assign({}, fb);\n                // Set the type to the id, to avoid serializing it as an object\n                if (sfb.feedbackType !== null) {\n                    sfb.feedbackType = sfb.feedbackType.id;\n                }\n                serializeFeedback.push(sfb);\n            });\n            return serializeFeedback;\n        }\n        /**\n         * Call a POST request in the format the SituationFeedback API expects.\n         * @hidden\n         */\n\n    }, {\n        key: \"post\",\n        value: function post(url, data) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n                var options;\n                return _regenerator2.default.wrap(function _callee3$(_context3) {\n                    while (1) {\n                        switch (_context3.prev = _context3.next) {\n                            case 0:\n                                options = new OnmsHTTPOptions_1.OnmsHTTPOptions();\n\n                                options.headers['content-type'] = 'application/json';\n                                options.headers.accept = 'application/json';\n                                options.data = data;\n                                return _context3.abrupt(\"return\", this.http.post(url, options).then(function (result) {\n                                    if (!result.isSuccess) {\n                                        throw result;\n                                    }\n                                    return;\n                                }));\n\n                            case 5:\n                            case \"end\":\n                                return _context3.stop();\n                        }\n                    }\n                }, _callee3, this);\n            }));\n        }\n        /**\n         * Get the path to the SituationFeedback endpoint.\n         * @hidden\n         */\n\n    }, {\n        key: \"pathToEndpoint\",\n        value: function pathToEndpoint() {\n            return 'rest/situation-feedback';\n        }\n    }]);\n\n    return SituationFeedbackDAO;\n}(BaseDAO_1.BaseDAO);\n\nexports.SituationFeedbackDAO = SituationFeedbackDAO;",{"version":3,"file":"/data/src/dao/SituationFeedbackDAO.ts","sourceRoot":"","sources":["/data/src/dao/SituationFeedbackDAO.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseDAO} from './BaseDAO';\n\nimport {IHasHTTP} from '../api/IHasHTTP';\nimport {IHash} from '../internal/IHash';\nimport {IOnmsHTTP} from '../api/IOnmsHTTP';\nimport {OnmsError} from '../api/OnmsError';\nimport {OnmsHTTPOptions} from '../api/OnmsHTTPOptions';\n\nimport {OnmsSituationFeedback} from '../model/OnmsSituationFeedback';\nimport {FeedbackTypes, OnmsSituationFeedbackType} from '../model/OnmsSituationFeedbackType';\n\nimport {OnmsParm} from '../model/OnmsParm';\nimport {OnmsServiceType} from '../model/OnmsServiceType';\n\nimport {log, catDao} from '../api/Log';\nimport {Category} from 'typescript-logging';\n\n/**\n * Data access for [[OnmsSituationFeedback]] objects.\n * @module SituationFeedbackDAO\n */\nexport class SituationFeedbackDAO extends BaseDAO {\n\n  constructor(impl: IHasHTTP | IOnmsHTTP) {\n    super(impl);\n  }\n\n  /**\n   * Retrieve feedback.\n   *\n   * @version ReST v1\n   * @param {number} situationId - The alarmId of the Situation to use when querying.\n   * @return An array of [[OnmsSituationFeedback]] objects.\n   */\n  public async getFeedback(situationId: number): Promise<OnmsSituationFeedback[]> {\n    const options = new OnmsHTTPOptions();\n    options.headers.accept = 'application/json';\n    return this.http.get(this.pathToEndpoint() + '/' + situationId, options).then((result) => {\n      const data = this.getData(result);\n      if (!Array.isArray(data)) {\n        if (!data) {\n          return [] as OnmsSituationFeedback[];\n        }\n        throw new OnmsError('Expected an array of feedback but got \"' + (typeof data) + '\" instead.');\n      }\n      return data.map((feedbackData) => {\n        return this.fromData(feedbackData);\n      });\n    });\n  }\n\n  /**\n   * Submit Correlation Feedback for a Situation.\n   *\n   * @version ReST v1\n   * @param {number} situationId - The alarmId of the Situation to use when querying.\n   * @param {OnmsSituationFeedback[]} feedback - The [[OnmsSituationFeedback]].\n   */\n  public async saveFeedback(feedback: OnmsSituationFeedback[], situationId: number): Promise<void> {\n    return this.post(this.pathToEndpoint() + '/' + situationId, this.serializeFeedback(feedback));\n  }\n\n    /**\n     * Extracts the data from an HTTP Request result.\n     *\n     * @param result the HTTP Request result.\n     * @returns An array of [[OnmsSituationFeedback]] objects.\n     */\n  public getData(result: any): OnmsSituationFeedback[] {\n    const data = result.data;\n    if (!Array.isArray(data)) {\n      throw new OnmsError('Expected an array of situationFeedback but got \"' + (typeof data) + '\" instead.');\n    }\n    return data;\n  }\n\n  /**\n   * Generate a feedback object from the given dictionary.\n   * @hidden\n   */\n  public fromData(data: any) {\n    const feedback = new OnmsSituationFeedback();\n    feedback.situationKey = data.situationKey;\n    feedback.fingerprint = data.situationFingerprint;\n    feedback.alarmKey = data.alarmKey;\n    feedback.reason = data.reason;\n    feedback.user = data.user;\n    if (data.feedbackType) {\n      const fbt = data.feedbackType;\n      feedback.feedbackType = OnmsSituationFeedbackType.forId(fbt);\n    }\n    feedback.timestamp = this.toNumber(data.timestamp);\n    return feedback;\n  }\n\n  /**\n   * Serialize the feedbackType as a string.\n   * @hidden\n   */\n  public serializeFeedback(feedback: OnmsSituationFeedback[]): any[] {\n    const serializeFeedback = [];\n    feedback.forEach((fb) => {\n        // Create a shallow clone\n        const sfb = Object.assign({}, fb) as any;\n        // Set the type to the id, to avoid serializing it as an object\n        if (sfb.feedbackType !== null) {\n            sfb.feedbackType = sfb.feedbackType.id;\n        }\n        serializeFeedback.push(sfb);\n    });\n    return serializeFeedback;\n  }\n\n  /**\n   * Call a POST request in the format the SituationFeedback API expects.\n   * @hidden\n   */\n  private async post(url: string, data: any): Promise<void> {\n    const options = new OnmsHTTPOptions();\n    options.headers['content-type'] = 'application/json';\n    options.headers.accept = 'application/json';\n    options.data = data;\n    return this.http.post(url, options).then((result) => {\n      if (!result.isSuccess) {\n        throw result;\n      }\n      return;\n    });\n  }\n\n  /**\n   * Get the path to the SituationFeedback endpoint.\n   * @hidden\n   */\n  private pathToEndpoint() {\n    return 'rest/situation-feedback';\n  }\n\n}\n"]}]}