appsync-testing
Version:
 
143 lines (120 loc) • 4.3 kB
JavaScript
;
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