UNPKG

appsync-testing

Version:

![GitHub Actions Build (main)](https://img.shields.io/github/workflow/status/WealthWizardsEngineering/appsync-testing/Pipeline/main?logo=github) ![npm](https://img.shields.io/npm/v/appsync-testing?color=red&logo=npm)

143 lines (120 loc) 4.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var util = require('util'); var child = require('child_process'); var fs = require('fs'); var R = require('ramda'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var util__default = /*#__PURE__*/_interopDefaultLegacy(util); var child__default = /*#__PURE__*/_interopDefaultLegacy(child); var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); var R__namespace = /*#__PURE__*/_interopNamespace(R); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var exec = util__default["default"].promisify(child__default["default"].exec); var getError = R__namespace.applySpec({ message: R__namespace.prop('message'), errorType: R__namespace.prop('errorType'), data: R__namespace.prop('data'), errorInfo: R__namespace.prop('errorInfo') }); var getResult = R__namespace.applySpec({ result: R__namespace.compose(JSON.parse, R__namespace.prop('result')), error: R__namespace.compose(R__namespace.when(R__namespace.is(Object), getError), R__namespace.prop('error')), errors: R__namespace.compose(R__namespace.map(getError), R__namespace.prop('errors')) }); var makeSafeForBinary = function makeSafeForBinary(str) { return str.replace(/(["'$`\\])/g, '\\$1'); }; var defaultContext = { arguments: {}, source: {}, identity: {}, request: {}, info: {}, stash: {}, result: {}, prev: { result: {} } }; async function render(fileName) { var inputContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultContext; var binary = "".concat(__dirname, "/bridge"); var main = require.main; var template = fs__default["default"].readFileSync("".concat(main.path, "/").concat(fileName)).toString(); var context = _objectSpread2(_objectSpread2({}, defaultContext), inputContext); var currentTime = new Date().toISOString(); var state = { authType: 'User Pool Authentication', currentTime: currentTime }; var safeTemplate = makeSafeForBinary(template); var safeContext = makeSafeForBinary(JSON.stringify(context)); var safeState = makeSafeForBinary(JSON.stringify(state)); var command = "".concat(binary, " \"").concat(safeTemplate, "\" \"").concat(safeContext, "\" \"").concat(safeState, "\""); var _await$exec = await exec(command), stderr = _await$exec.stderr, stdout = _await$exec.stdout; if (stderr) { console.error(stderr); } var response = JSON.parse(stdout); try { return getResult(response); } catch (error) { console.error('Invalid JSON from template ' + fileName, '\n\n', response.result); throw error; } } exports.render = render; //# sourceMappingURL=index.js.map