imqueue/pg-pubsub

View on GitHub
src/PgPubSub.ts

Summary

Maintainability
A
4 hrs
Test Coverage
A
100%

File PgPubSub.ts has 282 lines of code (exceeds 250 allowed). Consider refactoring.
Open

/*!
 * Copyright (c) 2018, imqueue.com <support@imqueue.com>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
Severity: Minor
Found in src/PgPubSub.ts - About 2 hrs to fix

    PgPubSub has 23 functions (exceeds 20 allowed). Consider refactoring.
    Wontfix

    export class PgPubSub extends EventEmitter {
    
        public readonly pgClient: PgClient;
        public readonly options: PgPubSubOptions;
        public readonly channels: PgChannelEmitter = new PgChannelEmitter();
    Severity: Minor
    Found in src/PgPubSub.ts - About 2 hrs to fix

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

              const skip = RX_LOCK_CHANNEL.test(notification.channel) || (
                  this.options.filtered && this.processId === notification.processId
              );
      Severity: Minor
      Found in src/PgPubSub.ts and 1 other location - About 35 mins to fix
      src/PgPubSub.ts on lines 561..563

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 47.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

              const skip = RX_LOCK_CHANNEL.test(notification.channel) || (
                  this.options.filtered && this.processId === notification.processId
              );
      Severity: Minor
      Found in src/PgPubSub.ts and 1 other location - About 35 mins to fix
      src/PgPubSub.ts on lines 593..595

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 47.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      unused expression, expected an assignment or function call
      Open

                  !uniqueKey && lock.onRelease(chan => this.listen(chan));
      Severity: Minor
      Found in src/PgPubSub.ts by tslint

      Rule: no-unused-expression

      Disallows unused expression statements.

      Unused expressions are expression statements which are not assignments or function calls (and thus usually no-ops).

      Rationale

      Detects potential errors where an assignment or function call was intended.

      Config

      Three arguments may be optionally provided:

      • allow-fast-null-checks allows to use logical operators to perform fast null checks and perform method or function calls for side effects (e.g. e && e.preventDefault()).
      • allow-new allows 'new' expressions for side effects (e.g. new ModifyGlobalState();.
      • allow-tagged-template allows tagged templates for side effects (e.g. this.add\foo`;`.
      Examples
      "no-unused-expression": true
      "no-unused-expression": true,allow-fast-null-checks
      Schema
      {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "allow-fast-null-checks",
            "allow-new",
            "allow-tagged-template"
          ]
        },
        "minLength": 0,
        "maxLength": 3
      }

      For more information see this page.

      Forbidden bitwise operation
      Open

              return !!~this.activeChannels().indexOf(channel);
      Severity: Minor
      Found in src/PgPubSub.ts by tslint

      Rule: no-bitwise

      Disallows bitwise operators.

      Specifically, the following bitwise operators are banned: &, &=, |, |=, ^, ^=, <<, <<=, >>, >>=, >>>, >>>=, and ~. This rule does not ban the use of & and | for intersection and union types.

      Rationale

      Bitwise operators are often typos - for example bool1 & bool2 instead of bool1 && bool2. They also can be an indicator of overly clever code which decreases maintainability.

      Config

      Not configurable.

      Examples
      "no-bitwise": true

      For more information see this page.

      There are no issues that match your filters.

      Category
      Status