@blockchaincommons/envelope-pattern - v1.0.0-beta.2
    Preparing search index...

    Class EnvelopePatternError

    Thrown by parseEnvelopePattern (and carried by tryParseEnvelopePattern) for text that does not parse. code says why; details carries the span and the code-specific fields; fullMessage(source) renders the message with the source line and a caret. Instances come from the static factories only.

    try {
    parseEnvelopePattern("subj(text");
    } catch (e) {
    if (EnvelopePatternError.isEnvelopePatternError(e) && e.code === "ExpectedCloseParen") {
    e.details.span; // where the parenthesis was required
    }
    }

    Hierarchy

    • Error
      • EnvelopePatternError
    Index
    name: "EnvelopePatternError"

    Always "EnvelopePatternError"; the cross-copy identity EnvelopePatternError.isEnvelopePatternError checks.

    The discriminant; equals details.code.

    The structured payload, discriminated by code.

    • get span(): Span | undefined

      The span, if the error has one.

      Returns Span | undefined

    • Type guard for an EnvelopePatternError, including one from another copy of this package.

      Parameters

      • value: unknown

      Returns value is
          | EnvelopePatternError & {
              code: "EmptyInput";
              details: { code: "EmptyInput" };
          }
          | EnvelopePatternError & {
              code: "UnexpectedEndOfInput";
              details: { code: "UnexpectedEndOfInput" };
          }
          | EnvelopePatternError & {
              code: "ExtraData";
              details: { code: "ExtraData"; span: Span };
          }
          | EnvelopePatternError & {
              code: "UnexpectedToken";
              details: {
                  code: "UnexpectedToken";
                  span: Span;
                  kind: TokenKind;
                  text: string;
              };
          }
          | EnvelopePatternError & {
              code: "UnrecognizedToken";
              details: { code: "UnrecognizedToken"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidRegex";
              details: { code: "InvalidRegex"; span: Span };
          }
          | EnvelopePatternError & {
              code: "UnterminatedRegex";
              details: { code: "UnterminatedRegex"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidRange";
              details: { code: "InvalidRange"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidHexString";
              details: { code: "InvalidHexString"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidDateFormat";
              details: { code: "InvalidDateFormat"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidNumberFormat";
              details: { code: "InvalidNumberFormat"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidUr";
              details: { code: "InvalidUr"; span: Span; cause: string };
          }
          | EnvelopePatternError & {
              code: "ExpectedOpenParen";
              details: { code: "ExpectedOpenParen"; span: Span };
          }
          | EnvelopePatternError & {
              code: "ExpectedCloseParen";
              details: { code: "ExpectedCloseParen"; span: Span };
          }
          | EnvelopePatternError & {
              code: "ExpectedOpenBracket";
              details: { code: "ExpectedOpenBracket"; span: Span };
          }
          | EnvelopePatternError & {
              code: "ExpectedCloseBracket";
              details: { code: "ExpectedCloseBracket"; span: Span };
          }
          | EnvelopePatternError & {
              code: "ExpectedPattern";
              details: { code: "ExpectedPattern"; span: Span };
          }
          | EnvelopePatternError & {
              code: "UnmatchedParentheses";
              details: { code: "UnmatchedParentheses"; span: Span };
          }
          | EnvelopePatternError & {
              code: "UnmatchedBraces";
              details: { code: "UnmatchedBraces"; span: Span };
          }
          | EnvelopePatternError & {
              code: "InvalidCaptureGroupName";
              details: { code: "InvalidCaptureGroupName"; span: Span; name: string };
          }
          | EnvelopePatternError & {
              code: "InvalidPattern";
              details: { code: "InvalidPattern"; span: Span };
          }
          | EnvelopePatternError & {
              code: "NestingTooDeep";
              details: { code: "NestingTooDeep"; span: Span; maxDepth: number };
          }

    • The message with the source line and a caret under the span.

      Parameters

      • source: string

      Returns string

    • The source is empty.

      Returns EnvelopePatternError & { code: "EmptyInput"; details: { code: "EmptyInput" } }

      • Readonlycode: "EmptyInput"

        The discriminant.

      • Readonlydetails: { code: "EmptyInput" }

        The payload of code.

        • Readonlycode: "EmptyInput"

          The discriminant.

    • The source ended inside a pattern.

      Returns EnvelopePatternError & {
          code: "UnexpectedEndOfInput";
          details: { code: "UnexpectedEndOfInput" };
      }

      • Readonlycode: "UnexpectedEndOfInput"

        The discriminant.

      • Readonlydetails: { code: "UnexpectedEndOfInput" }

        The payload of code.

        • Readonlycode: "UnexpectedEndOfInput"

          The discriminant.

    • Text follows the pattern.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExtraData";
          details: { code: "ExtraData"; span: Span };
      }

      • Readonlycode: "ExtraData"

        The discriminant.

      • Readonlydetails: { code: "ExtraData"; span: Span }

        The payload of code.

        • Readonlycode: "ExtraData"

          The discriminant.

        • Readonlyspan: Span

          The text after the pattern.

    • A token that cannot start or continue a pattern here.

      Parameters

      Returns EnvelopePatternError & {
          code: "UnexpectedToken";
          details: {
              code: "UnexpectedToken";
              span: Span;
              kind: TokenKind;
              text: string;
          };
      }

      • Readonlycode: "UnexpectedToken"

        The discriminant.

      • Readonlydetails: { code: "UnexpectedToken"; span: Span; kind: TokenKind; text: string }

        The payload of code.

        • Readonlycode: "UnexpectedToken"

          The discriminant.

        • Readonlyspan: Span

          The token.

        • Readonlykind: TokenKind

          The kind of the token found.

        • Readonlytext: string

          The token's source text.

    • Text no token matches.

      Parameters

      Returns EnvelopePatternError & {
          code: "UnrecognizedToken";
          details: { code: "UnrecognizedToken"; span: Span };
      }

      • Readonlycode: "UnrecognizedToken"

        The discriminant.

      • Readonlydetails: { code: "UnrecognizedToken"; span: Span }

        The payload of code.

        • Readonlycode: "UnrecognizedToken"

          The discriminant.

        • Readonlyspan: Span

          The unrecognised text.

    • A regex the dialect does not accept.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidRegex";
          details: { code: "InvalidRegex"; span: Span };
      }

      • Readonlycode: "InvalidRegex"

        The discriminant.

      • Readonlydetails: { code: "InvalidRegex"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidRegex"

          The discriminant.

        • Readonlyspan: Span

          The regex literal.

    • A regex or quoted literal without its closing delimiter.

      Parameters

      Returns EnvelopePatternError & {
          code: "UnterminatedRegex";
          details: { code: "UnterminatedRegex"; span: Span };
      }

      • Readonlycode: "UnterminatedRegex"

        The discriminant.

      • Readonlydetails: { code: "UnterminatedRegex"; span: Span }

        The payload of code.

        • Readonlycode: "UnterminatedRegex"

          The discriminant.

        • Readonlyspan: Span

          The opening delimiter.

    • A {n,m} range that is not one, or with n above m.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidRange";
          details: { code: "InvalidRange"; span: Span };
      }

      • Readonlycode: "InvalidRange"

        The discriminant.

      • Readonlydetails: { code: "InvalidRange"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidRange"

          The discriminant.

        • Readonlyspan: Span

          The range text.

    • A hex literal that is not even-length hex of at most 32 bytes.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidHexString";
          details: { code: "InvalidHexString"; span: Span };
      }

      • Readonlycode: "InvalidHexString"

        The discriminant.

      • Readonlydetails: { code: "InvalidHexString"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidHexString"

          The discriminant.

        • Readonlyspan: Span

          The h'…' literal, or for digest(…) the point just after the hex.

    • A date'…' body that is not a date, a range of dates, or a regex.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidDateFormat";
          details: { code: "InvalidDateFormat"; span: Span };
      }

      • Readonlycode: "InvalidDateFormat"

        The discriminant.

      • Readonlydetails: { code: "InvalidDateFormat"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidDateFormat"

          The discriminant.

        • Readonlyspan: Span

          The body between the quotes of date'…'.

    • A number literal outside the 64-bit integer range.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidNumberFormat";
          details: { code: "InvalidNumberFormat"; span: Span };
      }

      • Readonlycode: "InvalidNumberFormat"

        The discriminant.

      • Readonlydetails: { code: "InvalidNumberFormat"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidNumberFormat"

          The discriminant.

        • Readonlyspan: Span

          The literal.

    • A digest(ur:…) body the UR decoder rejects.

      Parameters

      • cause: string
      • range: Span

      Returns EnvelopePatternError & {
          code: "InvalidUr";
          details: { code: "InvalidUr"; span: Span; cause: string };
      }

      • Readonlycode: "InvalidUr"

        The discriminant.

      • Readonlydetails: { code: "InvalidUr"; span: Span; cause: string }

        The payload of code.

        • Readonlycode: "InvalidUr"

          The discriminant.

        • Readonlyspan: Span

          The point just after the UR in digest(…).

        • Readonlycause: string

          The UR decoder's reason.

    • An opening parenthesis was required.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExpectedOpenParen";
          details: { code: "ExpectedOpenParen"; span: Span };
      }

      • Readonlycode: "ExpectedOpenParen"

        The discriminant.

      • Readonlydetails: { code: "ExpectedOpenParen"; span: Span }

        The payload of code.

        • Readonlycode: "ExpectedOpenParen"

          The discriminant.

        • Readonlyspan: Span

          Where the parenthesis was required.

    • A closing parenthesis was required.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExpectedCloseParen";
          details: { code: "ExpectedCloseParen"; span: Span };
      }

      • Readonlycode: "ExpectedCloseParen"

        The discriminant.

      • Readonlydetails: { code: "ExpectedCloseParen"; span: Span }

        The payload of code.

        • Readonlycode: "ExpectedCloseParen"

          The discriminant.

        • Readonlyspan: Span

          The token found instead, or the end of the source.

    • An opening bracket was required.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExpectedOpenBracket";
          details: { code: "ExpectedOpenBracket"; span: Span };
      }

      • Readonlycode: "ExpectedOpenBracket"

        The discriminant.

      • Readonlydetails: { code: "ExpectedOpenBracket"; span: Span }

        The payload of code.

        • Readonlycode: "ExpectedOpenBracket"

          The discriminant.

        • Readonlyspan: Span

          Where the bracket was required.

    • A closing bracket was required.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExpectedCloseBracket";
          details: { code: "ExpectedCloseBracket"; span: Span };
      }

      • Readonlycode: "ExpectedCloseBracket"

        The discriminant.

      • Readonlydetails: { code: "ExpectedCloseBracket"; span: Span }

        The payload of code.

        • Readonlycode: "ExpectedCloseBracket"

          The discriminant.

        • Readonlyspan: Span

          The token found instead, or the end of the source.

    • A pattern was required after an operator.

      Parameters

      Returns EnvelopePatternError & {
          code: "ExpectedPattern";
          details: { code: "ExpectedPattern"; span: Span };
      }

      • Readonlycode: "ExpectedPattern"

        The discriminant.

      • Readonlydetails: { code: "ExpectedPattern"; span: Span }

        The payload of code.

        • Readonlycode: "ExpectedPattern"

          The discriminant.

        • Readonlyspan: Span

          Where the pattern was required.

    • Parentheses that do not pair.

      Parameters

      Returns EnvelopePatternError & {
          code: "UnmatchedParentheses";
          details: { code: "UnmatchedParentheses"; span: Span };
      }

      • Readonlycode: "UnmatchedParentheses"

        The discriminant.

      • Readonlydetails: { code: "UnmatchedParentheses"; span: Span }

        The payload of code.

        • Readonlycode: "UnmatchedParentheses"

          The discriminant.

        • Readonlyspan: Span

          The parenthesis without a pair.

    • Braces that do not pair.

      Parameters

      Returns EnvelopePatternError & {
          code: "UnmatchedBraces";
          details: { code: "UnmatchedBraces"; span: Span };
      }

      • Readonlycode: "UnmatchedBraces"

        The discriminant.

      • Readonlydetails: { code: "UnmatchedBraces"; span: Span }

        The payload of code.

        • Readonlycode: "UnmatchedBraces"

          The discriminant.

        • Readonlyspan: Span

          The brace without a pair.

    • A capture name that is not an identifier.

      Parameters

      • name: string
      • range: Span

      Returns EnvelopePatternError & {
          code: "InvalidCaptureGroupName";
          details: { code: "InvalidCaptureGroupName"; span: Span; name: string };
      }

      • Readonlycode: "InvalidCaptureGroupName"

        The discriminant.

      • Readonlydetails: { code: "InvalidCaptureGroupName"; span: Span; name: string }

        The payload of code.

        • Readonlycode: "InvalidCaptureGroupName"

          The discriminant.

        • Readonlyspan: Span

          The @ and the name.

        • Readonlyname: string

          The name as written.

    • A cbor(…) body that is neither a value, a UR nor a dCBOR pattern.

      Parameters

      Returns EnvelopePatternError & {
          code: "InvalidPattern";
          details: { code: "InvalidPattern"; span: Span };
      }

      • Readonlycode: "InvalidPattern"

        The discriminant.

      • Readonlydetails: { code: "InvalidPattern"; span: Span }

        The payload of code.

        • Readonlycode: "InvalidPattern"

          The discriminant.

        • Readonlyspan: Span

          The dCBOR pattern body, or the rest of the text an array pattern consumed.

    • A pattern nested deeper than maxDepth.

      Parameters

      • maxDepth: number
      • range: Span

      Returns EnvelopePatternError & {
          code: "NestingTooDeep";
          details: { code: "NestingTooDeep"; span: Span; maxDepth: number };
      }

      • Readonlycode: "NestingTooDeep"

        The discriminant.

      • Readonlydetails: { code: "NestingTooDeep"; span: Span; maxDepth: number }

        The payload of code.

        • Readonlycode: "NestingTooDeep"

          The discriminant.

        • Readonlyspan: Span

          The token that opened the level too many.

        • ReadonlymaxDepth: number

          The limit in force.