diff --git a/website/src/docs/docs.json b/website/src/docs/docs.json index a14ebe62cd1..bb9bc27fe0d 100644 --- a/website/src/docs/docs.json +++ b/website/src/docs/docs.json @@ -2480,10 +2480,6 @@ "path": "index", "title": "Blazor" }, - { - "path": "xamarin", - "title": "Xamarin" - }, { "path": "console", "title": "Console" @@ -2588,13 +2584,13 @@ "path": "index", "title": "Blazor" }, - { - "path": "xamarin", - "title": "Xamarin" - }, { "path": "console", "title": "Console" + }, + { + "path": "xamarin", + "title": "Xamarin" } ] }, @@ -2696,13 +2692,13 @@ "path": "index", "title": "Blazor" }, - { - "path": "xamarin", - "title": "Xamarin" - }, { "path": "console", "title": "Console" + }, + { + "path": "xamarin", + "title": "Xamarin" } ] }, @@ -2800,13 +2796,13 @@ "path": "index", "title": "Blazor" }, - { - "path": "xamarin", - "title": "Xamarin" - }, { "path": "console", "title": "Console" + }, + { + "path": "xamarin", + "title": "Xamarin" } ] }, @@ -2900,13 +2896,13 @@ "path": "index", "title": "Blazor" }, - { - "path": "xamarin", - "title": "Xamarin" - }, { "path": "console", "title": "Console" + }, + { + "path": "xamarin", + "title": "Xamarin" } ] }, diff --git a/website/src/docs/shared/berry_console_generated.png b/website/src/docs/shared/berry_console_generated.png deleted file mode 100644 index caef645fe9e..00000000000 Binary files a/website/src/docs/shared/berry_console_generated.png and /dev/null differ diff --git a/website/src/docs/shared/berry_console_generated.webp b/website/src/docs/shared/berry_console_generated.webp new file mode 100644 index 00000000000..0b5c5864314 Binary files /dev/null and b/website/src/docs/shared/berry_console_generated.webp differ diff --git a/website/src/docs/shared/berry_console_session_list.png b/website/src/docs/shared/berry_console_session_list.png deleted file mode 100644 index 76b86efd875..00000000000 Binary files a/website/src/docs/shared/berry_console_session_list.png and /dev/null differ diff --git a/website/src/docs/shared/berry_console_session_list.webp b/website/src/docs/shared/berry_console_session_list.webp new file mode 100644 index 00000000000..d64866e28e3 Binary files /dev/null and b/website/src/docs/shared/berry_console_session_list.webp differ diff --git a/website/src/docs/strawberryshake/v16/get-started/console.md b/website/src/docs/strawberryshake/v16/get-started/console.md index a80114dd4ff..e376877c18a 100644 --- a/website/src/docs/strawberryshake/v16/get-started/console.md +++ b/website/src/docs/strawberryshake/v16/get-started/console.md @@ -38,13 +38,13 @@ Next, we will create our console project so that we have a little playground. 1. First, a new solution called `Demo.sln`. ```bash -dotnet new sln -n Demo +dotnet new sln --name Demo ``` 2. Create a new console application. ```bash -dotnet new console -n Demo +dotnet new console --name Demo ``` 3. Add the project to the solution `Demo.sln`. @@ -65,7 +65,7 @@ dotnet add Demo package StrawberryShake.Server ## Step 4: Add a GraphQL client to your project using the CLI tools -To add a client to your project, you need to run `dotnet graphql init {{ServerUrl}} -n {{ClientName}}`. +To add a client to your project, you need to run `dotnet graphql init {{ServerUrl}} --clientName {{ClientName}}`. In this tutorial we will use our GraphQL workshop to create a list of sessions that we will add to our console application. @@ -74,10 +74,10 @@ In this tutorial we will use our GraphQL workshop to create a list of sessions t 1. Add the conference client to your console application. ```bash -dotnet graphql init https://workshop.chillicream.com/graphql/ -n ConferenceClient -p ./Demo +dotnet graphql init https://workshop.chillicream.com/graphql/ --clientName ConferenceClient --Path ./Demo ``` -2. Customize the namespace of the generated client to be `Demo.GraphQL`. For this head over to the `.graphqlrc.json` and insert a namespace property to the `StrawberryShake` section. +2. Customize the namespace of the generated client to be `Demo.GraphQL`. For this head over to the `.graphqlrc.json` and insert a namespace property in the `StrawberryShake` section. ```json { @@ -88,7 +88,16 @@ dotnet graphql init https://workshop.chillicream.com/graphql/ -n ConferenceClien "name": "ConferenceClient", "namespace": "Demo.GraphQL", "url": "https://workshop.chillicream.com/graphql/", - "dependencyInjection": true + "records": { + "inputs": false, + "entities": false + }, + "transportProfiles": [ + { + "default": "Http", + "subscription": "WebSocket" + } + ] } } } @@ -120,37 +129,30 @@ query GetSessions { dotnet build ``` -With the project compiled, you should now see in the directory `./obj///berry` the generated code that your applications can leverage. For example, if you've run a Debug build for .NET 8, the path would be `./obj/Debug/net8.0/berry`. +With the project compiled, you should now see in the directory `./obj///berry` the generated code that your applications can leverage. For example, if you've run a Debug build for .NET 10, the path would be `./obj/Debug/net10.0/berry`. -![Visual Studio code showing the generated directory.](../../../shared/berry_console_generated.png) +![Visual Studio Code showing the generated directory.](../../../shared/berry_console_generated.webp) 1. Head over to the `Program.cs` and add the new `ConferenceClient` to the dependency injection. > In some IDEs it is still necessary to reload the project after the code was generated to update the IntelliSense. So, if you have any issues in the next step with IntelliSense just reload the project and everything should be fine. ```csharp -using System; using Microsoft.Extensions.DependencyInjection; using Demo.GraphQL; -namespace Demo -{ - class Program - { - static void Main(string[] args) - { - var serviceCollection = new ServiceCollection(); +var serviceCollection = new ServiceCollection(); - serviceCollection - .AddConferenceClient() - .ConfigureHttpClient(client => client.BaseAddress = new Uri("https://workshop.chillicream.com/graphql")); +serviceCollection + .AddConferenceClient() + .ConfigureHttpClient( + client => + client.BaseAddress = + new Uri("https://workshop.chillicream.com/graphql")); - IServiceProvider services = serviceCollection.BuildServiceProvider(); +var services = serviceCollection.BuildServiceProvider(); - IConferenceClient client = services.GetRequiredService(); - } - } -} +var client = services.GetRequiredService(); ``` ## Step 5: Use the ConferenceClient to perform a simple fetch @@ -159,31 +161,24 @@ In this section we will perform a simple fetch with our `ConferenceClient` and o 1. Head over to `Program.cs`. -2. Add the following code to your main method to execute the `GetSessions` query. +2. Add the following code to execute the `GetSessions` query. ```csharp -static async Task Main(string[] args) -{ - var serviceCollection = new ServiceCollection(); +var result = await client.GetSessions.ExecuteAsync(); +result.EnsureNoErrors(); - serviceCollection - .AddConferenceClient() - .ConfigureHttpClient(client => client.BaseAddress = new Uri("https://workshop.chillicream.com/graphql")); - - IServiceProvider services = serviceCollection.BuildServiceProvider(); - - IConferenceClient client = services.GetRequiredService(); - - var result = await client.GetSessions.ExecuteAsync(); - result.EnsureNoErrors(); +if (result.Data?.Sessions?.Nodes is null) +{ + Console.WriteLine("No sessions found."); + return; +} - foreach (var session in result.Data.Sessions.Nodes) - { - Console.WriteLine(session.Title); - } +foreach (var session in result.Data.Sessions.Nodes) +{ + Console.WriteLine(session.Title); } ``` 3. Start the console application with `dotnet run --project ./Demo` and see if your code works. -![Started console application that shows a list of sessions](../../../shared/berry_console_session_list.png) +![Started console application that shows a list of sessions](../../../shared/berry_console_session_list.webp) diff --git a/website/src/docs/strawberryshake/v16/get-started/index.md b/website/src/docs/strawberryshake/v16/get-started/index.md index 1a64dd3d2e7..9c9748a9dd0 100644 --- a/website/src/docs/strawberryshake/v16/get-started/index.md +++ b/website/src/docs/strawberryshake/v16/get-started/index.md @@ -29,7 +29,7 @@ dotnet new tool-manifest 2. Install the Strawberry Shake tools. ```bash -dotnet tool install StrawberryShake.Tools +dotnet tool install StrawberryShake.Tools --local ``` # Step 2: Create a Blazor WebAssembly project @@ -39,13 +39,13 @@ Next, we will create our Blazor project so that we have a little playground. 1. First, a new solution called `Demo.sln`. ```bash -dotnet new sln -n Demo +dotnet new sln --name Demo ``` 2. Create a new Blazor for WebAssembly application. ```bash -dotnet new blazorwasm -n Demo +dotnet new blazorwasm --name Demo ``` 3. Add the project to the solution `Demo.sln`. @@ -66,19 +66,19 @@ dotnet add Demo package StrawberryShake.Blazor # Step 4: Add a GraphQL client to your project using the CLI tools -To add a client to your project, you need to run `dotnet graphql init {{ServerUrl}} -n {{ClientName}}`. +To add a client to your project, you need to run `dotnet graphql init {{ServerUrl}} --clientName {{ClientName}}`. -In this tutorial we will use our ChilliCream demo project to create a list of crypto currencies that we will add to our Blazor application. +In this tutorial we will use our ChilliCream demo project to create a list of cryptocurrencies that we will add to our Blazor application. > If you want to have a look at our demo GraphQL server head over [here](https://demo.chillicream.com/graphql). 1. Add the crypto client to your Blazor application. ```bash -dotnet graphql init https://demo.chillicream.com/graphql/ -n CryptoClient -p ./Demo +dotnet graphql init https://demo.chillicream.com/graphql/ --clientName CryptoClient --Path ./Demo ``` -2. Customize the namespace of the generated client to be `Demo.GraphQL`. For this head over to the `.graphqlrc.json` and insert a namespace property to the `StrawberryShake` section. +2. Customize the namespace of the generated client to be `Demo.GraphQL`. For this head over to the `.graphqlrc.json` and insert a namespace property in the `StrawberryShake` section. ```json { @@ -137,7 +137,7 @@ dotnet build With the project compiled the strawberry shake generator produced a client but also components that we can use in Blazor. -![Visual Studio code showing the generator output on the console.](../../../shared/berry_generated.png) +![Visual Studio Code showing the generator output on the console.](../../../shared/berry_generated.png) 1. Head over to the `Program.cs` and add the new `CryptoClient` to the dependency injection. diff --git a/website/src/docs/strawberryshake/v16/get-started/xamarin.md b/website/src/docs/strawberryshake/v16/get-started/xamarin.md deleted file mode 100644 index bac722efb76..00000000000 --- a/website/src/docs/strawberryshake/v16/get-started/xamarin.md +++ /dev/null @@ -1,396 +0,0 @@ ---- -title: "Get started with Strawberry Shake and Xamarin" ---- - -In this tutorial we will walk you through the basics of adding a Strawberry Shake GraphQL client to a .NET project. For this example we will create a Blazor for WebAssembly application and fetch some simple data from our demo backend. - -Strawberry Shake is not limited to Blazor and can be used with any .NET standard compliant library. - -In this tutorial, we will teach you: - -- How to add the Strawberry Shake CLI tools. -- How to generate source code from .graphql files, that contain operations. -- How to use the generated client in a classical or reactive way. - -## Step 1: Add the Strawberry Shake CLI tools - -The Strawberry Shake tool will help you to set up your project to create a GraphQL client. - -Open your preferred terminal and select a directory where you want to add the code of this tutorial. - -1. Create a dotnet tool-manifest. - -```bash -dotnet new tool-manifest -``` - -2. Install the Strawberry Shake tools. - -```bash -dotnet tool install StrawberryShake.Tools --local -``` - -## Step 2: Create a Blazor WebAssembly project - -Next, we will create our Blazor project so that we have a little playground. - -1. First, a new solution called `Demo.sln`. - -```bash -dotnet new sln -n Demo -``` - -2. Create a new Blazor for WebAssembly application. - -```bash -dotnet new wasm -n Demo -``` - -3. Add the project to the solution `Demo.sln`. - -```bash -dotnet sln add ./Demo -``` - -## Step 3: Install the required packages - -Strawberry Shake has meta packages, that will help pulling in all necessary dependencies in your project. Choose between either of these: - -a. For Blazor add the `StrawberryShake.Blazor` package to your project. - -```bash -dotnet add Demo package StrawberryShake.Blazor -``` - -b. For MAUI add the `StrawberryShake.Maui` package to your project. - -```bash -dotnet add Demo package StrawberryShake.Maui -``` - -c. For Console apps add the `StrawberryShake.Server` package to your project. - -```bash -dotnet add Demo package StrawberryShake.Server -``` - -## Step 4: Add a GraphQL client to your project using the CLI tools - -To add a client to your project, you need to run `dotnet graphql init {{ServerUrl}} -n {{ClientName}}`. - -In this tutorial we will use our GraphQL workshop to create a list of sessions that we will add to our Blazor application. - -> If you want to have a look at our GraphQL workshop head over [here](https://github.com/ChilliCream/graphql-workshop). - -1. Add the conference client to your Blazor application. - -```bash -dotnet graphql init https://workshop.chillicream.com/graphql/ -n ConferenceClient -p ./Demo -``` - -2. Customize the namespace of the generated client to be `Demo.GraphQL`. For this head over to the `.graphqlrc.json` and insert a namespace property to the `StrawberryShake` section. - -```json -{ - "schema": "schema.graphql", - "documents": "**/*.graphql", - "extensions": { - "strawberryShake": { - "name": "ConferenceClient", - "namespace": "Demo.GraphQL", - "url": "https://workshop.chillicream.com/graphql/", - "dependencyInjection": true - } - } -} -``` - -Now that everything is in place let us write our first query to ask for a list of session titles of the conference API. - -3. Choose your favorite IDE and the solution. If your are using VSCode do the following: - -```bash -code ./Demo -``` - -4. Create new query document `GetSessions.graphql` with the following content: - -```graphql -query GetSessions { - sessions(order: { title: ASC }) { - nodes { - title - } - } -} -``` - -5. Compile your project. - -```bash -dotnet build -``` - -With the project compiled, you should now see in the directory `./obj///berry` the generated code that your applications can leverage. For example, if you've run a Debug build for .NET 8, the path would be `./obj/Debug/net8.0/berry`. - -![Visual Studio code showing the generated directory.](../shared/berry_generated.png) - -6. Head over to the `Program.cs` and add the new `ConferenceClient` to the dependency injection. - -> In some IDEs it is still necessary to reload the project after the code was generated to update the IntelliSense. So, if you have any issues in the next step with IntelliSense just reload the project and everything should be fine. - -```csharp -public class Program -{ - public static async Task Main(string[] args) - { - var builder = WebAssemblyHostBuilder.CreateDefault(args); - builder.RootComponents.Add("#app"); - - builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - - builder.Services - .AddConferenceClient() - .ConfigureHttpClient(client => client.BaseAddress = new Uri("https://workshop.chillicream.com/graphql")); - - await builder.Build().RunAsync(); - } -} -``` - -7. Go to `_Imports.razor` and add `Demo.GraphQL` to the common imports - -```razor -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using Demo -@using Demo.Shared // (from .NET 8, `Demo.Layout`) -@using Demo.GraphQL -``` - -## Step 5: Use the ConferenceClient to perform a simple fetch - -In this section we will perform a simple fetch with our `ConferenceClient`. We will not yet look at state or other things that come with our client but just perform a simple fetch. - -1. Head over to `Pages/Index.razor` (from .NET 8, `Home.razor`). - -2. Add inject the `ConferenceClient` beneath the `@pages` directive. - -```html -@page "/" @inject ConferenceClient ConferenceClient; -``` - -3. Introduce a code directive at the bottom of the file. - -```html -@page "/" @inject ConferenceClient ConferenceClient; - -

Hello, world!

- -Welcome to your new app. - - - -@code { } -``` - -4. Now let's fetch the titles with our client. - -```html -@page "/" @inject ConferenceClient ConferenceClient; - -

Hello, world!

- -Welcome to your new app. - - - -@code { private string[] titles = Array.Empty(); protected override async Task OnInitializedAsync() { // Execute our - GetSessions query var result = await - ConferenceClient.GetSessions.ExecuteAsync(); // aggregate the titles from the - result titles = result.Data.Sessions.Nodes.Select(t => t.Title).ToArray(); // - signal the components that the state has changed. StateHasChanged(); } - } -``` - -5. Last, let's render the titles on our page as a list. - -```html -@page "/" @inject ConferenceClient ConferenceClient; - -

Hello, world!

- -Welcome to your new app. - - - -
    - @foreach (string title in titles) { -
  • @title
  • - } -
- -@code { private string[] titles = Array.Empty(); protected override async Task OnInitializedAsync() { // Execute our - GetSessions query var result = await - ConferenceClient.GetSessions.ExecuteAsync(); // aggregate the titles from the - result titles = result.Data.Sessions.Nodes.Select(t => t.Title).ToArray(); // - signal the components that the state has changed. StateHasChanged(); } - } -``` - -5. Start the Blazor application with `dotnet run --project ./Demo` and see if your code works. - -![Started Blazor application in Microsoft Edge](../shared/berry_session_list.png) - -## Step 6: Using the built-in store with reactive APIs - -The simple fetch of our data works. But every time we visit the index page it will fetch the data again although the data does not change often. Strawberry Shake also comes with state management where you can control the entity store and update it when you need to. In order to best interact with the store we will use `System.Reactive` from Microsoft. Let's get started :) - -1. Install the package `System.Reactive`. - -```bash -dotnet add Demo package System.Reactive -``` - -2. Next, let us update the `_Imports.razor` with some more imports, namely `System`, `System.Reactive.Linq`, `System.Linq` and `StrawberryShake`. - -```csharp -@using System -@using System.Reactive.Linq -@using System.Linq -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using Demo -@using Demo.Shared // (from .NET 8, `Demo.Layout`) -@using Demo.GraphQL -@using StrawberryShake -``` - -3. Head back to `Pages/Index.razor` (from .NET 8, `Home.razor`) and replace the code section with the following code: - -```csharp -private string[] titles = Array.Empty(); -private IDisposable storeSession; - -protected override void OnInitialized() -{ - storeSession = - ConferenceClient - .GetSessions - .Watch(StrawberryShake.ExecutionStrategy.CacheFirst) - .Where(t => !t.Errors.Any()) - .Select(t => t.Data.Sessions.Nodes.Select(t => t.Title).ToArray()) - .Subscribe(result => - { - titles = result; - StateHasChanged(); - }); -} -``` - -Instead of fetching the data we watch the data for our request. Every time entities of our results are updated in the entity store our subscribe method will be triggered. - -Also we specified on our watch method that we want to first look at the store and only of there is nothing in the store we want to fetch the data from the network. - -Last, note that we are storing a disposable on our component state called `storeSession`. This represents our session with the store. We need to dispose the session when we no longer display our component. - -4. Implement `IDisposable` and handle the `storeSession` dispose. - -```csharp -@page "/" -@inject ConferenceClient ConferenceClient; -@implements IDisposable - -

Hello, world!

- -Welcome to your new app. - - - -
    -@foreach (var title in titles) -{ -
  • @title
  • -} -
- -@code { - private string[] titles = Array.Empty(); - private IDisposable storeSession; - - protected override void OnInitialized() - { - storeSession = - ConferenceClient - .GetSessions - .Watch(StrawberryShake.ExecutionStrategy.CacheFirst) - .Where(t => !t.Errors.Any()) - .Select(t => t.Data.Sessions.Nodes.Select(t => t.Title).ToArray()) - .Subscribe(result => - { - titles = result; - StateHasChanged(); - }); - } - - public void Dispose() - { - storeSession?.Dispose(); - } -} -``` - -Every time we move away from our index page Blazor will dispose our page which consequently will dispose our store session. - -5. Start the Blazor application with `dotnet run --project ./Demo` and see if your code works. - -![Started Blazor application in Microsoft Edge](../shared/berry_session_list.png) - -The page will look unchanged. - -6. Next, open the developer tools of your browser and switch to the developer tools console. Refresh the site so that we get a fresh output. - -![Microsoft Edge developer tools show just one network interaction.](../shared/berry_session_list_network.png) - -7. Switch between the `Index` and the `Counter` page (back and forth) and watch the console output. - -The Blazor application just fetched a single time from the network and now only gets the data from the store. - -## Step 7: Using GraphQL mutations - -In this step we will introduce a mutation that will allow us to rename a session. For this we need to change our Blazor page a bit. - -1. We need to get the session id for our session so that we can call the `renameSession` mutation. For this we will rewrite our `GetSessions` operation. - -```graphql -query GetSessions { - sessions(order: { title: ASC }) { - nodes { - ...SessionInfo - } - } -} - -fragment SessionInfo on Session { - id - title -} -``` - -2. Next we need to restructure the `Index.razor` (from .NET 8, `Home.razor`) page. diff --git a/website/src/docs/strawberryshake/v16/scalars.md b/website/src/docs/strawberryshake/v16/scalars.md index ef497c7dbdc..c57d313d37b 100644 --- a/website/src/docs/strawberryshake/v16/scalars.md +++ b/website/src/docs/strawberryshake/v16/scalars.md @@ -4,23 +4,59 @@ title: "Scalars" Strawberry Shake supports the following scalars out of the box: -| Type | Description | -| -------------- | ----------------------------------------------------------- | -| `Base64String` | Base64 encoded array of bytes | -| `Boolean` | Boolean type representing true or false | -| `Byte` | | -| `ByteArray` | Base64 encoded array of bytes (DEPRECATED) | -| `Date` | ISO-8601 date | -| `DateTime` | ISO-8601 date time | -| `Decimal` | .NET Floating Point Type | -| `Float` | Double-precision fractional values as specified by IEEE 754 | -| `ID` | Unique identifier | -| `Int` | Signed 32-bit numeric non-fractional value | -| `Long` | Signed 64-bit numeric non-fractional value | -| `Short` | Signed 16-bit numeric non-fractional value | -| `String` | UTF-8 character sequences | -| `Url` | Url | -| `Uuid` | GUID | +| Type | Description | +| ------------- | --------------------------------------------------------------------------------------------------------------- | +| Any | The [Any][1] scalar type represents any valid GraphQL value. | +| Base64String | The [Base64String][2] scalar type represents an array of bytes encoded as a Base64 string. | +| Boolean | The [Boolean][3] scalar type represents `true` or `false`. | +| Byte | The [Byte][4] scalar type represents a signed 8-bit integer. | +| ByteArray | Base64-encoded array of bytes. (DEPRECATED, use `Base64String`) | +| Date | The [Date][5] scalar type represents a date in UTC. | +| DateTime | The [DateTime][6] scalar type represents a date and time with time zone offset information. | +| Decimal | The [Decimal][7] scalar type represents a decimal floating-point number with high precision. | +| Float | The [Float][8] scalar type represents signed double-precision fractional values as specified by [IEEE 754][9]. | +| ID | The [ID][10] scalar type represents a unique identifier, often used to refetch an object or as key for a cache. | +| Int | The [Int][11] scalar type represents a signed 32-bit numeric non-fractional value. | +| LocalDate | The [LocalDate][12] scalar type represents a date without time or time zone information. | +| LocalDateTime | The [LocalDateTime][13] scalar type represents a date and time without time zone information. | +| LocalTime | The [LocalTime][14] scalar type represents a time of day without date or time zone information. | +| Long | The [Long][15] scalar type represents a signed 64-bit integer. | +| Short | The [Short][16] scalar type represents a signed 16-bit integer. | +| String | The [String][17] scalar type represents textual data, represented as a sequence of Unicode code points. | +| TimeSpan | The [TimeSpan][18] scalar type represents a duration of time. | +| UnsignedByte | The [UnsignedByte][19] scalar type represents an unsigned 8-bit integer. | +| UnsignedInt | The [UnsignedInt][20] scalar type represents an unsigned 32-bit integer. | +| UnsignedLong | The [UnsignedLong][21] scalar type represents an unsigned 64-bit integer. | +| UnsignedShort | The [UnsignedShort][22] scalar type represents an unsigned 16-bit integer. | +| URI | The [URI][23] scalar type represents a Uniform Resource Identifier (URI) as defined by RFC 3986. | +| URL | The [URL][24] scalar type represents a Uniform Resource Locator (URL) as defined by RFC 3986. | +| UUID | The [UUID][25] scalar type represents a Universally Unique Identifier (UUID) as defined by RFC 9562. | + +[1]: https://scalars.graphql.org/chillicream/any.html +[2]: https://scalars.graphql.org/chillicream/base64-string.html +[3]: https://spec.graphql.org/September2025/#sec-Boolean +[4]: https://scalars.graphql.org/chillicream/byte.html +[5]: https://scalars.graphql.org/chillicream/date.html +[6]: https://scalars.graphql.org/chillicream/date-time.html +[7]: https://scalars.graphql.org/chillicream/decimal.html +[8]: https://spec.graphql.org/September2025/#sec-Float +[9]: https://en.wikipedia.org/wiki/IEEE_floating_point +[10]: https://spec.graphql.org/September2025/#sec-ID +[11]: https://spec.graphql.org/September2025/#sec-Int +[12]: https://scalars.graphql.org/chillicream/local-date.html +[13]: https://scalars.graphql.org/chillicream/local-date-time.html +[14]: https://scalars.graphql.org/chillicream/local-time.html +[15]: https://scalars.graphql.org/chillicream/long.html +[16]: https://scalars.graphql.org/chillicream/short.html +[17]: https://spec.graphql.org/September2025/#sec-String +[18]: https://scalars.graphql.org/chillicream/time-span.html +[19]: https://scalars.graphql.org/chillicream/unsigned-byte.html +[20]: https://scalars.graphql.org/chillicream/unsigned-int.html +[21]: https://scalars.graphql.org/chillicream/unsigned-long.html +[22]: https://scalars.graphql.org/chillicream/unsigned-short.html +[23]: https://scalars.graphql.org/chillicream/uri.html +[24]: https://scalars.graphql.org/chillicream/url.html +[25]: https://scalars.graphql.org/chillicream/uuid.html # Custom Scalars