From 8a5b43e8806c69d777809c443c8b7767f67c6748 Mon Sep 17 00:00:00 2001 From: Peter Harrison <16875803+palisadoes@users.noreply.github.com> Date: Sun, 12 Jan 2025 12:11:38 -0800 Subject: [PATCH 1/6] Added GitHub Actions python script linter (#2850) * Added GitHub Actions python script linter * Fixed reference * Linted --- .flake8 | 3 + .github/workflows/pull-request.yml | 53 +- .github/workflows/requirements.txt | 14 + .../workflows/scripts/biome_disable_check.py | 43 +- .github/workflows/scripts/check_docstrings.py | 773 ++++++++++++++++++ .../scripts/code_coverage_disable_check.py | 33 +- .pydocstyle | 3 + pyproject.toml | 4 + 8 files changed, 899 insertions(+), 27 deletions(-) create mode 100644 .flake8 create mode 100644 .github/workflows/requirements.txt create mode 100755 .github/workflows/scripts/check_docstrings.py create mode 100644 .pydocstyle create mode 100644 pyproject.toml diff --git a/.flake8 b/.flake8 new file mode 100644 index 00000000000..a6046cda398 --- /dev/null +++ b/.flake8 @@ -0,0 +1,3 @@ +[flake8] +ignore = E402,E722,E203,F401,W503 +max-line-length = 80 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index fd93b00270d..d07265a3c15 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -29,7 +29,7 @@ jobs: echo "Error: Close this PR and try again." exit 1 - check_code_quality: + Code-Quality-Checks: name: Checking code quality runs-on: ubuntu-latest steps: @@ -124,6 +124,7 @@ jobs: Check-Sensitive-Files: if: ${{ github.actor != 'dependabot[bot]' && !contains(github.event.pull_request.labels.*.name, 'ignore-sensitive-files-pr') }} name: Checks if sensitive files have been changed without authorization + needs: [Code-Quality-Checks] runs-on: ubuntu-latest steps: - name: Checkout this repository @@ -238,3 +239,53 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_NUMBER: ${{ github.event.pull_request.number }} GITHUB_REPOSITORY: ${{ github.repository }} + + Python-Compliance: + name: Check Python Code Style + runs-on: ubuntu-latest + needs: [Code-Quality-Checks] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + + - name: Cache pip packages + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python3 -m venv venv + source venv/bin/activate + python -m pip install --upgrade pip + pip install -r .github/workflows/requirements.txt + + - name: Run Black Formatter Check + run: | + source venv/bin/activate + black --check . + + - name: Run Flake8 Linter + run: | + source venv/bin/activate + flake8 --docstring-convention google --ignore E402,E722,E203,F401,W503 .github + + - name: Run pydocstyle + run: | + source venv/bin/activate + pydocstyle --convention=google --add-ignore=D415,D205 .github + + - name: Run docstring compliance check + run: | + source venv/bin/activate + python .github/workflows/scripts/check_docstrings.py --directories .github diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt new file mode 100644 index 00000000000..d27230d5692 --- /dev/null +++ b/.github/workflows/requirements.txt @@ -0,0 +1,14 @@ +############################################################################# +# DO NOT DELETE +############################################################################# +# +# Required for GitHub Action workflow python checks +# +############################################################################# +############################################################################# + +black +pydocstyle +flake8 +flake8-docstrings +docstring_parser diff --git a/.github/workflows/scripts/biome_disable_check.py b/.github/workflows/scripts/biome_disable_check.py index d589df49a70..057d84b991b 100644 --- a/.github/workflows/scripts/biome_disable_check.py +++ b/.github/workflows/scripts/biome_disable_check.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -# -*- coding: UTF-8 -*- """Biome Checker Script. Methodology: @@ -7,7 +6,7 @@ Recursively analyzes specified files or directories to ensure they do not contain biome-ignore statements, enforcing code quality practices. -NOTE: +Note: This script complies with our python3 coding and documentation standards. It complies with: @@ -25,16 +24,17 @@ def has_biome_ignore(file_path: str) -> bool: - """ - Check if a file contains biome-ignore statements. + """Check if a file contains biome-ignore statements. Args: - file_path (str): Path to the file. + file_path: Path to the file. Returns: bool: True if biome-ignore statement is found, False otherwise. """ - biome_ignore_pattern = re.compile(r"//\s*biome-ignore.*$", re.IGNORECASE | re.MULTILINE) + biome_ignore_pattern = re.compile( + r"//\s*biome-ignore.*$", re.IGNORECASE | re.MULTILINE + ) try: with open(file_path, encoding="utf-8") as file: @@ -52,11 +52,10 @@ def has_biome_ignore(file_path: str) -> bool: def check_biome(files_or_directories: list[str]) -> bool: - """ - Check files for biome-ignore statements. + """Check files for biome-ignore statements. Args: - files_or_directories (list): List of files or directories to check. + files_or_directories: List of files or directories to check. Returns: bool: True if biome-ignore statement is found, False otherwise. @@ -64,8 +63,16 @@ def check_biome(files_or_directories: list[str]) -> bool: biome_found = False for item in files_or_directories: - if os.path.isfile(item) and item.endswith((".ts", ".tsx")) and has_biome_ignore(item): - print(f"File {item} contains biome-ignore statement. Please remove them and ensure the code adheres to the specified Biome rules.") + if ( + os.path.isfile(item) + and item.endswith((".ts", ".tsx")) + and has_biome_ignore(item) + ): + print( + f"""\ +File {item} contains biome-ignore statement. Please remove them and ensure \ +the code adheres to the specified Biome rules.""" + ) biome_found = True elif os.path.isdir(item): # If it's a directory, walk through it and check all @@ -89,6 +96,9 @@ def check_biome(files_or_directories: list[str]) -> bool: def arg_parser_resolver(): """Resolve the CLI arguments provided by the user. + Args: + None + Returns: result: Parsed argument object """ @@ -113,8 +123,7 @@ def arg_parser_resolver(): def main(): - """ - Execute the script's main functionality. + """Execute the script's main functionality. This function serves as the entry point for the script. It performs the following tasks: @@ -124,6 +133,12 @@ def main(): 3. Provides informative messages based on the analysis. 4. Exits with an error if biome-ignore statements are found. + Args: + None + + Returns: + None + Raises: SystemExit: If an error occurs during execution. """ @@ -142,4 +157,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/.github/workflows/scripts/check_docstrings.py b/.github/workflows/scripts/check_docstrings.py new file mode 100755 index 00000000000..814729765ce --- /dev/null +++ b/.github/workflows/scripts/check_docstrings.py @@ -0,0 +1,773 @@ +#!/usr/bin/env python3 +"""Script to check for docstrings.""" + +import os +import re +import sys +import argparse +from collections import namedtuple +from docstring_parser import parse + +Violation = namedtuple("Violation", "line function issue action") + + +def validate_docstring(file_path): + """Validate docstrings in a file for compliance with the Google style guide. + + Args: + file_path (str): Path to the Python file to validate. + + Returns: + list: List of violations found in the file, with details about + the issue and corrective action. + + """ + # Initialize key variables + violations = [] + + # Read the file for processing + try: + with open(file_path, "r", encoding="utf-8") as fh_: + lines_with_hard_returns = fh_.readlines() + + except Exception: + return violations + + # Remove hard returns at the end of each line read + lines = [_.rstrip() for _ in lines_with_hard_returns] + + # Evaluate each line + for line_number, line in enumerate(lines): + + # Identify sections of the file that are functions or methods + if re.match(r"^\s*def ", line): + # Get the function name and its arguments + function = extract_function_arguments(line_number, lines) + + # Ignore test functions in test files + if ignore_function(function, file_path): + continue + + # Skip if there are python decorator exceptions + decorator = function_has_decorator(line_number, lines) + if bool(decorator): + if decorator_in_docstring_exception_list(decorator): + continue + + # Get the docstring + docstring = extract_docstring(function.name, line_number, lines) + if bool(docstring.violations): + # Add the violation to the list + violations.extend(docstring.violations) + + # Evaluate the relationship between the + # declared variables and the docstring + if bool(docstring.fatal) is False: + bad = match_arguments_to_docstring( + function, docstring, line_number + ) + if bool(bad): + violations.extend(bad) + + # Return + return violations + + +def ignore_function(function, file_path): + """Extract the docstring from a list of lines read from a file. + + Args: + function: Function object + file_path: Path to file under test + + Returns: + result: True if function must be ignored + + """ + # Initialize key variables + result = False + ignores = ["test_", "tearDownClass", "setUpClass", "setUp", "tearDown"] + + # Ignore test functions in test files + for ignore in ignores: + if function.name.startswith(ignore) and ("test_" in file_path): + result = True + + # Return + return result + + +def match_arguments_to_docstring(function, docstring, line_number): + """Extract the docstring from a list of lines read from a file. + + Args: + function: Function object + docstring: Docstring object + line_number: Number on which the function resides + + Returns: + result: Violation object list + + """ + # Initialize key variables + violations = [] + bad_argument_function = False + bad_argument_docstring = False + arguments_function = function.arguments + arguments_docstring = [_.arg_name for _ in docstring.parser.params] + + # Violation if the arguments don't match and return + if sorted(arguments_function) != sorted(arguments_docstring): + violations.append( + Violation( + line=line_number + 1, + function=function.name, + issue="""\ +The arguments defined in the docstring don't match those of the function.""", + action="""\ +Adjust your docstring to match the listed function arguments.""", + ) + ) + return violations + + ###################################################################### + # Logic below only works when both the function and doctring have args + ###################################################################### + + # Check whether docstring arguments match function arguments + for argument_function in arguments_function: + # Track whether the argument is defined + # in the docstring parameters + for argument_docstring in arguments_docstring: + if argument_docstring not in arguments_function: + violations.append( + Violation( + line=line_number + 1, + function=function.name, + issue=f"""\ +Argument '{argument_docstring}' defined in the docstring is not \ +an argument in the function""", + action=f"""\ +Remove argument '{argument_docstring}' from the docstring""", + ) + ) + bad_argument_function = True + break + if bad_argument_function: + break + + # We found an error, no need to continue generating violations + if not bad_argument_function: + # Check whether docstring arguments match function arguments + for argument_docstring in arguments_docstring: + # Track whether the argument is defined + # in the function parameters + for argument_function in arguments_function: + if argument_function not in arguments_docstring: + violations.append( + Violation( + line=line_number + 1, + function=function.name, + issue=f"""\ + Argument '{argument_function}' defined in the function is not \ + an argument in the docstring""", + action=f"""\ + Add argument '{argument_function}' to the Docstring""", + ) + ) + bad_argument_docstring = True + break + if bad_argument_docstring: + break + + # Return + return violations + + +def function_has_decorator(start, lines): + """Extract the arguments of a function read from a file. + + Args: + start: Starting line to process + lines: The file as a list of strings split by a new line separator + + Returns: + result: The decorator line + + """ + # Initialize key variable + result = None + + # Return + if start > 0: + previous_line = lines[start - 1].strip() + if previous_line.startswith("@"): + result = previous_line + return result + + +def decorator_in_docstring_exception_list(item): + """Extract the arguments of a function read from a file. + + Args: + item: Decorator to check + + Returns: + result: True if an exception + + """ + # Initialize key variable + result = False + exceptions = ["@property"] + property_exceptions = ["setter", "getter"] + + # Return + for exception in exceptions: + if exception in item.strip(): + result = True + break + + for exception in property_exceptions: + regex = f"^@[a-zA-Z0-9_]*.{exception}$" + if re.match(regex, item): + result = True + break + + # Return + return result + + +def extract_function_arguments(start, lines): + """Extract the arguments of a function read from a file. + + Args: + start: Starting line to process + lines: List of lines in the file + + Returns: + result: Function object + + """ + # Initialize key variables + func = "" + possibles = lines[start:] + arguments = [] + Function = namedtuple("Function", "name arguments") + method_keywords = ["self", "cls"] + + # Process the function + for line in possibles: + if bool(line) is False: + continue + elif ("'''" not in line) and ('"""' not in line): + func = f"{func}{line.strip()}" + else: + break + + # Get the arguments + items = func.split("(")[1].split(",") + name = func.split()[1].split("(")[0].strip() + for item in items: + result = item.split(")")[0].split("=")[0].strip() + if bool(result): + # Sometimes arguments have colons. We need everything before. + arguments.append(result.split(":")[0].strip()) + + # Fix arguments for methods + for keyword in method_keywords: + if keyword in arguments: + arguments.remove(keyword) + + # Return + result = Function(name=name, arguments=arguments) + return result + + +def extract_docstring(func_name, line_number, lines): + """Extract the docstring from a list of lines read from a file. + + Args: + line_number: Line where the function starts + lines: The file as a list of strings split by a new line separator + func_name: Name of the function for the docstring + + Returns: + result: namedtuple containing the docstring, and status + + """ + # Initialize key variables + violations = [] + parser = None + fatal = False + Docstring = namedtuple( + "Docstring", "violations docstring parser arguments fatal" + ) + docstring = "" + arguments = [] + found_start = False + found_end = False + + # Process Docstring + docstring_start = line_number + while docstring_start < len(lines): + if bool(is_docstring_delimiter(lines[docstring_start])) is False: + docstring_start += 1 + else: + found_start = True + break + + # Identify the start of the Docstring + if bool(found_start) is True: + # Identify the end of the docstring + docstring_end = docstring_start + 1 + while docstring_end < len(lines): + if bool(is_docstring_delimiter(lines[docstring_end])) is False: + docstring_end += 1 + else: + found_end = True + break + + # Check to make sure there are defined arguments + if bool(found_end) is False: + violations.append( + Violation( + line=line_number + 1, + function=func_name, + issue="""\ +Single line docstring without 'Args:' or 'Results:' sections defined.""", + action="""Define the 'Args:' or 'Results:' sections.""", + ) + ) + fatal = True + + # Extract lines within the docstring area + if found_start and found_end: + + # Get the lines of the Docstring, strip hard returns + valid_lines = lines[docstring_start : docstring_end + 1] + + # Convert the docstring lines to a string + docstring = "\n".join(valid_lines) + + # Parse the docstring + try: + parser = parse(docstring) + + except Exception as e: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Docstring parsing error", + action=f"""\ +Ensure the docstring is properly formatted: {e}""", + ) + ) + + # Evaluate Docstring description + docstring_evaluation = evaluate_docstring_description( + func_name, docstring_start, parser + ) + if bool(docstring_evaluation): + violations.extend(docstring_evaluation) + + # Evaluate the Args: section + argument_evaluation = evaluate_docstring_args( + func_name, docstring_start, docstring, parser + ) + if bool(argument_evaluation.violations): + violations.extend(argument_evaluation.violations) + else: + # Update docstring arguments as they are valid + arguments = argument_evaluation.arguments + + # Evaluate the Returns: section + bad_returns = evaluate_docstring_returns( + func_name, docstring_start, docstring, parser + ) + if bool(bad_returns): + violations.extend(bad_returns) + + else: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Unclosed docstring", + action="""\ +Ensure the docstring is properly closed with triple quotes.""", + ) + ) + + else: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Missing docstring", + action="""\ +Add a Google-style docstring to describe this function.""", + ) + ) + + # Return result + result = Docstring( + docstring=docstring, + violations=violations if bool(violations) else None, + parser=parser, + arguments=arguments, + fatal=fatal, + ) + return result + + +def evaluate_docstring_description(func_name, docstring_start, parser): + """Evaluate the Docstring description for validity. + + Args: + func_name: Function name + docstring_start: Line in file on which the docstring starts + parser: Docstring parser + + Returns: + violations: List of Violations objects + + """ + # Initialize key variables + violations = [] + + # Ensure there is an Docstring description + short_description = ( + parser.short_description.strip().replace("'''", "").replace('"""', "") + ) + if bool(short_description) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Docstring doesn't have a valid description", + action="""\ +Add a docstring description to the first line.""", + ) + ) + + if bool(parser.blank_after_short_description) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="\ +The Docstring's short description on the first line doesn't \ +have a blank line after it.", + action="""\ +Add the trailing blank line.""", + ) + ) + + return violations + + +def evaluate_docstring_args(func_name, docstring_start, docstring, parser): + """Evaluate the Docstring arguments for validity. + + Args: + func_name: Function name + docstring_start: Line in file on which the docstring starts + docstring: Docstring + parser: Docstring parser + + Returns: + result: DocstringEvaluation object + + """ + # Initialize key variables + DocstringEvaluation = namedtuple( + "DocstringEvaluation", "violations arguments" + ) + violations = [] + arguments = [] + docstring_no_multiple_white_space = " ".join(docstring.split()) + + if "Args: None " in docstring_no_multiple_white_space: + return DocstringEvaluation(violations=violations, arguments=arguments) + else: + # Check for Args section + if "Args:" not in docstring: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Missing 'Args' section", + action="""\ +Add an 'Args:' section listing the arguments this function accepts.""", + ) + ) + else: + # Ensure there is an Args section + if bool(parser.params) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Docstring doesn't have a valid 'Args:' section", + action="""\ +Add an 'Args:' section with values to the function's docstring""", + ) + ) + else: + # Evaluate each argument + for argument in parser.params: + if bool(argument.arg_name) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="""\ +Docstring has no 'Args:' section variable name and description.""", + action="""\ +Add an 'Args:' section with a variable name and description to \ +the function's docstring""", + ) + ) + if bool(argument.description) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue=f"""\ +Docstring 'Args:' section variable '{argument.arg_name}' \ +needs a description.""", + action="Add description to the variable.", + ) + ) + + # Get the valid arguments + if bool(violations) is False: + arguments = [_.arg_name for _ in parser.params] + + # Return + result = DocstringEvaluation(violations=violations, arguments=arguments) + return result + + +def evaluate_docstring_returns(func_name, docstring_start, docstring, parser): + """Determine whether string is docstring start or stop. + + Args: + func_name: Function name + docstring_start: Line in file on which the docstring starts + docstring: Docstring + parser: Docstring parser + + Returns: + violations: list of violations + + """ + # Initialize key variables + violations = [] + docstring_no_multiple_white_space = " ".join(docstring.split()) + + # Check for Returns section + if "Returns:" not in docstring: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Missing 'Returns:' section", + action="""\ +Add a 'Returns:' section describing the return value.""", + ) + ) + elif "Returns: None " not in docstring_no_multiple_white_space: + + # The parser fails if the 'Args:' section is set to None AND there + # is a valid 'Returns:' section + # This is a workaround where we search for 'Returns: VARIABLE: ' + regex = r"^.*\s+Returns: (\S+): ([a-zA-Z0-9_]*).*$" + regex_match = re.match(regex, docstring_no_multiple_white_space) + if bool(parser.params) is False: + if bool(regex_match) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="""\ +Docstring has improperly formatted 'Returns:' section""", + action="""\ +Add a correctly formatted 'Returns:' section to the function's docstring""", + ) + ) + else: + if bool(regex_match.group(2)) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="""\ +Docstring 'Returns:' section with no description""", + action="""\ +Add a description to the 'Returns:' section to the function's docstring""", + ) + ) + return violations + + # Ensure there is an Returns section + if bool(parser.returns) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="Docstring has no 'Returns:' section", + action="""\ +Add a 'Returns:' section to the function's docstring""", + ) + ) + return violations + + # Ensure there is an Returns section value + if bool(parser.returns.type_name) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue="""\ +Docstring has no 'Returns:' section variable name and description. \ +If the return value is 'None', then use 'None'""", + action="""\ +Add a 'Returns:' section with a variable name and description to \ +the function's docstring""", + ) + ) + + elif bool(parser.returns.description) is False: + violations.append( + Violation( + line=docstring_start, + function=func_name, + issue=f"""\ +Docstring 'Returns:' section variable \ +'{parser.returns.type_name}' needs a description.""", + action="""Add description to the variable.""", + ) + ) + + # Return + return violations + + +def is_docstring_delimiter(line): + """Determine whether string is docstring start or stop. + + Args: + line: String of text + + Returns: + result: True if it's a delimiter + + """ + # Return + result = bool( + line.strip().startswith('"""') or line.strip().startswith("'''") + ) + return result + + +def check_directory(directory, exclude_dirs=None): + """Check all Python files in a directory for docstring compliance. + + Specified directories are excluded. + + Args: + directory (str): Directory to scan. + exclude_dirs (list): List of directories to exclude. + + Returns: + dict: Dictionary of file violations. + """ + # Initialize key variables + all_violations = {} + _exclude_dirs = exclude_dirs if bool(exclude_dirs) else [] + + # Recursive directory search for files + for root, dirs, files in os.walk(directory): + # Skip excluded directories + dirs[:] = [ + d for d in dirs if os.path.join(root, d) not in _exclude_dirs + ] + + # Process files in each directory + for file in files: + if file.endswith(".py"): + # Print start of processing + file_path = os.path.join(root, file) + + # Identify violations in the file + violations = validate_docstring(file_path) + + # Add any found violations + if violations: + all_violations[file_path] = violations + + # Return + return all_violations + + +def main(): + """Start checking the docstrings. + + Args: + None + + Returns: + None + """ + # Header for the help menu of the application + parser = argparse.ArgumentParser( + description="""\ +This script checks specified directories for compliance with the \ +Google Docstring 'Args' and 'Returns' sections.""", + formatter_class=argparse.RawTextHelpFormatter, + ) + + # CLI argument for starting + parser.add_argument( + "--directories", + required=False, + default=".", + nargs="+", + type=str, + help="Directories to scan for docsctring compliant python files.", + ) + args = parser.parse_args() + + # Process the directories + for directory in args.directories: + # Identify violations + violations = check_directory(directory, exclude_dirs=None) + + # Create a message for the violation + if violations: + print("") + for file, issues in sorted(violations.items()): + for issue in issues: + print( + f"""\ +File Docstring Error: {file} +Line : {issue.line} +Function: {issue.function} +Issue: {issue.issue} +Corrective Action: {issue.action} +""" + ) + print( + f"""\ +Follow the online 'Google Python Style Guide' for our docstring expectations. +There are {len(violations)} docstring violations +""" + ) + + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/scripts/code_coverage_disable_check.py b/.github/workflows/scripts/code_coverage_disable_check.py index bb249db7a88..4483f77b372 100644 --- a/.github/workflows/scripts/code_coverage_disable_check.py +++ b/.github/workflows/scripts/code_coverage_disable_check.py @@ -8,7 +8,7 @@ This script enforces proper code coverage practices in the project. -NOTE: +Note: This script complies with our python3 coding and documentation standards. It complies with: @@ -27,8 +27,7 @@ def has_code_coverage_disable(file_path): - """ - Check if a TypeScript file contains code coverage disable statements. + """Check if a TypeScript file contains code coverage disable statements. Args: file_path (str): Path to the TypeScript file. @@ -38,8 +37,8 @@ def has_code_coverage_disable(file_path): otherwise. """ code_coverage_disable_pattern = re.compile( - r"""//?\s*istanbul\s+ignore(?:\s+(?:next|-line))?[^\n]*| - /\*\s*istanbul\s+ignore\s+(?:next|-line)\s*\*/""", + r"//?\s*istanbul\s+ignore(?:\s+(?:next|-line))?[^\n]*|" + r"/\*\s*istanbul\s+ignore\s+(?:next|-line)\s*\*/", re.IGNORECASE, ) try: @@ -58,8 +57,7 @@ def has_code_coverage_disable(file_path): def check_code_coverage(files_or_dirs): - """ - Check TypeScript files for code coverage disable statements. + """Check TypeScript files for code coverage disable statements. Args: files_or_dirs (list): List of files or directories to check. @@ -85,7 +83,8 @@ def check_code_coverage(files_or_dirs): file_path = os.path.join(root, file_name) if has_code_coverage_disable(file_path): print( - f"""File {file_path} contains code coverage disable statement.""" + f"""\ +File {file_path} contains code coverage disable statement.""" ) code_coverage_found = True elif os.path.isfile(item): @@ -97,7 +96,9 @@ def check_code_coverage(files_or_dirs): ): if has_code_coverage_disable(item): print( - f"""File {item} contains code coverage disable statement. Please remove it and add the appropriate tests.""" + f"""\ +File {item} contains code coverage disable statement. \ +Please remove it and add the appropriate tests.""" ) code_coverage_found = True @@ -107,6 +108,9 @@ def check_code_coverage(files_or_dirs): def arg_parser_resolver(): """Resolve the CLI arguments provided by the user. + Args: + None + Returns: result: Parsed argument object """ @@ -131,8 +135,7 @@ def arg_parser_resolver(): def main(): - """ - Execute the script's main functionality. + """Execute the script's main functionality. This function serves as the entry point for the script. It performs the following tasks: @@ -142,6 +145,12 @@ def main(): 3. Provides informative messages based on the analysis. 4. Exits with an error if code coverage disable statements are found. + Args: + None + + Returns: + None + Raises: SystemExit: If an error occurs during execution. """ @@ -158,4 +167,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/.pydocstyle b/.pydocstyle new file mode 100644 index 00000000000..5386b23bbfa --- /dev/null +++ b/.pydocstyle @@ -0,0 +1,3 @@ +[pydocstyle] +convention=google +add-ignore=D415,D205 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000000..3a65c0da310 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,4 @@ +# Do not delete. This file is used to configure +# python black formatting +[tool.black] +line-length = 79 From f0c2d51c9d41f452f0d9b650cc043ecd464629cb Mon Sep 17 00:00:00 2001 From: Peter Harrison <16875803+palisadoes@users.noreply.github.com> Date: Mon, 13 Jan 2025 11:42:25 -0800 Subject: [PATCH 2/6] Update .gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 170c343a5bd..5aae289605e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Docusaurus related +.docusaurus + # More information at this link:- https://git-scm.com/docs/gitignore # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,vim,intellij,visualstudio,windows,linux,macos,node,sublimetext @@ -794,4 +797,4 @@ yarn.lock ./test/routes/graphql/gql.tada.d.ts # FNM -.node-version \ No newline at end of file +.node-version From 80bb6d3b49041f14a5ccbf3e1620db703b30560d Mon Sep 17 00:00:00 2001 From: Peter Harrison <16875803+palisadoes@users.noreply.github.com> Date: Mon, 13 Jan 2025 21:03:08 -0800 Subject: [PATCH 3/6] Update push-deploy-website.yml --- .github/workflows/push-deploy-website.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-deploy-website.yml b/.github/workflows/push-deploy-website.yml index a5feec11ea3..9dfe276facb 100644 --- a/.github/workflows/push-deploy-website.yml +++ b/.github/workflows/push-deploy-website.yml @@ -24,7 +24,7 @@ jobs: name: Deploy https://docs-api.talawa.io website runs-on: ubuntu-latest # Run only if the develop-postgres branch and not dependabot - if: ${{ github.actor != 'dependabot[bot]' }} + if: ${{ github.actor != 'dependabot[bot]' && github.event.pull_request.base.ref == 'develop-postgres' }} environment: # This "name" has to be the repos' branch that contains # the current active website. There must be an entry for From 79d896a68c738d184771d8ecef302309bcb1314f Mon Sep 17 00:00:00 2001 From: Peter Harrison <16875803+palisadoes@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:44:45 -0800 Subject: [PATCH 4/6] Update .gitignore --- .gitignore | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/.gitignore b/.gitignore index 5aae289605e..bf609570585 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,50 @@ +################################################################### +################################################################### +# Files that are generated by the App +################################################################### +################################################################### + +# Keep directories that may have this file +!.gitignore + # Docusaurus related .docusaurus +# Don't upload configuration files +.env +.env_test + +# Ignore upload directories +cert/** +certs/** +image/** +images/** +video/** +videos/** + +# Log files and directories +logs/** +log/** +*.log + +# Just in case we ever have one +data/** + +# Code coverage directory +coverage/** + +# Certs (Default names) +serviceAccountKey.json +cert.pem +key.pem +csr.pem + +################################################################### +################################################################### +# / Files that are generated by the App +################################################################### +################################################################### + # More information at this link:- https://git-scm.com/docs/gitignore # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,vim,intellij,visualstudio,windows,linux,macos,node,sublimetext From 3e1922ee728373c8c3b445c98137106dc8634e51 Mon Sep 17 00:00:00 2001 From: xoldd Date: Tue, 14 Jan 2025 21:25:20 +0530 Subject: [PATCH 5/6] fix postgres test env file, remove sign up confirm password input (#2858) * fix postgres test devcontainer env file * remove confirmed password sign up input --- .devcontainer/devcontainer.json | 2 +- docker/api.Containerfile | 2 +- envFiles/.env.devcontainer | 2 +- package.json | 22 +- pnpm-lock.yaml | 418 ++++++++++---------- schema.graphql | 3 - src/graphql/inputs/MutationSignUpInput.ts | 22 -- test/routes/graphql/Mutation/signUp.test.ts | 55 --- test/routes/graphql/gql.tada-cache.d.ts | 2 +- test/routes/graphql/gql.tada.d.ts | 2 +- 10 files changed, 225 insertions(+), 305 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0a7f09c4ee2..8ca519f1b19 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -70,7 +70,7 @@ "initializeCommand": "cp -n ./envFiles/.env.devcontainer ./.env", "name": "talawa_api", "overrideCommand": true, - "postCreateCommand": "sudo chown talawa:talawa ./.pnpm-store ./node_modules && fnm install && fnm use && corepack enable npm && corepack enable && corepack install && pnpm install --prod=false && pnpm push_drizzle_schema && pnpm start_development_server", + "postCreateCommand": "sudo chown talawa:talawa ./.pnpm-store ./node_modules && fnm install && fnm use && corepack enable npm && corepack enable && corepack install && pnpm install --prod=false && pnpm start_development_server", "postStartCommand": "pnpm install --prod=false", "remoteUser": "talawa", "service": "api", diff --git a/docker/api.Containerfile b/docker/api.Containerfile index 016122c5784..eb621716828 100644 --- a/docker/api.Containerfile +++ b/docker/api.Containerfile @@ -40,7 +40,7 @@ RUN curl -fsSL https://fnm.vercel.app/install | bash -s -- --skip-shell \ ENV PATH=/home/talawa/.local/share/fnm:${PATH} WORKDIR /home/talawa/api -FROM node:22.12.0-bookworm-slim AS base +FROM node:22.13.0-bookworm-slim AS base # Used to configure the group id for the group assigned to the non-root "talawa" user within the image. ARG API_GID # Used to configure the user id for the non-root "talawa" user within the image. diff --git a/envFiles/.env.devcontainer b/envFiles/.env.devcontainer index 53a031f22ce..8fae730b021 100644 --- a/envFiles/.env.devcontainer +++ b/envFiles/.env.devcontainer @@ -89,5 +89,5 @@ POSTGRES_TEST_MAPPED_PORT=5433 ########## docker compose ########## COMPOSE_FILE=./compose.yaml:./docker/compose.testing.yaml:./docker/compose.devcontainer.yaml -COMPOSE_PROFILES=api,caddy,cloudbeaver,minio,minio_test,postgres,postgres-test +COMPOSE_PROFILES=api,caddy,cloudbeaver,minio,minio_test,postgres,postgres_test COMPOSE_PROJECT_NAME=talawa diff --git a/package.json b/package.json index ae938df013c..5bb59fb62e6 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,15 @@ "dependencies": { "@fastify/cors": "^10.0.2", "@fastify/helmet": "^13.0.1", - "@fastify/jwt": "^9.0.2", - "@fastify/rate-limit": "^10.2.1", + "@fastify/jwt": "^9.0.3", + "@fastify/rate-limit": "^10.2.2", "@fastify/type-provider-typebox": "^5.1.0", "@node-rs/argon2": "^2.0.2", "@pothos/core": "^4.3.0", "@pothos/plugin-relay": "^4.3.0", "@sinclair/typebox": "^0.34.13", "ajv-formats": "^3.0.1", - "close-with-grace": "^2.1.0", + "close-with-grace": "^2.2.0", "drizzle-orm": "^0.38.3", "drizzle-zod": "0.6.1", "env-schema": "^6.0.1", @@ -23,7 +23,7 @@ "graphql": "^16.10.0", "graphql-scalars": "^1.24.0", "graphql-upload-minimal": "^1.6.1", - "mercurius": "^16.0.0", + "mercurius": "^16.0.1", "mercurius-upload": "^8.0.0", "minio": "^8.0.3", "postgres": "^3.4.5", @@ -35,23 +35,23 @@ "devDependencies": { "@biomejs/biome": "^1.9.4", "@faker-js/faker": "^9.3.0", - "@swc/cli": "0.5.2", - "@swc/core": "^1.10.6", - "@types/node": "^22.10.5", + "@swc/cli": "0.6.0", + "@swc/core": "^1.10.7", + "@types/node": "^22.10.6", "@vitest/coverage-v8": "^2.1.8", "drizzle-kit": "^0.30.1", "drizzle-seed": "^0.3.0", "gql.tada": "^1.8.10", - "lefthook": "^1.10.1", + "lefthook": "^1.10.4", "mercurius-integration-testing": "^9.0.1", "pino-pretty": "^13.0.0", "tsx": "^4.19.2", - "typescript": "^5.7.2", + "typescript": "^5.7.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, "engines": { - "node": "22.12.0" + "node": "22.13.0" }, "homepage": "https://github.com/PalisadoesFoundation/talawa-api#readme", "keywords": [ @@ -63,7 +63,7 @@ "license": "GNU General Public License v3.0", "main": "./dist/index.js", "name": "talawa-api", - "packageManager": "pnpm@9.15.3", + "packageManager": "pnpm@9.15.4", "repository": { "type": "git", "url": "https://github.com/PalisadoesFoundation/talawa-api" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e03e861cb91..89bf7bff8c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,11 +15,11 @@ importers: specifier: ^13.0.1 version: 13.0.1 '@fastify/jwt': - specifier: ^9.0.2 - version: 9.0.2 + specifier: ^9.0.3 + version: 9.0.3 '@fastify/rate-limit': - specifier: ^10.2.1 - version: 10.2.1 + specifier: ^10.2.2 + version: 10.2.2 '@fastify/type-provider-typebox': specifier: ^5.1.0 version: 5.1.0(@sinclair/typebox@0.34.13) @@ -39,8 +39,8 @@ importers: specifier: ^3.0.1 version: 3.0.1(ajv@8.17.1) close-with-grace: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.2.0 + version: 2.2.0 drizzle-orm: specifier: ^0.38.3 version: 0.38.3(postgres@3.4.5) @@ -66,8 +66,8 @@ importers: specifier: ^1.6.1 version: 1.6.1(graphql@16.10.0) mercurius: - specifier: ^16.0.0 - version: 16.0.0(graphql@16.10.0) + specifier: ^16.0.1 + version: 16.0.1(graphql@16.10.0) mercurius-upload: specifier: ^8.0.0 version: 8.0.0(graphql@16.10.0) @@ -94,17 +94,17 @@ importers: specifier: ^9.3.0 version: 9.3.0 '@swc/cli': - specifier: 0.5.2 - version: 0.5.2(@swc/core@1.10.6) + specifier: 0.6.0 + version: 0.6.0(@swc/core@1.10.7) '@swc/core': - specifier: ^1.10.6 - version: 1.10.6 + specifier: ^1.10.7 + version: 1.10.7 '@types/node': - specifier: ^22.10.5 - version: 22.10.5 + specifier: ^22.10.6 + version: 22.10.6 '@vitest/coverage-v8': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.5)) + version: 2.1.8(vitest@2.1.8(@types/node@22.10.6)) drizzle-kit: specifier: ^0.30.1 version: 0.30.1 @@ -113,13 +113,13 @@ importers: version: 0.3.0(drizzle-orm@0.38.3(postgres@3.4.5)) gql.tada: specifier: ^1.8.10 - version: 1.8.10(graphql@16.10.0)(typescript@5.7.2) + version: 1.8.10(graphql@16.10.0)(typescript@5.7.3) lefthook: - specifier: ^1.10.1 - version: 1.10.1 + specifier: ^1.10.4 + version: 1.10.4 mercurius-integration-testing: specifier: ^9.0.1 - version: 9.0.1(fastify@5.2.1)(graphql@16.10.0)(mercurius@16.0.0(graphql@16.10.0)) + version: 9.0.1(fastify@5.2.1)(graphql@16.10.0)(mercurius@16.0.1(graphql@16.10.0)) pino-pretty: specifier: ^13.0.0 version: 13.0.0 @@ -127,14 +127,14 @@ importers: specifier: ^4.19.2 version: 4.19.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.5)) + version: 5.1.4(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.5) + version: 2.1.8(@types/node@22.10.6) packages: @@ -164,13 +164,13 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -826,8 +826,8 @@ packages: '@fastify/helmet@13.0.1': resolution: {integrity: sha512-i+ifqazG3d0HwHL3zuZdg6B/WPc9Ee6kVfGpwGho4nxm0UaK1htss0zq+1rVhOoAorZlCgTZ3/i4S58hUGkkoA==} - '@fastify/jwt@9.0.2': - resolution: {integrity: sha512-/ppnbKVhxnHV08WZHpP2phH31eJ3FnyU43Sm8ERcYZwudcwqzmQ5+ptaqOvAyykIvfGmRC3R//0sc8HziJhnww==} + '@fastify/jwt@9.0.3': + resolution: {integrity: sha512-5OjeozLzwhMhrOkadHG9FhS5S3wNVIN6ADhBJd/x3VJIWptlRdc1ORksA6NHJ1ihvuAb0IOVK9giaCZTelnMSg==} '@fastify/merge-json-schemas@0.1.1': resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} @@ -835,22 +835,22 @@ packages: '@fastify/proxy-addr@5.0.0': resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} - '@fastify/rate-limit@10.2.1': - resolution: {integrity: sha512-6rM4MXBtz9j6i9ChAVNz8ZA2yzSTGswIR3XvIbzHpe7JUWvbL7NJylFO12n7zKWfl3rEpOYiKogD98scl8SMGQ==} + '@fastify/rate-limit@10.2.2': + resolution: {integrity: sha512-45vXZImiYthKlMohF4XoHXYiBXCyRYY+zmtjLZuQrGraW0Zj9hYPYNOIa47012+5A65M0KJQxIVbzYCNP90hcg==} '@fastify/send@3.3.1': resolution: {integrity: sha512-6pofeVwaHN+E/MAofCwDqkWUliE3i++jlD0VH/LOfU8TJlCkMUSgKvA9bawDdVXxjve7XrdYMyDmkiYaoGWEtA==} - '@fastify/static@8.0.3': - resolution: {integrity: sha512-GHSoOVDIxEYEeVR5l044bRCuAKDErD/+9VE+Z9fnaTRr+DDz0Avrm4kKai1mHbPx6C0U7BVNthjd/gcMquZZUA==} + '@fastify/static@8.0.4': + resolution: {integrity: sha512-JdJIlXDYXZxbTFQazWOEfHxyD5uRXqRsLnp4rV9MwJnxadA0rrWBI8ZelPF2TPk/xDi5wunY/6ZmfwHXld13bA==} '@fastify/type-provider-typebox@5.1.0': resolution: {integrity: sha512-F1AQHeLiKp1hu6GMWm5W6fZ6zXQ0mTV+qHOzrptAie9AYewvFr5Q3blfy8Qmx9gUgwA3Yj+CWvQQJeTwDgTnIg==} peerDependencies: '@sinclair/typebox': '>=0.26 <=0.34' - '@fastify/websocket@11.0.1': - resolution: {integrity: sha512-44yam5+t1I9v09hWBYO+ezV88+mb9Se2BjgERtzB/68+0mGeTfFkjBeDBe2y+ZdiPpeO2rhevhdnfrBm5mqH+Q==} + '@fastify/websocket@11.0.2': + resolution: {integrity: sha512-1oyJkNSZNJGjo/A5fXvlpEcm1kTBD91nRAN9lA7RNVsVNsyC5DuhOXdNL9/4UawVe7SKvzPT/QVI4RdtE9ylnA==} '@gql.tada/cli-utils@1.6.3': resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} @@ -1229,79 +1229,79 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@swc/cli@0.5.2': - resolution: {integrity: sha512-ul2qIqjM5bfe9zWLqFDmHZCf9HXXSZZAlZLe4czn+lH4PewO+OWZnQcYCscnJKlbx6MuWjzXVR7gkspjNEJwJA==} + '@swc/cli@0.6.0': + resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==} engines: {node: '>= 16.14.0'} hasBin: true peerDependencies: '@swc/core': ^1.2.66 - chokidar: ^3.5.1 + chokidar: ^4.0.1 peerDependenciesMeta: chokidar: optional: true - '@swc/core-darwin-arm64@1.10.6': - resolution: {integrity: sha512-USbMvT8Rw5PvIfF6HyTm+yW84J9c45emzmHBDIWY76vZHkFsS5MepNi+JLQyBzBBgE7ScwBRBNhRx6VNhkSoww==} + '@swc/core-darwin-arm64@1.10.7': + resolution: {integrity: sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.6': - resolution: {integrity: sha512-7t2IozcZN4r1p27ei+Kb8IjN4aLoBDn107fPi+aPLcVp2uFgJEUzhCDuZXBNW2057Mx1OHcjzrkaleRpECz3Xg==} + '@swc/core-darwin-x64@1.10.7': + resolution: {integrity: sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.6': - resolution: {integrity: sha512-CPgWT+D0bDp/qhXsLkIJ54LmKU1/zvyGaf/yz8A4iR+YoF6R5CSXENXhNJY8cIrb6+uNWJZzHJ+gefB5V51bpA==} + '@swc/core-linux-arm-gnueabihf@1.10.7': + resolution: {integrity: sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.6': - resolution: {integrity: sha512-5qZ6hVnqO/ShETXdGSzvdGUVx372qydlj1YWSYiaxQzTAepEBc8TC1NVUgYtOHOKVRkky1d7p6GQ9lymsd4bHw==} + '@swc/core-linux-arm64-gnu@1.10.7': + resolution: {integrity: sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.6': - resolution: {integrity: sha512-hB2xZFmXCKf2iJF5y2z01PSuLqEoUP3jIX/XlIHN+/AIP7PkSKsValE63LnjlnWPnSEI0IxUyRE3T3FzWE/fQQ==} + '@swc/core-linux-arm64-musl@1.10.7': + resolution: {integrity: sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.6': - resolution: {integrity: sha512-PRGPp0I22+oJ8RMGg8M4hXYxEffH3ayu0WoSDPOjfol1F51Wj1tfTWN4wVa2RibzJjkBwMOT0KGLGb/hSEDDXQ==} + '@swc/core-linux-x64-gnu@1.10.7': + resolution: {integrity: sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.6': - resolution: {integrity: sha512-SoNBxlA86lnoV9vIz/TCyakLkdRhFSHx6tFMKNH8wAhz1kKYbZfDmpYoIzeQqdTh0tpx8e/Zu1zdK4smovsZqQ==} + '@swc/core-linux-x64-musl@1.10.7': + resolution: {integrity: sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.6': - resolution: {integrity: sha512-6L5Y2E+FVvM+BtoA+mJFjf/SjpFr73w2kHBxINxwH8/PkjAjkePDr5m0ibQhPXV61bTwX49+1otzTY85EsUW9Q==} + '@swc/core-win32-arm64-msvc@1.10.7': + resolution: {integrity: sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.6': - resolution: {integrity: sha512-kxK3tW8DJwEkAkwy0vhwoBAShRebH1QTe0mvH9tlBQ21rToVZQn+GCV/I44dind80hYPw0Tw2JKFVfoEJyBszg==} + '@swc/core-win32-ia32-msvc@1.10.7': + resolution: {integrity: sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.6': - resolution: {integrity: sha512-4pJka/+t8XcHee12G/R5VWcilkp5poT2EJhrybpuREkpQ7iC/4WOlOVrohbWQ4AhDQmojYQI/iS+gdF2JFLzTQ==} + '@swc/core-win32-x64-msvc@1.10.7': + resolution: {integrity: sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.6': - resolution: {integrity: sha512-zgXXsI6SAVwr6XsXyMnqlyLoa1lT+r09bAWI1xT3679ejWqI1Vnl14eJG0GjWYXCEMKHCNytfMq3OOQ62C39QQ==} + '@swc/core@1.10.7': + resolution: {integrity: sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1331,8 +1331,8 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/node@22.10.5': - resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + '@types/node@22.10.6': + resolution: {integrity: sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==} '@vitest/coverage-v8@2.1.8': resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==} @@ -1388,8 +1388,8 @@ packages: resolution: {integrity: sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==} engines: {node: '>=18'} - '@xhmikosr/decompress-tarbz2@8.0.1': - resolution: {integrity: sha512-OF+6DysDZP5YTDO8uHuGG6fMGZjc+HszFPBkVltjoje2Cf60hjBg/YP5OQndW1hfwVWOdP7f3CnJiPZHJUTtEg==} + '@xhmikosr/decompress-tarbz2@8.0.2': + resolution: {integrity: sha512-p5A2r/AVynTQSsF34Pig6olt9CvRj6J5ikIhzUd3b57pUXyFDGtmBstcw+xXza0QFUh93zJsmY3zGeNDlR2AQQ==} engines: {node: '>=18'} '@xhmikosr/decompress-targz@8.0.1': @@ -1483,8 +1483,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.3: - resolution: {integrity: sha512-pCO3aoRJ0MBiRMu8B7vUga0qL3L7gO1+SW7ku6qlSsMLwuhaawnuvZDyzJY/kyC63Un0XAB0OPUcfF1eTO/V+Q==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1569,8 +1569,8 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - close-with-grace@2.1.0: - resolution: {integrity: sha512-rME1AtzKc9dfpLr8XBVhXqhVZDvtaIA7FIpjPaO+DmDsomaTNtuEBZMoNDgIvjHYK5q8/Afxy34YTXInUBsT1A==} + close-with-grace@2.2.0: + resolution: {integrity: sha512-OdcFxnxTm/AMLPHA4Aq3J1BLpkojXP7I4G5QBQLN5TT55ED/rk04rAoDbtfNnfZ988kGXPxh1bdRLeIU9bz/lA==} color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1796,8 +1796,8 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.0.1: + resolution: {integrity: sha512-BPOBuyUF9QIVhuNLhbToCLHP6+0MHwZ7xLBkPPCZqK4JmpJgGnv10035STzzQwFpqdzNFMB3irvDI63IagvDwA==} engines: {node: '>= 0.4'} esbuild-register@3.6.0: @@ -2000,8 +2000,8 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} hasBin: true @@ -2207,62 +2207,62 @@ packages: layerr@3.0.0: resolution: {integrity: sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==} - lefthook-darwin-arm64@1.10.1: - resolution: {integrity: sha512-dGi4Oiu2LSve8Xmz7vHWlUbnU5mk6HnhTbC1CnXqaFbb08yNYSYoJBwsalS+LoO4L6I/pqnv32ESCbdIzuhBiQ==} + lefthook-darwin-arm64@1.10.4: + resolution: {integrity: sha512-ARVuQwMFkKBy++2W4ACwCf5oy93qfOs0KKjJM1ssvgLB25MtJQeIhEoJ10sPXYkEnLZnEkfAtX4womVEjCXyXw==} cpu: [arm64] os: [darwin] - lefthook-darwin-x64@1.10.1: - resolution: {integrity: sha512-NkEkBZm5jYH4fqbpJweDyJx/+/jWLst0FEHOCU5QZ8xFm+42hTGj4+6kfbjirU1ubvmRY/TeilYDsq1OIr5jZQ==} + lefthook-darwin-x64@1.10.4: + resolution: {integrity: sha512-KQw7nPtdF3+Bf9UQMdME2jzEu9KJJhAt5SdS9/JTDcfXTwBd1tz3l1bQT4BmvP2Du3XqSvgttWCrhGfIkfO9mw==} cpu: [x64] os: [darwin] - lefthook-freebsd-arm64@1.10.1: - resolution: {integrity: sha512-hX/c4p0+JoCrr55e8zfXC63ReW3Cg4WKzZKP6NA2uNDaKItHlQ4zR3CCOytdVnuPXOa6f93WB9lmRYtIp34dqw==} + lefthook-freebsd-arm64@1.10.4: + resolution: {integrity: sha512-BMXbiB6cF8Cr8pyE3r/hPzBMZJqTNZ4dwC5w/RQTvori5kow8kDgiby2pNVq3gaYvyg4TpXccc8dGgjQoOBHRQ==} cpu: [arm64] os: [freebsd] - lefthook-freebsd-x64@1.10.1: - resolution: {integrity: sha512-0suh8/Mx56Rircc/hvr3vU/XKv0E/afD/LkF8lkOPm4besgq6k9HCkpdPgBykP8Q0ve/W3rOlXeBQ7c7oDhX8Q==} + lefthook-freebsd-x64@1.10.4: + resolution: {integrity: sha512-ClXTNqa4DyXJjZ2u8SINx4XxHWOvJ7FFbtqPl+NJiPmToRZ/nYVaeZakgHTblupB3z/xggiPAKdlKbqABELCzw==} cpu: [x64] os: [freebsd] - lefthook-linux-arm64@1.10.1: - resolution: {integrity: sha512-zADf8CSkoV7EfpLsy5U22gq0+famMjUEfKy9nacS6zEgPvMxDk5Q/7QpnMWJeeiwkf9XWgQ+GATWuGahA3Id9A==} + lefthook-linux-arm64@1.10.4: + resolution: {integrity: sha512-DyBOXztZSlbMJaQzZ41d+FKgYMC1RzJqHeHFjGMKGNF1Q8eUfW1gGhrBM7yfSJIFAuqOCUK6fw7hI5l7YbOLuQ==} cpu: [arm64] os: [linux] - lefthook-linux-x64@1.10.1: - resolution: {integrity: sha512-wdPVMZAN6vi3/4rlhzaWjR5N3AZE5+dUd3lSzfP6mmfXVQtwnJ29HFUlje6TAnwZBSOBI8yoMsz38FrhPuayYg==} + lefthook-linux-x64@1.10.4: + resolution: {integrity: sha512-V3U/8rs1/6nCmghs4YRGdxPonTLVtvs/W3Ji6UQXFqGLeNAhlhTj2XTYko+vY2QfmavThBpqOtw36Line+d6iw==} cpu: [x64] os: [linux] - lefthook-openbsd-arm64@1.10.1: - resolution: {integrity: sha512-PJ0fHvjcgapaWsn+4uhj3ZMRvkV0Ug+BOrRovF+SdXdA7DiBbRzFPTpUWrGoV3lw7uFjY6pJqGqakDqZ0J7J6g==} + lefthook-openbsd-arm64@1.10.4: + resolution: {integrity: sha512-+vCvGHqf5qqijbBgjBaQBzV4Mpl16UIgw0QQmnS0oYiaL5HQND3KPSA/bsLnoXe9UWvpIQY4GfMVpqhdl2HN4Q==} cpu: [arm64] os: [openbsd] - lefthook-openbsd-x64@1.10.1: - resolution: {integrity: sha512-Bs0hBWHW4s6Dp0qVG4LXv96Vo1NXsM/y6VrWten3pv2oEO18Yw9PmKd6vl4mGI7yA72wq4HNATBagFx460IIEw==} + lefthook-openbsd-x64@1.10.4: + resolution: {integrity: sha512-kvHxriC02YQY9egRD43uzMA7Y/VWo+CzcW894ovpmROOCmmipydDoWPoEd+kknyYyNmntXhXgebAopCy/ZOr8A==} cpu: [x64] os: [openbsd] - lefthook-windows-arm64@1.10.1: - resolution: {integrity: sha512-xoBiiAChVSv1YYVkwkpfEoAbjNuRblrA0tI8GOtPBhkzlfBP3MaD5JfU2SPzID9IfAG/yV5dOlrLVKhacQA66A==} + lefthook-windows-arm64@1.10.4: + resolution: {integrity: sha512-jSta3l7gYjZWCytvmEC039XXbuvJiZO8hawR3B6nWZFgjaYA0ECS6/fdxuz1kGxd1zMDrvnFoOeTcSGQwHGmaA==} cpu: [arm64] os: [win32] - lefthook-windows-x64@1.10.1: - resolution: {integrity: sha512-+AwTHtBP8npL604Dd13rnEblWh6a9+sf0lSzoLy22y3jdae4kVENLmYoeZ6bz0Wf6SF18UCjf+byvspQRnnCHg==} + lefthook-windows-x64@1.10.4: + resolution: {integrity: sha512-d6jOidPQ8HTmXHH8izE7/BY4ZHAsCVgkfSyQI13rvBahZfPjmtE0yNBfd2MC+xyxW1E8M0uloy7ZhAYM4WZjdw==} cpu: [x64] os: [win32] - lefthook@1.10.1: - resolution: {integrity: sha512-WLwXd8FxAcZ0KJg0d/u1r2nY7F/i2XJlyxQSKJkFkbuzqggNU876ksHuNAluSbsZ4nNdI+tWbBUu1Th3SPvgcQ==} + lefthook@1.10.4: + resolution: {integrity: sha512-DwRkvZA7IeZv9hwdXKr0PIi0FX1/2ehU5ImPYCs1q9QlPQVmKBborb/z5BnI5k/y52qaAHCgBhcuhm5cwLjMSQ==} hasBin: true - light-my-request@6.4.0: - resolution: {integrity: sha512-U0UONITz4GVQodMPoygnqJan2RYfhyLsCzFBakJHWNfiQKyHzvp38YOxxLGs8lIDPwR6ngd4gmuZJQQJtRBu/A==} + light-my-request@6.5.1: + resolution: {integrity: sha512-0q82RyxIextuDtkA0UDofhPHIiQ2kmpa7fwElCSlm/8nQl36cDU1Cw+CAO90Es0lReH2HChClKL84I86Nc52hg==} lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -2324,8 +2324,8 @@ packages: peerDependencies: graphql: ^16.3.0 - mercurius@16.0.0: - resolution: {integrity: sha512-kuxpvYmIYFGwNkdKjWQorHpKRN9rFx4b55BP2H0NImaKdHc3rmv+8MHQOrTsksk/mwm72Rl74itCAUzdBwjUAQ==} + mercurius@16.0.1: + resolution: {integrity: sha512-Yyu7nku6UH+92p3tht22A4lof1y6FQigHTgSjZp7iAElwIvKEo9HOdfTbSWvSvAFx8+Zaa66gLsIBubC6xd0iw==} engines: {node: ^20.9.0 || >=22.0.0} peerDependencies: graphql: ^16.0.0 @@ -2494,8 +2494,8 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} postgres@3.4.5: @@ -2846,8 +2846,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -3009,11 +3009,11 @@ snapshots: optionalDependencies: graphql: 16.10.0 - '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.2)': + '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.2) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 - typescript: 5.7.2 + typescript: 5.7.3 '@ampproject/remapping@2.3.0': dependencies: @@ -3024,11 +3024,11 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.26.3': + '@babel/parser@7.26.5': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/types@7.26.3': + '@babel/types@7.26.5': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -3402,7 +3402,7 @@ snapshots: fastify-plugin: 5.0.1 helmet: 8.0.0 - '@fastify/jwt@9.0.2': + '@fastify/jwt@9.0.3': dependencies: '@fastify/error': 4.0.0 '@lukeed/ms': 2.0.2 @@ -3419,7 +3419,7 @@ snapshots: '@fastify/forwarded': 3.0.0 ipaddr.js: 2.2.0 - '@fastify/rate-limit@10.2.1': + '@fastify/rate-limit@10.2.2': dependencies: '@lukeed/ms': 2.0.2 fastify-plugin: 5.0.1 @@ -3433,20 +3433,20 @@ snapshots: http-errors: 2.0.0 mime: 3.0.0 - '@fastify/static@8.0.3': + '@fastify/static@8.0.4': dependencies: '@fastify/accept-negotiator': 2.0.1 '@fastify/send': 3.3.1 content-disposition: 0.5.4 fastify-plugin: 5.0.1 fastq: 1.18.0 - glob: 11.0.0 + glob: 11.0.1 '@fastify/type-provider-typebox@5.1.0(@sinclair/typebox@0.34.13)': dependencies: '@sinclair/typebox': 0.34.13 - '@fastify/websocket@11.0.1': + '@fastify/websocket@11.0.2': dependencies: duplexify: 4.1.3 fastify-plugin: 5.0.1 @@ -3455,18 +3455,18 @@ snapshots: - bufferutil - utf-8-validate - '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.2))(graphql@16.10.0)(typescript@5.7.2)': + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.2) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.2) + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 - typescript: 5.7.2 + typescript: 5.7.3 - '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.2)': + '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.3)': dependencies: '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) graphql: 16.10.0 - typescript: 5.7.2 + typescript: 5.7.3 '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': dependencies: @@ -3725,9 +3725,9 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@swc/cli@0.5.2(@swc/core@1.10.6)': + '@swc/cli@0.6.0(@swc/core@1.10.7)': dependencies: - '@swc/core': 1.10.6 + '@swc/core': 1.10.7 '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -3738,51 +3738,51 @@ snapshots: slash: 3.0.0 source-map: 0.7.4 - '@swc/core-darwin-arm64@1.10.6': + '@swc/core-darwin-arm64@1.10.7': optional: true - '@swc/core-darwin-x64@1.10.6': + '@swc/core-darwin-x64@1.10.7': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.6': + '@swc/core-linux-arm-gnueabihf@1.10.7': optional: true - '@swc/core-linux-arm64-gnu@1.10.6': + '@swc/core-linux-arm64-gnu@1.10.7': optional: true - '@swc/core-linux-arm64-musl@1.10.6': + '@swc/core-linux-arm64-musl@1.10.7': optional: true - '@swc/core-linux-x64-gnu@1.10.6': + '@swc/core-linux-x64-gnu@1.10.7': optional: true - '@swc/core-linux-x64-musl@1.10.6': + '@swc/core-linux-x64-musl@1.10.7': optional: true - '@swc/core-win32-arm64-msvc@1.10.6': + '@swc/core-win32-arm64-msvc@1.10.7': optional: true - '@swc/core-win32-ia32-msvc@1.10.6': + '@swc/core-win32-ia32-msvc@1.10.7': optional: true - '@swc/core-win32-x64-msvc@1.10.6': + '@swc/core-win32-x64-msvc@1.10.7': optional: true - '@swc/core@1.10.6': + '@swc/core@1.10.7': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.6 - '@swc/core-darwin-x64': 1.10.6 - '@swc/core-linux-arm-gnueabihf': 1.10.6 - '@swc/core-linux-arm64-gnu': 1.10.6 - '@swc/core-linux-arm64-musl': 1.10.6 - '@swc/core-linux-x64-gnu': 1.10.6 - '@swc/core-linux-x64-musl': 1.10.6 - '@swc/core-win32-arm64-msvc': 1.10.6 - '@swc/core-win32-ia32-msvc': 1.10.6 - '@swc/core-win32-x64-msvc': 1.10.6 + '@swc/core-darwin-arm64': 1.10.7 + '@swc/core-darwin-x64': 1.10.7 + '@swc/core-linux-arm-gnueabihf': 1.10.7 + '@swc/core-linux-arm64-gnu': 1.10.7 + '@swc/core-linux-arm64-musl': 1.10.7 + '@swc/core-linux-x64-gnu': 1.10.7 + '@swc/core-linux-x64-musl': 1.10.7 + '@swc/core-win32-arm64-msvc': 1.10.7 + '@swc/core-win32-ia32-msvc': 1.10.7 + '@swc/core-win32-x64-msvc': 1.10.7 '@swc/counter@0.1.3': {} @@ -3805,11 +3805,11 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/node@22.10.5': + '@types/node@22.10.6': dependencies: undici-types: 6.20.0 - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.5))': + '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.6))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -3823,7 +3823,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5) + vitest: 2.1.8(@types/node@22.10.6) transitivePeerDependencies: - supports-color @@ -3834,13 +3834,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.5))': + '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.6))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.5) + vite: 5.4.11(@types/node@22.10.6) '@vitest/pretty-format@2.1.8': dependencies: @@ -3889,7 +3889,7 @@ snapshots: is-stream: 2.0.1 tar-stream: 3.1.7 - '@xhmikosr/decompress-tarbz2@8.0.1': + '@xhmikosr/decompress-tarbz2@8.0.2': dependencies: '@xhmikosr/decompress-tar': 8.0.1 file-type: 19.6.0 @@ -3912,7 +3912,7 @@ snapshots: '@xhmikosr/decompress@10.0.1': dependencies: '@xhmikosr/decompress-tar': 8.0.1 - '@xhmikosr/decompress-tarbz2': 8.0.1 + '@xhmikosr/decompress-tarbz2': 8.0.2 '@xhmikosr/decompress-targz': 8.0.1 '@xhmikosr/decompress-unzip': 7.0.0 graceful-fs: 4.2.11 @@ -3998,7 +3998,7 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.5.3: + bare-events@2.5.4: optional: true base64-js@1.5.1: {} @@ -4093,7 +4093,7 @@ snapshots: clean-stack@2.2.0: {} - close-with-grace@2.1.0: {} + close-with-grace@2.2.0: {} color-convert@2.0.1: dependencies: @@ -4212,7 +4212,7 @@ snapshots: es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.0.1: dependencies: es-errors: 1.3.0 @@ -4437,7 +4437,7 @@ snapshots: avvio: 9.1.0 fast-json-stringify: 6.0.0 find-my-way: 9.1.0 - light-my-request: 6.4.0 + light-my-request: 6.5.1 pino: 9.6.0 process-warning: 4.0.1 rfdc: 1.4.1 @@ -4513,7 +4513,7 @@ snapshots: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.0.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -4524,7 +4524,7 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.0.1 get-stream@6.0.1: {} @@ -4550,7 +4550,7 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.0: + glob@11.0.1: dependencies: foreground-child: 3.3.0 jackspeak: 4.0.2 @@ -4577,13 +4577,13 @@ snapshots: p-cancelable: 3.0.0 responselike: 3.0.0 - gql.tada@1.8.10(graphql@16.10.0)(typescript@5.7.2): + gql.tada@1.8.10(graphql@16.10.0)(typescript@5.7.3): dependencies: '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.2) - '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.2))(graphql@16.10.0)(typescript@5.7.2) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.2) - typescript: 5.7.2 + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -4758,50 +4758,50 @@ snapshots: layerr@3.0.0: {} - lefthook-darwin-arm64@1.10.1: + lefthook-darwin-arm64@1.10.4: optional: true - lefthook-darwin-x64@1.10.1: + lefthook-darwin-x64@1.10.4: optional: true - lefthook-freebsd-arm64@1.10.1: + lefthook-freebsd-arm64@1.10.4: optional: true - lefthook-freebsd-x64@1.10.1: + lefthook-freebsd-x64@1.10.4: optional: true - lefthook-linux-arm64@1.10.1: + lefthook-linux-arm64@1.10.4: optional: true - lefthook-linux-x64@1.10.1: + lefthook-linux-x64@1.10.4: optional: true - lefthook-openbsd-arm64@1.10.1: + lefthook-openbsd-arm64@1.10.4: optional: true - lefthook-openbsd-x64@1.10.1: + lefthook-openbsd-x64@1.10.4: optional: true - lefthook-windows-arm64@1.10.1: + lefthook-windows-arm64@1.10.4: optional: true - lefthook-windows-x64@1.10.1: + lefthook-windows-x64@1.10.4: optional: true - lefthook@1.10.1: + lefthook@1.10.4: optionalDependencies: - lefthook-darwin-arm64: 1.10.1 - lefthook-darwin-x64: 1.10.1 - lefthook-freebsd-arm64: 1.10.1 - lefthook-freebsd-x64: 1.10.1 - lefthook-linux-arm64: 1.10.1 - lefthook-linux-x64: 1.10.1 - lefthook-openbsd-arm64: 1.10.1 - lefthook-openbsd-x64: 1.10.1 - lefthook-windows-arm64: 1.10.1 - lefthook-windows-x64: 1.10.1 - - light-my-request@6.4.0: + lefthook-darwin-arm64: 1.10.4 + lefthook-darwin-x64: 1.10.4 + lefthook-freebsd-arm64: 1.10.4 + lefthook-freebsd-x64: 1.10.4 + lefthook-linux-arm64: 1.10.4 + lefthook-linux-x64: 1.10.4 + lefthook-openbsd-arm64: 1.10.4 + lefthook-openbsd-x64: 1.10.4 + lefthook-windows-arm64: 1.10.4 + lefthook-windows-x64: 1.10.4 + + light-my-request@6.5.1: dependencies: cookie: 1.0.2 process-warning: 4.0.1 @@ -4829,8 +4829,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 source-map-js: 1.2.1 make-dir@4.0.0: @@ -4839,13 +4839,13 @@ snapshots: math-intrinsics@1.1.0: {} - mercurius-integration-testing@9.0.1(fastify@5.2.1)(graphql@16.10.0)(mercurius@16.0.0(graphql@16.10.0)): + mercurius-integration-testing@9.0.1(fastify@5.2.1)(graphql@16.10.0)(mercurius@16.0.1(graphql@16.10.0)): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) cookie: 1.0.2 fastify: 5.2.1 graphql: 16.10.0 - mercurius: 16.0.0(graphql@16.10.0) + mercurius: 16.0.1(graphql@16.10.0) ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -4857,11 +4857,11 @@ snapshots: graphql: 16.10.0 graphql-upload-minimal: 1.6.1(graphql@16.10.0) - mercurius@16.0.0(graphql@16.10.0): + mercurius@16.0.1(graphql@16.10.0): dependencies: '@fastify/error': 4.0.0 - '@fastify/static': 8.0.3 - '@fastify/websocket': 11.0.1 + '@fastify/static': 8.0.4 + '@fastify/websocket': 11.0.2 fastify-plugin: 5.0.1 graphql: 16.10.0 graphql-jit: 0.8.7(graphql@16.10.0) @@ -5039,7 +5039,7 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss@8.4.49: + postcss@8.5.1: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -5260,7 +5260,7 @@ snapshots: queue-tick: 1.0.1 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.5.3 + bare-events: 2.5.4 strict-uri-encode@2.0.0: {} @@ -5359,9 +5359,9 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - tsconfck@3.1.4(typescript@5.7.2): + tsconfck@3.1.4(typescript@5.7.3): optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 tslib@2.8.1: {} @@ -5372,7 +5372,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - typescript@5.7.2: {} + typescript@5.7.3: {} uint8array-extras@1.4.0: {} @@ -5399,13 +5399,13 @@ snapshots: uuidv7@1.0.2: {} - vite-node@2.1.8(@types/node@22.10.5): + vite-node@2.1.8(@types/node@22.10.6): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.5) + vite: 5.4.11(@types/node@22.10.6) transitivePeerDependencies: - '@types/node' - less @@ -5417,30 +5417,30 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.5)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.11(@types/node@22.10.6)): dependencies: debug: 4.4.0 globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.7.2) + tsconfck: 3.1.4(typescript@5.7.3) optionalDependencies: - vite: 5.4.11(@types/node@22.10.5) + vite: 5.4.11(@types/node@22.10.6) transitivePeerDependencies: - supports-color - typescript - vite@5.4.11(@types/node@22.10.5): + vite@5.4.11(@types/node@22.10.6): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 fsevents: 2.3.3 - vitest@2.1.8(@types/node@22.10.5): + vitest@2.1.8(@types/node@22.10.6): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.5)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.6)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -5456,11 +5456,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.5) - vite-node: 2.1.8(@types/node@22.10.5) + vite: 5.4.11(@types/node@22.10.6) + vite-node: 2.1.8(@types/node@22.10.6) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 transitivePeerDependencies: - less - lightningcss diff --git a/schema.graphql b/schema.graphql index 8112b59437c..38b099b7ef5 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1737,9 +1737,6 @@ input MutationSignUpInput { """Name of the city where the user resides in.""" city: String - """Confirmed password of the user to sign in to the application.""" - confirmedPassword: String! - """Country code of the country the user is a citizen of.""" countryCode: Iso3166Alpha2CountryCode diff --git a/src/graphql/inputs/MutationSignUpInput.ts b/src/graphql/inputs/MutationSignUpInput.ts index 106f77e43d0..95fe9973cdf 100755 --- a/src/graphql/inputs/MutationSignUpInput.ts +++ b/src/graphql/inputs/MutationSignUpInput.ts @@ -23,24 +23,7 @@ export const mutationSignUpInputSchema = usersTableInsertSchema }) .extend({ avatar: z.custom>().nullish(), - confirmedPassword: z.string().min(1).max(64), password: z.string().min(1).max(64), - }) - .transform(({ confirmedPassword, ...transformedArg }, ctx) => { - if (confirmedPassword !== transformedArg.password) { - ctx.addIssue({ - code: "custom", - path: ["confirmedPassword"], - message: "Does not match the password.", - }); - ctx.addIssue({ - code: "custom", - path: ["password"], - message: "Does not match the confirmed password.", - }); - } - - return transformedArg; }); export const MutationSignUpInput = builder @@ -62,11 +45,6 @@ export const MutationSignUpInput = builder city: t.string({ description: "Name of the city where the user resides in.", }), - confirmedPassword: t.string({ - description: - "Confirmed password of the user to sign in to the application.", - required: true, - }), countryCode: t.field({ description: "Country code of the country the user is a citizen of.", type: Iso3166Alpha2CountryCode, diff --git a/test/routes/graphql/Mutation/signUp.test.ts b/test/routes/graphql/Mutation/signUp.test.ts index 3e1bb4609ea..6cc1daae148 100644 --- a/test/routes/graphql/Mutation/signUp.test.ts +++ b/test/routes/graphql/Mutation/signUp.test.ts @@ -40,7 +40,6 @@ suite("Mutation field signUp", () => { }, variables: { input: { - confirmedPassword: "password", emailAddress: `emailAddress${faker.string.ulid()}@email.com`, name: "name", password: "password", @@ -69,7 +68,6 @@ suite("Mutation field signUp", () => { () => { test(`length of the value of the argument "input.address" is less than 1. length of the value of the argument "input.city" is less than 1. - length of the value of the argument "input.confirmedPassword" is less than 1. length of the value of the argument "input.description" is less than 1. length of the value of the argument "input.name" is less than 1. length of the value of the argument "input.password" is less than 1. @@ -80,7 +78,6 @@ suite("Mutation field signUp", () => { input: { address: "", city: "", - confirmedPassword: "", description: "", emailAddress: `emailAddress${faker.string.ulid()}@email.com`, name: "", @@ -108,10 +105,6 @@ suite("Mutation field signUp", () => { argumentPath: ["input", "city"], message: expect.any(String), }, - { - argumentPath: ["input", "confirmedPassword"], - message: expect.any(String), - }, { argumentPath: ["input", "description"], message: expect.any(String), @@ -143,7 +136,6 @@ suite("Mutation field signUp", () => { test(`length of the value of the argument "input.address" is more than 1025. length of the value of the argument "input.city" is more than 64. - length of the value of the argument "input.confirmedPassword" is more than 64. length of the value of the argument "input.description" is more than 2048. length of the value of the argument "input.name" is more than 256. length of the value of the argument "input.password" is more than 64. @@ -154,7 +146,6 @@ suite("Mutation field signUp", () => { input: { address: `address${faker.string.alpha(1025)}`, city: `city${faker.string.alpha(65)}`, - confirmedPassword: `confirmedPassword${faker.string.alpha(65)}`, description: `description${faker.string.alpha(2049)}`, emailAddress: `emailAddress${faker.string.ulid()}@email.com`, name: `name${faker.string.alpha(257)}`, @@ -182,10 +173,6 @@ suite("Mutation field signUp", () => { argumentPath: ["input", "city"], message: expect.any(String), }, - { - argumentPath: ["input", "confirmedPassword"], - message: expect.any(String), - }, { argumentPath: ["input", "description"], message: expect.any(String), @@ -214,45 +201,6 @@ suite("Mutation field signUp", () => { ]), ); }); - - test(`value of the argument "input.confirmedPassword" does not match the value of the argument "input.password". - value of the argument "input.password" does not match the value of the argument "input.confirmedPassword".`, async () => { - const signUpResult = await mercuriusClient.mutate(Mutation_signUp, { - variables: { - input: { - confirmedPassword: "confirmedPassword", - emailAddress: `emailAddress${faker.string.ulid()}@email.com`, - name: "name", - password: "password", - }, - }, - }); - - expect(signUpResult.data.signUp).toEqual(null); - expect(signUpResult.errors).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - extensions: expect.objectContaining({ - code: "invalid_arguments", - issues: expect.arrayContaining< - InvalidArgumentsExtensions["issues"][number] - >([ - { - argumentPath: ["input", "confirmedPassword"], - message: expect.any(String), - }, - { - argumentPath: ["input", "password"], - message: expect.any(String), - }, - ]), - }), - message: expect.any(String), - path: ["signUp"], - }), - ]), - ); - }); }, ); @@ -263,7 +211,6 @@ suite("Mutation field signUp", () => { const signUpResult = await mercuriusClient.mutate(Mutation_signUp, { variables: { input: { - confirmedPassword: "password", emailAddress: server.envConfig.API_ADMINISTRATOR_USER_EMAIL_ADDRESS, name: "name", @@ -310,7 +257,6 @@ suite("Mutation field signUp", () => { address: "address", birthDate: "1901-01-01", city: "city", - confirmedPassword: "password", countryCode: "us", description: "description", educationGrade: "kg", @@ -369,7 +315,6 @@ suite("Mutation field signUp", () => { test(`nullable user fields have the "null" values if the corresponding nullable arguments are not provided in the graphql operation.`, async () => { const variables: VariablesOf = { input: { - confirmedPassword: "password", emailAddress: `emailAddress${faker.string.ulid()}@email.com`, name: "name", password: "password", diff --git a/test/routes/graphql/gql.tada-cache.d.ts b/test/routes/graphql/gql.tada-cache.d.ts index 482ebc0ce89..dea45be764a 100644 --- a/test/routes/graphql/gql.tada-cache.d.ts +++ b/test/routes/graphql/gql.tada-cache.d.ts @@ -11,7 +11,7 @@ declare module 'gql.tada' { "mutation Mutation_deleteUser($input: MutationDeleteUserInput!) {\n deleteUser(input: $input) {\n address\n birthDate\n city\n countryCode\n createdAt\n description\n educationGrade\n emailAddress\n employmentStatus\n homePhoneNumber\n id\n isEmailAddressVerified\n maritalStatus\n mobilePhoneNumber\n name\n natalSex\n postalCode\n role\n state\n workPhoneNumber \n }\n}": TadaDocumentNode<{ deleteUser: { address: string | null; birthDate: string | null; city: string | null; countryCode: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null; createdAt: string | null; description: string | null; educationGrade: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null; emailAddress: string | null; employmentStatus: "full_time" | "part_time" | "unemployed" | null; homePhoneNumber: string | null; id: string; isEmailAddressVerified: boolean | null; maritalStatus: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null; mobilePhoneNumber: string | null; name: string | null; natalSex: "female" | "intersex" | "male" | null; postalCode: string | null; role: "administrator" | "regular" | null; state: string | null; workPhoneNumber: string | null; } | null; }, { input: { id: string; }; }, void>; "mutation Mutation_signUp($input: MutationSignUpInput!) {\n signUp(input: $input) {\n authenticationToken\n user {\n address\n birthDate\n city\n countryCode\n createdAt\n description\n educationGrade\n emailAddress\n employmentStatus\n homePhoneNumber\n id\n isEmailAddressVerified\n maritalStatus\n mobilePhoneNumber\n name\n natalSex\n postalCode\n role\n state\n workPhoneNumber\n }\n }\n}": - TadaDocumentNode<{ signUp: { authenticationToken: string | null; user: { address: string | null; birthDate: string | null; city: string | null; countryCode: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null; createdAt: string | null; description: string | null; educationGrade: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null; emailAddress: string | null; employmentStatus: "full_time" | "part_time" | "unemployed" | null; homePhoneNumber: string | null; id: string; isEmailAddressVerified: boolean | null; maritalStatus: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null; mobilePhoneNumber: string | null; name: string | null; natalSex: "female" | "intersex" | "male" | null; postalCode: string | null; role: "administrator" | "regular" | null; state: string | null; workPhoneNumber: string | null; } | null; } | null; }, { input: { workPhoneNumber?: string | null | undefined; state?: string | null | undefined; postalCode?: string | null | undefined; password: string; natalSex?: "female" | "intersex" | "male" | null | undefined; name: string; mobilePhoneNumber?: string | null | undefined; maritalStatus?: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null | undefined; homePhoneNumber?: string | null | undefined; employmentStatus?: "full_time" | "part_time" | "unemployed" | null | undefined; emailAddress: string; educationGrade?: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null | undefined; description?: string | null | undefined; countryCode?: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null | undefined; confirmedPassword: string; city?: string | null | undefined; birthDate?: string | null | undefined; avatar?: unknown; address?: string | null | undefined; }; }, void>; + TadaDocumentNode<{ signUp: { authenticationToken: string | null; user: { address: string | null; birthDate: string | null; city: string | null; countryCode: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null; createdAt: string | null; description: string | null; educationGrade: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null; emailAddress: string | null; employmentStatus: "full_time" | "part_time" | "unemployed" | null; homePhoneNumber: string | null; id: string; isEmailAddressVerified: boolean | null; maritalStatus: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null; mobilePhoneNumber: string | null; name: string | null; natalSex: "female" | "intersex" | "male" | null; postalCode: string | null; role: "administrator" | "regular" | null; state: string | null; workPhoneNumber: string | null; } | null; } | null; }, { input: { workPhoneNumber?: string | null | undefined; state?: string | null | undefined; postalCode?: string | null | undefined; password: string; natalSex?: "female" | "intersex" | "male" | null | undefined; name: string; mobilePhoneNumber?: string | null | undefined; maritalStatus?: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null | undefined; homePhoneNumber?: string | null | undefined; employmentStatus?: "full_time" | "part_time" | "unemployed" | null | undefined; emailAddress: string; educationGrade?: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null | undefined; description?: string | null | undefined; countryCode?: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null | undefined; city?: string | null | undefined; birthDate?: string | null | undefined; avatar?: unknown; address?: string | null | undefined; }; }, void>; "mutation Mutation_updateCurrentUser($input: MutationUpdateCurrentUserInput!) {\n updateCurrentUser(input: $input) {\n address\n birthDate\n city\n countryCode\n createdAt\n description\n educationGrade\n emailAddress\n employmentStatus\n homePhoneNumber\n id\n isEmailAddressVerified\n maritalStatus\n mobilePhoneNumber\n name\n natalSex\n postalCode\n role\n state\n workPhoneNumber \n }\n}": TadaDocumentNode<{ updateCurrentUser: { address: string | null; birthDate: string | null; city: string | null; countryCode: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null; createdAt: string | null; description: string | null; educationGrade: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null; emailAddress: string | null; employmentStatus: "full_time" | "part_time" | "unemployed" | null; homePhoneNumber: string | null; id: string; isEmailAddressVerified: boolean | null; maritalStatus: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null; mobilePhoneNumber: string | null; name: string | null; natalSex: "female" | "intersex" | "male" | null; postalCode: string | null; role: "administrator" | "regular" | null; state: string | null; workPhoneNumber: string | null; } | null; }, { input: { workPhoneNumber?: string | null | undefined; state?: string | null | undefined; postalCode?: string | null | undefined; password?: string | null | undefined; natalSex?: "female" | "intersex" | "male" | null | undefined; name?: string | null | undefined; mobilePhoneNumber?: string | null | undefined; maritalStatus?: "divorced" | "engaged" | "married" | "seperated" | "single" | "widowed" | null | undefined; homePhoneNumber?: string | null | undefined; employmentStatus?: "full_time" | "part_time" | "unemployed" | null | undefined; emailAddress?: string | null | undefined; educationGrade?: "kg" | "grade_1" | "grade_2" | "grade_3" | "grade_4" | "grade_5" | "grade_6" | "grade_7" | "grade_8" | "grade_9" | "grade_10" | "grade_11" | "grade_12" | "graduate" | "no_grade" | "pre_kg" | null | undefined; description?: string | null | undefined; countryCode?: "at" | "pg" | "ad" | "ae" | "af" | "ag" | "ai" | "al" | "am" | "ao" | "aq" | "ar" | "as" | "au" | "aw" | "ax" | "az" | "ba" | "bb" | "bd" | "be" | "bf" | "bg" | "bh" | "bi" | "bj" | "bl" | "bm" | "bn" | "bo" | "bq" | "br" | "bs" | "bt" | "bv" | "bw" | "by" | "bz" | "ca" | "cc" | "cd" | "cf" | "cg" | "ch" | "ci" | "ck" | "cl" | "cm" | "cn" | "co" | "cr" | "cu" | "cv" | "cw" | "cx" | "cy" | "cz" | "de" | "dj" | "dk" | "dm" | "do" | "dz" | "ec" | "ee" | "eg" | "eh" | "er" | "es" | "et" | "fi" | "fj" | "fk" | "fm" | "fo" | "fr" | "ga" | "gb" | "gd" | "ge" | "gf" | "gg" | "gh" | "gi" | "gl" | "gm" | "gn" | "gp" | "gq" | "gr" | "gs" | "gt" | "gu" | "gw" | "gy" | "hk" | "hm" | "hn" | "hr" | "ht" | "hu" | "id" | "ie" | "il" | "im" | "in" | "io" | "iq" | "ir" | "is" | "it" | "je" | "jm" | "jo" | "jp" | "ke" | "kg" | "kh" | "ki" | "km" | "kn" | "kp" | "kr" | "kw" | "ky" | "kz" | "la" | "lb" | "lc" | "li" | "lk" | "lr" | "ls" | "lt" | "lu" | "lv" | "ly" | "ma" | "mc" | "md" | "me" | "mf" | "mg" | "mh" | "mk" | "ml" | "mm" | "mn" | "mo" | "mp" | "mq" | "mr" | "ms" | "mt" | "mu" | "mv" | "mw" | "mx" | "my" | "mz" | "na" | "nc" | "ne" | "nf" | "ng" | "ni" | "nl" | "no" | "np" | "nr" | "nu" | "nz" | "om" | "pa" | "pe" | "pf" | "ph" | "pk" | "pl" | "pm" | "pn" | "pr" | "ps" | "pt" | "pw" | "py" | "qa" | "re" | "ro" | "rs" | "ru" | "rw" | "sa" | "sb" | "sc" | "sd" | "se" | "sg" | "sh" | "si" | "sj" | "sk" | "sl" | "sm" | "sn" | "so" | "sr" | "ss" | "st" | "sv" | "sx" | "sy" | "sz" | "tc" | "td" | "tf" | "tg" | "th" | "tj" | "tk" | "tl" | "tm" | "tn" | "to" | "tr" | "tt" | "tv" | "tw" | "tz" | "ua" | "ug" | "um" | "us" | "uy" | "uz" | "va" | "vc" | "ve" | "vg" | "vi" | "vn" | "vu" | "wf" | "ws" | "ye" | "yt" | "za" | "zm" | "zw" | null | undefined; city?: string | null | undefined; birthDate?: string | null | undefined; avatar?: unknown; address?: string | null | undefined; }; }, void>; "mutation Mutation_updateUser($input: MutationUpdateUserInput!) {\n updateUser(input: $input) {\n address\n birthDate\n city\n countryCode\n createdAt\n description\n educationGrade\n emailAddress\n employmentStatus\n homePhoneNumber\n id\n isEmailAddressVerified\n maritalStatus\n mobilePhoneNumber\n name\n natalSex\n postalCode\n role\n state\n workPhoneNumber \n }\n}": diff --git a/test/routes/graphql/gql.tada.d.ts b/test/routes/graphql/gql.tada.d.ts index f553599c641..989aaf4eb5a 100644 --- a/test/routes/graphql/gql.tada.d.ts +++ b/test/routes/graphql/gql.tada.d.ts @@ -91,7 +91,7 @@ export type introspection_types = { 'MutationDeleteUserInput': { kind: 'INPUT_OBJECT'; name: 'MutationDeleteUserInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; 'MutationDeleteVenueBookingInput': { kind: 'INPUT_OBJECT'; name: 'MutationDeleteVenueBookingInput'; isOneOf: false; inputFields: [{ name: 'eventId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'venueId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; 'MutationDeleteVenueInput': { kind: 'INPUT_OBJECT'; name: 'MutationDeleteVenueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; - 'MutationSignUpInput': { kind: 'INPUT_OBJECT'; name: 'MutationSignUpInput'; isOneOf: false; inputFields: [{ name: 'address'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'avatar'; type: { kind: 'SCALAR'; name: 'Upload'; ofType: null; }; defaultValue: null }, { name: 'birthDate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'confirmedPassword'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'ENUM'; name: 'Iso3166Alpha2CountryCode'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'educationGrade'; type: { kind: 'ENUM'; name: 'UserEducationGrade'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'EmailAddress'; ofType: null; }; }; defaultValue: null }, { name: 'employmentStatus'; type: { kind: 'ENUM'; name: 'UserEmploymentStatus'; ofType: null; }; defaultValue: null }, { name: 'homePhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }, { name: 'maritalStatus'; type: { kind: 'ENUM'; name: 'UserMaritalStatus'; ofType: null; }; defaultValue: null }, { name: 'mobilePhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'natalSex'; type: { kind: 'ENUM'; name: 'UserNatalSex'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'workPhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }]; }; + 'MutationSignUpInput': { kind: 'INPUT_OBJECT'; name: 'MutationSignUpInput'; isOneOf: false; inputFields: [{ name: 'address'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'avatar'; type: { kind: 'SCALAR'; name: 'Upload'; ofType: null; }; defaultValue: null }, { name: 'birthDate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'ENUM'; name: 'Iso3166Alpha2CountryCode'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'educationGrade'; type: { kind: 'ENUM'; name: 'UserEducationGrade'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'EmailAddress'; ofType: null; }; }; defaultValue: null }, { name: 'employmentStatus'; type: { kind: 'ENUM'; name: 'UserEmploymentStatus'; ofType: null; }; defaultValue: null }, { name: 'homePhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }, { name: 'maritalStatus'; type: { kind: 'ENUM'; name: 'UserMaritalStatus'; ofType: null; }; defaultValue: null }, { name: 'mobilePhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'natalSex'; type: { kind: 'ENUM'; name: 'UserNatalSex'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'workPhoneNumber'; type: { kind: 'SCALAR'; name: 'PhoneNumber'; ofType: null; }; defaultValue: null }]; }; 'MutationUpdateAdvertisementInput': { kind: 'INPUT_OBJECT'; name: 'MutationUpdateAdvertisementInput'; isOneOf: false; inputFields: [{ name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'endAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'startAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'AdvertisementType'; ofType: null; }; defaultValue: null }]; }; 'MutationUpdateAgendaFolderInput': { kind: 'INPUT_OBJECT'; name: 'MutationUpdateAgendaFolderInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'parentFolderId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }]; }; 'MutationUpdateAgendaItemInput': { kind: 'INPUT_OBJECT'; name: 'MutationUpdateAgendaItemInput'; isOneOf: false; inputFields: [{ name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'duration'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'folderId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'key'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; From 21bb583923cb5913746fe1c71965f3db2f64f225 Mon Sep 17 00:00:00 2001 From: xoldd Date: Tue, 14 Jan 2025 23:06:17 +0530 Subject: [PATCH 6/6] fix apply drizzle migrations env (#2859) --- envFiles/.env.devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envFiles/.env.devcontainer b/envFiles/.env.devcontainer index 8fae730b021..5f6f4863b9c 100644 --- a/envFiles/.env.devcontainer +++ b/envFiles/.env.devcontainer @@ -6,7 +6,7 @@ API_BASE_URL=http://127.0.0.1:8080 API_DEBUGGER_HOST=0.0.0.0 API_DEBUGGER_PORT=9229 API_HOST=0.0.0.0 -API_IS_APPLY_DRIZZLE_MIGRATIONS=false +API_IS_APPLY_DRIZZLE_MIGRATIONS=true API_IS_GRAPHIQL=true API_IS_PINO_PRETTY=true API_JWT_EXPIRES_IN=2592000000