LCOV - code coverage report
Current view: top level - www/src - utilities.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 4 16 25.0 %
Date: 2024-07-30 12:54:47 Functions: 3 7 42.9 %

          Line data    Source code
       1             : // @ts-check
       2             : 
       3             : import URI from "urijs";
       4             : 
       5           1 : let id = 0;
       6             : /**
       7             : * @return {string}
       8             : */
       9             : export function genId() {
      10           0 :   return 'a-' + (++id);
      11             : }
      12             : 
      13             : /**
      14             :  * @param {string} url
      15             :  */
      16             : export function httpToWs(url) {
      17          26 :   return url.replace(/^http(s)?\:\/\//, "ws$1://");
      18             : }
      19             : 
      20             : /**
      21             :  * @param  {string[]} args
      22             :  * @returns {URI}
      23             :  */
      24             : export function makeUri(...args) {
      25          40 :   return new URI(args.join("/")).normalize();
      26             : }
      27             : 
      28             : /**
      29             :  * @param {Vue.VueConstructor<any>} Vue
      30             :  */
      31             : export function install(Vue) {
      32             :   // @ts-ignore
      33           1 :   Vue.prototype.$makeUri = makeUri;
      34             : }
      35             : 
      36             : /**
      37             :  *
      38             :  * @param {Vue} object
      39             :  * @param {Function} before
      40             :  * @param {Function} after
      41             :  * @param {(name: string) => boolean} [filter]
      42             :  */
      43             : export function methodWrapper(object, before, after, filter = undefined) {
      44           0 :   Object.entries(object.$options.methods ?? {}).forEach(([ name, func ]) => {
      45           0 :     if (filter && !filter(name)) {
      46           0 :       return;
      47             :     }
      48             : 
      49             :     // debug("wrapping %s", name);
      50             :     /* @ts-ignore */
      51           0 :     object[name] = async function(...args) {
      52           0 :       await before?.(name);
      53           0 :       try {
      54           0 :         const ret = await func.apply(this, args);
      55           0 :         await after?.(name);
      56           0 :         return ret;
      57             :       }
      58             :       catch (err) {
      59           0 :         await after?.(name);
      60           0 :         throw err;
      61             :       }
      62             :     };
      63             :   });
      64             : }
      65             : 
      66             : export default { install };

Generated by: LCOV version 1.16