UNPKG

@sassoftware/restafedit

Version:
329 lines (276 loc) 131 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("restafedit", [], factory); else if(typeof exports === 'object') exports["restafedit"] = factory(); else root["restafedit"] = factory(); })(global, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ({ /***/ "./addRows.js": /*!********************!*\ !*** ./addRows.js ***! \********************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _appendRows__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appendRows */ \"./appendRows.js\");\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n\n/**\r\n * @description Add new rows to current table\r\n * @async\r\n * @module addRows\r\n * @category restafedit/dataMgmt\r\n * @param {rowObjectArray=} data data to add to current table\r\n * @param {appEnv} appEnv - appEnv\r\n * @param (boolean=) save Save the table(defaultis true)\r\n * @returns {promise} - status object\r\n * @example\r\n * To add new rows to the working table.\r\n * let data = [{x1:1, x2: 30}, {x1:10, x2:50}];\r\n * await addRows(data, appEnv);\r\n * The columns must match the columns in the working table.\r\n *\r\n */\nasync function addRows(data, appEnv, save) {\n const table = appEnv.table; /* write to current table */\n ;\n const drop = [];\n for (const c in appEnv.state.columns) {\n if (appEnv.state.columns[c].custom === true || appEnv.state.columns[c].internal != null) {\n drop.push(c);\n }\n }\n let d = Array.isArray(data) === true ? data : [data];\n const status = await Object(_appendRows__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"])(d, table, drop, appEnv, save);\n return status;\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (addRows);\n\n//# sourceURL=webpack://restafedit/./addRows.js?"); /***/ }), /***/ "./appendRows.js": /*!***********************!*\ !*** ./appendRows.js ***! \***********************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _uploadData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uploadData.js */ \"./uploadData.js\");\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n\n\n/**\r\n * @description Append client data to a master table other than working table\r\n * @async\r\n * @module appendRows\r\n * @category restafedit/dataMgmt\r\n * @param {rowObjectArray} data \r\n * @param {table} table master table\r\n * @param {array} columns array of column names to drop\r\n * @param {appEnv} appEnv - appEnv\r\n * @param {boolean=} save save the table after append (default=true)\r\n * @returns {promise} - status object\r\n * @example\r\n * To append all the rows on the client:\r\n * If data is null, the data in appEnv.state will be appended\r\n * await appendRows(mydata, {caslib: 'public, name: 'masterAccts'}, ['total', 'price'], appEnv)\r\n * Notes:\r\n * - Use addRows to add new rows to the working table\r\n * - use appendTable to append working table to a master table\r\n */\nasync function appendRows(data, table, drop, appEnv, save) {\n const handler = appEnv.source === 'cas' ? _casSQL : _computeSQL;\n const status = await handler(table, drop, appEnv, data, save);\n return status;\n}\nasync function _casSQL(table, drop, appEnv, addData, saveFlag) {\n const tempTable = {\n caslib: table.caslib,\n name: 'restafedittemp'\n };\n const data = addData != null ? addData : appEnv.state.data;\n const r = await Object(_uploadData_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])(tempTable, data, drop, {}, appEnv, table, saveFlag);\n return r;\n}\nasync function _computeSQL(table, drop, appEnv, addData) {\n const {\n store,\n session\n } = appEnv;\n const {\n columns\n } = appEnv.state;\n const data = addData != null ? addData : appEnv.state.data;\n const rowCount = data.length;\n if (rowCount === 0) {\n return {\n msg: 'No data to append',\n statusCode: 1\n };\n }\n const dropList = ['_index_', '_rowIndex', '_modified'].concat(drop);\n const validCols = [];\n ;\n for (const c in columns) {\n if (dropList.indexOf(c) === -1) {\n validCols.push(c);\n }\n }\n let set = ' ';\n const ncols = validCols.length - 1;\n data.forEach(row => {\n let s = 'set ';\n let i = 0;\n validCols.forEach(c => {\n const d = row[c];\n s = s + c + '=' + value2String(d);\n if (i < ncols) {\n s = s + ', ';\n }\n i++;\n });\n set = set + s + '\\n';\n });\n const src = `\n proc sql;\n insert into ${table.libref}.${table.name}\n ${set};\n run;\n proc print data=${table.libref}.${table.name};\n run;\n `;\n const r = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeRun\"])(store, session, src);\n const st = r.SASJobStatus;\n // console.log('Job ended with status of ', st);\n // const logs = await computeResults(store, r, 'log');\n if (st === 'failed' || st === 'running') {\n return {\n msg: `Job ended with status of ${st}. See console for logs`,\n statusCode: 2\n };\n }\n return {\n msg: 'Rows Appended',\n statusCode: 0\n };\n}\nfunction value2String(value) {\n let valueString;\n if (value == null) {\n valueString = '.';\n } else if (typeof value === 'string') {\n valueString = JSON.stringify(value);\n } else {\n valueString = value.toString();\n }\n return valueString;\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (appendRows);\n\n//# sourceURL=webpack://restafedit/./appendRows.js?"); /***/ }), /***/ "./appendTable.js": /*!************************!*\ !*** ./appendTable.js ***! \************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n\n/**\r\n * @description Append active table to the master table\r\n * @async\r\n * @module appendTable\r\n * @category restafedit/dataMgmt\r\n * @param {table} table master table\r\n * @param {appEnv} appEnv - appEnv\r\n * @param {boolean=} save - useful only for cas.ignored for compute\r\n * @returns {promise} - status object\r\n * @example\r\n * const status = appendTable({caslib: 'public', 'name:'master'}, appEnv);\r\n * Append working table to the specified master table.\r\n *\r\n */\nasync function appendTable(table, appEnv, save) {\n const handler = appEnv.source === 'cas' ? _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"casAppendTable\"] : _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeAppendTable\"];\n const saveFlag = save != null ? true : save;\n const result = await handler(appEnv.store, appEnv.session, appEnv.table, table, saveFlag);\n return result;\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (appendTable);\n\n//# sourceURL=webpack://restafedit/./appendTable.js?"); /***/ }), /***/ "./builtins/casScoring.js": /*!********************************!*\ !*** ./builtins/casScoring.js ***! \********************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\nasync function casScoring(model, modelName, scenario) {\n let viyaSession = await appEnv.getViyaSession('cas');\n if (viyaSession == null) {\n return {\n status: {\n statusCode: 2,\n msg: 'Missing logon information'\n },\n results: {}\n };\n }\n let {\n store,\n session\n } = viyaSession;\n try {\n let args = {\n model: model,\n modelName: modelName,\n scenario: scenario\n };\n let output = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"caslScore\"])(store, session, args);\n let status = {\n statusCode: 0,\n msg: null\n };\n let results = output.casResults;\n return {\n status,\n results,\n output: output\n };\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: 'See console for error messages'\n },\n results: {},\n output: null\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (casScoring);\n\n//# sourceURL=webpack://restafedit/./builtins/casScoring.js?"); /***/ }), /***/ "./builtins/index.js": /*!***************************!*\ !*** ./builtins/index.js ***! \***************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _masScoring_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./masScoring.js */ \"./builtins/masScoring.js\");\n/* harmony import */ var _submitAction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./submitAction.js */ \"./builtins/submitAction.js\");\n/* harmony import */ var _submit_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./submit.js */ \"./builtins/submit.js\");\n/* harmony import */ var _submitCasl_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./submitCasl.js */ \"./builtins/submitCasl.js\");\n/* harmony import */ var _request_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./request.js */ \"./builtins/request.js\");\n/* harmony import */ var _loadCasTable_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./loadCasTable.js */ \"./builtins/loadCasTable.js\");\n/* harmony import */ var _casScoring_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./casScoring.js */ \"./builtins/casScoring.js\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n\n// eslint-disable-next-line import/no-anonymous-default-export\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n masScoring: _masScoring_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"],\n submitAction: _submitAction_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"],\n submit: _submit_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"],\n submitCasl: _submitCasl_js__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"],\n request: _request_js__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"],\n loadCasTable: _loadCasTable_js__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"],\n casScoring: _casScoring_js__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"],\n restaflib: _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_7__\n});\n\n//# sourceURL=webpack://restafedit/./builtins/index.js?"); /***/ }), /***/ "./builtins/loadCasTable.js": /*!**********************************!*\ !*** ./builtins/loadCasTable.js ***! \**********************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\nasync function loadCasTable(appEnv, lib, name) {\n let viyaSession = await appEnv.getViyaSession('cas');\n if (viyaSession == null) {\n return {\n status: {\n statusCode: 2,\n msg: 'Missing logon information'\n },\n results: {}\n };\n }\n let {\n store,\n session\n } = viyaSession;\n try {\n //src = src;\n\n let src = `\n rc = checkAndLoadTable(_args_.caslib, _args_.name);\n send_response({rc=rc});\n `;\n let args = {\n caslib: lib,\n name: name\n };\n let r = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"caslRun\"])(store, session, src, args, true);\n let status = {\n statusCode: 0,\n msg: null\n };\n let results = r.results;\n return {\n status,\n results,\n output: r\n };\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: 'See console for error messages'\n },\n results: {\n rc: false\n },\n output: err\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (loadCasTable);\n\n//# sourceURL=webpack://restafedit/./builtins/loadCasTable.js?"); /***/ }), /***/ "./builtins/masScoring.js": /*!********************************!*\ !*** ./builtins/masScoring.js ***! \********************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n/**\r\n * @description Score a MAS model\r\n * @async\r\n * @private\r\n * @module masScoring\r\n * @category builtins\r\n * @param {string} modelName - published name\r\n * @param {object} data - data to be scored\r\n * @param {boolean} uflag - if true, remove the last character(_) from the variable name\r\n * @param {*} appEnv - appEnv\r\n * @returns {object} - {status: {statusCode: 0, msg: null}, results: masRun results}\r\n * @example\r\n * let result = await appEnv.builtins.masScoring('mycoolmodel', {x1: 1, x2: 2}, appEnv);\r\n * \r\n */\nasync function masScoring(appEnv, modelName, data, uflag) {\n //setup once per sessison\n // const { masSetup, masDescribe, masRun } = appEnv.builtins.restaflib;\n let inputs = {};\n let masControl;\n try {\n masControl = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"masSetup\"])(appEnv.store, [modelName]);\n let describe = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"masDescribe\"])(masControl, modelName);\n inputs = {};\n describe.forEach(d => {\n inputs[d.name] = null;\n });\n // took out the optimiztion - it seems to be causing issues\n // appEnv.appSession.masScoring = { masControl: masControl, inputs: inputs };\n let scenario = {};\n for (let v in inputs) {\n let v1 = uflag === true ? v.substring(0, v.length - 1) : v;\n //v1 = v.startsWith('_') ? v.substring(0, v.length - 1) : v;\n scenario[v] = data[v1] == null ? null : data[v1];\n }\n let result = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"masRun\"])(appEnv.store, masControl, modelName, scenario);\n return {\n status: {\n statusCode: 0,\n msg: null\n },\n results: result\n };\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: err\n },\n results: {}\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (masScoring);\n\n//# sourceURL=webpack://restafedit/./builtins/masScoring.js?"); /***/ }), /***/ "./builtins/request.js": /*!*****************************!*\ !*** ./builtins/request.js ***! \*****************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\nasync function request(appEnv, config) {\n let r = await appEnv.store.request(config);\n return r;\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (request);\n\n//# sourceURL=webpack://restafedit/./builtins/request.js?"); /***/ }), /***/ "./builtins/submit.js": /*!****************************!*\ !*** ./builtins/submit.js ***! \****************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n/**\r\n * @description Run code in compute server\r\n * @private\r\n * @param {string} src \r\n * @param {object} macros - will be prepended to src\r\n * @param {object} output - {log: false, ods: true, tables: ['table1', 'table2]\r\n * @param {*} appEnv \r\n * @returns {promise} - {status: {statusCode: 0, msg: null}, results: results}\r\n * @example\r\n * The output results will be in the results object as follows(based on the output parameter)\r\n * {\r\n * log: 'log output',\r\n * ods: 'ods output',\r\n * tableList: [array of table names from the run],\r\n * tables: {\r\n * table1: [array of rows],\r\n * table2: [array of rows]\r\n * }\r\n * }\r\n * let src = `ods html open;proc print data=&table; run;ods html close;`;\r\n * let macros = {table: 'sashelp.class'};\r\n * let outputResults = await appEnv.builtins.submit(src, macros, {ods: true}, appEnv);\r\n * data.ods = outputResults.results.ods;\r\n * return [data, outputResults.status];\r\n * \r\n */\nasync function submit(appEnv, src, macros, output) {\n let viyaSession = await appEnv.getViyaSession('compute');\n if (viyaSession == null) {\n return {\n status: {\n statusCode: 2,\n msg: 'Missing logon information'\n },\n results: {}\n };\n }\n let {\n store,\n session\n } = viyaSession;\n try {\n let computeSummary = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeRun\"])(store, session, src, macros);\n let jobStatus = computeSummary.SASJobStatus;\n let result = {};\n if (jobStatus === 'failed' || jobStatus === 'error' || jobStatus === 'running') {\n let msg = `Job ended with status of ${jobStatus}. Please check the log for errors.`;\n result.log = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeResults\"])(appEnv.store, computeSummary, 'log');\n return {\n status: {\n statusCode: 2,\n msg: msg\n },\n results: result\n };\n }\n if (output.log === true) {\n let log = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeResults\"])(appEnv.store, computeSummary, 'log');\n let logText = '';\n // eslint-disable-next-line array-callback-return\n log.map(data => {\n let line = data.line.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n if (line.length === 0) {\n logText = logText + '\\n';\n } else {}\n logText = logText + line + '\\n';\n });\n result.log = logText;\n }\n if (output.ods === true) {\n result.ods = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeResults\"])(appEnv.store, computeSummary, 'ods');\n let odsUrl = computeSummary.ods.get('link').get('uri');\n let connection = appEnv.store.connection();\n let host = connection.options.proxyServer == null ? appEnv.logonPayload.host : connection.options.proxyServer;\n result.odsurl = `${host}${odsUrl}`;\n }\n result.tables = {};\n result.tableList = [];\n let tableList = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeResults\"])(appEnv.store, computeSummary, 'tables');\n result.tableList = tableList;\n if (output.tables != null) {\n for (let i in output.tables) {\n let t = output.tables[i];\n let tname = t.table.toUppercase();\n if (tableList.includes(tname) === true) {\n let r = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeFetchData\"])(appEnv.store, computeSummary, tname, 'first', t.payload, 'rows');\n result[tname] = r.data;\n }\n }\n }\n // result.computeSummary = computeSummary;\n return {\n status: {\n statusCode: 0,\n msg: \"completed\"\n },\n results: result\n };\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: err\n },\n results: {}\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (submit);\n\n//# sourceURL=webpack://restafedit/./builtins/submit.js?"); /***/ }), /***/ "./builtins/submitAction.js": /*!**********************************!*\ !*** ./builtins/submitAction.js ***! \**********************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\nasync function submitAction(appEnv, action, args) {\n let viyaSession = await appEnv.getViyaSession(\"cas\");\n if (viyaSession == null) {\n return {\n status: {\n statusCode: 2,\n msg: \"Missing logon information\"\n },\n results: {}\n };\n }\n let {\n store,\n session\n } = viyaSession;\n let p = {\n action: action,\n data: args\n };\n try {\n let r = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"casActionRun\"])(store, session, p);\n return {\n status: {\n statusCode: 0,\n msg: null\n },\n results: r\n };\n } catch (err) {\n return {\n status: {\n statusCode: 2,\n msg: err\n },\n results: {}\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (submitAction);\n\n//# sourceURL=webpack://restafedit/./builtins/submitAction.js?"); /***/ }), /***/ "./builtins/submitCasl.js": /*!********************************!*\ !*** ./builtins/submitCasl.js ***! \********************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\nasync function submitCasl(appEnv, src, args, useCommons) {\n let viyaSession = await appEnv.getViyaSession('cas');\n if (viyaSession == null) {\n return {\n status: {\n statusCode: 2,\n msg: 'Missing logon information'\n },\n results: {}\n };\n }\n const {\n store,\n session\n } = viyaSession;\n try {\n try {\n let r = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"caslRun\"])(store, session, src, args == null ? {} : args, useCommons === true ? true : false);\n let status = {\n statusCode: 0,\n msg: null\n };\n return {\n status,\n results: r\n };\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: 'See console for error messages'\n },\n results: {},\n err: err\n };\n }\n } catch (err) {\n console.log(err);\n return {\n status: {\n statusCode: 2,\n msg: 'See console for error messages'\n },\n results: {},\n err: err\n };\n }\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (submitCasl);\n\n//# sourceURL=webpack://restafedit/./builtins/submitCasl.js?"); /***/ }), /***/ "./casTableList.js": /*!*************************!*\ !*** ./casTableList.js ***! \*************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n/**\r\n * @description get the list of tables in a caslib\r\n * @async\r\n * @module casTableList\r\n * @private\r\n * @category restafedit/utility\r\n * @param {string} lib - caslib of interest\r\n * @param {appEnv} appEnv - app Environment from setup\r\n * @returns {promise} - returns an array of table names\r\n * @example\r\n * list = await casTableList('sashelp', appEnv);\r\n * This method is primarily useful for UI's that want to display a table selector\r\n */\n\nasync function casTableList(lib, appEnv, payload) {\n const {\n store\n } = appEnv;\n\n // get links for the current caslib\n let p = {\n qs: {\n filter: `eq(name,'${lib}')`\n }\n };\n const mylib = await store.apiCall(appEnv.servers.itemsCmd(appEnv.casServerName, 'caslibs'), p);\n\n // if caslib was not found\n if (mylib.itemsList().size === 0) {\n console.log('caslib not found');\n return [];\n }\n p = payload;\n if (p == null) {\n p = {\n qs: {\n limit: 1000,\n start: 0\n }\n };\n }\n const tlist = await store.apiCall(mylib.itemsCmd(lib, 'tables'), p);\n return tlist.itemsList().toJS();\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (casTableList);\n\n//# sourceURL=webpack://restafedit/./casTableList.js?"); /***/ }), /***/ "./casTableUnique.js": /*!***************************!*\ !*** ./casTableUnique.js ***! \***************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n/**\r\n * @description Get unique values for a specific column\r\n * @async\r\n * @private\r\n * @module casTableUnique\r\n * @category restafedit/utility\r\n * @param {object} table object\r\n * @param {string} columnName column name\r\n * @param {string} where where clause\r\n * @param {appEnv} appEnv app Environment from setup\r\n * @returns {promise} {an array of unique values }\r\n * @example\r\n * let selectList = await casTableUnique('company, appEnv))\r\n * This is useful to get a list of unique values for selected columns.\r\n * {columnName:[ array of unque values] }\r\n */\n\nasync function casTableUnique(table, columnName, where, appEnv) {\n const {\n store,\n session\n } = appEnv;\n if (where == null) {\n where = '';\n }\n ;\n const src = `\n results = selectionLists(_args_.column,_args_.table.caslib, _args_.table.name, _args_.where);\n send_response({casResults = {data=results}});\n `;\n const args = {\n table,\n column: columnName,\n where: where\n };\n const result = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"caslRun\"])(store, session, src, args, true);\n if (result.results.casResults.data.statusCode !== 0) {\n // eslint-disable-next-line no-throw-literal\n throw 'Failed to create unique list';\n }\n const data = result.results.casResults.data;\n return data;\n}\n;\n/* harmony default export */ __webpack_exports__[\"a\"] = (casTableUnique);\n\n//# sourceURL=webpack://restafedit/./casTableUnique.js?"); /***/ }), /***/ "./cellEdit.js": /*!*********************!*\ !*** ./cellEdit.js ***! \*********************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _text2Float__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./text2Float */ \"./text2Float.js\");\n/* harmony import */ var _commonHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./commonHandler */ \"./commonHandler.js\");\n/* harmony import */ var _updateTableRows__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateTableRows */ \"./updateTableRows.js\");\n/* harmony import */ var _onEditHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onEditHandler */ \"./onEditHandler.js\");\n/* harmony import */ var _saveTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveTable */ \"./saveTable.js\");\n/* harmony import */ var _validateValueType__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validateValueType */ \"./validateValueType.js\");\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n\n\n\n\n\n\n/**\r\n * @description Process edit of a cell and optionally save the data\r\n * @async\r\n * @module cellEdit\r\n * @category restafedit/core\r\n * @param {string} name - name of the field (lower case)\r\n * @param {*} value - the new value for name field\r\n * @param {number} rowIndex - row Index ( index in the data array on client)\r\n * @param {rowObject} currentData - RowObject for the entire row prior to change\r\n * @param {appEnv} appEnv - app Environment from setup\r\n * @returns {promise} - {data: updated data, status: status }\r\n * @example\r\n * data schema {column1: value, column2, value,...}\r\n * status schema {statusCode: 0|1|2, msg: some string}\r\n * The currentData object is also updated with the latest values.\r\n *\r\n * const r = await cellEdit'x1',100, 1, d, appEnv)\r\n - If the column has an handler it will be called.\r\n - If 'main\" handler is specified, it will be called.\r\n - If autoSave is true\r\n - The 'term' handler(if specified) will be called\r\n - The data for that row will be persisted to the server\r\n */\n\nasync function cellEdit(name, value, rowIndex, _icurrentData, appEnv) {\n /* do not modify the data directly. caller will probably do a setState */\n ;\n // make a copy for modification - allows for recovery if there is an error\n let currentData = appEnv.state.data[rowIndex];\n // all modifications in newDataRow\n let newDataRow = Object.assign({}, currentData);\n const columns = appEnv.state.columns;\n const {\n handlers,\n autoSave\n } = appEnv.appControl.editControl;\n const iautoSave = autoSave == null ? true : autoSave;\n const cachePolicy = appEnv.appControl.cachePolicy == null ? true : appEnv.appControl.cachePolicy;\n appEnv.handlers = handlers;\n let status = {\n statusCode: 0,\n msg: \"\"\n };\n\n // handle init and term for all types of forms\n // user will edit newData in place.\n\n if (name === \"init\" || name === \"term\" || name === \"initApp\" || name === \"termApp\" || name === \"main\") {\n let r = await Object(_commonHandler__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])(name, newDataRow, currentData, rowIndex, appEnv, status);\n if (r[1].statusCode === 2) {\n // keep state data as is and return message.\n console.log(`Error in ${name} handler`, r[1].msg);\n return {\n data: currentData,\n status: r[1]\n };\n } else {\n // update state data with new data\n appEnv.state.data[rowIndex] = r[0];\n if (cachePolicy !== false) {\n appEnv.state.data[rowIndex] = r[0];\n }\n return {\n data: r[0],\n status: r[1]\n };\n }\n }\n\n // The rest of the processing for specific cell edits\n\n // now make sure the specified name is a valid column name\n if (columns[name] == null) {\n return {\n data: currentData,\n status: {\n statusCode: 2,\n msg: `Column ${name} not found`\n }\n };\n }\n\n // make sure that the incoming value type matches the column type\n if (appEnv.tableFormat !== true) {\n // No checking if the data is from a formatted table\n if (Object(_validateValueType__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"])(value, columns[name].Type) === false) {\n console.log(`Type of value does not match ${name} type. Type of ${name} is ${columns[name].Type}`);\n return {\n data: currentData,\n status: {\n statusCode: 2,\n msg: `Type of value does not match ${name} type`\n }\n };\n }\n }\n\n // update the working copy with the new value\n // Yes I know text2Float is not the best name for this function - may change it before production push\n newDataRow[name] = Object(_text2Float__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"])(value, columns[name]);\n\n // if the is onEdit(onChange) handler specified call it.\n if (handlers[name] != null) {\n let r = await Object(_onEditHandler__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"])(name, newDataRow, currentData, rowIndex, appEnv, status);\n if (r[1].statusCode === 2) {\n console.log(`Error in onEdit handler for ${name}`, status.msg);\n console.log(`Bypassing main handler`);\n return {\n data: currentData,\n status: r[1]\n };\n }\n // update newDataRow with the result of the onEdit handler;\n newDataRow = r[0];\n status = r[1];\n }\n // now drive main handler\n let r = await Object(_commonHandler__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])(\"main\", newDataRow, currentData, rowIndex, appEnv, status);\n if (r[1].statusCode === 2) {\n // fall all the way back to the original data prior to onEdit handler\n console.log(`Error in main handler for ${name}`, r[1].msg);\n return {\n data: currentData,\n status: r[1]\n };\n }\n\n // Now we have successfully edited the data, let's see if we need to save it\n // only in the case of tables and autoSave is true\n\n r[0]._modified = 1;\n newDataRow = r[0];\n status = r[1];\n if (cachePolicy !== false) {\n appEnv.state.data[currentData._rowIndex] = newDataRow;\n }\n // update state data with new data\n appEnv.state.data[rowIndex] = newDataRow;\n // if editing table, see if we need to save the table\n if (iautoSave === true && appEnv.table != null) {\n r = await Object(_commonHandler__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])(\"term\", r[0], newDataRow, rowIndex, appEnv, status);\n status = r[1];\n if (status.statusCode === 2) {\n console.log(`Error in term prior to saving data for ${name} row ${rowIndex}`, status.msg);\n return {\n data: newDataRow,\n status: r[1]\n };\n }\n appEnv.state.data[rowIndex] = r[0];\n\n // Now update the table rows\n await Object(_updateTableRows__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"])(r[0], appEnv);\n // need better error handling in saveTable\n if (appEnv.appControl.editControl.autoSaveTable === true) {\n await Object(_saveTable__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"])(appEnv);\n }\n }\n return {\n data: newDataRow,\n status\n };\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (cellEdit);\n\n//# sourceURL=webpack://restafedit/./cellEdit.js?"); /***/ }), /***/ "./commonHandler.js": /*!**************************!*\ !*** ./commonHandler.js ***! \**************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _isStdObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isStdObject.js */ \"./isStdObject.js\");\n/*\r\n * Copyright © 2022, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n/**\r\n * @description Run init, main or term handlers\r\n * @async\r\n * @private\r\n * @module commonHandler\r\n * @category restafedit/core\r\n * @param {string} type - type of exit (init|main|term)\r\n * @param {rowObject} data - rowObject\r\n * @param {number} rowIndex - client-side Row Index\r\n * @param {appEnv} appEnv - app Environment from setup\r\n * @returns {promise} - [data, status]\r\n * @example\r\n * The function returns the updated data and the status.\r\n * This function is called by cellEdit, so there is probably little reason\r\n * to call this directly\r\n * Please see the restafeditExample in the Tutorial pulldown\r\n */\nasync function commonHandler(type, temp, currentData, rowIndex, appEnv, status) {\n const {\n handlers\n } = appEnv.appControl.editControl;\n let r = null;\n let userFuncf = handlers[type];\n if (userFuncf != null) {\n try {\n if (appEnv.apiVersion === 2) {\n r = appEnv.table == null ? await userFuncf(temp, appEnv.appContext) : await userFuncf(temp, rowIndex, appEnv.appContext);\n } else {\n // for backward compatibility\n r = await userFuncf(temp, rowIndex, appEnv.appContext);\n }\n } catch (err) {\n console.log('Error in handler', type, err);\n status = {\n statusCode: 2,\n msg: `Error in handler ${type}. See console`\n };\n return [currentData, status];\n }\n }\n ;\n /*\r\n user MUST modify temp to reflect the changes and not a copy of temp\r\n Now make sure the returned is compliant with the defined schema\r\n \r\n */\n // temp is now modified by user code\n // currentData is the original dat\n let result = Object(_isStdObject_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"])(r, temp, currentData, status, type, appEnv);\n return result;\n}\n;\n/* harmony default export */ __webpack_exports__[\"a\"] = (commonHandler);\n\n//# sourceURL=webpack://restafedit/./commonHandler.js?"); /***/ }), /***/ "./computeTableList.js": /*!*****************************!*\ !*** ./computeTableList.js ***! \*****************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n/**\r\n * @description get the list of tables in a caslib\r\n * @async\r\n * @module computeTableList\r\n * @private\r\n * @category restafedit/utility\r\n * @param {string} lib - libref of interest\r\n * @param {appEnv} appEnv - app Environment from setup\r\n * @returns {promise} - returns an array of table names\r\n * @example\r\n * let status = await distinctValues('company', appEnv))\r\n * This is useful to get a list of unique values for selected columns.\r\n * {company:['IBM', 'Microsoft', 'SAS'] }\r\n */\n\nasync function computeTableList(lib, appEnv, payload) {\n const {\n store,\n session\n } = appEnv;\n lib = lib.toUpperCase();\n let p = {\n qs: {\n filter: `eq(name,'${lib}')`\n }\n };\n const mylib = await store.apiCall(session.links('librefs'), p);\n if (mylib.itemsList().size === 0) {\n console.log('libref not found');\n return [];\n }\n const selflib = await store.apiCall(mylib.itemsCmd(lib, 'self'));\n p = payload;\n if (p == null) {\n p = {\n qs: {\n limit: 1000,\n start: 0\n }\n };\n }\n const tables = await store.apiCall(selflib.links('tables'), p);\n return tables.itemsList().toJS();\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = (computeTableList);\n\n//# sourceURL=webpack://restafedit/./computeTableList.js?"); /***/ }), /***/ "./computeTableUnique.js": /*!*******************************!*\ !*** ./computeTableUnique.js ***! \*******************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sassoftware/restaflib */ \"@sassoftware/restaflib\");\n/* harmony import */ var _sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n\n/**\r\n * @description Get unique values for a specific column(sas table)\r\n * @async\r\n * @private\r\n * @module computeTableUnique\r\n * @category restafedit/utility\r\n * @param {string} columnName column name\r\n * @param {appEnv} appEnv app Environment from setup\r\n * @returns {promise} {an array of unique values }\r\n * @example\r\n * let selectList = await computeTableUnique('company, appEnv))\r\n * This is useful to get a list of unique values for selected columns.\r\n * {columnName:[ array of unquew values] }\r\n */\n\nasync function computeTableUnique(table, columnName, where, appEnv) {\n const {\n store,\n session\n } = appEnv;\n const t = `${table.libref}.${table.name}`.toUpperCase();\n let code = `\n PROC SQL;\n CREATE TABLE WORK.QUERY\n AS\n SELECT distinct(${columnName}) as utype FROM ${t}`;\n if (where != null && where.length > 0) {\n code = code + ` WHERE ${where}`;\n }\n code = code + '; QUIT;';\n const computeSummary = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeRun\"])(store, session, code);\n const values = {};\n let dir = 'first';\n const res = [];\n let data;\n do {\n data = await Object(_sassoftware_restaflib__WEBPACK_IMPORTED_MODULE_0__[\"computeFetchData\"])(store, computeSummary, 'QUERY', dir);\n const r = data.rows.map(r1 => r1[0]);\n res.push(...r);\n dir = 'next';\n } while (data.scrollOptions.indexOf('next') >= 0);\n values[columnName] = res;\n return values;\n}\n;\n/* harmony default export */ __webpack_exports__[\"a\"] = (computeTableUnique);\n\n//# sourceURL=webpack://restafedit/./computeTableUnique.js?"); /***/ }), /***/ "./deleteViyaSession.js": /*!******************************!*\ !*** ./deleteViyaSession.js ***! \******************************/ /*! exports provided: default */ /*! exports used: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("/*\r\n * Copyright © 2024, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\n\n/**\r\n * @description - Delete an existing Viya Session(cas or compute)\r\n * @async\r\n * @function deleteViyaSession\r\n * @param {appControl} appControl - appControl object\r\n * @param {string} source - cas|compute\r\n * @returns {promise} - appEnv - return true\r\n * @example - Used for cleanup of app session\r\n */\n\nasync function deleteViyaSession(appEnv, source) {\n // let {casSetup, computeSetup} = restaflib;\n let {\n appConfig,\n store\n } = appEnv;\n // if it is already created, return it\n if (appConfig.logonPayload == null || source == null || source.trim().length === 0) {\n return null;\n }\n source = source.toLowerCase();\n if (appEnv.currentSessions[source].session != null) {\n let session = appEnv.currentSessions[source].session;\n await store.apiCall(session.links('delete'));\n let lapp = appEnv.currentSessions[source];\n lapp.session = null;\n lapp.servers = null;\n lapp.serverName = null;\n lapp.casServerName = null;\n lapp.sessionID = null