Innovenergy_trunk/frontend/node_modules/testcafe/lib/utils/delegated-api.js

74 lines
9.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.delegateAPI = exports.getDelegatedAPIList = void 0;
const API_IMPLEMENTATION_METHOD_RE = /^_(\S+)\$(getter|setter)?$/;
function isTestController(obj) {
var _a;
return ((_a = obj === null || obj === void 0 ? void 0 : obj.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'TestController';
}
function getTestController(obj) {
if (isTestController(obj))
return obj;
else if (isTestController(obj._testController))
return obj._testController;
return null;
}
function getDelegatedAPIList(src) {
return Object
.getOwnPropertyNames(src)
.map(prop => {
const match = prop.match(API_IMPLEMENTATION_METHOD_RE);
if (match) {
return {
srcProp: prop,
apiProp: match[1],
accessor: match[2],
};
}
return null;
})
.filter(item => !!item);
}
exports.getDelegatedAPIList = getDelegatedAPIList;
function delegateAPI(dest, apiList, opts) {
apiList.forEach(({ srcProp, apiProp, accessor }) => {
let fn = function (...args) {
if (opts.proxyMethod)
opts.proxyMethod();
let handler = null;
if (opts.useCurrentCtxAsHandler)
handler = this;
else if (opts.getHandler)
handler = opts.getHandler(apiProp, accessor);
else
handler = opts.handler;
return handler[srcProp](...args);
};
// NOTE: need to create named function to process possible err.stack correctly
const createNamedFunction = new Function('srcProp', 'apiProp', 'accessor', 'opts', `
return ${fn.toString().replace('function', 'function ' + apiProp)}
`);
fn = createNamedFunction(srcProp, apiProp, accessor, opts);
if (accessor === 'getter')
Object.defineProperty(dest, apiProp, { get: fn, configurable: true });
else if (accessor === 'setter')
Object.defineProperty(dest, apiProp, { set: fn, configurable: true });
else {
// NOTE: need to create `property` but not a `function` to stop on `debugger`
// before the action is called
Object.defineProperty(dest, apiProp, {
get() {
const testController = getTestController(this);
if (testController && testController.shouldStop(apiProp)) {
// eslint-disable-next-line no-debugger
debugger;
}
return fn;
},
configurable: true,
});
}
});
}
exports.delegateAPI = delegateAPI;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVkLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWxlZ2F0ZWQtYXBpLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sNEJBQTRCLEdBQUcsNEJBQTRCLENBQUM7QUFFbEUsU0FBUyxnQkFBZ0IsQ0FBRSxHQUFHOztJQUMxQixPQUFPLENBQUEsTUFBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsV0FBVywwQ0FBRSxJQUFJLE1BQUssZ0JBQWdCLENBQUM7QUFDdkQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUUsR0FBRztJQUMzQixJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztRQUNyQixPQUFPLEdBQUcsQ0FBQztTQUVWLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUMxQyxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFFL0IsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFFLEdBQUc7SUFDcEMsT0FBTyxNQUFNO1NBQ1IsbUJBQW1CLENBQUMsR0FBRyxDQUFDO1NBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUV2RCxJQUFJLEtBQUssRUFBRTtZQUNQLE9BQU87Z0JBQ0gsT0FBTyxFQUFHLElBQUk7Z0JBQ2QsT0FBTyxFQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3JCLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBakJELGtEQWlCQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUk7SUFDNUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQy9DLElBQUksRUFBRSxHQUFHLFVBQVUsR0FBRyxJQUFJO1lBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVc7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV2QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsc0JBQXNCO2dCQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUVkLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQzs7Z0JBRzdDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBRTNCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBRUYsOEVBQThFO1FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO3FCQUN0RSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDO1NBQ3BFLENBQUMsQ0FBQztRQUVILEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRCxJQUFJLFFBQVEsS0FBSyxRQUFRO1lBQ3JCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFFckUsSUFBSSxRQUFRLEtBQUssUUFBUTtZQUMxQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBRXJFO1lBQ0QsNkVBQTZFO1lBQzdFLDhCQUE4QjtZQUM5QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQ2pDLEdBQUc7b0JBQ0MsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRS9DLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3RELHVDQUF1Qzt3QkFDdkMsUUFBUSxDQUFDO3FCQUNaO29CQUVELE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFuREQsa0NBbURDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQVBJX0lNUExFTUVOVEFUSU9OX01FVEhPRF9SRSA9IC9eXyhcXFMrKVxcJChnZXR0ZXJ8c2V0dGVyKT8kLztcblxuZnVuY3Rpb24gaXNUZXN0Q29udHJvbGxlciAob2JqKSB7XG4gICAgcmV0dXJuIG9iaj8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdUZXN0Q29udHJvbGxlcic7XG59XG5cbmZ1bmN0aW9uIGdldFRlc3RDb250cm9sbGVyIChvYmopIHtcbiAgICBpZiAoaXNUZXN0Q29udHJvbGxlcihvYmopKVxuICAgICAgICByZXR1cm4gb2JqO1xuXG4gICAgZWxzZSBpZiAoaXNUZXN0Q29udHJvbGxlcihvYmouX3Rlc3RDb250cm9sbGVyKSlcbiAgICAgICAgcmV0dXJuIG9iai5fdGVzdENvbnRyb2xsZXI7XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGVnYXRlZEFQSUxpc3QgKHNyYykge1xuICAgIHJldHVybiBPYmplY3RcbiAgICAgICAgLmdldE93blByb3BlcnR5TmFtZXMoc3JjKVxuICAgICAgICAubWFwKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBwcm9wLm1hdGNoKEFQSV9JTVBMRU1FTlRBVElPTl9NRVRIT0RfUkUpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzcmNQcm9wOiAgcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgYXBpUHJvcDogIG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogbWF0Y2hbMl0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZWdhdGVBUEkgKGRlc3QsIGFwaUxpc3QsIG9wdHMpIHtcbiAgICBhcGlMaXN0LmZvckVhY2goKHsgc3JjUHJvcCwgYXBpUHJvcCwgYWNjZXNzb3IgfSkgPT4ge1xuICAgICAgICBsZXQgZm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgaWYgKG9wdHMucHJveHlNZXRob2QpXG4gICAgICAgICAgICAgICAgb3B0cy5wcm94eU1ldGhvZCgpO1xuXG4gICAgICAgICAgICBsZXQgaGFuZGxlciA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChvcHRzLnVzZUN1cnJlbnRDdHhBc0hhbmRsZXIpXG4gICAgICAgICAgICAgICAgaGFuZGxlciA9IHRoaXM7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdHMuZ2V0SGFuZGxlcilcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gb3B0cy5nZXRIYW5kbGVyKGFwaVByb3AsIGFjY2Vzc29yKTtcblxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBvcHRzLmhhbmRsZXI7XG5cbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyW3NyY1Byb3BdKC4uLmFyZ3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIE5PVEU6IG5lZWQgdG8gY3JlYXRlIG5hbWVkIGZ1bmN0aW9uIHRvIHByb2Nlc3MgcG9zc2libGUgZXJyLnN0YWNrIGNvcnJlY3RseVxuICAgICAgICBjb25zdCBjcmVhdGVOYW1lZEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKCdzcmNQcm9wJywgJ2FwaVByb3AnLCAnYWNjZXNzb3InLCAnb3B0cycsIGBcbiAgICAgICAgICAgIHJldHVybiAke2ZuLnRvU3RyaW5nKCkucmVwbGFjZSgnZnVuY3Rpb24nLCAnZnVuY3Rpb24gJyArIGFwaVByb3ApfVxuICAgICAgICBgKTtcblxuICAgICAgICBmbiA9IGNyZWF0ZU5hbWVkRnVuY3Rpb24oc3JjUHJvcCwgYXBpUHJvcCwgYWNjZXNzb3IsIG9wdHMpO1xuXG4gICAgICAgIGlmIChhY2Nlc3NvciA9PT0gJ2dldHRlcicpXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwgYXBpUHJvcCwgeyBnZXQ6IGZuLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5cbiAgICAgICAgZWxzZSBpZiAoYWNjZXNzb3IgPT09ICdzZXR0ZXInKVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlc3QsIGFwaVByb3AsIHsgc2V0OiBmbiwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gTk9URTogbmVlZCB0byBjcmVhdGUgYHByb3BlcnR5YCBidXQgbm90IGEgYGZ1bmN0aW9uYCB0byBzdG9wIG9uIGBkZWJ1Z2dlcmBcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0aGUgYWN0aW9uIGlzIGNhbGxlZFxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlc3QsIGFwaVByb3AsIHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29udHJvbGxlciA9IGdldFRlc3RDb250cm9sbGVyKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0Q29udHJvbGxlciAmJiB0ZXN0Q29udHJvbGxlci5zaG91bGRTdG9wKGFwaVByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVidWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==