How to use the analytics.raiseError function in analytics

To help you get started, we’ve selected a few analytics examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github EnixCoda / Gitako / src / utils / URLHelper.ts View on Github external
// HEAD is not a valid branch name. Getting HEAD means being detached.
      if (path[0] === 'HEAD') path.shift()
      else {
        const splitBranchName = branchName.split('/')
        while (splitBranchName.length) {
          if (
            splitBranchName[0] === path[0] ||
            // Keep consuming as their heads are same
            (splitBranchName.length === 1 && splitBranchName[0].startsWith(path[0]))
            // This happens when visiting URLs like /blob/{commitSHA}/path/to/file
            // and {commitSHA} is shorter than we got from DOM
          ) {
            splitBranchName.shift()
            path.shift()
          } else {
            raiseError(new Error(`branch name and path prefix not match`))
            return []
          }
        }
      }
    }
    return path.map(decodeURIComponent)
  }
  return []
}
github EnixCoda / Gitako / src / utils / DOMHelper.ts View on Github external
export function attachCopyFileBtn() {
  if (getCurrentPageType() === PAGE_TYPES.RAW_TEXT) {
    // the button group in file content header
    const buttonGroupSelector = '.repository-content > .Box > .Box-header .BtnGroup'
    const buttonGroups = document.querySelectorAll(buttonGroupSelector)

    if (buttonGroups.length === 0) {
      raiseError(new Error(`No button groups found`))
    }

    buttonGroups.forEach(async buttonGroup => {
      if (!buttonGroup.lastElementChild) return
      const button = await renderReact(React.createElement(CopyFileButton))
      if (button instanceof HTMLElement) {
        buttonGroup.appendChild(button)
      }
    })
    return () => {
      const buttons = document.querySelectorAll(`.${copyFileButtonClassName}`)
      buttons.forEach(button => {
        button.parentElement?.removeChild(button)
      })
    }
  }
github EnixCoda / Gitako / src / utils / GitHubHelper.ts View on Github external
const res = await fetch(url, { headers })
  // About res.ok:
  // True if res.status between 200~299
  // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Response/ok
  if (res.ok) {
    return res.json()
  } else {
    // for private repo, GitHub api also responses with 404 when unauthorized
    if (res.status === 404) throw new Error(NOT_FOUND)
    else {
      const content = await res.json()
      if (apiRateLimitExceeded(content)) throw new Error(API_RATE_LIMIT)
      if (isEmptyProject(content)) throw new Error(EMPTY_PROJECT)
      if (isBlockedProject(content)) throw new Error(BLOCKED_PROJECT)
      // Unknown type of error, report it!
      raiseError(new Error(res.statusText))
      throw new Error(content && content.message)
    }
  }
}
github EnixCoda / Gitako / src / utils / DOMHelper.ts View on Github external
export function getCodeElement() {
  if (getCurrentPageType() === PAGE_TYPES.RAW_TEXT) {
    const codeContentSelector = '.repository-content .data table'
    const codeContentElement = $(codeContentSelector)
    if (!codeContentElement) {
      raiseError(new Error('cannot find code content element'))
    }
    return codeContentElement
  }
}
github EnixCoda / Gitako / src / components / SideBar.tsx View on Github external
alert(`Gitako: The OAuth token has expired, please try again.`)
        } else {
          throw new Error(errorDescription)
        }
      } else if (scope !== 'repo' || !accessToken) {
        throw new Error(`Cannot resolve token response: '${JSON.stringify(res)}'`)
      }
      window.history.pushState(
        {},
        'removed search param',
        window.location.pathname.replace(window.location.search, ''),
      )
      return accessToken
    }
  } catch (err) {
    raiseError(err)
  }
}
github EnixCoda / Gitako / src / utils / DOMHelper.ts View on Github external
function getCodeElement() {
    if (getCurrentPageType() === PAGE_TYPES.RAW_TEXT) {
      const codeContentSelector = '.repository-content .file .data table'
      const codeContentElement = $(codeContentSelector)
      if (!codeContentElement) {
        raiseError(new Error('cannot find code content element'))
      }
      return codeContentElement
    }
  }
github EnixCoda / Gitako / src / components / Gitako.tsx View on Github external
componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
    raiseError(error, errorInfo)
  }
github EnixCoda / Gitako / src / utils / DOMHelper.ts View on Github external
const findFileButtonSelector =
    '#js-repo-pjax-container .repository-content .file-navigation a[data-hotkey="t"]'
  const urlFromFindFileButton: string | undefined = $(
    findFileButtonSelector,
    element => (element as HTMLAnchorElement).href,
  )
  if (urlFromFindFileButton) {
    const commitPathRegex = /^(.*?)\/(.*?)\/find\/(.*?)$/
    const result = urlFromFindFileButton.match(commitPathRegex)
    if (result) {
      const [_, userName, repoName, branchName] = result
      if (!branchName.includes(' ')) return branchName
    }
  }

  raiseError(new Error('cannot get current branch'))
}
github EnixCoda / Gitako / src / utils / DOMHelper.ts View on Github external
$(plainReadmeSelector, undefined, () =>
          raiseError(
            new Error('cannot find mount point for copy snippet button while readme exists'),
          ),
        )