From 0b3c5a3203213f3bfc998429452dd02d4b4bb927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigur=C3=B0ur=20Gu=C3=B0brandsson?= <1608474+SGudbrandsson@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:48:57 +0000 Subject: [PATCH 1/2] (feat) Force prefix on protected types Enables users to force prefixes on protected types to make migration to GraphQL Mesh seamless --- packages/transforms/prefix/src/barePrefix.ts | 1 + packages/transforms/prefix/src/wrapPrefix.ts | 1 + packages/transforms/prefix/yaml-config.graphql | 4 ++++ packages/types/src/config-schema.json | 8 ++++++++ packages/types/src/config.ts | 4 ++++ 5 files changed, 18 insertions(+) diff --git a/packages/transforms/prefix/src/barePrefix.ts b/packages/transforms/prefix/src/barePrefix.ts index 85823a334f78a..d93f0d293d7ce 100644 --- a/packages/transforms/prefix/src/barePrefix.ts +++ b/packages/transforms/prefix/src/barePrefix.ts @@ -20,6 +20,7 @@ export default class BarePrefix implements MeshTransform { constructor(options: MeshTransformOptions) { const { apiName, config } = options; + defaultIgnoreList = defaultIgnoreList.filter(x => !config.force.includes(x)); this.ignoreList = [...(config.ignore || []), ...defaultIgnoreList]; this.includeRootOperations = config.includeRootOperations === true; this.includeTypes = config.includeTypes !== false; diff --git a/packages/transforms/prefix/src/wrapPrefix.ts b/packages/transforms/prefix/src/wrapPrefix.ts index 811d36444152c..fef54588b846e 100644 --- a/packages/transforms/prefix/src/wrapPrefix.ts +++ b/packages/transforms/prefix/src/wrapPrefix.ts @@ -27,6 +27,7 @@ export default class WrapPrefix implements MeshTransform { throw new Error(`Transform 'prefix' has missing config: prefix`); } + defaultIgnoreList = defaultIgnoreList.filter(x => !config.force.includes(x)); const ignoreList = [...(config.ignore || []), ...defaultIgnoreList]; const includeTypes = config.includeTypes !== false; diff --git a/packages/transforms/prefix/yaml-config.graphql b/packages/transforms/prefix/yaml-config.graphql index a2cdd6712fa91..49ecb1ba2cf87 100644 --- a/packages/transforms/prefix/yaml-config.graphql +++ b/packages/transforms/prefix/yaml-config.graphql @@ -26,6 +26,10 @@ type PrefixTransformConfig @md { Changes types (default: true) """ includeTypes: Boolean + """ + List of protected types you want to force prefix on + """ + force: [String!] } enum PrefixTransformMode { diff --git a/packages/types/src/config-schema.json b/packages/types/src/config-schema.json index f29f9c4b4255f..4f1e9341c47d1 100644 --- a/packages/types/src/config-schema.json +++ b/packages/types/src/config-schema.json @@ -3642,6 +3642,14 @@ "includeTypes": { "type": "boolean", "description": "Changes types (default: true)" + }, + "force": { + "type": "array", + "items": { + "type": "string" + }, + "additionalItems": false, + "description": "List of protected types you want to force prefix on" } } }, diff --git a/packages/types/src/config.ts b/packages/types/src/config.ts index 87859221d833f..f2d7c11979be3 100644 --- a/packages/types/src/config.ts +++ b/packages/types/src/config.ts @@ -1380,6 +1380,10 @@ export interface PrefixTransformConfig { * Changes types (default: true) */ includeTypes?: boolean; + /** + * List of protected types you want to force prefix on + */ + force?: string[]; } /** * Prune transform From 8c136cf1183d145d42619591b113bd3362d9a3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigur=C3=B0ur=20Gu=C3=B0brandsson?= <1608474+SGudbrandsson@users.noreply.github.com> Date: Tue, 26 Sep 2023 12:53:59 +0000 Subject: [PATCH 2/2] Initialize config.force before accessing it --- packages/transforms/prefix/src/barePrefix.ts | 3 +++ packages/transforms/prefix/src/wrapPrefix.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/transforms/prefix/src/barePrefix.ts b/packages/transforms/prefix/src/barePrefix.ts index d93f0d293d7ce..9e3772504370d 100644 --- a/packages/transforms/prefix/src/barePrefix.ts +++ b/packages/transforms/prefix/src/barePrefix.ts @@ -20,6 +20,9 @@ export default class BarePrefix implements MeshTransform { constructor(options: MeshTransformOptions) { const { apiName, config } = options; + if (!config.force) { + config.force = []; + } defaultIgnoreList = defaultIgnoreList.filter(x => !config.force.includes(x)); this.ignoreList = [...(config.ignore || []), ...defaultIgnoreList]; this.includeRootOperations = config.includeRootOperations === true; diff --git a/packages/transforms/prefix/src/wrapPrefix.ts b/packages/transforms/prefix/src/wrapPrefix.ts index fef54588b846e..ec1ac46e2804e 100644 --- a/packages/transforms/prefix/src/wrapPrefix.ts +++ b/packages/transforms/prefix/src/wrapPrefix.ts @@ -27,6 +27,9 @@ export default class WrapPrefix implements MeshTransform { throw new Error(`Transform 'prefix' has missing config: prefix`); } + if (!config.force) { + config.force = []; + } defaultIgnoreList = defaultIgnoreList.filter(x => !config.force.includes(x)); const ignoreList = [...(config.ignore || []), ...defaultIgnoreList];