prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Document all the scalars we have
  One that's definitely missing is the JSON one, or at least it doesn't show up on the search (we do get an example of creating a custom JSON scalar though, which is misleading)
  
  <!-- POLAR PLEDGE BADGE START -->
  ## Upvote & Fund
  
  - We're using [Polar.sh](https://polar.sh/strawberry-graphql) so you can upvote and help fund this issue.
  - We receive the funding once the issue is completed & confirmed by you.
  - Thank you in advance for helping prioritize & fund our backlog.
  
  <a href="https://polar.sh/strawberry-graphql/strawberry/issues/3404">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg?darkmode=1">
    <img alt="Fund with Polar" src="https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg">
  </picture>
  </a>
  <!-- POLAR PLEDGE BADGE END -->
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `strawberry/scalars.py`
  Content:
  ```
  1 from __future__ import annotations
  2 
  3 import base64
  4 from typing import TYPE_CHECKING, Any, Dict, NewType, Union
  5 
  6 from .custom_scalar import scalar
  7 
  8 if TYPE_CHECKING:
  9     from .custom_scalar import ScalarDefinition, ScalarWrapper
  10 
  11 
  12 ID = NewType("ID", str)
  13 
  14 JSON = scalar(
  15     NewType("JSON", object),  # mypy doesn't like `NewType("name", Any)`
  16     description=(
  17         "The `JSON` scalar type represents JSON values as specified by "
  18         "[ECMA-404]"
  19         "(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."
  20     ),
  21     specified_by_url=(
  22         "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf"
  23     ),
  24     serialize=lambda v: v,
  25     parse_value=lambda v: v,
  26 )
  27 
  28 Base16 = scalar(
  29     NewType("Base16", bytes),
  30     description="Represents binary data as Base16-encoded (hexadecimal) strings.",
  31     specified_by_url="https://datatracker.ietf.org/doc/html/rfc4648.html#section-8",
  32     serialize=lambda v: base64.b16encode(v).decode("utf-8"),
  33     parse_value=lambda v: base64.b16decode(v.encode("utf-8"), casefold=True),
  34 )
  35 
  36 Base32 = scalar(
  37     NewType("Base32", bytes),
  38     description=(
  39         "Represents binary data as Base32-encoded strings, using the standard alphabet."
  40     ),
  41     specified_by_url=("https://datatracker.ietf.org/doc/html/rfc4648.html#section-6"),
  42     serialize=lambda v: base64.b32encode(v).decode("utf-8"),
  43     parse_value=lambda v: base64.b32decode(v.encode("utf-8"), casefold=True),
  44 )
  45 
  46 Base64 = scalar(
  47     NewType("Base64", bytes),
  48     description=(
  49         "Represents binary data as Base64-encoded strings, using the standard alphabet."
  50     ),
  51     specified_by_url="https://datatracker.ietf.org/doc/html/rfc4648.html#section-4",
  52     serialize=lambda v: base64.b64encode(v).decode("utf-8"),
  53     parse_value=lambda v: base64.b64decode(v.encode("utf-8")),
  54 )
  55 
  56 
  57 def is_scalar(
  58     annotation: Any,
  59     scalar_registry: Dict[object, Union[ScalarWrapper, ScalarDefinition]],
  60 ) -> bool:
  61     if annotation in scalar_registry:
  62         return True
  63 
  64     return hasattr(annotation, "_scalar_definition")
  65
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/strawberry/scalars.py b/strawberry/scalars.py
  --- a/strawberry/scalars.py
  +++ b/strawberry/scalars.py
  @@ -16,10 +16,10 @@
       description=(
           "The `JSON` scalar type represents JSON values as specified by "
           "[ECMA-404]"
  -        "(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."
  +        "(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf)."
       ),
       specified_by_url=(
  -        "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf"
  +        "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
       ),
       serialize=lambda v: v,
       parse_value=lambda v: v,
  
verification_info: {"golden_diff": "diff --git a/strawberry/scalars.py b/strawberry/scalars.py\n--- a/strawberry/scalars.py\n+++ b/strawberry/scalars.py\n@@ -16,10 +16,10 @@\n     description=(\n         \"The `JSON` scalar type represents JSON values as specified by \"\n         \"[ECMA-404]\"\n-        \"(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).\"\n+        \"(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf).\"\n     ),\n     specified_by_url=(\n-        \"http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf\"\n+        \"https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf\"\n     ),\n     serialize=lambda v: v,\n     parse_value=lambda v: v,\n", "issue": "Document all the scalars we have\nOne that's definitely missing is the JSON one, or at least it doesn't show up on the search (we do get an example of creating a custom JSON scalar though, which is misleading)\n\n<!-- POLAR PLEDGE BADGE START -->\n## Upvote & Fund\n\n- We're using [Polar.sh](https://polar.sh/strawberry-graphql) so you can upvote and help fund this issue.\n- We receive the funding once the issue is completed & confirmed by you.\n- Thank you in advance for helping prioritize & fund our backlog.\n\n<a href=\"https://polar.sh/strawberry-graphql/strawberry/issues/3404\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg?darkmode=1\">\n  <img alt=\"Fund with Polar\" src=\"https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg\">\n</picture>\n</a>\n<!-- POLAR PLEDGE BADGE END -->\n\n", "before_files": [{"content": "from __future__ import annotations\n\nimport base64\nfrom typing import TYPE_CHECKING, Any, Dict, NewType, Union\n\nfrom .custom_scalar import scalar\n\nif TYPE_CHECKING:\n    from .custom_scalar import ScalarDefinition, ScalarWrapper\n\n\nID = NewType(\"ID\", str)\n\nJSON = scalar(\n    NewType(\"JSON\", object),  # mypy doesn't like `NewType(\"name\", Any)`\n    description=(\n        \"The `JSON` scalar type represents JSON values as specified by \"\n        \"[ECMA-404]\"\n        \"(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).\"\n    ),\n    specified_by_url=(\n        \"http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf\"\n    ),\n    serialize=lambda v: v,\n    parse_value=lambda v: v,\n)\n\nBase16 = scalar(\n    NewType(\"Base16\", bytes),\n    description=\"Represents binary data as Base16-encoded (hexadecimal) strings.\",\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-8\",\n    serialize=lambda v: base64.b16encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b16decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase32 = scalar(\n    NewType(\"Base32\", bytes),\n    description=(\n        \"Represents binary data as Base32-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=(\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-6\"),\n    serialize=lambda v: base64.b32encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b32decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase64 = scalar(\n    NewType(\"Base64\", bytes),\n    description=(\n        \"Represents binary data as Base64-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-4\",\n    serialize=lambda v: base64.b64encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b64decode(v.encode(\"utf-8\")),\n)\n\n\ndef is_scalar(\n    annotation: Any,\n    scalar_registry: Dict[object, Union[ScalarWrapper, ScalarDefinition]],\n) -> bool:\n    if annotation in scalar_registry:\n        return True\n\n    return hasattr(annotation, \"_scalar_definition\")\n", "path": "strawberry/scalars.py"}], "after_files": [{"content": "from __future__ import annotations\n\nimport base64\nfrom typing import TYPE_CHECKING, Any, Dict, NewType, Union\n\nfrom .custom_scalar import scalar\n\nif TYPE_CHECKING:\n    from .custom_scalar import ScalarDefinition, ScalarWrapper\n\n\nID = NewType(\"ID\", str)\n\nJSON = scalar(\n    NewType(\"JSON\", object),  # mypy doesn't like `NewType(\"name\", Any)`\n    description=(\n        \"The `JSON` scalar type represents JSON values as specified by \"\n        \"[ECMA-404]\"\n        \"(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf).\"\n    ),\n    specified_by_url=(\n        \"https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf\"\n    ),\n    serialize=lambda v: v,\n    parse_value=lambda v: v,\n)\n\nBase16 = scalar(\n    NewType(\"Base16\", bytes),\n    description=\"Represents binary data as Base16-encoded (hexadecimal) strings.\",\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-8\",\n    serialize=lambda v: base64.b16encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b16decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase32 = scalar(\n    NewType(\"Base32\", bytes),\n    description=(\n        \"Represents binary data as Base32-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=(\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-6\"),\n    serialize=lambda v: base64.b32encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b32decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase64 = scalar(\n    NewType(\"Base64\", bytes),\n    description=(\n        \"Represents binary data as Base64-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-4\",\n    serialize=lambda v: base64.b64encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b64decode(v.encode(\"utf-8\")),\n)\n\n\ndef is_scalar(\n    annotation: Any,\n    scalar_registry: Dict[object, Union[ScalarWrapper, ScalarDefinition]],\n) -> bool:\n    if annotation in scalar_registry:\n        return True\n\n    return hasattr(annotation, \"_scalar_definition\")\n", "path": "strawberry/scalars.py"}]}