UNPKG

3.19 kBSource Map (JSON)View Raw
1{"version":3,"file":"hoist.js","sourceRoot":"../src/","sources":["hoist.ts"],"names":[],"mappings":";;;IAAA,IAAM,0BAA0B,GAAG;QACjC,UAAU;QACV,QAAQ;QACR,oBAAoB;QACpB,2BAA2B;QAC3B,mBAAmB;QACnB,2BAA2B;QAC3B,kCAAkC;QAClC,uBAAuB;QACvB,qBAAqB;QACrB,yBAAyB;QACzB,4BAA4B;QAC5B,oBAAoB;QACpB,sBAAsB;KACvB,CAAC;IAEF;;;;;;;;OAQG;IACH,SAAgB,YAAY;IAC1B,8DAA8D;IAC9D,WAAgB;IAChB,8DAA8D;IAC9D,MAAW,EACX,UAAiD;QAAjD,2BAAA,EAAA,uCAAiD;QAEjD,IAAI,OAAO,GAAa,EAAE,CAAC;gCAClB,UAAU;YACjB,IACE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,UAAU;gBACxC,WAAW,CAAC,UAAU,CAAC,KAAK,SAAS;gBACrC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EACtD;gBACA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzB,8DAA8D;gBAC9D,WAAW,CAAC,UAAU,CAAC,GAAG;oBAAS,cAAc;yBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;wBAAd,yBAAc;;oBAC/C,MAAM,CAAC,UAAU,CAAC,OAAlB,MAAM,EAAgB,IAAI,EAAE;gBAC9B,CAAC,CAAC;aACH;;QAXH,KAAK,IAAI,UAAU,IAAI,MAAM;oBAApB,UAAU;SAYlB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAvBD,oCAuBC;IAED;;;;;;OAMG;IACH,8DAA8D;IAC9D,SAAgB,cAAc,CAAC,MAAW,EAAE,WAAqB;QAC/D,WAAW,CAAC,OAAO,CAAC,UAAC,UAAkB,IAAK,OAAA,OAAO,MAAM,CAAC,UAAU,CAAC,EAAzB,CAAyB,CAAC,CAAC;IACzE,CAAC;IAFD,wCAEC","sourcesContent":["const REACT_LIFECYCLE_EXCLUSIONS = [\n 'setState',\n 'render',\n 'componentWillMount',\n 'UNSAFE_componentWillMount',\n 'componentDidMount',\n 'componentWillReceiveProps',\n 'UNSAFE_componentWillReceiveProps',\n 'shouldComponentUpdate',\n 'componentWillUpdate',\n 'getSnapshotBeforeUpdate',\n 'UNSAFE_componentWillUpdate',\n 'componentDidUpdate',\n 'componentWillUnmount',\n];\n\n/**\n * Allows you to hoist methods, except those in an exclusion set from a source object into a destination object.\n *\n * @public\n * @param destination - The instance of the object to hoist the methods onto.\n * @param source - The instance of the object where the methods are hoisted from.\n * @param exclusions - (Optional) What methods to exclude from being hoisted.\n * @returns An array of names of methods that were hoisted.\n */\nexport function hoistMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n source: any,\n exclusions: string[] = REACT_LIFECYCLE_EXCLUSIONS,\n): string[] {\n let hoisted: string[] = [];\n for (let methodName in source) {\n if (\n typeof source[methodName] === 'function' &&\n destination[methodName] === undefined &&\n (!exclusions || exclusions.indexOf(methodName) === -1)\n ) {\n hoisted.push(methodName);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination[methodName] = function(...args: any[]): void {\n source[methodName](...args);\n };\n }\n }\n\n return hoisted;\n}\n\n/**\n * Provides a method for convenience to unhoist hoisted methods.\n *\n * @public\n * @param source - The source object upon which methods were hoisted.\n * @param methodNames - An array of method names to unhoist.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function unhoistMethods(source: any, methodNames: string[]): void {\n methodNames.forEach((methodName: string) => delete source[methodName]);\n}\n"]}
\No newline at end of file