Add support for generating configuration objects for custom scalars in Apollo Client.
// codegen.ts
import type { CustomScalarsPluginConfig } from "@apollo/client-graphql-codegen/custom-scalars";
const config: CodegenConfig = {
// ...
generates: {
"./path/to/custom-scalars.ts": {
plugins: ["@apollo/client-graphql-codegen/custom-scalars"],
config: {
// ...
} satisfies CustomScalarsPluginConfig,
},
},
};This will generate both an inputObjects object and a scalarTypePolicies object in the generated file that can be used to configure custom scalars in InMemoryCache.
import { inputObjects, scalarTypePolicies } from "./path/to/custom-scalars";
const cache = new InMemoryCache({
inputObjects,
});
cache.policies.addTypePolicies(scalarTypePolicies);For more information on using custom scalars, read the Custom Scalars guide.
This will generate an #13318 This will generate a #13426 #13447
Minor Changes
8ab63fc Thanks @jerelmiller! - Introduce a new GraphQL Codegen plugin to generate the input object configuration needed to configure custom scalars for each field.
// codegen.ts
import type { CustomScalarsPluginConfig } from "@apollo/client-graphql-codegen/custom-scalars";
const config: CodegenConfig = {
// ...
generates: {
"./path/to/custom-scalars.ts": {
plugins: ["@apollo/client-graphql-codegen/custom-scalars"],
config: {
// ...
} satisfies CustomScalarsPluginConfig,
},
},
};
inputObjects object in the generated file that can be used to configure the inputObjects option for InMemoryCache.
import { inputObjects } from "./path/to/custom-scalars";
const cache = new InMemoryCache({
inputObjects,
});
01f255b Thanks @jerelmiller! - The @apollo/client-graphql-codegen/custom-scalars GraphQL Codegen plugin now generates the type policy configuration needed to configure custom scalars for each field.
// codegen.ts
import type { CustomScalarsPluginConfig } from "@apollo/client-graphql-codegen/custom-scalars";
const config: CodegenConfig = {
// ...
generates: {
"./path/to/custom-scalars.ts": {
plugins: ["@apollo/client-graphql-codegen/custom-scalars"],
config: {
// ...
} satisfies CustomScalarsPluginConfig,
},
},
};
scalarTypePolicies object in the generated file that can be used to configure type policies.
import { scalarTypePolicies } from "./path/to/custom-scalars";
const cache = new InMemoryCache();
cache.policies.addTypePolicies(scalarTypePolicies);
a9beaff Thanks @jerelmiller! - Version bump only to rc.
24133fe Thanks @jerelmiller! - The @apollo/client-graphql-codegen/custom-scalars plugin now emits GraphQL list syntax in inputObjects and scalarTypePolicies (for example "[DateTime]").