saleor-dashboard/scripts/build-types.js
Jonatan Witoszek 13ca6bbba8
Remove transactions feature flag (#3557)
* Update schema, remove transaction specific files

* Merge `.transaction` queries and mutations into regular files

* Merge OrderDetails fragments

* Remove usage of `.transaction` graphl types

* Update fixtures

* Remove usage of useFlag, remove duplicated queries & mutations

* Fix displayed event type for INFO

* Remove type alias from order/types.ts, remove type casting

* Fix failing tests

* Add preview label and better description in Channel settings

* Update button in GrantRefund page

* Fix missing data-test-id

* Extract messages

* Visual fixes

* Revert changes to generated files

* Revert changes to generated files

* Fix psp reference hover

* Fix colors on manu refunds screen

* Revert "Fix colors on manu refunds screen"

This reverts commit 02302930ab502a4fdc3c71558532a2d74f2e32c9.

---------

Co-authored-by: andrzejewsky <vox3r69@gmail.com>
Co-authored-by: Michal Miszczyszyn <michal@mmiszy.pl>
2023-04-28 13:24:10 +02:00

116 lines
3 KiB
JavaScript

/* eslint-disable @typescript-eslint/no-var-requires */
const { generate } = require("@graphql-codegen/cli");
// Feature flags names that will be used as suffix for generated files
const FEATURE_FLAGS = [];
const schemaSuffixes = ["default", ...FEATURE_FLAGS];
for (const rawSuffix of schemaSuffixes) {
const suffix = prepareSuffix(rawSuffix);
generate(
{
schema: `./introspection${suffix}.json`,
overwrite: true,
generates: {
[getOutputPath("fragmentTypes", suffix)]: {
plugins: [
{
add: {
content: "/* eslint-disable */",
},
},
"fragment-matcher",
],
config: {
minify: false,
apolloClientVersion: 3,
},
},
[getOutputPath("typePolicies", suffix)]: {
plugins: [
{
add: {
content: "/* eslint-disable */",
},
},
"typescript-apollo-client-helpers",
],
},
[getOutputPath("types", suffix)]: {
documents: getDocumentsPaths(suffix, rawSuffix),
config: {
nonOptionalTypename: true,
avoidOptionals: {
field: true,
inputValue: false,
object: false,
defaultValue: false,
},
namingConvention: {
enumValues: "change-case-all#upperCase",
},
onlyOperationTypes: true,
},
plugins: [
{
add: {
content: "/* eslint-disable */",
},
},
"typescript",
"typescript-operations",
],
},
[getOutputPath("hooks", suffix)]: {
documents: getDocumentsPaths(suffix, rawSuffix),
preset: "import-types",
presetConfig: {
typesPath: "./types" + suffix + ".generated",
},
config: {
withHooks: true,
apolloReactHooksImportFrom: "@dashboard/hooks/graphql",
},
plugins: [
{
add: {
content: "/* eslint-disable */",
},
},
"typescript-react-apollo",
],
},
},
},
true,
);
}
function getOutputPath(path, suffix) {
return `./src/graphql/${path}${suffix}.generated.ts`;
}
function getDocumentsPaths(suffix, rawSuffix) {
return [
`./src/**/queries${suffix}.ts`,
`./src/**/mutations${suffix}.ts`,
`./src/**/fragments/*${suffix}.ts`,
`./src/searches/*${suffix}.ts`,
// Remove feature flag files from default suffix (matches glob)
...FEATURE_FLAGS.filter(flag => flag !== rawSuffix).map(
flag => `!./src/**/*${prepareSuffix(flag)}.ts`,
),
// Always add all fragments (e.g. Money)
...(rawSuffix !== "default" ? ["./src/**/fragments/*.ts"] : []),
];
}
function prepareSuffix(suffix) {
if (suffix === "default") {
return "";
}
return "." + suffix;
}