Errors.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. const OError = require('@overleaf/o-error')
  2. class ClientRequestedMissingOpsError extends OError {
  3. constructor(statusCode) {
  4. super('doc updater could not load requested ops', {
  5. statusCode,
  6. })
  7. }
  8. }
  9. class CodedError extends OError {
  10. constructor(message, code) {
  11. super(message, { code })
  12. }
  13. }
  14. class CorruptedJoinProjectResponseError extends OError {
  15. constructor() {
  16. super('no data returned from joinProject request')
  17. }
  18. }
  19. class DataTooLargeToParseError extends OError {
  20. constructor(data) {
  21. super('data too large to parse', {
  22. head: data.slice(0, 1024),
  23. length: data.length,
  24. })
  25. }
  26. }
  27. class DocumentUpdaterRequestFailedError extends OError {
  28. constructor(action, statusCode) {
  29. super('doc updater returned a non-success status code', {
  30. action,
  31. statusCode,
  32. })
  33. }
  34. }
  35. class JoinLeaveEpochMismatchError extends OError {
  36. constructor() {
  37. super('joinLeaveEpoch mismatch')
  38. }
  39. }
  40. class MissingSessionError extends OError {
  41. constructor() {
  42. super('could not look up session by key')
  43. }
  44. }
  45. class NotAuthorizedError extends OError {
  46. constructor() {
  47. super('not authorized')
  48. }
  49. }
  50. class NotJoinedError extends OError {
  51. constructor() {
  52. super('no project_id found on client')
  53. }
  54. }
  55. class NullBytesInOpError extends OError {
  56. constructor(jsonChange) {
  57. super('null bytes found in op', { jsonChange })
  58. }
  59. }
  60. class UnexpectedArgumentsError extends OError {
  61. constructor() {
  62. super('unexpected arguments')
  63. }
  64. }
  65. class UpdateTooLargeError extends OError {
  66. constructor(updateSize) {
  67. super('update is too large', { updateSize })
  68. }
  69. }
  70. class WebApiRequestFailedError extends OError {
  71. constructor(statusCode) {
  72. super('non-success status code from web', { statusCode })
  73. }
  74. }
  75. module.exports = {
  76. CodedError,
  77. CorruptedJoinProjectResponseError,
  78. ClientRequestedMissingOpsError,
  79. DataTooLargeToParseError,
  80. DocumentUpdaterRequestFailedError,
  81. JoinLeaveEpochMismatchError,
  82. MissingSessionError,
  83. NotAuthorizedError,
  84. NotJoinedError,
  85. NullBytesInOpError,
  86. UnexpectedArgumentsError,
  87. UpdateTooLargeError,
  88. WebApiRequestFailedError,
  89. }