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

74 lines
9.2 KiB
JavaScript
Raw Permalink Normal View History

"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/Lm5hbWUgPT09ICdUZXN0Q29udHJvbGxlcic7XG59XG5cbmZ1bmN0aW9uIGdldFRlc3RDb250cm9sbGVyIChvYmopIHtcbiAgICBpZiAoaXNUZXN0Q29udHJvbGxlcihvYmopKVxuICAgICAgICByZXR1cm4gb2JqO1xuXG4gICAgZWxzZSBpZiAoaXNUZXN0Q29udHJvbGxlcihvYmouX3Rlc3RDb250cm9sbGVyKSlcbiAgICAgICAgcmV0dXJuIG9iai5fdGVzdENvbnRyb2xsZXI7XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGVnYXRlZEFQSUxpc3QgKHNyYykge1xuICAgIHJldHVybiBPYmplY3RcbiAgICAgICAgLmdldE93blByb3BlcnR5TmFtZXMoc3JjKVxuICAgICAgICAubWFwKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBwcm9wLm1hdGNoKEFQSV9JTVBMRU1FTlRBVElPTl9NRVRIT0RfUkUpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzcmNQcm9wOiAgcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgYXBpUHJvcDogIG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogbWF0Y2hbMl0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgI