1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const API_IMPLEMENTATION_METHOD_RE = /^_(\S+)\$(getter|setter)?$/;
|
4 | function getDelegatedAPIList(src) {
|
5 | return Object
|
6 | .getOwnPropertyNames(src)
|
7 | .map(prop => {
|
8 | const match = prop.match(API_IMPLEMENTATION_METHOD_RE);
|
9 | if (match) {
|
10 | return {
|
11 | srcProp: prop,
|
12 | apiProp: match[1],
|
13 | accessor: match[2]
|
14 | };
|
15 | }
|
16 | return null;
|
17 | })
|
18 | .filter(item => !!item);
|
19 | }
|
20 | exports.getDelegatedAPIList = getDelegatedAPIList;
|
21 | function delegateAPI(dest, apiList, opts) {
|
22 | apiList.forEach(({ srcProp, apiProp, accessor }) => {
|
23 | const fn = function (...args) {
|
24 | if (opts.proxyMethod)
|
25 | opts.proxyMethod();
|
26 | let handler = null;
|
27 | if (opts.useCurrentCtxAsHandler)
|
28 | handler = this;
|
29 | else if (opts.getHandler)
|
30 | handler = opts.getHandler(apiProp, accessor);
|
31 | else
|
32 | handler = opts.handler;
|
33 | return handler[srcProp](...args);
|
34 | };
|
35 | if (accessor === 'getter')
|
36 | Object.defineProperty(dest, apiProp, { get: fn, configurable: true });
|
37 | else if (accessor === 'setter')
|
38 | Object.defineProperty(dest, apiProp, { set: fn, configurable: true });
|
39 | else
|
40 | dest[apiProp] = fn;
|
41 | });
|
42 | }
|
43 | exports.delegateAPI = delegateAPI;
|
44 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVkLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWxlZ2F0ZWQtYXBpLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSw0QkFBNEIsR0FBRyw0QkFBNEIsQ0FBQztBQUVsRSxTQUFnQixtQkFBbUIsQ0FBRSxHQUFHO0lBQ3BDLE9BQU8sTUFBTTtTQUNSLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztTQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFdkQsSUFBSSxLQUFLLEVBQUU7WUFDUCxPQUFPO2dCQUNILE9BQU8sRUFBRyxJQUFJO2dCQUNkLE9BQU8sRUFBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQixDQUFDO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQWpCRCxrREFpQkM7QUFFRCxTQUFnQixXQUFXLENBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO0lBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUMvQyxNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsSUFBSTtZQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFdkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRW5CLElBQUksSUFBSSxDQUFDLHNCQUFzQjtnQkFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFFZCxJQUFJLElBQUksQ0FBQyxVQUFVO2dCQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7O2dCQUc3QyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUUzQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQztRQUVGLElBQUksUUFBUSxLQUFLLFFBQVE7WUFDckIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUVyRSxJQUFJLFFBQVEsS0FBSyxRQUFRO1lBQzFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7O1lBR3RFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBN0JELGtDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFQSV9JTVBMRU1FTlRBVElPTl9NRVRIT0RfUkUgPSAvXl8oXFxTKylcXCQoZ2V0dGVyfHNldHRlcik/JC87XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxlZ2F0ZWRBUElMaXN0IChzcmMpIHtcbiAgICByZXR1cm4gT2JqZWN0XG4gICAgICAgIC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNyYylcbiAgICAgICAgLm1hcChwcm9wID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gcHJvcC5tYXRjaChBUElfSU1QTEVNRU5UQVRJT05fTUVUSE9EX1JFKTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgc3JjUHJvcDogIHByb3AsXG4gICAgICAgICAgICAgICAgICAgIGFwaVByb3A6ICBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXNzb3I6IG1hdGNoWzJdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZWdhdGVBUEkgKGRlc3QsIGFwaUxpc3QsIG9wdHMpIHtcbiAgICBhcGlMaXN0LmZvckVhY2goKHsgc3JjUHJvcCwgYXBpUHJvcCwgYWNjZXNzb3IgfSkgPT4ge1xuICAgICAgICBjb25zdCBmbiA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgICBpZiAob3B0cy5wcm94eU1ldGhvZClcbiAgICAgICAgICAgICAgICBvcHRzLnByb3h5TWV0aG9kKCk7XG5cbiAgICAgICAgICAgIGxldCBoYW5kbGVyID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKG9wdHMudXNlQ3VycmVudEN0eEFzSGFuZGxlcilcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gdGhpcztcblxuICAgICAgICAgICAgZWxzZSBpZiAob3B0cy5nZXRIYW5kbGVyKVxuICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBvcHRzLmdldEhhbmRsZXIoYXBpUHJvcCwgYWNjZXNzb3IpO1xuXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgaGFuZGxlciA9IG9wdHMuaGFuZGxlcjtcblxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXJbc3JjUHJvcF0oLi4uYXJncyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFjY2Vzc29yID09PSAnZ2V0dGVyJylcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZXN0LCBhcGlQcm9wLCB7IGdldDogZm4sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcblxuICAgICAgICBlbHNlIGlmIChhY2Nlc3NvciA9PT0gJ3NldHRlcicpXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwgYXBpUHJvcCwgeyBzZXQ6IGZuLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVzdFthcGlQcm9wXSA9IGZuO1xuICAgIH0pO1xufVxuIl19 |
\ | No newline at end of file |